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

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

[elpa] master ebee844: Release ada-mode 7.1.0, wisi 3.1.0


From: Stephen Leake
Subject: [elpa] master ebee844: Release ada-mode 7.1.0, wisi 3.1.0
Date: Tue, 12 May 2020 18:18:15 -0400 (EDT)

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

    Release ada-mode 7.1.0, wisi 3.1.0
    
    * packages/ada-mode/*
    * packages/wisi/*
---
 packages/ada-mode/NEWS                             |    30 +
 packages/ada-mode/README                           |     2 +-
 packages/ada-mode/ada-compiler-gnat.el             |    21 +-
 packages/ada-mode/ada-core.el                      |    78 +-
 packages/ada-mode/ada-gnat-xref.el                 |    15 +-
 packages/ada-mode/ada-indent-user-options.el       |     4 +-
 packages/ada-mode/ada-mode.el                      |    29 +-
 packages/ada-mode/ada-mode.info                    |   152 +-
 packages/ada-mode/ada-mode.texi                    |    78 +-
 packages/ada-mode/ada-prj.el                       |     7 +
 packages/ada-mode/ada-process.el                   |     4 +
 packages/ada-mode/ada-skel.el                      |    47 +-
 packages/ada-mode/ada-stmt.el                      |     7 +
 packages/ada-mode/ada-xref.el                      |     8 +
 packages/ada-mode/ada.wy                           |   459 +-
 packages/ada-mode/ada_lr1_parse_table.txt.gz       |   Bin 3555116 -> 5209667 
bytes
 packages/ada-mode/ada_mode_wisi_parse.gpr.gp       |    23 +-
 packages/ada-mode/ada_process_actions.adb          |  1400 +-
 packages/ada-mode/ada_process_actions.ads          |   956 +-
 packages/ada-mode/ada_process_lalr_main.adb        | 30965 ++++++++++---------
 packages/ada-mode/ada_process_lr1_main.adb         |   718 +-
 packages/ada-mode/ada_re2c.c                       |  3774 ++-
 packages/ada-mode/build.sh                         |    42 +-
 packages/ada-mode/gnat-core.el                     |    50 +-
 packages/ada-mode/gpr-mode.el                      |     4 +-
 packages/ada-mode/gpr-mode.info                    |     7 +-
 packages/ada-mode/gpr-process.el                   |     2 +-
 packages/ada-mode/gpr-query.el                     |   577 +-
 packages/ada-mode/gpr.wy                           |     4 +-
 packages/ada-mode/gpr_process_actions.adb          |    70 +-
 packages/ada-mode/gpr_process_actions.ads          |    70 +-
 packages/ada-mode/gpr_process_main.adb             |  2967 +-
 packages/ada-mode/gpr_process_main.ads             |     2 +-
 packages/ada-mode/gpr_query-process_refresh.adb.gp |    32 -
 packages/ada-mode/gpr_query.adb                    |   451 +-
 packages/ada-mode/gpr_re2c.c                       |   139 +-
 packages/ada-mode/gpr_re2c_c.ads                   |     2 +-
 packages/ada-mode/install.sh                       |     4 +-
 .../ada-mode/wisi-ada-format_parameter_list.adb    |     4 +-
 packages/ada-mode/wisi-ada.adb                     |   312 +-
 packages/ada-mode/wisi-ada.ads                     |    34 +-
 .../wisitoken-parse-lr-mckenzie_recover-ada.adb    |   784 +-
 .../wisitoken-parse-lr-mckenzie_recover-ada.ads    |    96 +-
 packages/wisi/NEWS                                 |    20 +
 packages/wisi/README                               |     2 +-
 packages/wisi/emacs_wisi_common_parse.adb          |     5 +-
 packages/wisi/gen_emacs_wisi_lr_parse.adb          |     4 +-
 packages/wisi/gen_emacs_wisi_lr_text_rep_parse.adb |     4 +-
 packages/wisi/gen_run_wisi_lr_parse.adb            |     4 +-
 packages/wisi/gen_run_wisi_lr_text_rep_parse.adb   |     4 +-
 packages/wisi/recover_stats.adb                    |    10 +-
 packages/wisi/run_wisi_common_parse.adb            |    21 +-
 packages/wisi/sal-gen_bounded_definite_stacks.ads  |     4 +-
 .../sal-gen_bounded_definite_vectors_sorted.adb    |    18 +-
 .../sal-gen_bounded_definite_vectors_sorted.ads    |    43 +-
 .../wisi/sal-gen_definite_doubly_linked_lists.adb  |    26 +-
 .../wisi/sal-gen_definite_doubly_linked_lists.ads  |    38 +-
 ...sal-gen_definite_doubly_linked_lists_sorted.adb |    32 +-
 ...sal-gen_definite_doubly_linked_lists_sorted.ads |    45 +-
 packages/wisi/sal-gen_graphs.ads                   |     4 +-
 .../sal-gen_indefinite_doubly_linked_lists.adb     |    14 +-
 .../sal-gen_indefinite_doubly_linked_lists.ads     |     7 +-
 .../sal-gen_unbounded_definite_red_black_trees.adb |    13 +-
 .../sal-gen_unbounded_definite_red_black_trees.ads |     7 +-
 .../wisi/sal-gen_unbounded_definite_stacks.adb     |    13 +-
 .../wisi/sal-gen_unbounded_definite_stacks.ads     |    27 +-
 .../wisi/sal-gen_unbounded_definite_vectors.adb    |  1169 +-
 .../wisi/sal-gen_unbounded_definite_vectors.ads    |    45 +-
 .../sal-gen_unbounded_definite_vectors_sorted.adb  |    32 +-
 .../sal-gen_unbounded_definite_vectors_sorted.ads  |    24 +-
 packages/wisi/sal.adb                              |     4 +-
 packages/wisi/standard_common.gpr                  |     4 +-
 packages/wisi/wisi-prj.el                          |   290 +-
 packages/wisi/wisi-process-parse.el                |    41 +-
 packages/wisi/wisi-run-indent-test.el              |    21 +-
 packages/wisi/wisi-skel.el                         |    47 +-
 packages/wisi/wisi.adb                             |   744 +-
 packages/wisi/wisi.ads                             |   153 +-
 packages/wisi/wisi.el                              |   144 +-
 packages/wisi/wisi.info                            |  1294 +
 packages/wisi/wisi.texi                            |   812 +
 packages/wisi/wisitoken-bnf-generate.adb           |   103 +-
 packages/wisi/wisitoken-bnf-generate_packrat.adb   |     4 +-
 packages/wisi/wisitoken-bnf-generate_utils.adb     |    10 +-
 packages/wisi/wisitoken-bnf-generate_utils.ads     |    10 +-
 packages/wisi/wisitoken-bnf-output_ada.adb         |     6 +-
 packages/wisi/wisitoken-bnf-output_ada_common.adb  |    91 +-
 packages/wisi/wisitoken-bnf-output_ada_emacs.adb   |     9 +-
 packages/wisi/wisitoken-bnf.ads                    |    30 +-
 .../wisi/wisitoken-generate-lr-lalr_generate.adb   |   460 +-
 .../wisi/wisitoken-generate-lr-lalr_generate.ads   |    18 +-
 .../wisi/wisitoken-generate-lr-lr1_generate.adb    |    92 +-
 .../wisi/wisitoken-generate-lr-lr1_generate.ads    |    20 +-
 packages/wisi/wisitoken-generate-lr.adb            |  1068 +-
 packages/wisi/wisitoken-generate-lr.ads            |    56 +-
 packages/wisi/wisitoken-generate-lr1_items.adb     |   157 +-
 packages/wisi/wisitoken-generate-lr1_items.ads     |    39 +-
 packages/wisi/wisitoken-generate.adb               |   141 +-
 packages/wisi/wisitoken-generate.ads               |    51 +-
 packages/wisi/wisitoken-lexer-re2c.adb             |     5 +-
 packages/wisi/wisitoken-lexer-regexp.adb           |     3 +-
 .../wisitoken-parse-lr-mckenzie_recover-base.adb   |   136 +-
 ...wisitoken-parse-lr-mckenzie_recover-explore.adb |   842 +-
 .../wisitoken-parse-lr-mckenzie_recover-parse.adb  |    15 +-
 .../wisi/wisitoken-parse-lr-mckenzie_recover.adb   |   720 +-
 .../wisi/wisitoken-parse-lr-mckenzie_recover.ads   |    89 +-
 packages/wisi/wisitoken-parse-lr-parser.adb        |   597 +-
 packages/wisi/wisitoken-parse-lr-parser.ads        |     7 +-
 packages/wisi/wisitoken-parse-lr-parser_lists.adb  |    80 +-
 packages/wisi/wisitoken-parse-lr-parser_lists.ads  |    57 +-
 .../wisi/wisitoken-parse-lr-parser_no_recover.adb  |   211 +-
 .../wisi/wisitoken-parse-lr-parser_no_recover.ads  |    11 +-
 packages/wisi/wisitoken-parse-lr.adb               |    65 +-
 packages/wisi/wisitoken-parse-lr.ads               |   114 +-
 .../wisi/wisitoken-parse-packrat-generated.adb     |    11 +-
 .../wisi/wisitoken-parse-packrat-generated.ads     |     7 +-
 .../wisi/wisitoken-parse-packrat-procedural.adb    |    15 +-
 .../wisi/wisitoken-parse-packrat-procedural.ads    |     7 +-
 packages/wisi/wisitoken-parse-packrat.adb          |    15 +-
 packages/wisi/wisitoken-parse-packrat.ads          |    14 +-
 packages/wisi/wisitoken-parse.adb                  |    33 +-
 packages/wisi/wisitoken-parse.ads                  |    18 +-
 packages/wisi/wisitoken-parse_table-mode.el        |    28 +-
 packages/wisi/wisitoken-productions.adb            |    38 +-
 packages/wisi/wisitoken-productions.ads            |    28 +-
 packages/wisi/wisitoken-syntax_trees-lr_utils.adb  |     6 +-
 packages/wisi/wisitoken-syntax_trees-lr_utils.ads  |     4 +-
 packages/wisi/wisitoken-syntax_trees.adb           |   571 +-
 packages/wisi/wisitoken-syntax_trees.ads           |   235 +-
 packages/wisi/wisitoken-text_io_trace.ads          |     3 +-
 packages/wisi/wisitoken-user_guide.info            |   283 +-
 packages/wisi/wisitoken-wisi_ada.adb               |     8 +-
 packages/wisi/wisitoken.adb                        |    28 +-
 packages/wisi/wisitoken.ads                        |    58 +-
 packages/wisi/wisitoken_grammar_actions.adb        |    56 +-
 packages/wisi/wisitoken_grammar_actions.ads        |    56 +-
 packages/wisi/wisitoken_grammar_main.adb           |   690 +-
 packages/wisi/wisitoken_grammar_re2c.c             |    80 +-
 packages/wisi/wisitoken_grammar_runtime.adb        |   285 +-
 packages/wisi/wisitoken_grammar_runtime.ads        |    36 +-
 140 files changed, 31217 insertions(+), 26332 deletions(-)

diff --git a/packages/ada-mode/NEWS b/packages/ada-mode/NEWS
index 944a7dd..5b03ceb 100644
--- a/packages/ada-mode/NEWS
+++ b/packages/ada-mode/NEWS
@@ -6,6 +6,36 @@ 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 7.1
+11 May 2020
+
+** gpr_query Version 3
+
+** ada-mode fully supports non-ASCII text (the few remaining
+   ASCII-only regular expressions have been fixed).
+
+** gpr_query now starts in the background, and provides a completion
+   table of all symbols in the project.
+
+** keystroke C-M-i is bound to `completion-at-point', and uses the
+   symbol table provided by gpr-query.
+
+** Commands that prompt for a symbol (ie C-u C-c C-d
+   wisi-goto-spec/body and C-u M-. xref-find-definitions) use the
+   completion table provided by gpr_query. With a single C-u, all
+   symbols in the project are used; with two C-u, only
+   symbols defined in the current file are used.
+
+** ada-in-paramlist-p (used by ada-align and other things) no longer
+   parses the full buffer; it only parses if in parens, and only a
+   small region containing the parens.
+
+** Virtual tokens are used in indent, improving indent computation.
+
+** Error recovery is improved.
+
+** Fixes debbugs 40403, 40964, 37620
+
 * Ada Mode 7.0.1
 30 Jan 2020
 
diff --git a/packages/ada-mode/README b/packages/ada-mode/README
index ec8c774..85bb4de 100644
--- a/packages/ada-mode/README
+++ b/packages/ada-mode/README
@@ -1,4 +1,4 @@
-Emacs Ada mode version 7.0.1
+Emacs Ada mode version 7.1.0
 
 Ada mode provides auto-casing, fontification, navigation, and
 indentation for Ada source code files.
diff --git a/packages/ada-mode/ada-compiler-gnat.el 
b/packages/ada-mode/ada-compiler-gnat.el
index 5663f51..beaa9cd 100644
--- a/packages/ada-mode/ada-compiler-gnat.el
+++ b/packages/ada-mode/ada-compiler-gnat.el
@@ -155,7 +155,7 @@ For `compilation-filter-hook'."
   "regexp to extract a file name")
 
 (defconst ada-gnat-quoted-name-regexp
-  "\"\\([a-zA-Z0-9_.']+\\)\""
+  "\"\\([[:alnum:]_.']+\\)\""
   "regexp to extract the quoted names in error messages")
 
 (defconst ada-gnat-quoted-punctuation-regexp
@@ -204,7 +204,7 @@ Prompt user if more than one."
   (save-excursion
     (forward-line 1)
     (skip-syntax-forward "^ ")
-    (looking-at " use fully qualified name starting with \\([a-zA-Z0-9_]+\\) 
to make")
+    (looking-at " use fully qualified name starting with \\([[:alnum:]_]+\\) 
to make")
     (match-string 1)
     ))
 
@@ -436,7 +436,7 @@ Prompt user if more than one."
             (insert " " expected-keyword))
           t)
 
-         ((looking-at "\\(?:possible \\)?missing \"with \\([a-zA-Z0-9_.]+\\);")
+         ((looking-at "\\(?:possible \\)?missing \"with \\([[:alnum:]_.]+\\);")
           ;; also 'possible missing "with Ada.Text_IO; use Ada.Text_IO"' - 
ignoring the 'use'
           (let ((package-name (match-string-no-properties 1)))
             (pop-to-buffer source-buffer)
@@ -543,9 +543,18 @@ Prompt user if more than one."
           t)
 
          ((looking-at (concat "warning: formal parameter " 
ada-gnat-quoted-name-regexp " is not referenced"))
-          (let ((param (match-string 1)))
+          (let ((param (match-string 1))
+                cache)
             (pop-to-buffer source-buffer)
-            (ada-goto-declarative-region-start)
+            ;; Point is in a subprogram parameter list;
+            ;; ada-goto-declarative-region-start goes to the package,
+            ;; not the subprogram declarative_part (this is a change
+            ;; from previous wisi versions).
+            (setq cache (wisi-goto-statement-start))
+            (while (not (eq 'IS (wisi-cache-token cache)))
+              (forward-sexp)
+              (setq cache (wisi-get-cache (point))))
+            (forward-word)
             (newline-and-indent)
             (insert "pragma Unreferenced (" param ");"))
           t)
@@ -774,7 +783,7 @@ Prompt user if more than one."
   (save-match-data
     (while (re-search-forward
            (concat
-            "[^a-zA-Z0-9)]\\('\\)\\[[\"a-fA-F0-9]+\"\\]\\('\\)"; 1, 2: 
non-ascii character literal, not attributes
+            "[^[:alnum:])]\\('\\)\\[[\"a-fA-F0-9]+\"\\]\\('\\)"; 1, 2: 
non-ascii character literal, not attributes
             "\\|\\(\\[\"[a-fA-F0-9]+\"\\]\\)"; 3: non-ascii character in 
identifier
             )
            end t)
diff --git a/packages/ada-mode/ada-core.el b/packages/ada-mode/ada-core.el
index 4157664..d6ca3d5 100644
--- a/packages/ada-mode/ada-core.el
+++ b/packages/ada-mode/ada-core.el
@@ -236,13 +236,13 @@ parser accepts; the parser always accepts a superset of 
ada2012."
   :safe  #'symbolp)
 (make-variable-buffer-local 'ada-language-version)
 
-(defun ada-in-case-expression ()
+(defun ada-in-case-expression (parse-result)
   "Return non-nil if point is in a case expression."
-  (save-excursion
-    ;; Used by ada-align; we know we are in a paren.
-    (wisi-goto-open-paren 1)
-    (while (forward-comment 1))
-    (looking-at "case")))
+  (when (wisi-in-paren-p parse-result)
+    (save-excursion
+      (wisi-goto-open-paren 1 parse-result)
+      (while (forward-comment 1))
+      (looking-at "case"))))
 
 (defun ada-align ()
   "If region is active, apply `align'. If not, attempt to align
@@ -259,9 +259,7 @@ current construct."
        ((ada-in-paramlist-p parse-result)
         (ada-format-paramlist))
 
-       ((and
-        (wisi-in-paren-p parse-result)
-        (ada-in-case-expression))
+       ((ada-in-case-expression parse-result)
        ;; align '=>'
        (let* ((begin (nth 1 parse-result))
               (end   (scan-lists begin 1 0)))
@@ -274,14 +272,21 @@ current construct."
 (defun ada-in-paramlist-p (parse-result)
   "Return t if point is inside the parameter-list of a subprogram declaration.
 PARSE-RESULT must be the result of `syntax-ppss'."
-  (wisi-validate-cache (point-min) (point-max) nil 'navigate)
   ;; (info "(elisp)Parser State" "*syntax-ppss*")
   (let (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)))
-    ))
+    (when (> (nth 0 parse-result) 0)
+      ;; In parens. Request parse of region containing parens; that
+      ;; will be expanded to include the subprogram declaration, if
+      ;; any,
+      (let* ((forward-sexp-function nil) ;; forward-sexp just does parens
+            (start (nth 1 parse-result))
+            (end (save-excursion (goto-char (nth 1 parse-result)) 
(forward-sexp) (point))))
+       (wisi-validate-cache start end nil 'navigate)
+       (setq cache (wisi-get-cache start))
+       ;; cache is nil if the parse failed
+       (when cache
+         (eq 'formal_part (wisi-cache-nonterm cache)))
+       ))))
 
 (defun ada-format-paramlist ()
   "Reformat the parameter list point is in."
@@ -625,9 +630,8 @@ If SRC-DIR is non-nil, use it as the default for 
project.source-path."
 
 (defun ada-prj-make-xref (label)
   ;; We use the autoloaded constructor here
+  ;; No new require here.
   (funcall (intern (format "create-%s-xref" (symbol-name label))))
-  ;; So far the only ada xref we have is gpr_query, which uses a
-  ;; gnat-compiler object, so no new require here.
   )
 
 (defun ada-prj-require-prj ()
@@ -718,39 +722,45 @@ Deselects the current project first."
   ;; test/ada_mode-slices.adb
   ;;   D1, D2 : Day := +Sun;
   ;;
-  ;; For operators, return quoted operator, for gpr_query or gnatfind.
+  ;; For operators, return quoted operator
 
   (cond
    ((wisi-in-comment-p)
-    (error "Inside comment"))
+    nil)
 
    ((wisi-in-string-p)
     ;; In an operator, or a string literal
-    (skip-chars-backward "+*/&<>=-")
-    (cond
-     ((and (= (char-before) ?\")
-          (progn
-            (forward-char -1)
-            (looking-at (concat "\"\\(" ada-operator-re "\\)\""))))
-      (concat "\"" (match-string-no-properties 1) "\""))
+    (let (start)
+      (skip-chars-backward "+*/&<>=-")
+      (setq start (point))
+      (cond
+       ((and (= (char-before) ?\")
+            (progn
+              (forward-char -1)
+              (looking-at (concat "\"\\(" ada-operator-re "\\)\""))))
+       (list start (match-end 1) (concat "\"" (match-string-no-properties 1) 
"\"")))
 
      (t
-      (error "Inside string or character constant"))
-     ))
+      nil)
+     )))
 
    ((looking-at (concat "\"\\(" ada-operator-re "\\)\""))
-    (match-string-no-properties 0))
+    (list (match-beginning 0) (match-end 0) (match-string-no-properties 0)))
 
    ((looking-at ada-operator-re)
-    (concat "\"" (match-string-no-properties 0) "\""))
+    (list (match-beginning 0) (match-end 0) (concat "\"" 
(match-string-no-properties 0) "\"")))
 
-   ((memq (syntax-class (syntax-after (point))) '(2 3))
+   ((or (memq (syntax-class (syntax-after (1- (point)))) '(2 3))
+       (memq (syntax-class (syntax-after (point))) '(2 3)))
     ;; word or symbol syntax.
-    (skip-syntax-backward "w_")
-    (buffer-substring-no-properties (point) (save-excursion 
(skip-syntax-forward "w_") (point))))
+    (let (start)
+      (skip-syntax-backward "w_")
+      (setq start (point))
+      (skip-syntax-forward "w_")
+      (list start (point) (buffer-substring-no-properties start (point)))))
 
    (t
-    (error "No identifier around"))
+    nil)
    ))
 
 ;;;; initialization
diff --git a/packages/ada-mode/ada-gnat-xref.el 
b/packages/ada-mode/ada-gnat-xref.el
index 80ba7ce..8b3b340 100644
--- a/packages/ada-mode/ada-gnat-xref.el
+++ b/packages/ada-mode/ada-gnat-xref.el
@@ -79,9 +79,18 @@
 (cl-defmethod wisi-xref-parse-final ((xref gnatxref-xref) _project 
prj-file-name)
   (setf (gnat-compiler-run-buffer-name xref) (gnat-run-buffer-name 
prj-file-name gnatxref-buffer-name-prefix)))
 
+(cl-defmethod wisi-xref-completion-table ((_xref gnatxref-xref) _project)
+  (wisi-names t t))
+
+(cl-defgeneric wisi-xref-completion-regexp ((_xref gnatxref-xref))
+  wisi-names-regexp)
+
 (defun ada-gnat-xref-adj-col (identifier col)
   "Return COL adjusted for 1-index, quoted operators."
   (cond
+   ((null col)
+    col)
+   
    ((eq ?\" (aref identifier 0))
     ;; There are two cases here:
     ;;
@@ -124,11 +133,11 @@ elements of the result may be nil."
           (concat "-aI" (mapconcat 'identity (wisi-prj-source-path project) " 
-aI")))
         (when (plist-get (ada-prj-plist project) 'obj_dir)
           (concat "-aO" (mapconcat 'identity (plist-get (ada-prj-plist 
project) 'obj_dir) " -aO")))
-        (format "%s:%s:%d:%d"
+        (format "%s:%s:%s:%s"
                 identifier
                 (file-name-nondirectory file)
-                line
-                (ada-gnat-xref-adj-col identifier col))))
+                (or line "")
+                (or (ada-gnat-xref-adj-col identifier col) ""))))
 
 (defun ada-gnat-xref-refs (project item all)
   (with-slots (summary location) item
diff --git a/packages/ada-mode/ada-indent-user-options.el 
b/packages/ada-mode/ada-indent-user-options.el
index 3f58573..0169d00 100644
--- a/packages/ada-mode/ada-indent-user-options.el
+++ b/packages/ada-mode/ada-indent-user-options.el
@@ -1,6 +1,6 @@
 ;; user options shared by Ada mode indentation engines  -*- lexical-binding:t 
-*-
 ;;
-;; Copyright (C) 2012, 2013, 2015, 2017 - 2019  Free Software Foundation, Inc.
+;; Copyright (C) 2012, 2013, 2015, 2017 - 2020  Free Software Foundation, Inc.
 ;;
 ;; Author: Stephen Leake <address@hidden>
 ;; Contributors: Simon Wright <address@hidden>
@@ -64,7 +64,7 @@ That is, one of:
 - next non-blank line
 - previous non-blank line
 
-Otherwise, they are indented as a with previous comments or code."
+Otherwise, they are indented as previous comments or code."
   :type  'boolean
   :safe  #'booleanp)
 (make-variable-buffer-local 'ada-indent-comment-gnat)
diff --git a/packages/ada-mode/ada-mode.el b/packages/ada-mode/ada-mode.el
index 1de8194..b0b05e7 100644
--- a/packages/ada-mode/ada-mode.el
+++ b/packages/ada-mode/ada-mode.el
@@ -6,8 +6,8 @@
 ;; Maintainer: Stephen Leake <address@hidden>
 ;; Keywords: languages
 ;;  ada
-;; Version: 7.0.1
-;; package-requires: ((uniquify-files "1.0.1") (wisi "3.0.1") (emacs "25.0"))
+;; Version: 7.1.0
+;; package-requires: ((uniquify-files "1.0.1") (wisi "3.1.0") (emacs "25.0"))
 ;; url: http://www.nongnu.org/ada-mode/
 ;;
 ;; This file is part of GNU Emacs.
@@ -117,7 +117,7 @@
 (defun ada-mode-version ()
   "Return Ada mode version."
   (interactive)
-  (let ((version-string "7.0.1"))
+  (let ((version-string "7.1.0"))
     (if (called-interactively-p 'interactive)
        (message version-string)
       version-string)))
@@ -191,6 +191,7 @@ nil, only the file name."
     (define-key map "\C-c\C-f"          'wisi-show-parse-error)
     (define-key map "\C-c\C-i"          'wisi-indent-statement)
     (define-key map [3 backtab] 'wisi-indent-containing-statement);; C-c 
backtab, translated from C-c S-tab
+    (define-key map "\C-\M-i"    'completion-at-point)
     (define-key map "\C-c\C-l"          'wisi-show-local-references)
     (define-key map "\C-c\C-m"   'ada-build-set-make)
     (define-key map "\C-c\C-n"          'forward-sexp)
@@ -265,6 +266,7 @@ nil, only the file name."
      ["Previous placeholder"          wisi-skel-prev-placeholder    t]
      )
     ("Edit"
+     ["Complete name at point"      completion-at-point     t]
      ["Expand skeleton"             wisi-skel-expand        t]
      ["Indent line or selection"    indent-for-tab-command  t]
      ["Indent current statement"    wisi-indent-statement   t]
@@ -293,7 +295,7 @@ nil, only the file name."
      )
     ("Misc"
      ["Show last parse error"         wisi-show-parse-error       t]
-     ["Refresh cross reference cache" ada-xref-refresh            t]
+     ["Refresh cross reference cache" wisi-refresh-prj-cache      t]
      ["Restart parser"                wisi-kill-parser            t]
      )))
 
@@ -479,8 +481,8 @@ Runs `ada-syntax-propertize-hook'."
     (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 '''
+              "[^[:alnum:])]\\('\\)[^'\n]\\('\\)"; 1, 2: character literal, 
not attribute
+              "\\|[^[:alnum:])]\\('''\\)"; 3: character literal '''
               )
              end t)
        ;; syntax-propertize-extend-region-functions is set to
@@ -519,7 +521,7 @@ The extensions should include a `.' if needed.")
 See `ff-other-file-alist'.")
 
 (defconst ada-parent-name-regexp
-  "\\([a-zA-Z0-9_\\.]+\\)\\.[a-zA-Z0-9_]+"
+  "\\([[:alnum:]_\\.]+\\)\\.[[:alnum:]_]+"
   "Regexp for extracting the parent name from fully-qualified name.")
 
 (defun ada-ff-special-extract-parent ()
@@ -608,7 +610,7 @@ Also sets ff-function-name for ff-pre-load-hook."
                    ((entry_body entry_declaration)
                     (setq result (ada-which-function-1 "entry" nil)))
 
-                   (full_type_declaration
+                   ((full_type_declaration private_type_declaration)
                     (setq result (ada-which-function-1 "type" nil)))
 
                    (package_body
@@ -861,7 +863,7 @@ compiler-specific compilation filters."
                    ((entry_body entry_declaration)
                     (eq (wisi-cache-token cache) 'ENTRY))
 
-                   (full_type_declaration
+                   ((full_type_declaration private_type_declaration)
                     (when include-type
                       (eq (wisi-cache-token cache) 'TYPE)))
 
@@ -1336,10 +1338,11 @@ comment:      comment"
        ((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)
+        ;; K2 : Integer := (if J > 42
+        ;;                  -- comment indent matching GNAT style check
+        ;;                  then
+        ;;
+        (max prev-indent next-indent))
 
        ))
      )))
diff --git a/packages/ada-mode/ada-mode.info b/packages/ada-mode/ada-mode.info
index 746829a..354b664 100644
--- a/packages/ada-mode/ada-mode.info
+++ b/packages/ada-mode/ada-mode.info
@@ -1,4 +1,4 @@
-This is ada-mode.info, produced by makeinfo version 6.3 from
+This is ada-mode.info, produced by makeinfo version 6.7 from
 ada-mode.texi.
 
 Copyright (C) 1999 - 2020 Free Software Foundation, Inc.
@@ -25,7 +25,7 @@ File: ada-mode.info,  Node: Top,  Next: Overview,  Prev: 
(dir),  Up: (dir)
 Top
 ***
 
-Ada Mode Version 7.0.1
+Ada Mode Version 7.1.0
 
 * Menu:
 
@@ -58,7 +58,7 @@ Installation
 
 Ada executables
 
-* Building GNATCOLL 2019::
+* Building GNATCOLL::
 * Building the executables::
 
 Customizing Ada mode
@@ -242,23 +242,34 @@ build gnatcoll xref from sources.
 
 * Menu:
 
-* Building GNATCOLL 2019::
+* Building GNATCOLL::
 * Building the executables::
 
 
-File: ada-mode.info,  Node: Building GNATCOLL 2019,  Next: Building the 
executables,  Up: Ada executables
+File: ada-mode.info,  Node: Building GNATCOLL,  Next: Building the 
executables,  Up: Ada executables
 
-2.2.1 Building GNATCOLL 2019
-----------------------------
+2.2.1 Building GNATCOLL
+-----------------------
+
+Download gnatcoll-db from <https://github.com/AdaCore/gnatcoll-db>;
+select the latest release branch (or the one that matches your
+compiler), click on the "clone or download" button, select "Download
+ZIP".
 
-Download the gnatcoll xref source file from
-<https://github.com/AdaCore/gnatcoll-db>; click on the "clone or
-download" button, select "Download ZIP".
+   Similarly, download gnatcoll-bindings from
+<https://github.com/AdaCore/gnatcoll-bindings/tree/20.2> (for
+gnatcoll-iconv).
 
    Then unpack, build, and install the required components:
 
-     tar xf ~/Downloads/gnatcoll-db-19.2.zip
-     cd gnatcoll-db-19.2
+     tar xf ~/Downloads/gnatcoll-bindings-20.2.zip
+     cd gnatcoll-bindings-20.2
+     cd iconv
+     ./setup.py build
+     ./setup.py install
+
+     tar xf ~/Downloads/gnatcoll-db-20.2.zip
+     cd gnatcoll-db-20.2
      make -C sql
      make -C sql install
      make -C sqlite
@@ -267,7 +278,7 @@ download" button, select "Download ZIP".
      make -C xref install
 
 
-File: ada-mode.info,  Node: Building the executables,  Prev: Building GNATCOLL 
2019,  Up: Ada executables
+File: ada-mode.info,  Node: Building the executables,  Prev: Building 
GNATCOLL,  Up: Ada executables
 
 2.2.2 Building the executables
 ------------------------------
@@ -1157,7 +1168,7 @@ name as one that was previously selected.
 
    If 'Example_5' is the only project in the current emacs session,
 'wisi-prj-find-dominating-cached' finds no project file (because
-'Example_4' is not a child directory of 'Example_5', so the default
+'Example_4' is not a child directory of 'Example_5'), so the default
 strategy of "ask the user" is used, giving the prompt for a directory.
 
    If 'Example_4' is also a project in the current emacs session,
@@ -1499,14 +1510,21 @@ File: ada-mode.info,  Node: Identifier completion,  
Next: Indentation,  Prev: Mo
 7 Identifier completion
 ***********************
 
-Emacs provides a general way of completing identifiers: 'M-/' (bound to
-'dabbrev-expand').  This is an easy way to type faster: you just have to
-type the first few letters of an identifier, and then loop through all
-the possible completions.
+Emacs provides two general ways of completing identifiers while typing:
+'M-/' (bound to 'dabbrev-expand'), and 'M-tab' (bound to
+'complete-symbol'.
+
+   This is an easy way to type faster: you just have to type the first
+few letters of an identifier, and then loop through all the possible
+completions.
+
+   'complete-symbol' completes on all the symbols defined in the current
+project, as returned by 'gpr_query'.
 
    If you have bound 'hippie-expand', that also uses 'dabbrev-expand'.
 
-   'M-/' works by parsing all open Ada files for possible completions.
+   'dabbrev-expand' completes on all words in all open Ada files for
+possible completions, using simple Emacs syntax-class parsing.
 
    For instance, if the words 'my_identifier' and 'my_subprogram' are
 the only words starting with 'my' in any of the open Ada files, then you
@@ -1521,6 +1539,17 @@ will have this scenario:
    This is a very fast way to do completion, and the casing of words
 will also be respected.
 
+   Another place where identifier completion is used in the
+'xref-find-definitions' (<C-u M-.>) and 'wisi-goto-spec/body' (<C-u C-c
+C-d>) commands; these complete on all symbols in the project (provided
+by 'gpr_query').  With two 'C-u', the completion is limited to symbols
+defined in the current file.
+
+   Note that in Ada, for subprograms that have a specification in the
+'.ads' file and a body in the '.adb' file, <C-u C-u C-c C-d> returns the
+spec location only, so it will not find the function if invoked in the
+'.adb' file.
+
 
 File: ada-mode.info,  Node: Indentation,  Next: Statement skeletons,  Prev: 
Identifier completion,  Up: Top
 
@@ -2515,45 +2544,50 @@ their use in free software.
 
 Tag Table:
 Node: Top931
-Node: Overview2716
-Node: Why not LSP?3953
-Node: Installation4709
-Node: Ada Reference Manual5675
-Node: Ada executables5936
-Node: Building GNATCOLL 20198294
-Node: Building the executables8879
-Node: Customization9702
-Node: Slow response10202
-Node: Non-standard file names11928
-Node: Other compiler13807
-Node: Other cross-reference14382
-Node: Other customization15105
-Node: Compiling Executing19096
-Node: Compile commands19819
-Node: Compiling Examples22511
-Node: No project files23343
-Node: Set compiler options28659
-Node: Set source search path30712
-Node: Use wisi project file32949
-Node: Use multiple GNAT project files36556
-Node: Use a Makefile41400
-Node: Compiler errors43051
-Node: Project files43868
-Node: Project file overview44920
-Node: Project file variables45462
-Node: Moving Through Ada Code48902
-Node: Identifier completion51934
-Node: Indentation52968
-Node: Statement skeletons56497
-Node: Aligning code58140
-Node: Automatic casing59085
-Node: Comment Handling61272
-Node: Key summary61791
-Node: Developer overview64521
-Node: Directory structure64850
-Node: ELPA67537
-Node: Savannah68174
-Node: ada-france68526
-Node: GNU Free Documentation License68765
+Node: Overview2711
+Node: Why not LSP?3948
+Node: Installation4704
+Node: Ada Reference Manual5670
+Node: Ada executables5931
+Node: Building GNATCOLL8284
+Node: Building the executables9179
+Node: Customization9997
+Node: Slow response10497
+Node: Non-standard file names12223
+Node: Other compiler14102
+Node: Other cross-reference14677
+Node: Other customization15400
+Node: Compiling Executing19391
+Node: Compile commands20114
+Node: Compiling Examples22806
+Node: No project files23638
+Node: Set compiler options28954
+Node: Set source search path31007
+Node: Use wisi project file33244
+Node: Use multiple GNAT project files36851
+Node: Use a Makefile41696
+Node: Compiler errors43347
+Node: Project files44164
+Node: Project file overview45216
+Node: Project file variables45758
+Node: Moving Through Ada Code49198
+Node: Identifier completion52230
+Node: Indentation54028
+Node: Statement skeletons57557
+Node: Aligning code59200
+Node: Automatic casing60145
+Node: Comment Handling62332
+Node: Key summary62851
+Node: Developer overview65581
+Node: Directory structure65910
+Node: ELPA68597
+Node: Savannah69234
+Node: ada-france69586
+Node: GNU Free Documentation License69825
 
 End Tag Table
+
+
+Local Variables:
+coding: utf-8
+End:
diff --git a/packages/ada-mode/ada-mode.texi b/packages/ada-mode/ada-mode.texi
index 042236b..313e8e4 100644
--- a/packages/ada-mode/ada-mode.texi
+++ b/packages/ada-mode/ada-mode.texi
@@ -25,7 +25,7 @@ developing GNU and promoting software freedom.''
 
 @titlepage
 @sp 10
-@title Ada Mode Version 7.0.1
+@title Ada Mode Version 7.1.0
 @page
 @vskip 0pt plus 1filll
 @insertcopying
@@ -37,7 +37,7 @@ developing GNU and promoting software freedom.''
 @node Top, Overview, (dir), (dir)
 @top Top
 
-Ada Mode Version 7.0.1
+Ada Mode Version 7.1.0
 @end ifnottex
 
 @menu
@@ -71,7 +71,7 @@ Installation
 
 Ada executables
 
-* Building GNATCOLL 2019::
+* Building GNATCOLL::
 * Building the executables::
 
 Customizing Ada mode
@@ -252,22 +252,32 @@ does not include the xref package, which is required by
 @file{gpr_query}. So we must build gnatcoll xref from sources.
 
 @menu
-* Building GNATCOLL 2019::
+* Building GNATCOLL::
 * Building the executables::
 @end menu
 
-@node Building GNATCOLL 2019
-@subsection Building GNATCOLL 2019
+@node Building GNATCOLL
+@subsection Building GNATCOLL
 
-Download the gnatcoll xref source file from
-@url{https://github.com/AdaCore/gnatcoll-db}; click on the ``clone or
-download'' button, select ``Download ZIP''.
+Download gnatcoll-db from
+@url{https://github.com/AdaCore/gnatcoll-db}; select the latest
+release branch (or the one that matches your compiler), click on the
+``clone or download'' button, select ``Download ZIP''.
+
+Similarly, download gnatcoll-bindings from
+@url{https://github.com/AdaCore/gnatcoll-bindings/tree/20.2} (for 
gnatcoll-iconv).
 
 Then unpack, build, and install the required components:
 
 @example
-tar xf ~/Downloads/gnatcoll-db-19.2.zip
-cd gnatcoll-db-19.2
+tar xf ~/Downloads/gnatcoll-bindings-20.2.zip
+cd gnatcoll-bindings-20.2
+cd iconv
+./setup.py build
+./setup.py install
+
+tar xf ~/Downloads/gnatcoll-db-20.2.zip
+cd gnatcoll-db-20.2
 make -C sql
 make -C sql install
 make -C sqlite
@@ -276,6 +286,16 @@ make -C xref
 make -C xref install
 @end example
 
+@c To build gnatcoll-core with debug, edit the corresponding gpr file
+@c to delete @code{-gnatwe} (there are lots of warnings about license
+@c incompatibility, and a few other things). Then _do not_ build or
+@c install; just setup to create the .gpr files. Installing causes
+@c lots of spurious warnings about files need to be
+@c recompiled. Uninstall core, sql, sqlite, xref; add the build
+@c directories to GPR_PROJECT_PATH, add @code{BUILD=DEBUG} to the
+@c command line, edit the .gpr files to set OS. Sigh; that still
+@c doesn't work.
+
 @node Building the executables
 @subsection Building the executables
 
@@ -1222,7 +1242,7 @@ selected.
 
 If @file{Example_5} is the only project in the current emacs session,
 @code{wisi-prj-find-dominating-cached} finds no project file (because
-@file{Example_4} is not a child directory of @file{Example_5}, so the
+@file{Example_4} is not a child directory of @file{Example_5}), so the
 default strategy of ``ask the user'' is used, giving the prompt for a
 directory.
 
@@ -1236,7 +1256,9 @@ are not in the same directory tree, you will have this 
problem.
 The fix is to use a different function in
 @code{project-find-functions}; @code{wisi-prj-current-cached}. This
 uses a global variable to indicate what the current project is. wisi
-provides four different functions for @code{project-find-functions}. 
@xref{Selecting projects, Selecting projects, Selecting projects, wisi}.
+provides four different functions for
+@code{project-find-functions}. @xref{Selecting projects, Selecting
+projects, Selecting projects, wisi}.
 
 To change @code{project-find-functions}, execute:
 
@@ -1579,16 +1601,22 @@ this menu command.
 @node Identifier completion, Indentation, Moving Through Ada Code, Top
 @chapter Identifier completion
 
-Emacs provides a general way of completing identifiers: @kbd{M-/}
-(bound to @code{dabbrev-expand}). This is an easy way to type faster:
-you just have to type the first few letters of an identifier, and then
-loop through all the possible completions.
+Emacs provides two general ways of completing identifiers while typing: 
@kbd{M-/}
+(bound to @code{dabbrev-expand}), and @kbd{M-tab} (bound to
+@code{complete-symbol}.
+
+This is an easy way to type faster: you just have to type the first
+few letters of an identifier, and then loop through all the possible
+completions.
+
+@code{complete-symbol} completes on all the symbols defined in the
+current project, as returned by @code{gpr_query}.
 
 If you have bound @code{hippie-expand}, that also uses
 @code{dabbrev-expand}.
 
-@kbd{M-/} works by parsing all open Ada files for possible
-completions.
+@code{dabbrev-expand} completes on all words in all open Ada files for
+possible completions, using simple Emacs syntax-class parsing.
 
 For instance, if the words @samp{my_identifier} and @samp{my_subprogram}
 are the only words starting with @samp{my} in any of the open Ada files,
@@ -1605,6 +1633,18 @@ Pressing @kbd{M-/} once more will bring you back to 
@samp{my_identifier}.
 This is a very fast way to do completion, and the casing of words will
 also be respected.
 
+Another place where identifier completion is used in the
+@code{xref-find-definitions} (@key{C-u M-.}) and
+@code{wisi-goto-spec/body} (@key{C-u C-c C-d}) commands; these complete
+on all symbols in the project (provided by @code{gpr_query}). With two
+@kbd{C-u}, the completion is limited to symbols defined in the current
+file.
+
+Note that in Ada, for subprograms that have a specification in the
+@file{.ads} file and a body in the @file{.adb} file,
+@key{C-u C-u C-c C-d} returns the spec location only, so it will not
+find the function if invoked in the @file{.adb} file.
+
 @node Indentation, Statement skeletons, Identifier completion, Top
 @chapter Indentation
 
diff --git a/packages/ada-mode/ada-prj.el b/packages/ada-mode/ada-prj.el
new file mode 100644
index 0000000..c1f1e66
--- /dev/null
+++ b/packages/ada-mode/ada-prj.el
@@ -0,0 +1,7 @@
+;; dummy file to hide obsolete bundled version
+;;;
+;;; Keep this file until drop support for Emacs 26; core ada-mode deleted in 
Emacs 27.
+
+(require 'ada-mode)
+(provide 'ada-prj)
+(message "'ada-prj' is obsolete; use 'ada-mode' instead")
diff --git a/packages/ada-mode/ada-process.el b/packages/ada-mode/ada-process.el
index 73d3efa..e783008 100644
--- a/packages/ada-mode/ada-process.el
+++ b/packages/ada-mode/ada-process.el
@@ -96,7 +96,9 @@
    WITH
    XOR
    LEFT_PAREN
+   LEFT_SQUARE_BRACKET
    RIGHT_PAREN
+   RIGHT_SQUARE_BRACKET
    AMPERSAND
    AT_SIGN
    BAR
@@ -439,7 +441,9 @@
    (WITH . "with")
    (XOR . "xor")
    (LEFT_PAREN . "(")
+   (LEFT_SQUARE_BRACKET . "[")
    (RIGHT_PAREN . ")")
+   (RIGHT_SQUARE_BRACKET . "]")
    (AMPERSAND . "&")
    (AT_SIGN . "@")
    (BAR . "|")
diff --git a/packages/ada-mode/ada-skel.el b/packages/ada-mode/ada-skel.el
index 3e54bdf..537a159 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-2019  Free Software Foundation, Inc.
+;; Copyright (C) 1987, 1993, 1994, 1996-2020  Free Software Foundation, Inc.
 
 ;; Authors: Stephen Leake <address@hidden>
 
@@ -121,7 +121,6 @@ This could end in a token recognized by `ada-skel-expand'."
   "--  version 3.1, as published by the Free Software Foundation.\n"
   "\n"
   "pragma License (Modified_GPL);\n"
-
 )
 
 ;;;;; Ada skeletons (alphabetical)
@@ -130,14 +129,14 @@ This could end in a token recognized by 
`ada-skel-expand'."
   "Insert accept statement with name from `str'."
   ()
   "accept " str " do\n"
-  "end " str ";")
+  "end " str ";\n")
 
 (define-skeleton ada-skel-case
   "Insert case statement."
   ()
   "case " str " is\n"
   "when " _ "=>\n"
-  "end case;")
+  "end case;\n")
 
 (define-skeleton ada-skel-declare
   "Insert a block statement with an optional name (from `str')."
@@ -147,7 +146,7 @@ This could end in a token recognized by `ada-skel-expand'."
   _
   "begin\n"
   "exception\n"
-  "end " str | -1 ?\;)
+  "end " str | -1 ";\n")
 
 (define-skeleton ada-skel-entry
   "Insert entry statement with name from `str'."
@@ -155,14 +154,14 @@ This could end in a token recognized by 
`ada-skel-expand'."
   "entry " str " when " _ "\n"
   "is\n"
   "begin\n"
-  "end " str ";")
+  "end " str ";\n")
 
 (define-skeleton ada-skel-for
   "Insert a for loop statement with an optional name (from `str')."
   ()
   str & " :\n"
   "for " _ " loop\n"
-  "end loop " str | -1 ";")
+  "end loop " str | -1 ";\n")
 
 (define-skeleton ada-skel-function-body
   "Insert a function body with name from `str'."
@@ -171,12 +170,12 @@ This could end in a token recognized by 
`ada-skel-expand'."
   "is\n"
   "begin\n"
   _
-  "end " str ";" >)
+  "end " str ";\n")
 
 (define-skeleton ada-skel-function-spec
   "Insert a function type specification with name from `str'."
   ()
-  "function " str " return ;")
+  "function " str " return ;\n")
 
 (define-skeleton ada-skel-header
   "Insert a file header comment, with automatic copyright year and prompt for 
copyright owner/license.
@@ -195,7 +194,7 @@ Each user will probably want to override this."
   "if " _ " then\n"
   "elsif  then\n"
   "else\n"
-  "end if;")
+  "end if;\n")
 
 (define-skeleton ada-skel-loop
   "Insert a loop statement with an optional name (from `str')."
@@ -203,7 +202,7 @@ Each user will probably want to override this."
   str & " :\n"
   "loop\n"
   "exit " str | -1 " when " _ ";\n"
-  "end loop " str | -1 ";")
+  "end loop " str | -1 ";\n")
 
 (define-skeleton ada-skel-package-body
   "Insert a package body with name from `str'."
@@ -211,7 +210,7 @@ Each user will probably want to override this."
   "package body " str " is\n"
   _
   "begin\n"
-  "end " str ";")
+  "end " str ";\n")
 
 (define-skeleton ada-skel-package-spec
   "Insert a package specification with name from `str'.
@@ -220,7 +219,7 @@ See `ada-find-other-file' to create library level package 
body from spec."
   "package " str " is\n"
   _
   "private\n"
-  "end " str ";")
+  "end " str ";\n")
 
 (define-skeleton ada-skel-procedure-body
   "Insert a procedure body with name from `str'."
@@ -229,19 +228,19 @@ See `ada-find-other-file' to create library level package 
body from spec."
   "is\n"
   "begin\n"
   _
-  "end " str ";")
+  "end " str ";\n")
 
 (define-skeleton ada-skel-procedure-spec
   "Insert a procedure type specification with name from `str'."
   ()
-  "procedure " str ";")
+  "procedure " str ";\n")
 
 (define-skeleton ada-skel-protected-body
   "Insert a protected body with name from `str'."
   ()
   "protected body " str " is\n"
   _
-  "end " str ";")
+  "end " str ";\n")
 
 (define-skeleton ada-skel-protected-spec
   "Insert a protected type specification with name from `str'."
@@ -249,20 +248,20 @@ See `ada-find-other-file' to create library level package 
body from spec."
   "protected type " str " is\n"
   _
   "private\n"
-  "end " str ";")
+  "end " str ";\n")
 
 (define-skeleton ada-skel-record
   "Insert a record type declaration with a type name from `str'."
   ()
   "type " str " is record\n"
   _
-  "end record;")
+  "end record;\n")
 
 (define-skeleton ada-skel-return
   "Insert an extended return statement."
   ()
   "return " _ " do\n"
-  "end return;")
+  "end return;\n")
 
 (define-skeleton ada-skel-select
   "Insert a select statement."
@@ -270,7 +269,7 @@ See `ada-find-other-file' to create library level package 
body from spec."
   "select\n"
   _
   "else\n"
-  "end select;")
+  "end select;\n")
 
 (define-skeleton ada-skel-separate
   "Insert a subunit body."
@@ -285,26 +284,26 @@ See `ada-find-other-file' to create library level package 
body from spec."
   "is\n"
   _
   "begin\n"
-  "end " str ";")
+  "end " str ";\n")
 
 (define-skeleton ada-skel-task-spec
   "Insert a task specification with name from `str'."
   ()
   "task type " str " is\n"
   _
-  "end " str ";")
+  "end " str ";\n")
 
 (define-skeleton ada-skel-while
   "Insert a while loop statement with an optional name (from `str')."
   ()
   str & ":\n"
   "while " _ " loop\n"
-  "end loop " str | -1 ";")
+  "end loop " str | -1 ";\n")
 
 (define-skeleton ada-skel-with-use
   "Insert with and use context clauses with name from `str'."
   ()
-  "with " str "; use " str ";")
+  "with " str "; use " str ";\n")
 
 ;;;;; token alist
 
diff --git a/packages/ada-mode/ada-stmt.el b/packages/ada-mode/ada-stmt.el
new file mode 100644
index 0000000..25cf111
--- /dev/null
+++ b/packages/ada-mode/ada-stmt.el
@@ -0,0 +1,7 @@
+;; dummy file to hide obsolete bundled version
+;;;
+;;; Keep this file until drop support for Emacs 26; core ada-mode deleted in 
Emacs 27.
+
+(require 'ada-mode)
+(provide 'ada-stmt)
+(message "'ada-stmt' is obsolete; use 'ada-mode' instead")
diff --git a/packages/ada-mode/ada-xref.el b/packages/ada-mode/ada-xref.el
new file mode 100644
index 0000000..b72901f
--- /dev/null
+++ b/packages/ada-mode/ada-xref.el
@@ -0,0 +1,8 @@
+;;; ada-xref.el --- Dummy file to hide obsolete bundled version  -*- 
lexical-binding:t -*-
+;;; see xref-ada.el for Emacs 25 xref minor mode for ada-mode
+;;;
+;;; Keep this file until drop support for Emacs 26; core ada-mode deleted in 
Emacs 27.
+
+(require 'ada-mode)
+(provide 'ada-xref)
+(message "'ada-xref' is obsolete; use 'ada-mode' instead")
diff --git a/packages/ada-mode/ada.wy b/packages/ada-mode/ada.wy
index 415d727..d50b89e 100644
--- a/packages/ada-mode/ada.wy
+++ b/packages/ada-mode/ada.wy
@@ -117,8 +117,10 @@
 %keyword WITH "with"
 %keyword XOR "xor"
 
-%token <left-paren> LEFT_PAREN "("
+%token <left-paren>  LEFT_PAREN  "("
 %token <right-paren> RIGHT_PAREN ")"
+%token <left-paren>  LEFT_SQUARE_BRACKET  "["
+%token <right-paren> RIGHT_SQUARE_BRACKET "]"
 
 %token <punctuation> AMPERSAND "&"
 %token <punctuation> AT_SIGN "@"
@@ -175,7 +177,7 @@
 ;; Treat Ada comments, gnatprep preprocessor lines, and skeleton
 ;; 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]) ]%
+%non_grammar <comment> COMMENT %[ 
(("--"|"#if"|"#elsif"|"#else"|"#end")[^\n\x04]*)|("{"[^}\n\x04]*) ]%
 
 ;; '$' for gnatprep symbols.
 %token <symbol> IDENTIFIER
@@ -287,10 +289,13 @@
 %conflict REDUCE/REDUCE in state aggregate, aggregate on token RIGHT_PAREN
 %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 discrete_choice, discrete_subtype_definition 
on token EQUAL_GREATER
+%conflict REDUCE/REDUCE in state discrete_choice, subtype_indication on token 
EQUAL_GREATER
 %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 primary, subtype_indication on token COMMA
+%conflict REDUCE/REDUCE in state primary, subtype_indication on token 
EQUAL_GREATER
 %conflict REDUCE/REDUCE in state primary, subtype_indication on token 
RIGHT_PAREN
 %conflict REDUCE/REDUCE in state range_list, discrete_subtype_definition on 
token COMMA
 %conflict REDUCE/REDUCE in state range_list, discrete_subtype_definition on 
token RIGHT_PAREN
@@ -324,10 +329,6 @@
 %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 parser = LALR
-%conflict REDUCE/REDUCE in state primary, subtype_indication on token 
EQUAL_GREATER
-%end if
-
 ;;;; grammar rules
 ;;
 ;; The actions cache information in keywords that are significant for
@@ -381,21 +382,23 @@ abstract_tagged_limited_opt
 abstract_subprogram_declaration
   : overriding_indicator_opt subprogram_specification IS ABSTRACT 
aspect_specification_opt SEMICOLON
     %((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 ada-indent-broken]))%
   ;
 
 accept_statement
-  : ACCEPT IDENTIFIER actual_parameter_part_opt parameter_profile_opt DO 
handled_sequence_of_statements END identifier_opt SEMICOLON
+  : ACCEPT IDENTIFIER actual_parameter_part_opt parameter_profile_opt DO 
handled_sequence_of_statements END
+    identifier_opt SEMICOLON
     %((wisi-statement-action [1 statement-start 5 motion 9 statement-end])
       (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-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken [nil ada-indent]
+                               [ada-indent ada-indent] nil ada-indent-broken 
ada-indent-broken]))%
     %((wisi-match-names 2 8))%
 
   | ACCEPT IDENTIFIER actual_parameter_part_opt parameter_profile_opt SEMICOLON
     %((wisi-statement-action [1 statement-start 5 statement-end])
       (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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken]))%
   ;
 
 ;; same as access_type_definition for our purposes
@@ -405,7 +408,7 @@ access_definition
  ;; type Procedure_Access_Type_8 is access
  ;;   protected procedure
  ;;     (A_Param : out Integer);
-    %((wisi-indent-action [nil nil nil nil (wisi-anchored% 4 
ada-indent-broken)]))%
+    %((wisi-indent-action [nil nil nil nil (wisi-anchored%- 4 
ada-indent-broken)]))%
 
   | null_exclusion_opt ACCESS protected_opt FUNCTION 
parameter_and_result_profile
  ;; test/ada_mode-nominal.ads
@@ -436,22 +439,29 @@ actual_parameter_part_opt
 ;; All LEFT_PAREN in aggregate are indented 0 here. Special cases for
 ;; -1 are handled in 'primary'.
 aggregate
-  : LEFT_PAREN expression_opt WITH NULL RECORD RIGHT_PAREN ;; 
extension_aggregate with null record
+  : LEFT_PAREN association_list RIGHT_PAREN ;; record_aggregate, 
named_array_aggregate, positional_array_aggregate
+    %((wisi-indent-action [nil [(wisi-anchored 1 1) (wisi-anchored 1 1)] 
(wisi-anchored 1 0)]))%
+  | LEFT_PAREN NULL RECORD RIGHT_PAREN ;; record_aggregate
+
+  | LEFT_PAREN expression_opt WITH NULL RECORD RIGHT_PAREN ;; 
extension_aggregate with null record
     %((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 ;; 
extension_aggregate
     %((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
+                               (wisi-anchored 1 0)]))%
+  
   | LEFT_PAREN expression WITH DELTA association_list RIGHT_PAREN ;; 
record_delta_aggregate, array_delta_aggregate
     %((wisi-indent-action [nil (wisi-anchored 1 1) (wisi-anchored 1 1) 
(wisi-anchored 1 1)  
                                [(wisi-anchored 1 1) (wisi-anchored 1 1)]
                                (wisi-anchored 1 0)]))%
-
+  
+  | LEFT_SQUARE_BRACKET expression WITH DELTA association_list 
RIGHT_SQUARE_BRACKET ;; array_delta_aggregate
+    %((wisi-indent-action [nil (wisi-anchored 1 1) (wisi-anchored 1 1) 
(wisi-anchored 1 1)  
+                               [(wisi-anchored 1 1) (wisi-anchored 1 1)]
+                               (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 1)] 
(wisi-anchored 1 0)]))%
-  | LEFT_PAREN association_list RIGHT_PAREN ;; record_aggregate, 
named_array_aggregate, positional_array_aggregate
-    %((wisi-indent-action [nil [(wisi-anchored 1 1) (wisi-anchored 1 1)] 
(wisi-anchored 1 0)]))%
   ;
 
 aliased_opt
@@ -477,7 +487,7 @@ array_type_definition
 aspect_clause
   : FOR attribute_reference USE expression_opt SEMICOLON ;; 
attribute_definition_clause
     %((wisi-statement-action [1 statement-start 5 statement-end])
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil]))%
+        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken]))%
   | enumeration_representation_clause
   | record_representation_clause
   | at_clause
@@ -502,13 +512,17 @@ assignment_statement
                            (wisi-hanging
                             (wisi-anchored% 2 ada-indent-broken)
                             (wisi-anchored% 3 ada-indent-broken))
-                           nil]))%
+                           ada-indent-broken]))%
   ;
 
 association_opt
   : CHARACTER_LITERAL EQUAL_GREATER expression_opt ;; part of selector_name 
that does not overlap name
-    %((wisi-indent-action [nil ada-indent-broken
-                         [(wisi-anchored% 2 ada-indent-broken) (wisi-anchored% 
2 ada-indent-broken)]]))%
+    %((wisi-indent-action [nil
+                           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)))]]))%
   | CHARACTER_LITERAL EQUAL_GREATER BOX ;; from formal_package_association_list
   | discrete_choice_list EQUAL_GREATER expression_opt
  ;; We need wisi-hanging on expression_opt to recognize aspect_specification 
for a special case.
@@ -534,13 +548,17 @@ association_opt
                                             (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]))%
-  | FOR IDENTIFIER IN discrete_choice_list EQUAL_GREATER expression ;; 
iterated_component_association
-    %((wisi-indent-action [nil nil nil (wisi-hanging nil ada-indent-broken) 
ada-indent-broken
-                               [(wisi-hanging nil ada-indent-broken) 
(wisi-hanging nil ada-indent-broken)]]))%
   | expression
  ;; test/ada_mode-parens.adb Hello
     %((wisi-indent-action [[(wisi-hanging nil ada-indent-broken) (wisi-hanging 
nil ada-indent-broken)]]))%
   | ;; empty
+    
+  | FOR IDENTIFIER IN discrete_choice_list EQUAL_GREATER expression ;; 
iterated_component_association
+    %((wisi-indent-action [nil nil nil (wisi-hanging nil ada-indent-broken) 
ada-indent-broken
+                               [(wisi-hanging nil ada-indent-broken) 
(wisi-hanging nil ada-indent-broken)]]))%
+  | FOR iterator_specification EQUAL_GREATER expression ;; 
iterated_component_association
+    %((wisi-indent-action [nil (wisi-hanging nil ada-indent-broken) 
ada-indent-broken
+                               [(wisi-hanging nil ada-indent-broken) 
(wisi-hanging nil ada-indent-broken)]]))%
   ;
 
 association_list
@@ -553,7 +571,7 @@ asynchronous_select
     %((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]))%
+                                 [ada-indent ada-indent] nil ada-indent-broken 
ada-indent-broken]))%
   ;
 
 at_clause
@@ -594,12 +612,13 @@ block_statement
   : block_label_opt DECLARE declarative_part_opt BEGIN 
handled_sequence_of_statements END identifier_opt SEMICOLON
     %((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-indent-action [nil nil [ada-indent ada-indent] nil [ada-indent 
ada-indent] nil ada-indent-broken
+                               ada-indent-broken]))%
     %((wisi-match-names 1 7))%
   | block_label_opt BEGIN handled_sequence_of_statements END identifier_opt 
SEMICOLON
     %((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-indent-action [nil nil [ada-indent ada-indent] nil 
ada-indent-broken ada-indent-broken]))%
     %((wisi-match-names 1 5))%
   ;
 
@@ -637,7 +656,7 @@ case_statement
   : CASE expression_opt IS case_statement_alternative_list END CASE SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil ada-indent-broken nil [ada-indent-when 
ada-indent-when] nil ada-indent-broken ada-indent-broken]))%
   ;
 
 case_statement_alternative
@@ -689,7 +708,8 @@ compilation_unit_list
 component_clause
   : IDENTIFIER AT simple_expression RANGE simple_expression DOT_DOT 
simple_expression SEMICOLON
     %((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]))%
+      (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]))%
   ;
 
 component_clause_list
@@ -702,10 +722,10 @@ component_declaration
     %((wisi-statement-action [1 statement-start 7 statement-end])
       (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken
                                (wisi-anchored% 4 ada-indent-broken)
-                               ada-indent-broken nil]))%
+                               ada-indent-broken ada-indent-broken]))%
   | identifier_list COLON component_definition aspect_specification_opt 
SEMICOLON
     %((wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken]))%
   ;
 
 component_definition
@@ -748,7 +768,8 @@ conditional_entry_call
   : SELECT entry_call_alternative ELSE sequence_of_statements_opt END SELECT 
SEMICOLON
     %((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]))%
+        (wisi-indent-action [nil [ada-indent ada-indent] nil [ada-indent 
ada-indent] nil ada-indent-broken
+                                 ada-indent-broken]))%
   ;
 
 conditional_quantified_expression
@@ -790,7 +811,7 @@ declaration
   | identifier_list COLON CONSTANT COLON_EQUAL expression_opt SEMICOLON ;; 
number_declaration
     %((wisi-statement-action [1 statement-start 6 statement-end])
       (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]))%
+                           (wisi-anchored% 4 ada-indent-broken) 
ada-indent-broken]))%
   | object_declaration
   | package_declaration
   | renaming_declaration
@@ -824,10 +845,10 @@ delay_alternative
 delay_statement
   : DELAY UNTIL expression_opt SEMICOLON
     %((wisi-statement-action [1 statement-start 4 statement-end])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken nil]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken]))%
   | DELAY expression_opt SEMICOLON
     %((wisi-statement-action [1 statement-start 3 statement-end])
-      (wisi-indent-action [nil ada-indent-broken nil]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken]))%
   ;
 
 derived_type_definition
@@ -938,7 +959,8 @@ entry_body
         ;;     (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]))%
+                                 nil [ada-indent ada-indent] nil [ada-indent 
ada-indent] nil ada-indent-broken
+                                 ada-indent-broken]))%
     %((wisi-match-names 2 11))%
   ;
 
@@ -961,12 +983,12 @@ entry_declaration
         (wisi-name-action 3)
         (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]))%
+                               ada-indent-broken ada-indent-broken 
ada-indent-broken]))%
   | overriding_indicator_opt ENTRY IDENTIFIER parameter_profile_opt 
aspect_specification_opt SEMICOLON
     %((wisi-statement-action [1 statement-start 2 statement-override 6 
statement-end])
         (wisi-name-action 3)
         (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]))%
+        (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken]))%
   ;
 
 enumeration_literal ;; enumeration_literal_specification
@@ -983,7 +1005,9 @@ enumeration_representation_clause
   : FOR name USE aggregate SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken ada-indent-broken 
ada-indent-broken]))%
   ;
 
 enumeration_type_definition
@@ -1030,7 +1054,7 @@ exception_handler_list_opt
 exit_statement
   : EXIT identifier_opt WHEN expression_opt SEMICOLON
     %((wisi-statement-action [1 statement-start 5 statement-end])
-      (wisi-indent-action [nil nil nil ada-indent-broken nil]))%
+      (wisi-indent-action [nil nil nil ada-indent-broken ada-indent-broken]))%
   | EXIT identifier_opt SEMICOLON
     %((wisi-statement-action [1 statement-start 3 statement-end]))%
   ;
@@ -1054,7 +1078,7 @@ expression_function_declaration
  ;; IS does not start a block, so it is not "motion".
  ;;
     %((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]))%
+      (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken]))%
   ;
 
 extended_return_object_declaration
@@ -1074,7 +1098,8 @@ extended_return_statement
   : RETURN extended_return_object_declaration_opt DO 
handled_sequence_of_statements END RETURN SEMICOLON
     %((wisi-statement-action [1 statement-start 3 motion 7 statement-end])
       (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]))%
+      (wisi-indent-action [[nil ada-indent] ada-indent-broken nil [ada-indent 
ada-indent] nil ada-indent-broken
+                           ada-indent-broken]))%
   | RETURN extended_return_object_declaration SEMICOLON
     %((wisi-statement-action [1 statement-start 3 statement-end]))%
       ;; indent the same as a simple return statment
@@ -1098,21 +1123,27 @@ formal_object_declaration
     expression_opt aspect_specification_opt SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil
+                           ada-indent-broken ada-indent-broken 
ada-indent-broken
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken
+                           (wisi-anchored% 6 ada-indent-broken) 
ada-indent-broken ada-indent-broken]))%
   | identifier_list COLON mode_opt access_definition COLON_EQUAL
     expression_opt aspect_specification_opt SEMICOLON
     %((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]))%
+                             (wisi-anchored% 5 ada-indent-broken) 
ada-indent-broken ada-indent-broken]))%
   | identifier_list COLON mode_opt null_exclusion_opt name 
aspect_specification_opt SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil
+                           ada-indent-broken ada-indent-broken 
ada-indent-broken
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken ada-indent-broken]))%
   | identifier_list COLON mode_opt access_definition aspect_specification_opt 
SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
+                               ada-indent-broken]))%
   ;
 
 formal_part
@@ -1125,18 +1156,18 @@ formal_subprogram_declaration
   : WITH subprogram_specification IS ABSTRACT subprogram_default 
aspect_specification_opt SEMICOLON
  ;; formal_abstract_subprogram_declaration
     %((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]))%
+      (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken ada-indent-broken]))%
   | WITH subprogram_specification IS subprogram_default 
aspect_specification_opt SEMICOLON
  ;; formal_concrete_subprogram_declaration
     %((wisi-statement-action [1 statement-start 6 statement-end])
-      (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil]))%
+      (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken]))%
   | WITH subprogram_specification IS ABSTRACT aspect_specification_opt 
SEMICOLON
  ;; formal_abstract_subprogram_declaration
     %((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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken ada-indent-broken]))%
   | WITH subprogram_specification aspect_specification_opt SEMICOLON ;; 
formal_concrete_subprogram_declaration
     %((wisi-statement-action [1 statement-start 4 statement-end])
-      (wisi-indent-action [nil nil ada-indent-broken nil]))%
+      (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken]))%
   ;
 
 formal_type_declaration
@@ -1145,17 +1176,17 @@ formal_type_declaration
     %((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]))%
+                             ada-indent-broken ada-indent-broken 
ada-indent-broken]))%
   | TYPE IDENTIFIER discriminant_part_opt IS TAGGED aspect_specification_opt 
SEMICOLON
  ;; formal_incomplete_type_declaration
     %((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]))%
+                               ada-indent-broken ada-indent-broken]))%
   | TYPE IDENTIFIER discriminant_part_opt aspect_specification_opt SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken]))%
   ;
 
 formal_type_definition
@@ -1186,7 +1217,13 @@ formal_package_declaration
     %((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]))%
+      (wisi-indent-action [nil
+                           ada-indent-broken
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken ada-indent-broken
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken
+                           ada-indent-broken ada-indent-broken]))%
   ;
 
 formal_package_actual_part
@@ -1210,7 +1247,8 @@ full_type_declaration
         ;; ada-indent-record-rel-type if type_definition is a record.
         (wisi-indent-action [nil ada-indent-broken ada-indent-broken
                                  [ada-indent-broken (ada-indent-record* 'TYPE 
5 ada-indent-broken)]
-                                 ada-indent-broken nil nil]))%
+                                 (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                                 nil ada-indent-broken]))%
   | task_type_declaration
   | protected_type_declaration
   ;
@@ -1220,7 +1258,9 @@ function_specification
     %((wisi-statement-action [1 statement-start])
         (wisi-name-action 2)
         (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-indent-action [nil
+                             (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                             ada-indent-broken]))%
     %((wisi-propagate-name 2))%
   ;
 
@@ -1268,27 +1308,41 @@ generic_instantiation
         (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]))%
+        (wisi-indent-action [nil
+                             (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                             nil ada-indent-broken
+                             (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                             ada-indent-broken ada-indent-broken]))%
   | overriding_indicator_opt PROCEDURE name IS NEW name 
aspect_specification_opt SEMICOLON
     %((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]))%
+        (wisi-indent-action [nil
+                             nil
+                             (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                             ada-indent-broken ada-indent-broken
+                             (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                             ada-indent-broken ada-indent-broken]))%
   | overriding_indicator_opt FUNCTION name IS NEW name 
aspect_specification_opt SEMICOLON
     %((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 nil ada-indent-broken 
ada-indent-broken ada-indent-broken
-                                 nil]))%
+        (wisi-indent-action [nil
+                             nil
+                             (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                             nil ada-indent-broken
+                             (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                             ada-indent-broken
+                             ada-indent-broken]))%
   ;
 
 generic_package_declaration
   : generic_formal_part package_specification SEMICOLON
     %((wisi-statement-action [1 statement-start 3 statement-end])
       (wisi-motion-action [1 2 3])
-      (wisi-indent-action [[nil ada-indent] nil nil]))%
+      (wisi-indent-action [[nil ada-indent] nil ada-indent-broken]))%
   ;
 
 generic_renaming_declaration
@@ -1297,21 +1351,37 @@ generic_renaming_declaration
         (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]))%
+        (wisi-indent-action [nil
+                             nil
+                             (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                             ada-indent-broken
+                             (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                             ada-indent-broken
+                             ada-indent-broken]))%
   | GENERIC PROCEDURE name RENAMES name aspect_specification_opt SEMICOLON
     %((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]))%
+        (wisi-indent-action [nil
+                             nil
+                             (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                             (ada-indent-renames 3)
+                             (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                             ada-indent-broken
+                             ada-indent-broken]))%
   | GENERIC FUNCTION name RENAMES name aspect_specification_opt SEMICOLON
     %((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]))%
+        (wisi-indent-action [nil
+                             nil
+                             (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                             (ada-indent-renames 3)
+                             (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                             ada-indent-broken
+                             ada-indent-broken]))%
   ;
 
 generic_subprogram_declaration
@@ -1323,7 +1393,7 @@ generic_subprogram_declaration
 goto_label
   : LESS_LESS IDENTIFIER GREATER_GREATER
     %((wisi-face-apply-action [2 nil font-lock-constant-face])
-      (wisi-indent-action [ada-indent-label nil nil]))%
+      (wisi-indent-action [ada-indent-label ada-indent-broken 
ada-indent-broken]))%
   ;
 
 handled_sequence_of_statements
@@ -1378,7 +1448,7 @@ if_statement
                             ada-indent-broken]
                            nil
                            [ada-indent ada-indent] nil nil
-                           [ada-indent ada-indent] nil nil nil]))%
+                           [ada-indent ada-indent] nil ada-indent-broken 
ada-indent-broken]))%
   | IF expression_opt THEN sequence_of_statements_opt ELSE 
sequence_of_statements_opt END IF SEMICOLON
     %((wisi-statement-action [1 statement-start 3 motion 5 motion 9 
statement-end])
       (wisi-motion-action [1 3 5 9])
@@ -1386,21 +1456,21 @@ if_statement
                               ada-indent-broken]
                              nil
                              [ada-indent ada-indent] nil
-                             [ada-indent ada-indent] nil nil nil]))%
+                             [ada-indent ada-indent] nil ada-indent-broken 
ada-indent-broken]))%
   | IF expression_opt THEN sequence_of_statements_opt elsif_statement_list END 
IF SEMICOLON
     %((wisi-statement-action [1 statement-start 3 motion 8 statement-end])
       (wisi-motion-action [1 3 5 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]))%
+                             [ada-indent ada-indent] nil nil ada-indent-broken 
ada-indent-broken]))%
   | IF expression_opt THEN sequence_of_statements_opt END IF SEMICOLON
     %((wisi-statement-action [1 statement-start 3 motion 7 statement-end])
       (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]))%
+                             [ada-indent ada-indent] nil ada-indent-broken 
ada-indent-broken]))%
   ;
 
 incomplete_type_declaration
@@ -1408,12 +1478,12 @@ incomplete_type_declaration
     %((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]))%
+        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken ada-indent-broken]))%
   | TYPE IDENTIFIER discriminant_part_opt SEMICOLON
     %((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]))%
+        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken]))%
   ;
 
 index_constraint
@@ -1494,12 +1564,13 @@ loop_statement
   : block_label_opt iteration_scheme LOOP sequence_of_statements_opt END LOOP 
identifier_opt SEMICOLON
     %((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-indent-action [nil nil nil [ada-indent ada-indent] nil 
ada-indent-broken ada-indent-broken
+                               ada-indent-broken]))%
     %((wisi-match-names 1 7))%
   | block_label_opt LOOP sequence_of_statements_opt END LOOP identifier_opt 
SEMICOLON
     %((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-indent-action [nil nil [ada-indent ada-indent] nil 
ada-indent-broken ada-indent-broken ada-indent-broken]))%
     %((wisi-match-names 1 6))%
   ;
 
@@ -1555,10 +1626,10 @@ name
  ;;   (The_Switch.First ..
  ;;      The_Switch.Last);
     %((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)]))%
+                           (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
  ;; type_conversion, function_call, procedure call, generic
@@ -1579,9 +1650,10 @@ name
  ;;   := F_Long_Name
  ;;        (A => True,
  ;;         B => True);
-    %((wisi-indent-action [nil (if ada-indent-hanging-rel-exp
-                                 (wisi-anchored 1 ada-indent-broken)
-                               (wisi-anchored% 1 ada-indent-broken))]))%
+    %((wisi-indent-action [nil
+                           (if ada-indent-hanging-rel-exp
+                               (wisi-anchored 1 ada-indent-broken)
+                             (wisi-anchored% 1 ada-indent-broken))]))%
 
   | selected_component ;; starts with name
     %()%
@@ -1639,37 +1711,40 @@ null_exclusion_opt_name_type
 null_procedure_declaration
   : overriding_indicator_opt procedure_specification IS NULL 
aspect_specification_opt SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken]))%
   ;
 
 object_declaration
   : identifier_list COLON aliased_opt constant_opt subtype_indication 
COLON_EQUAL
     expression_opt aspect_specification_opt SEMICOLON
     %((wisi-statement-action [1 statement-start 9 statement-end])
-      (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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken
+                               (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                               ada-indent-broken
+                               (wisi-anchored%- 6 ada-indent-broken) 
ada-indent-broken ada-indent-broken]))%
   | identifier_list COLON aliased_opt constant_opt access_definition 
COLON_EQUAL
     expression_opt aspect_specification_opt SEMICOLON
     %((wisi-statement-action [1 statement-start 9 statement-end])
       (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]))%
+                             (wisi-anchored% 6 ada-indent-broken) 
ada-indent-broken ada-indent-broken]))%
   | identifier_list COLON aliased_opt constant_opt array_type_definition 
COLON_EQUAL
     expression_opt aspect_specification_opt SEMICOLON
     %((wisi-statement-action [1 statement-start 9 statement-end])
       (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]))%
+                             (wisi-anchored% 6 ada-indent-broken) 
ada-indent-broken ada-indent-broken]))%
   | identifier_list COLON aliased_opt constant_opt subtype_indication 
aspect_specification_opt SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken
+                               (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                               ada-indent-broken ada-indent-broken]))%
   | identifier_list COLON aliased_opt constant_opt access_definition 
aspect_specification_opt SEMICOLON
     %((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]))%
+                               ada-indent-broken ada-indent-broken]))%
   | identifier_list COLON aliased_opt constant_opt array_type_definition 
aspect_specification_opt SEMICOLON
     %((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]))%
+                               ada-indent-broken ada-indent-broken]))%
   | single_task_declaration
   | single_protected_declaration
   ;
@@ -1679,19 +1754,25 @@ object_renaming_declaration
     %((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]))%
+      (wisi-indent-action [nil
+                           ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken ada-indent-broken]))%
   | IDENTIFIER COLON access_definition RENAMES name aspect_specification_opt 
SEMICOLON
     %((wisi-statement-action [1 statement-start 7 statement-end])
       (wisi-name-action 1)
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
-                                 ada-indent-broken nil]))%
+      (wisi-indent-action [nil
+                           ada-indent-broken ada-indent-broken 
ada-indent-broken
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken ada-indent-broken]))%
   | IDENTIFIER COLON EXCEPTION RENAMES name aspect_specification_opt SEMICOLON 
;; exception_renaming_declaration
     %((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]))%
+      (wisi-indent-action [nil
+                           ada-indent-broken ada-indent-broken 
ada-indent-broken
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken ada-indent-broken]))%
   ;
 
 ;; operator_symbol is STRING_LITERAL, in name
@@ -1712,8 +1793,13 @@ package_body
       (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]
-                               nil [ada-indent ada-indent] nil 
ada-indent-broken nil]))%
+      (wisi-indent-action [nil
+                           ada-indent-broken
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           nil nil [ada-indent ada-indent]
+                           nil [ada-indent ada-indent] nil
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken]))%
     %((wisi-match-names 3 10))%
 
   | PACKAGE BODY name aspect_specification_opt IS declarative_part_opt END 
name_opt SEMICOLON
@@ -1722,8 +1808,12 @@ package_body
       (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]))%
+      (wisi-indent-action [nil
+                           ada-indent-broken
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken nil [ada-indent ada-indent] nil
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken]))%
     %((wisi-match-names 3 8))%
   ;
 
@@ -1732,7 +1822,10 @@ package_body_stub
     %((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]))%
+      (wisi-indent-action [nil
+                           ada-indent-broken
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           nil ada-indent-broken ada-indent-broken 
ada-indent-broken]))%
   ;
 
 package_declaration
@@ -1747,7 +1840,11 @@ package_renaming_declaration
       (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]))%
+      (wisi-indent-action [nil
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken ada-indent-broken]))%
   ;
 
 package_specification
@@ -1757,8 +1854,11 @@ package_specification
       (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]))%
+      (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
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))]))%
     %((wisi-match-names 2 9))%
   | PACKAGE name aspect_specification_opt IS declarative_part_opt END name_opt
     %((wisi-statement-action [1 statement-start 4 motion])
@@ -1766,7 +1866,10 @@ package_specification
       (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]))%
+      (wisi-indent-action [nil
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken nil [ada-indent ada-indent] nil
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))]))%
     %((wisi-match-names 2 7))%
   ;
 
@@ -1787,12 +1890,15 @@ parameter_profile_opt
 parameter_specification
   : identifier_list COLON aliased_opt mode_opt null_exclusion_opt name 
COLON_EQUAL expression_opt
     %((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)]))%
+      (wisi-indent-action [nil
+                           ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken (wisi-anchored% 7 
ada-indent-broken)]))%
   | identifier_list COLON aliased_opt mode_opt null_exclusion_opt name
     %((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]))%
+      (wisi-indent-action [nil
+                           ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
+                           (wisi-hanging%- ada-indent-broken (* 2 
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)]))%
@@ -1826,16 +1932,18 @@ pragma_g
  ;; ARM has 'pragma_argument_association'; this is a superset, and reduces 
redundancy
     %((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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
(wisi-anchored 3 1) (wisi-anchored 3 0)
+                               ada-indent-broken]))%
  ;; ARM 4.5.7(7), ARM 4.5.8(4) allow ( conditional|quantified_expression ) 
instead of (( ... ))
   | PRAGMA IDENTIFIER LEFT_PAREN conditional_quantified_expression RIGHT_PAREN 
SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
(wisi-anchored 3 1) (wisi-anchored 3 0)
+                               ada-indent-broken]))%
   | PRAGMA IDENTIFIER SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken]))%
   ;
 
 ;; prefix is name
@@ -1862,7 +1970,8 @@ private_extension_declaration
       (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]))%
+                               ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
+                               nil ada-indent-broken]))%
   ;
 
 private_type_declaration
@@ -1870,14 +1979,14 @@ private_type_declaration
     %((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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken nil 
ada-indent-broken ada-indent-broken
+                               nil ada-indent-broken]))%
   ;
 
 procedure_call_statement
   : name SEMICOLON
     %((wisi-statement-action [1 statement-start 2 statement-end])
-      (wisi-indent-action [(wisi-hanging nil ada-indent-broken) nil]))%
+      (wisi-indent-action [(wisi-hanging- nil ada-indent-broken) 
ada-indent-broken]))%
   ;
 
 procedure_specification
@@ -1885,7 +1994,9 @@ procedure_specification
     %((wisi-statement-action [1 statement-start])
       (wisi-name-action 2)
       (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-indent-action [nil
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken]))%
     %((wisi-propagate-name 2))%
   ;
 
@@ -1902,7 +2013,8 @@ protected_body
       (wisi-name-action 3)
       (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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken nil nil 
ada-indent nil ada-indent-broken
+                               ada-indent-broken]))%
     %((wisi-match-names 3 8))%
   ;
 
@@ -1911,7 +2023,8 @@ protected_body_stub
     %((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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
+                               ada-indent-broken ada-indent-broken]))%
   ;
 
 protected_definition
@@ -1959,14 +2072,15 @@ protected_type_declaration
       (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]))%
+                               ada-indent-broken ada-indent-broken 
ada-indent-broken nil ada-indent-broken]))%
     %((wisi-match-names 3 10))%
   | PROTECTED TYPE IDENTIFIER discriminant_part_opt aspect_specification_opt 
IS protected_definition SEMICOLON
     %((wisi-statement-action [1 statement-start 6 motion 8 statement-end])
       (wisi-name-action 3)
       (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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil [nil ada-indent] nil
+                               ada-indent-broken]))%
     %((wisi-match-names 3 7))%
   ;
 
@@ -2004,17 +2118,23 @@ raise_statement
       ;; 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]))%
+      (wisi-indent-action [nil
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken (wisi-anchored% 3 
ada-indent-broken)
+                           ada-indent-broken]))%
   | RAISE name SEMICOLON
     %((wisi-statement-action [1 statement-start 3 statement-end])
-      (wisi-indent-action [nil ada-indent-broken nil]))%
+      (wisi-indent-action [nil
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken]))%
   | RAISE SEMICOLON
     %((wisi-statement-action [1 statement-start 2 statement-end]))%
   ;
 
 range_g
   : name tick RANGE LEFT_PAREN expression_opt RIGHT_PAREN ;; 
range_attribute_reference
-    %((wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken (wisi-anchored 4 1) (wisi-anchored 4 0)]))%
+    %((wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken (wisi-anchored 4 1)
+                               (wisi-anchored 4 0)]))%
   | name tick RANGE ;; range_attribute_reference
   | simple_expression DOT_DOT simple_expression
   ;
@@ -2043,12 +2163,14 @@ record_representation_clause
   : FOR name USE RECORD mod_clause_opt component_clause_list END RECORD 
SEMICOLON
     %((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* 'FOR 4 0) 
(ada-indent-record* 'FOR 4 ada-indent)]
-                               (ada-indent-record 1 4 ada-indent)
-                               [(ada-indent-record* 'FOR 4 ada-indent) 
(ada-indent-record* 'FOR 4 ada-indent)]
-                               (ada-indent-record* 'FOR 4 0)
-                               nil nil]))%
+      (wisi-indent-action [nil
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken
+                           [(ada-indent-record* 'FOR 4 0) (ada-indent-record* 
'FOR 4 ada-indent)]
+                           (ada-indent-record 1 4 ada-indent)
+                           [(ada-indent-record* 'FOR 4 ada-indent) 
(ada-indent-record* 'FOR 4 ada-indent)]
+                           (ada-indent-record* 'FOR 4 0)
+                           ada-indent-broken ada-indent-broken]))%
   ;
 
 relation_and_list
@@ -2111,7 +2233,7 @@ result_profile
       (wisi-indent-action* 1
                            [nil
                             (wisi-anchored* 1 ada-indent-broken)
-                            (wisi-anchored* 1 ada-indent-broken)]))%
+                            (wisi-anchored*- 1 ada-indent-broken)]))%
   | RETURN access_definition
  ;; test/ada_mode-nominal.adb
  ;; function Function_Access_1
@@ -2128,7 +2250,8 @@ return_subtype_indication
 
 selected_component
   : name DOT IDENTIFIER
-    %((wisi-face-mark-action [1 prefix 3 suffix]))%
+    %((wisi-face-mark-action [1 prefix 3 suffix])
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken]))%
     %((wisi-merge-names 1 3))%
 
   | name DOT CHARACTER_LITERAL
@@ -2149,11 +2272,12 @@ selective_accept
   : SELECT select_alternative_list_opt ELSE sequence_of_statements_opt END 
SELECT SEMICOLON
     %((wisi-statement-action [1 statement-start 3 motion 7 statement-end])
       (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]))%
+      (wisi-indent-action [[nil ada-indent] [nil ada-indent] nil [ada-indent 
ada-indent] nil ada-indent-broken
+                           ada-indent-broken]))%
   | SELECT select_alternative_list_opt END SELECT SEMICOLON
     %((wisi-statement-action [1 statement-start 5 statement-end])
       (wisi-motion-action [1 [2 OR] 5])
-      (wisi-indent-action [[nil ada-indent] [nil ada-indent] nil nil nil]))%
+      (wisi-indent-action [[nil ada-indent] [nil ada-indent] nil 
ada-indent-broken ada-indent-broken]))%
   ;
 
 select_alternative
@@ -2220,7 +2344,7 @@ simple_return_statement
  ;;   1.0 +
  ;;   2.0;
     %((wisi-statement-action [1 statement-start 3 statement-end])
-      (wisi-indent-action [nil ada-indent-broken nil]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken]))%
   ;
 
 simple_statement
@@ -2250,7 +2374,7 @@ single_protected_declaration
       (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]))%
+                                 ada-indent-broken]))%
     %((wisi-match-names 2 8))%
 
   | PROTECTED IDENTIFIER aspect_specification_opt IS protected_definition 
SEMICOLON
@@ -2258,7 +2382,7 @@ single_protected_declaration
       (wisi-name-action 2)
       (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]))%
+      (wisi-indent-action [nil ada-indent-broken nil [nil ada-indent] nil 
ada-indent-broken]))%
     %((wisi-match-names 2 5))%
   ;
 
@@ -2269,7 +2393,7 @@ single_task_declaration
       (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]))%
+                                 nil ada-indent-broken ada-indent-broken]))%
     %((wisi-match-names 2 10))%
 
   | TASK IDENTIFIER aspect_specification_opt IS task_definition END 
identifier_opt SEMICOLON
@@ -2277,14 +2401,14 @@ single_task_declaration
       (wisi-name-action 2)
       (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]))%
+      (wisi-indent-action [nil ada-indent-broken nil [nil ada-indent] nil nil 
ada-indent-broken ada-indent-broken]))%
     %((wisi-match-names 2 7))%
 
   | TASK IDENTIFIER aspect_specification_opt SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken]))%
   ;
 
 statement
@@ -2300,14 +2424,14 @@ subprogram_body
       (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]))%
+                             nil [ada-indent ada-indent] nil ada-indent-broken 
ada-indent-broken]))%
     %((wisi-match-names 2 9))%
   ;
 
 subprogram_body_stub
   : overriding_indicator_opt subprogram_specification IS SEPARATE 
aspect_specification_opt SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken]))%
   ;
 
 subprogram_declaration
@@ -2325,7 +2449,10 @@ subprogram_renaming_declaration
   : overriding_indicator_opt subprogram_specification RENAMES name 
aspect_specification_opt SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil
+                           nil (ada-indent-renames 2)
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           ada-indent-broken ada-indent-broken]))%
   ;
 
 subprogram_specification
@@ -2342,7 +2469,8 @@ subtype_declaration
     %((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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil
+                               ada-indent-broken]))%
   ;
 
 subtype_indication
@@ -2364,7 +2492,9 @@ subtype_indication
 subunit
   : SEPARATE LEFT_PAREN name RIGHT_PAREN proper_body
     %((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]))%
+      (wisi-indent-action [nil
+                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
+                           (wisi-anchored 2 1) (wisi-anchored 2 0) nil]))%
   ;
 
 task_body
@@ -2375,7 +2505,7 @@ task_body
       (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]))%
+                               nil [ada-indent ada-indent] nil 
ada-indent-broken ada-indent-broken]))%
     %((wisi-match-names 3 10))%
   ;
 
@@ -2384,7 +2514,7 @@ task_body_stub
     %((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]))%
+      (wisi-indent-action [nil nil ada-indent-broken nil ada-indent-broken 
ada-indent-broken ada-indent-broken]))%
   ;
 
 ;; LRM includes 'end identifier' here; we put that in
@@ -2408,22 +2538,24 @@ task_type_declaration
       (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]))%
+                               ada-indent-broken ada-indent-broken 
ada-indent-broken nil nil ada-indent-broken
+                               ada-indent-broken]))%
     %((wisi-match-names 3 12))%
   | TASK TYPE IDENTIFIER discriminant_part_opt aspect_specification_opt IS 
task_definition END identifier_opt SEMICOLON
     %((wisi-statement-action [1 statement-start 6 motion 10 statement-end])
       (wisi-name-action 3)
       (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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken nil [nil ada-indent] nil nil
+                               ada-indent-broken ada-indent-broken]))%
     %((wisi-match-names 3 9))%
 
   | TASK TYPE IDENTIFIER discriminant_part_opt aspect_specification_opt 
SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
+                               ada-indent-broken]))%
   ;
 
 term
@@ -2445,7 +2577,8 @@ timed_entry_call
   : SELECT entry_call_alternative OR delay_alternative END SELECT SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil [ada-indent ada-indent] nil [ada-indent 
ada-indent] nil ada-indent-broken
+                               ada-indent-broken]))%
   ;
 
 triggering_alternative
@@ -2479,7 +2612,7 @@ variant_part
   : CASE direct_name_opt IS variant_list END CASE SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil ada-indent-broken nil ada-indent-when nil 
ada-indent-broken ada-indent-broken]))%
   ;
 
 variant_list
@@ -2501,34 +2634,34 @@ use_clause
   : USE ALL TYPE name_list SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-use ada-indent-broken]))%
   | USE TYPE name_list SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-use 
ada-indent-broken]))%
   | USE name_list SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil ada-indent-use ada-indent-broken]))%
   ;
 
 with_clause
   : LIMITED PRIVATE WITH name_list SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-with ada-indent-broken]))%
   | LIMITED WITH name_list SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-with 
ada-indent-broken]))%
   | PRIVATE WITH name_list SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil ada-indent-broken ada-indent-with 
ada-indent-broken]))%
   | WITH name_list SEMICOLON
     %((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]))%
+      (wisi-indent-action [nil ada-indent-with ada-indent-broken]))%
   ;
 
 ;;; end of file
diff --git a/packages/ada-mode/ada_lr1_parse_table.txt.gz 
b/packages/ada-mode/ada_lr1_parse_table.txt.gz
index 4ea747c..4184430 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_mode_wisi_parse.gpr.gp 
b/packages/ada-mode/ada_mode_wisi_parse.gpr.gp
index 95b3e16..b39f513 100644
--- a/packages/ada-mode/ada_mode_wisi_parse.gpr.gp
+++ b/packages/ada-mode/ada_mode_wisi_parse.gpr.gp
@@ -24,13 +24,13 @@ with "wisitoken";
 with "standard_common";
 with "gnatcoll";
 with "gnatcoll_sqlite";
-#if HAVE_GNATCOLL_XREF="yes"
 with "gnatcoll_xref";
-#end if;
+#if HAVE_GNAT_UTIL="yes"
 with "gnat_util";
---  #if HAVE_LIBADALANG="yes"
---  with "libadalang";
---  #end if;
+#end if;
+#if HAVE_LIBADALANG="yes"
+with "libadalang";
+#end if;
 project Ada_Mode_Wisi_Parse is
 
    for Main use
@@ -38,9 +38,12 @@ project Ada_Mode_Wisi_Parse is
       "ada_mode_wisi_lr1_parse.ads",
       "run_ada_lalr_parse.ads",
       "run_ada_lr1_parse.ads",
---  #if HAVE_LIBADALANG="yes"
---        "run_ada_libadalang_parse.ads",
---  #end if;
+#if ELPA="no"
+       #if HAVE_LIBADALANG="yes"
+         "dump_libadalang_corrected.adb",
+       #end if;
+      "dump_wisitoken_corrected.adb",
+#end if;
       "gpr_mode_wisi_parse.ads",
       "run_gpr_parse.ads",
       "gpr_query.adb"
@@ -67,7 +70,7 @@ project Ada_Mode_Wisi_Parse is
          for Default_Switches ("Ada") use
            Standard_Common.Compiler.Common_Switches &
            Standard_Common.Compiler.Style_Checks &
-           Standard_Common.Compiler.Debug_Switches;
+           Standard_Common.Compiler.Debug_Switches & "-gnat2020";
 
          --  Generated files; lines too long, don't need debug
          for Switches ("ada_process_actions.adb") use
@@ -96,7 +99,7 @@ project Ada_Mode_Wisi_Parse is
          for Default_Switches ("Ada") use
            Standard_Common.Compiler.Common_Switches &
            Standard_Common.Compiler.Style_Checks &
-           Standard_Common.Compiler.Release_Switches;
+           Standard_Common.Compiler.Release_Switches & "-gnat2020";
 
          for Switches ("ada_process_actions.adb") use
            Standard_Common.Compiler.Common_Switches &
diff --git a/packages/ada-mode/ada_process_actions.adb 
b/packages/ada-mode/ada_process_actions.adb
index 10a0128..11788f3 100644
--- a/packages/ada-mode/ada_process_actions.adb
+++ b/packages/ada-mode/ada_process_actions.adb
@@ -27,8 +27,8 @@ package body Ada_Process_Actions is
    procedure abstract_subprogram_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -41,15 +41,15 @@ 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, (Int, 
Ada_Indent_Broken)))));
       end case;
    end abstract_subprogram_declaration_0;
 
    procedure accept_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -64,8 +64,8 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
          Ada_Indent_Broken))), (True, (Simple, (Label => None)), (Simple, 
(Int, Ada_Indent))), (True, (Simple, (Int,
-         Ada_Indent)), (Simple, (Int, Ada_Indent))), (False, (Simple, (Label 
=> None))), (False, (Simple, (Label =>
-         None))), (False, (Simple, (Label => None)))));
+         Ada_Indent)), (Simple, (Int, Ada_Indent))), (False, (Simple, (Label 
=> None))), (False, (Simple, (Int,
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end accept_statement_0;
 
@@ -84,8 +84,8 @@ package body Ada_Process_Actions is
    procedure accept_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -97,15 +97,15 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end accept_statement_1;
 
    procedure access_definition_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -117,15 +117,15 @@ 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, (Label => None))), (False, 
(Simple, (Label => None))), (False, (Simple,
-         (Anchored_1, 4, Ada_Indent_Broken)))));
+         (Anchored_2, 4, Ada_Indent_Broken)))));
       end case;
    end access_definition_0;
 
    procedure access_definition_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -144,8 +144,8 @@ package body Ada_Process_Actions is
    procedure access_definition_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -162,8 +162,8 @@ package body Ada_Process_Actions is
    procedure actual_parameter_part_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -181,8 +181,8 @@ package body Ada_Process_Actions is
    procedure actual_parameter_part_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -200,8 +200,27 @@ package body Ada_Process_Actions is
    procedure aggregate_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.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))), (True, (Simple,
+         (Anchored_0, 1, 1)), (Simple, (Anchored_0, 1, 1))), (False, (Simple, 
(Anchored_0, 1, 0)))));
+      end case;
+   end aggregate_0;
+
+   procedure aggregate_2
+    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+     Tree      : in out WisiToken.Syntax_Trees.Tree;
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -215,13 +234,13 @@ package body Ada_Process_Actions is
          (Anchored_0, 1, 1))), (False, (Simple, (Anchored_0, 1, 1))), (False, 
(Simple, (Label => None))), (False,
          (Simple, (Label => None))), (False, (Simple, (Anchored_0, 1, 0)))));
       end case;
-   end aggregate_0;
+   end aggregate_2;
 
-   procedure aggregate_1
+   procedure aggregate_3
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -235,13 +254,13 @@ package body Ada_Process_Actions is
          (Anchored_0, 1, 1))), (False, (Simple, (Anchored_0, 1, 1))), (True, 
(Simple, (Anchored_0, 1, 1)), (Simple,
          (Anchored_0, 1, 1))), (False, (Simple, (Anchored_0, 1, 0)))));
       end case;
-   end aggregate_1;
+   end aggregate_3;
 
-   procedure aggregate_3
+   procedure aggregate_4
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -255,13 +274,13 @@ package body Ada_Process_Actions is
          (Anchored_0, 1, 1))), (False, (Simple, (Anchored_0, 1, 1))), (False, 
(Simple, (Anchored_0, 1, 1))), (True,
          (Simple, (Anchored_0, 1, 1)), (Simple, (Anchored_0, 1, 1))), (False, 
(Simple, (Anchored_0, 1, 0)))));
       end case;
-   end aggregate_3;
+   end aggregate_4;
 
-   procedure aggregate_4
+   procedure aggregate_5
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -271,16 +290,17 @@ package body Ada_Process_Actions is
       when Face =>
          null;
       when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (True, (Simple,
-         (Anchored_0, 1, 1)), (Simple, (Anchored_0, 1, 1))), (False, (Simple, 
(Anchored_0, 1, 0)))));
+         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
+         (Anchored_0, 1, 1))), (False, (Simple, (Anchored_0, 1, 1))), (False, 
(Simple, (Anchored_0, 1, 1))), (True,
+         (Simple, (Anchored_0, 1, 1)), (Simple, (Anchored_0, 1, 1))), (False, 
(Simple, (Anchored_0, 1, 0)))));
       end case;
-   end aggregate_4;
+   end aggregate_5;
 
-   procedure aggregate_5
+   procedure aggregate_6
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -293,13 +313,13 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (True, (Simple,
          (Anchored_0, 1, 1)), (Simple, (Anchored_0, 1, 1))), (False, (Simple, 
(Anchored_0, 1, 0)))));
       end case;
-   end aggregate_5;
+   end aggregate_6;
 
    procedure array_type_definition_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -318,8 +338,8 @@ package body Ada_Process_Actions is
    procedure array_type_definition_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -338,8 +358,8 @@ package body Ada_Process_Actions is
    procedure aspect_clause_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -351,15 +371,15 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end aspect_clause_0;
 
    procedure aspect_specification_opt_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -377,8 +397,8 @@ package body Ada_Process_Actions is
    procedure assignment_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -390,15 +410,15 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Hanging_0, (Anchored_1, 2, 
Ada_Indent_Broken), (Anchored_1, 3,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end assignment_statement_0;
 
    procedure association_opt_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -409,7 +429,8 @@ package body Ada_Process_Actions is
          null;
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (True, (Simple, (Anchored_1, 2, 
Ada_Indent_Broken)), (Simple, (Anchored_1, 2,
+         (Int, Ada_Indent_Broken))), (True, (Hanging_3, (Anchored_1, 2, 
Ada_Indent_Broken), (Anchored_1, 2, 2 *
+         Ada_Indent_Broken)), (Hanging_3, (Anchored_1, 2, Ada_Indent_Broken), 
(Anchored_1, 2, 2 *
          Ada_Indent_Broken)))));
       end case;
    end association_opt_0;
@@ -417,8 +438,8 @@ package body Ada_Process_Actions is
    procedure association_opt_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -438,8 +459,8 @@ package body Ada_Process_Actions is
    procedure association_opt_3
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -457,8 +478,27 @@ package body Ada_Process_Actions is
    procedure association_opt_4
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.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, (1 => (True, 
(Hanging_0, (Label => None), (Int,
+         Ada_Indent_Broken)), (Hanging_0, (Label => None), (Int, 
Ada_Indent_Broken)))));
+      end case;
+   end association_opt_4;
+
+   procedure association_opt_6
+    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+     Tree      : in out WisiToken.Syntax_Trees.Tree;
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -473,13 +513,13 @@ package body Ada_Process_Actions is
          Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(True, (Hanging_0, (Label => None), (Int,
          Ada_Indent_Broken)), (Hanging_0, (Label => None), (Int, 
Ada_Indent_Broken)))));
       end case;
-   end association_opt_4;
+   end association_opt_6;
 
-   procedure association_opt_5
+   procedure association_opt_7
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -489,16 +529,17 @@ package body Ada_Process_Actions is
       when Face =>
          null;
       when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, (1 => (True, 
(Hanging_0, (Label => None), (Int,
-         Ada_Indent_Broken)), (Hanging_0, (Label => None), (Int, 
Ada_Indent_Broken)))));
+         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Hanging_0,
+         (Label => None), (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (True, (Hanging_0,
+         (Label => None), (Int, Ada_Indent_Broken)), (Hanging_0, (Label => 
None), (Int, Ada_Indent_Broken)))));
       end case;
-   end association_opt_5;
+   end association_opt_7;
 
    procedure asynchronous_select_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -513,16 +554,16 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (True, (Simple, (Int,
          Ada_Indent)), (Simple, (Int, Ada_Indent))), (True, (Simple, (Label => 
None)), (Simple, (Int,
          Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(True, (Simple, (Int, Ada_Indent)),
-         (Simple, (Int, Ada_Indent))), (False, (Simple, (Label => None))), 
(False, (Simple, (Label => None))), (False,
-         (Simple, (Label => None)))));
+         (Simple, (Int, Ada_Indent))), (False, (Simple, (Label => None))), 
(False, (Simple, (Int, Ada_Indent_Broken))),
+         (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end asynchronous_select_0;
 
    procedure at_clause_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -539,8 +580,8 @@ package body Ada_Process_Actions is
    procedure block_label_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -582,8 +623,8 @@ package body Ada_Process_Actions is
    procedure block_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -599,7 +640,7 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Label => None))), (True, (Simple, (Int, Ada_Indent)), (Simple, (Int, 
Ada_Indent))), (False, (Simple, (Label
          => None))), (True, (Simple, (Int, Ada_Indent)), (Simple, (Int, 
Ada_Indent))), (False, (Simple, (Label =>
-         None))), (False, (Simple, (Label => None))), (False, (Simple, (Label 
=> None)))));
+         None))), (False, (Simple, (Int, Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end block_statement_0;
 
@@ -618,8 +659,8 @@ package body Ada_Process_Actions is
    procedure block_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -632,7 +673,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))), (True, (Simple, (Int, Ada_Indent)), (Simple, (Int, 
Ada_Indent))), (False, (Simple, (Label
-         => None))), (False, (Simple, (Label => None))), (False, (Simple, 
(Label => None)))));
+         => None))), (False, (Simple, (Int, Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end block_statement_1;
 
@@ -651,8 +692,8 @@ package body Ada_Process_Actions is
    procedure case_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -671,8 +712,8 @@ package body Ada_Process_Actions is
    procedure case_expression_alternative_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -691,8 +732,8 @@ package body Ada_Process_Actions is
    procedure case_expression_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -709,8 +750,8 @@ package body Ada_Process_Actions is
    procedure case_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -724,16 +765,16 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Label => None))), 
(True, (Simple, (Int, Ada_Indent_When)),
-         (Simple, (Int, Ada_Indent_When))), (False, (Simple, (Label => 
None))), (False, (Simple, (Label => None))),
-         (False, (Simple, (Label => None)))));
+         (Simple, (Int, Ada_Indent_When))), (False, (Simple, (Label => 
None))), (False, (Simple, (Int,
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end case_statement_0;
 
    procedure case_statement_alternative_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -752,8 +793,8 @@ package body Ada_Process_Actions is
    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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -770,8 +811,8 @@ package body Ada_Process_Actions is
    procedure compilation_unit_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -789,8 +830,8 @@ package body Ada_Process_Actions is
    procedure compilation_unit_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -808,8 +849,8 @@ package body Ada_Process_Actions is
    procedure compilation_unit_list_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -838,8 +879,8 @@ package body Ada_Process_Actions is
    procedure component_clause_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -850,17 +891,18 @@ package body Ada_Process_Actions is
          null;
       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, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
+         Ada_Indent_Broken)))));
       end case;
    end component_clause_0;
 
    procedure component_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -873,15 +915,15 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
          Ada_Indent_Broken))), (False, (Simple, (Anchored_1, 4, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end component_declaration_0;
 
    procedure component_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -893,15 +935,15 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end component_declaration_1;
 
    procedure component_list_4
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -918,8 +960,8 @@ package body Ada_Process_Actions is
    procedure conditional_entry_call_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -933,16 +975,16 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (True, (Simple, (Int,
          Ada_Indent)), (Simple, (Int, Ada_Indent))), (False, (Simple, (Label 
=> None))), (True, (Simple, (Int,
-         Ada_Indent)), (Simple, (Int, Ada_Indent))), (False, (Simple, (Label 
=> None))), (False, (Simple, (Label =>
-         None))), (False, (Simple, (Label => None)))));
+         Ada_Indent)), (Simple, (Int, Ada_Indent))), (False, (Simple, (Label 
=> None))), (False, (Simple, (Int,
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end conditional_entry_call_0;
 
    procedure declaration_9
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -955,15 +997,15 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, 
(Hanging_0, (Label => None), (Int,
          Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
          Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Anchored_1, 4,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end declaration_9;
 
    procedure delay_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -974,15 +1016,16 @@ package body Ada_Process_Actions is
          null;
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
+         Ada_Indent_Broken)))));
       end case;
    end delay_statement_0;
 
    procedure delay_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -993,15 +1036,15 @@ package body Ada_Process_Actions is
          null;
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end delay_statement_1;
 
    procedure derived_type_definition_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1021,8 +1064,8 @@ package body Ada_Process_Actions is
    procedure derived_type_definition_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1039,8 +1082,8 @@ package body Ada_Process_Actions is
    procedure discriminant_part_opt_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1058,8 +1101,8 @@ package body Ada_Process_Actions is
    procedure elsif_expression_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1079,8 +1122,8 @@ package body Ada_Process_Actions is
    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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1097,8 +1140,8 @@ package body Ada_Process_Actions is
    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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1118,8 +1161,8 @@ package body Ada_Process_Actions is
    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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1136,8 +1179,8 @@ package body Ada_Process_Actions is
    procedure entry_body_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1156,7 +1199,7 @@ package body Ada_Process_Actions is
          Ada_Indent_Broken))), (False, (Simple, (Anchored_1, 4, 
Ada_Indent_Broken))), (False, (Simple, (Label =>
          None))), (True, (Simple, (Int, Ada_Indent)), (Simple, (Int, 
Ada_Indent))), (False, (Simple, (Label => None))),
          (True, (Simple, (Int, Ada_Indent)), (Simple, (Int, Ada_Indent))), 
(False, (Simple, (Label => None))), (False,
-         (Simple, (Label => None))), (False, (Simple, (Label => None)))));
+         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end entry_body_0;
 
@@ -1175,8 +1218,8 @@ package body Ada_Process_Actions is
    procedure entry_body_formal_part_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1196,8 +1239,8 @@ package body Ada_Process_Actions is
    procedure entry_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1212,15 +1255,16 @@ package body Ada_Process_Actions is
          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, (Anchored_0, 4, 1))), (False, (Simple, (Anchored_0, 
4, 0))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None))), (False, 
(Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
+         Ada_Indent_Broken)))));
       end case;
    end entry_declaration_0;
 
    procedure entry_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1234,15 +1278,15 @@ 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, (Int, Ada_Indent_Broken))), (False, (Simple, (Label 
=> None)))));
+         (False, (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end entry_declaration_1;
 
    procedure enumeration_representation_clause_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1252,17 +1296,17 @@ package body Ada_Process_Actions is
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 1, 
2)));
       when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Hanging_3,
+         (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken))), (False,
+         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end enumeration_representation_clause_0;
 
    procedure enumeration_type_definition_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1280,8 +1324,8 @@ package body Ada_Process_Actions is
    procedure exception_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1298,8 +1342,8 @@ package body Ada_Process_Actions is
    procedure exception_handler_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1319,8 +1363,8 @@ package body Ada_Process_Actions is
    procedure exception_handler_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1339,8 +1383,8 @@ package body Ada_Process_Actions is
    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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1357,8 +1401,8 @@ package body Ada_Process_Actions is
    procedure exit_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1370,15 +1414,15 @@ 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, (Label => None))), (False, 
(Simple, (Int, Ada_Indent_Broken))), (False,
-         (Simple, (Label => None)))));
+         (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end exit_statement_0;
 
    procedure exit_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1395,8 +1439,8 @@ package body Ada_Process_Actions is
    procedure expression_function_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1409,15 +1453,15 @@ 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, (Int, Ada_Indent_Broken))), (False, (Simple, (Label 
=> None)))));
+         (False, (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end expression_function_declaration_0;
 
    procedure extended_return_object_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1437,8 +1481,8 @@ package body Ada_Process_Actions is
    procedure extended_return_object_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1457,8 +1501,8 @@ package body Ada_Process_Actions is
    procedure extended_return_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1473,15 +1517,15 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((True, (Simple, 
(Label => None)), (Simple, (Int,
          Ada_Indent))), (False, (Simple, (Int, Ada_Indent_Broken))), (False, 
(Simple, (Label => None))), (True,
          (Simple, (Int, Ada_Indent)), (Simple, (Int, Ada_Indent))), (False, 
(Simple, (Label => None))), (False,
-         (Simple, (Label => None))), (False, (Simple, (Label => None)))));
+         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end extended_return_statement_0;
 
    procedure extended_return_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1498,8 +1542,8 @@ package body Ada_Process_Actions is
    procedure formal_object_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1511,17 +1555,17 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Anchored_1, 6, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Hanging_3, (Int, Ada_Indent_Broken), 
(Int, 2 * Ada_Indent_Broken))), (False,
+         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Anchored_1, 6, 
Ada_Indent_Broken))), (False, (Simple,
+         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end formal_object_declaration_0;
 
    procedure formal_object_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1534,15 +1578,16 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
          Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Anchored_1, 5,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
+         Ada_Indent_Broken)))));
       end case;
    end formal_object_declaration_1;
 
    procedure formal_object_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1554,16 +1599,16 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Hanging_3, (Int, Ada_Indent_Broken), 
(Int, 2 * Ada_Indent_Broken))), (False,
+         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end formal_object_declaration_2;
 
    procedure formal_object_declaration_3
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1575,15 +1620,16 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
+         Ada_Indent_Broken)))));
       end case;
    end formal_object_declaration_3;
 
    procedure formal_part_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1601,8 +1647,8 @@ package body Ada_Process_Actions is
    procedure formal_subprogram_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1615,15 +1661,15 @@ package body Ada_Process_Actions is
          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, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple,
-         (Label => None)))));
+         (Int, Ada_Indent_Broken)))));
       end case;
    end formal_subprogram_declaration_0;
 
    procedure formal_subprogram_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1635,15 +1681,15 @@ 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, (Int, Ada_Indent_Broken))), (False, (Simple, (Label 
=> None)))));
+         (False, (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end formal_subprogram_declaration_1;
 
    procedure formal_subprogram_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1655,15 +1701,16 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
+         Ada_Indent_Broken)))));
       end case;
    end formal_subprogram_declaration_2;
 
    procedure formal_subprogram_declaration_3
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1674,15 +1721,15 @@ package body Ada_Process_Actions is
          null;
       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, (Label => None)))));
+         (Label => None))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end formal_subprogram_declaration_3;
 
    procedure formal_type_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1695,15 +1742,15 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
          Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end formal_type_declaration_0;
 
    procedure formal_type_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1716,15 +1763,15 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
          Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end formal_type_declaration_1;
 
    procedure formal_type_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1736,15 +1783,15 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end formal_type_declaration_2;
 
    procedure formal_derived_type_definition_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1761,8 +1808,8 @@ package body Ada_Process_Actions is
    procedure formal_derived_type_definition_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1779,8 +1826,8 @@ package body Ada_Process_Actions is
    procedure formal_package_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1791,18 +1838,18 @@ package body Ada_Process_Actions is
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 1, 1), (6, 
1, 1)));
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         (Int, Ada_Indent_Broken))), (False, (Hanging_3, (Int, 
Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))),
+         (False, (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Hanging_3,
+         (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken))), (False,
+         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end formal_package_declaration_0;
 
    procedure full_type_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1816,15 +1863,16 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (True, (Simple, (Int,
          Ada_Indent_Broken)), (Simple, (Language, Ada_Indent_Record_1'Access, 
69 & 5 & Ada_Indent_Broken))), (False,
-         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Label => 
None))), (False, (Simple, (Label => None)))));
+         (Hanging_3, (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), 
(False, (Simple, (Label => None))),
+         (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end full_type_declaration_0;
 
    procedure function_specification_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1835,8 +1883,8 @@ package body Ada_Process_Actions is
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 1, 
1)));
       when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
+         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Hanging_3,
+         (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end function_specification_0;
 
@@ -1855,8 +1903,8 @@ package body Ada_Process_Actions is
    procedure generic_formal_part_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1874,8 +1922,8 @@ package body Ada_Process_Actions is
    procedure generic_formal_part_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1892,8 +1940,8 @@ package body Ada_Process_Actions is
    procedure generic_instantiation_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1904,18 +1952,18 @@ package body Ada_Process_Actions is
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 1, 1), (5, 
1, 1)));
       when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Label => None))), 
(False, (Simple, (Int, Ada_Indent_Broken))),
-         (False, (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple,
-         (Label => None)))));
+         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Hanging_3,
+         (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, 
(Simple, (Label => None))), (False, (Simple,
+         (Int, Ada_Indent_Broken))), (False, (Hanging_3, (Int, 
Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))),
+         (False, (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end generic_instantiation_0;
 
    procedure generic_instantiation_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1928,17 +1976,18 @@ package body Ada_Process_Actions is
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 1, 1), (6, 
1, 1)));
       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, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         (Label => None))), (False, (Hanging_3, (Int, Ada_Indent_Broken), 
(Int, 2 * Ada_Indent_Broken))), (False,
+         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Hanging_3, (Int,
+         Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, (Simple, 
(Int, Ada_Indent_Broken))), (False,
+         (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end generic_instantiation_1;
 
    procedure generic_instantiation_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1951,17 +2000,18 @@ package body Ada_Process_Actions is
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 1, 1), (6, 
1, 1)));
       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, (Label => None))), (False,
-         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         (Label => None))), (False, (Hanging_3, (Int, Ada_Indent_Broken), 
(Int, 2 * Ada_Indent_Broken))), (False,
+         (Simple, (Label => None))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Hanging_3, (Int,
+         Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, (Simple, 
(Int, Ada_Indent_Broken))), (False,
+         (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end generic_instantiation_2;
 
    procedure generic_package_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1974,15 +2024,15 @@ package body Ada_Process_Actions is
          null;
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((True, (Simple, 
(Label => None)), (Simple, (Int,
-         Ada_Indent))), (False, (Simple, (Label => None))), (False, (Simple, 
(Label => None)))));
+         Ada_Indent))), (False, (Simple, (Label => None))), (False, (Simple, 
(Int, Ada_Indent_Broken)))));
       end case;
    end generic_package_declaration_0;
 
    procedure generic_renaming_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -1994,17 +2044,18 @@ package body Ada_Process_Actions is
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 1, 1), (5, 
1, 1)));
       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, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple,
-         (Label => None)))));
+         (Label => None))), (False, (Hanging_3, (Int, Ada_Indent_Broken), 
(Int, 2 * Ada_Indent_Broken))), (False,
+         (Simple, (Int, Ada_Indent_Broken))), (False, (Hanging_3, (Int, 
Ada_Indent_Broken), (Int, 2 *
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
+         Ada_Indent_Broken)))));
       end case;
    end generic_renaming_declaration_0;
 
    procedure generic_renaming_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2016,17 +2067,18 @@ package body Ada_Process_Actions is
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 1, 1), (5, 
1, 1)));
       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, (Language,
-         Ada_Indent_Renames_0'Access, +3))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         (Label => None))), (False, (Hanging_3, (Int, Ada_Indent_Broken), 
(Int, 2 * Ada_Indent_Broken))), (False,
+         (Simple, (Language, Ada_Indent_Renames_0'Access, +3))), (False, 
(Hanging_3, (Int, Ada_Indent_Broken), (Int, 2
+         * Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
+         Ada_Indent_Broken)))));
       end case;
    end generic_renaming_declaration_1;
 
    procedure generic_renaming_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2038,17 +2090,18 @@ package body Ada_Process_Actions is
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 1, 1), (5, 
1, 1)));
       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, (Language,
-         Ada_Indent_Renames_0'Access, +3))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         (Label => None))), (False, (Hanging_3, (Int, Ada_Indent_Broken), 
(Int, 2 * Ada_Indent_Broken))), (False,
+         (Simple, (Language, Ada_Indent_Renames_0'Access, +3))), (False, 
(Hanging_3, (Int, Ada_Indent_Broken), (Int, 2
+         * Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
+         Ada_Indent_Broken)))));
       end case;
    end generic_renaming_declaration_2;
 
    procedure generic_subprogram_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2068,8 +2121,8 @@ package body Ada_Process_Actions is
    procedure goto_label_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2080,15 +2133,15 @@ package body Ada_Process_Actions is
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 3, 
0)));
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Int, Ada_Indent_Label))), (False,
-         (Simple, (Label => None))), (False, (Simple, (Label => None)))));
+         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end goto_label_0;
 
    procedure handled_sequence_of_statements_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2107,8 +2160,8 @@ package body Ada_Process_Actions is
    procedure identifier_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2126,8 +2179,8 @@ package body Ada_Process_Actions is
    procedure identifier_list_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2156,8 +2209,8 @@ package body Ada_Process_Actions is
    procedure if_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2179,8 +2232,8 @@ package body Ada_Process_Actions is
    procedure if_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2201,8 +2254,8 @@ package body Ada_Process_Actions is
    procedure if_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2223,8 +2276,8 @@ package body Ada_Process_Actions is
    procedure if_expression_3
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2244,8 +2297,8 @@ package body Ada_Process_Actions is
    procedure if_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2262,16 +2315,16 @@ package body Ada_Process_Actions is
          (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken)), (Simple, 
(Int, Ada_Indent_Broken))), (False, (Simple,
          (Label => None))), (True, (Simple, (Int, Ada_Indent)), (Simple, (Int, 
Ada_Indent))), (False, (Simple, (Label
          => None))), (False, (Simple, (Label => None))), (True, (Simple, (Int, 
Ada_Indent)), (Simple, (Int,
-         Ada_Indent))), (False, (Simple, (Label => None))), (False, (Simple, 
(Label => None))), (False, (Simple, (Label
-         => None)))));
+         Ada_Indent))), (False, (Simple, (Label => None))), (False, (Simple, 
(Int, Ada_Indent_Broken))), (False,
+         (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end if_statement_0;
 
    procedure if_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2288,15 +2341,15 @@ package body Ada_Process_Actions is
          (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken)), (Simple, 
(Int, Ada_Indent_Broken))), (False, (Simple,
          (Label => None))), (True, (Simple, (Int, Ada_Indent)), (Simple, (Int, 
Ada_Indent))), (False, (Simple, (Label
          => None))), (True, (Simple, (Int, Ada_Indent)), (Simple, (Int, 
Ada_Indent))), (False, (Simple, (Label =>
-         None))), (False, (Simple, (Label => None))), (False, (Simple, (Label 
=> None)))));
+         None))), (False, (Simple, (Int, Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end if_statement_1;
 
    procedure if_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2311,16 +2364,16 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (True, (Hanging_2,
          (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken)), (Simple, 
(Int, Ada_Indent_Broken))), (False, (Simple,
          (Label => None))), (True, (Simple, (Int, Ada_Indent)), (Simple, (Int, 
Ada_Indent))), (False, (Simple, (Label
-         => None))), (False, (Simple, (Label => None))), (False, (Simple, 
(Label => None))), (False, (Simple, (Label =>
-         None)))));
+         => None))), (False, (Simple, (Label => None))), (False, (Simple, 
(Int, Ada_Indent_Broken))), (False, (Simple,
+         (Int, Ada_Indent_Broken)))));
       end case;
    end if_statement_2;
 
    procedure if_statement_3
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2335,15 +2388,15 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (True, (Hanging_2,
          (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken)), (Simple, 
(Int, Ada_Indent_Broken))), (False, (Simple,
          (Label => None))), (True, (Simple, (Int, Ada_Indent)), (Simple, (Int, 
Ada_Indent))), (False, (Simple, (Label
-         => None))), (False, (Simple, (Label => None))), (False, (Simple, 
(Label => None)))));
+         => None))), (False, (Simple, (Int, Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end if_statement_3;
 
    procedure incomplete_type_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2356,15 +2409,16 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
+         Ada_Indent_Broken)))));
       end case;
    end incomplete_type_declaration_0;
 
    procedure incomplete_type_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2376,15 +2430,16 @@ package body Ada_Process_Actions is
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 3, 
2)));
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
+         Ada_Indent_Broken)))));
       end case;
    end incomplete_type_declaration_1;
 
    procedure index_constraint_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2402,8 +2457,8 @@ package body Ada_Process_Actions is
    procedure interface_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2420,8 +2475,8 @@ package body Ada_Process_Actions is
    procedure interface_list_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2438,8 +2493,8 @@ package body Ada_Process_Actions is
    procedure iteration_scheme_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2457,8 +2512,8 @@ package body Ada_Process_Actions is
    procedure iteration_scheme_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2476,8 +2531,8 @@ package body Ada_Process_Actions is
    procedure iterator_specification_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2494,8 +2549,8 @@ package body Ada_Process_Actions is
    procedure iterator_specification_5
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2512,8 +2567,8 @@ package body Ada_Process_Actions is
    procedure loop_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2528,8 +2583,8 @@ 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, (Label => None))), (True, 
(Simple, (Int, Ada_Indent)), (Simple, (Int,
-         Ada_Indent))), (False, (Simple, (Label => None))), (False, (Simple, 
(Label => None))), (False, (Simple, (Label
-         => None))), (False, (Simple, (Label => None)))));
+         Ada_Indent))), (False, (Simple, (Label => None))), (False, (Simple, 
(Int, Ada_Indent_Broken))), (False,
+         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end loop_statement_0;
 
@@ -2548,8 +2603,8 @@ package body Ada_Process_Actions is
    procedure loop_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2564,8 +2619,8 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Label => None))), (True, (Simple, (Int, Ada_Indent)), (Simple, (Int, 
Ada_Indent))), (False, (Simple, (Label
-         => None))), (False, (Simple, (Label => None))), (False, (Simple, 
(Label => None))), (False, (Simple, (Label =>
-         None)))));
+         => None))), (False, (Simple, (Int, Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken))), (False,
+         (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end loop_statement_1;
 
@@ -2584,8 +2639,8 @@ package body Ada_Process_Actions is
    procedure name_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2604,8 +2659,8 @@ package body Ada_Process_Actions is
    procedure name_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2636,8 +2691,8 @@ package body Ada_Process_Actions is
    procedure name_5
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2690,8 +2745,8 @@ package body Ada_Process_Actions is
    procedure null_exclusion_opt_name_type_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2708,8 +2763,8 @@ package body Ada_Process_Actions is
    procedure null_exclusion_opt_name_type_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2726,8 +2781,8 @@ package body Ada_Process_Actions is
    procedure null_exclusion_opt_name_type_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2744,8 +2799,8 @@ package body Ada_Process_Actions is
    procedure null_exclusion_opt_name_type_3
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2762,8 +2817,8 @@ package body Ada_Process_Actions is
    procedure null_procedure_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2776,15 +2831,15 @@ 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, (Int, Ada_Indent_Broken))), (False, (Simple, (Label 
=> None)))));
+         (False, (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end null_procedure_declaration_0;
 
    procedure object_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2796,17 +2851,17 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Anchored_2, 6, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Hanging_3, (Int, Ada_Indent_Broken), 
(Int, 2 * Ada_Indent_Broken))), (False,
+         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Anchored_2, 6, 
Ada_Indent_Broken))), (False, (Simple,
+         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end object_declaration_0;
 
    procedure object_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2820,15 +2875,15 @@ package body Ada_Process_Actions is
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
          Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
          Ada_Indent_Broken))), (False, (Simple, (Anchored_1, 6, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end object_declaration_1;
 
    procedure object_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2842,15 +2897,15 @@ package body Ada_Process_Actions is
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
          Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
          Ada_Indent_Broken))), (False, (Simple, (Anchored_1, 6, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end object_declaration_2;
 
    procedure object_declaration_3
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2862,16 +2917,16 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Hanging_3, (Int, Ada_Indent_Broken), 
(Int, 2 * Ada_Indent_Broken))), (False,
+         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end object_declaration_3;
 
    procedure object_declaration_4
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2884,15 +2939,15 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
          Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end object_declaration_4;
 
    procedure object_declaration_5
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2905,15 +2960,15 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
          Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end object_declaration_5;
 
    procedure object_renaming_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2926,16 +2981,17 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Hanging_3, (Int,
+         Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, (Simple, 
(Int, Ada_Indent_Broken))), (False,
+         (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end object_renaming_declaration_0;
 
    procedure object_renaming_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2948,16 +3004,16 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Hanging_3, (Int, Ada_Indent_Broken), 
(Int, 2 * Ada_Indent_Broken))), (False,
+         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end object_renaming_declaration_1;
 
    procedure object_renaming_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2970,16 +3026,16 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Hanging_3, (Int, Ada_Indent_Broken), 
(Int, 2 * Ada_Indent_Broken))), (False,
+         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end object_renaming_declaration_2;
 
    procedure overriding_indicator_opt_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -2996,8 +3052,8 @@ package body Ada_Process_Actions is
    procedure overriding_indicator_opt_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3014,8 +3070,8 @@ package body Ada_Process_Actions is
    procedure package_body_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3030,10 +3086,11 @@ package body Ada_Process_Actions is
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 1, 1), 
(10, 1, 1)));
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Label => None))),
-         (False, (Simple, (Label => None))), (True, (Simple, (Int, 
Ada_Indent)), (Simple, (Int, Ada_Indent))), (False,
-         (Simple, (Label => None))), (True, (Simple, (Int, Ada_Indent)), 
(Simple, (Int, Ada_Indent))), (False, (Simple,
-         (Label => None))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Label => None)))));
+         (Int, Ada_Indent_Broken))), (False, (Hanging_3, (Int, 
Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))),
+         (False, (Simple, (Label => None))), (False, (Simple, (Label => 
None))), (True, (Simple, (Int, Ada_Indent)),
+         (Simple, (Int, Ada_Indent))), (False, (Simple, (Label => None))), 
(True, (Simple, (Int, Ada_Indent)), (Simple,
+         (Int, Ada_Indent))), (False, (Simple, (Label => None))), (False, 
(Hanging_3, (Int, Ada_Indent_Broken), (Int, 2
+         * Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end package_body_0;
 
@@ -3052,8 +3109,8 @@ package body Ada_Process_Actions is
    procedure package_body_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3067,10 +3124,10 @@ package body Ada_Process_Actions is
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 1, 1), (8, 
1, 1)));
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None))), (True, 
(Simple, (Int, Ada_Indent)), (Simple, (Int,
-         Ada_Indent))), (False, (Simple, (Label => None))), (False, (Simple, 
(Label => None))), (False, (Simple, (Label
-         => None)))));
+         (Int, Ada_Indent_Broken))), (False, (Hanging_3, (Int, 
Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))),
+         (False, (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Label 
=> None))), (True, (Simple, (Int,
+         Ada_Indent)), (Simple, (Int, Ada_Indent))), (False, (Simple, (Label 
=> None))), (False, (Hanging_3, (Int,
+         Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, (Simple, 
(Int, Ada_Indent_Broken)))));
       end case;
    end package_body_1;
 
@@ -3089,8 +3146,8 @@ package body Ada_Process_Actions is
    procedure package_body_stub_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3102,17 +3159,17 @@ package body Ada_Process_Actions is
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 1, 
1)));
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Label => None))),
-         (False, (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple,
-         (Label => None)))));
+         (Int, Ada_Indent_Broken))), (False, (Hanging_3, (Int, 
Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))),
+         (False, (Simple, (Label => None))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end package_body_stub_0;
 
    procedure package_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3130,8 +3187,8 @@ package body Ada_Process_Actions is
    procedure package_renaming_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3142,17 +3199,18 @@ package body Ada_Process_Actions is
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 1, 1), (4, 
1, 1)));
       when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Label => None)))));
+         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Hanging_3,
+         (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken))), (False,
+         (Hanging_3, (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), 
(False, (Simple, (Int,
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end package_renaming_declaration_0;
 
    procedure package_specification_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3165,11 +3223,11 @@ package body Ada_Process_Actions is
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 1, 1), (9, 
1, 1)));
       when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Label => None))),
-         (True, (Simple, (Int, Ada_Indent)), (Simple, (Int, Ada_Indent))), 
(False, (Simple, (Label => None))), (True,
-         (Simple, (Int, Ada_Indent)), (Simple, (Int, Ada_Indent))), (False, 
(Simple, (Label => None))), (False,
-         (Simple, (Label => None)))));
+         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Hanging_3,
+         (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken))), (False,
+         (Simple, (Label => None))), (True, (Simple, (Int, Ada_Indent)), 
(Simple, (Int, Ada_Indent))), (False, (Simple,
+         (Label => None))), (True, (Simple, (Int, Ada_Indent)), (Simple, (Int, 
Ada_Indent))), (False, (Simple, (Label
+         => None))), (False, (Hanging_3, (Int, Ada_Indent_Broken), (Int, 2 * 
Ada_Indent_Broken)))));
       end case;
    end package_specification_0;
 
@@ -3188,8 +3246,8 @@ package body Ada_Process_Actions is
    procedure package_specification_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3201,10 +3259,10 @@ package body Ada_Process_Actions is
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 1, 1), (7, 
1, 1)));
       when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Label => None))),
-         (True, (Simple, (Int, Ada_Indent)), (Simple, (Int, Ada_Indent))), 
(False, (Simple, (Label => None))), (False,
-         (Simple, (Label => None)))));
+         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Hanging_3,
+         (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken))), (False,
+         (Simple, (Label => None))), (True, (Simple, (Int, Ada_Indent)), 
(Simple, (Int, Ada_Indent))), (False, (Simple,
+         (Label => None))), (False, (Hanging_3, (Int, Ada_Indent_Broken), 
(Int, 2 * Ada_Indent_Broken)))));
       end case;
    end package_specification_1;
 
@@ -3223,8 +3281,8 @@ package body Ada_Process_Actions is
    procedure parameter_and_result_profile_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3242,8 +3300,8 @@ package body Ada_Process_Actions is
    procedure parameter_specification_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3255,17 +3313,17 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Anchored_1, 7,
-         Ada_Indent_Broken)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Hanging_3, (Int,
+         Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, (Simple, 
(Int, Ada_Indent_Broken))), (False,
+         (Simple, (Anchored_1, 7, Ada_Indent_Broken)))));
       end case;
    end parameter_specification_0;
 
    procedure parameter_specification_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3277,16 +3335,16 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
-         Ada_Indent_Broken)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Hanging_3, (Int,
+         Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken)))));
       end case;
    end parameter_specification_1;
 
    procedure parameter_specification_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3306,8 +3364,8 @@ package body Ada_Process_Actions is
    procedure parameter_specification_3
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3326,8 +3384,8 @@ package body Ada_Process_Actions is
    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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3345,8 +3403,8 @@ package body Ada_Process_Actions is
    procedure pragma_g_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3358,15 +3416,15 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Anchored_0, 3,
-         1))), (False, (Simple, (Anchored_0, 3, 0))), (False, (Simple, (Label 
=> None)))));
+         1))), (False, (Simple, (Anchored_0, 3, 0))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end pragma_g_0;
 
    procedure pragma_g_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3378,15 +3436,15 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Anchored_0, 3,
-         1))), (False, (Simple, (Anchored_0, 3, 0))), (False, (Simple, (Label 
=> None)))));
+         1))), (False, (Simple, (Anchored_0, 3, 0))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end pragma_g_1;
 
    procedure pragma_g_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3397,15 +3455,15 @@ package body Ada_Process_Actions is
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 3, 
1)));
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end pragma_g_2;
 
    procedure primary_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3422,8 +3480,8 @@ package body Ada_Process_Actions is
    procedure primary_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3441,8 +3499,8 @@ package body Ada_Process_Actions is
    procedure primary_4
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3459,8 +3517,8 @@ package body Ada_Process_Actions is
    procedure private_extension_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3476,15 +3534,15 @@ package body Ada_Process_Actions is
          Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
          Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
          Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None))), (False, 
(Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Label => None))), (False, 
(Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end private_extension_declaration_0;
 
    procedure private_type_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3498,15 +3556,15 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Label => None))),
          (False, (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple,
-         (Label => None))), (False, (Simple, (Label => None)))));
+         (Label => None))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end private_type_declaration_0;
 
    procedure procedure_call_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3516,16 +3574,16 @@ package body Ada_Process_Actions is
       when Face =>
          null;
       when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, 
(Hanging_0, (Label => None), (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, 
(Hanging_1, (Label => None), (Int,
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end procedure_call_statement_0;
 
    procedure procedure_specification_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3536,8 +3594,8 @@ package body Ada_Process_Actions is
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 1, 
1)));
       when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
+         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Hanging_3,
+         (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end procedure_specification_0;
 
@@ -3556,8 +3614,8 @@ package body Ada_Process_Actions is
    procedure protected_body_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3573,7 +3631,7 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((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))), (False, (Simple, (Label => None))),
-         (False, (Simple, (Label => None))), (False, (Simple, (Label => 
None)))));
+         (False, (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end protected_body_0;
 
@@ -3592,8 +3650,8 @@ package body Ada_Process_Actions is
    procedure protected_body_stub_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3607,15 +3665,15 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
          Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end protected_body_stub_0;
 
    procedure protected_definition_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3646,8 +3704,8 @@ package body Ada_Process_Actions is
    procedure protected_definition_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3677,8 +3735,8 @@ package body Ada_Process_Actions is
    procedure protected_type_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3696,7 +3754,7 @@ package body Ada_Process_Actions is
          (Int, Ada_Indent_Broken))), (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, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None))), (False, 
(Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Label => None))), (False, 
(Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end protected_type_declaration_0;
 
@@ -3715,8 +3773,8 @@ package body Ada_Process_Actions is
    procedure protected_type_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3732,7 +3790,7 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
          Ada_Indent_Broken))), (False, (Simple, (Label => None))), (True, 
(Simple, (Label => None)), (Simple, (Int,
-         Ada_Indent))), (False, (Simple, (Label => None))), (False, (Simple, 
(Label => None)))));
+         Ada_Indent))), (False, (Simple, (Label => None))), (False, (Simple, 
(Int, Ada_Indent_Broken)))));
       end case;
    end protected_type_declaration_1;
 
@@ -3751,8 +3809,8 @@ package body Ada_Process_Actions is
    procedure qualified_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3771,8 +3829,8 @@ package body Ada_Process_Actions is
    procedure quantified_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3791,8 +3849,8 @@ package body Ada_Process_Actions is
    procedure raise_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3811,8 +3869,8 @@ package body Ada_Process_Actions is
    procedure raise_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3822,17 +3880,17 @@ package body Ada_Process_Actions is
       when Face =>
          null;
       when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Anchored_1, 3,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Hanging_3,
+         (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken))), (False,
+         (Simple, (Anchored_1, 3, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end raise_statement_0;
 
    procedure raise_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3842,16 +3900,16 @@ package body Ada_Process_Actions is
       when Face =>
          null;
       when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Hanging_3,
+         (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end raise_statement_1;
 
    procedure raise_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3868,8 +3926,8 @@ package body Ada_Process_Actions is
    procedure range_g_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3888,8 +3946,8 @@ package body Ada_Process_Actions is
    procedure record_definition_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3910,8 +3968,8 @@ package body Ada_Process_Actions is
    procedure record_representation_clause_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3921,21 +3979,21 @@ package body Ada_Process_Actions is
       when Face =>
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 1, 
2)));
       when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (True, (Simple, (Language,
-         Ada_Indent_Record_1'Access, 28 & 4 & 0)), (Simple, (Language, 
Ada_Indent_Record_1'Access, 28 & 4 &
-         Ada_Indent))), (False, (Simple, (Language, 
Ada_Indent_Record_0'Access, 1 & 4 & Ada_Indent))), (True, (Simple,
-         (Language, Ada_Indent_Record_1'Access, 28 & 4 & Ada_Indent)), 
(Simple, (Language, Ada_Indent_Record_1'Access,
-         28 & 4 & Ada_Indent))), (False, (Simple, (Language, 
Ada_Indent_Record_1'Access, 28 & 4 & 0))), (False,
-         (Simple, (Label => None))), (False, (Simple, (Label => None)))));
+         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Hanging_3,
+         (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken))), (True,
+         (Simple, (Language, Ada_Indent_Record_1'Access, 28 & 4 & 0)), 
(Simple, (Language, Ada_Indent_Record_1'Access,
+         28 & 4 & Ada_Indent))), (False, (Simple, (Language, 
Ada_Indent_Record_0'Access, 1 & 4 & Ada_Indent))), (True,
+         (Simple, (Language, Ada_Indent_Record_1'Access, 28 & 4 & 
Ada_Indent)), (Simple, (Language,
+         Ada_Indent_Record_1'Access, 28 & 4 & Ada_Indent))), (False, (Simple, 
(Language, Ada_Indent_Record_1'Access, 28
+         & 4 & 0))), (False, (Simple, (Int, Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end record_representation_clause_0;
 
    procedure requeue_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3952,8 +4010,8 @@ package body Ada_Process_Actions is
    procedure requeue_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3970,8 +4028,8 @@ package body Ada_Process_Actions is
    procedure result_profile_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -3982,15 +4040,15 @@ package body Ada_Process_Actions is
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 1, 
2)));
       when Indent =>
          Indent_Action_1 (Parse_Data, Tree, Nonterm, Tokens, 1, ((False, 
(Simple, (Label => None))), (False, (Simple,
-         (Anchored_3, 1, Ada_Indent_Broken))), (False, (Simple, (Anchored_3, 
1, Ada_Indent_Broken)))));
+         (Anchored_3, 1, Ada_Indent_Broken))), (False, (Simple, (Anchored_4, 
1, Ada_Indent_Broken)))));
       end case;
    end result_profile_0;
 
    procedure result_profile_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4008,8 +4066,8 @@ package body Ada_Process_Actions is
    procedure selected_component_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4019,7 +4077,8 @@ package body Ada_Process_Actions is
       when Face =>
          Face_Mark_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Prefix), 
(3, Suffix)));
       when Indent =>
-         null;
+         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
+         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end selected_component_0;
 
@@ -4038,8 +4097,8 @@ package body Ada_Process_Actions is
    procedure selected_component_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4056,8 +4115,8 @@ package body Ada_Process_Actions is
    procedure selected_component_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4086,8 +4145,8 @@ package body Ada_Process_Actions is
    procedure selected_component_3
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4104,8 +4163,8 @@ package body Ada_Process_Actions is
    procedure selective_accept_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4120,15 +4179,15 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((True, (Simple, 
(Label => None)), (Simple, (Int,
          Ada_Indent))), (True, (Simple, (Label => None)), (Simple, (Int, 
Ada_Indent))), (False, (Simple, (Label =>
          None))), (True, (Simple, (Int, Ada_Indent)), (Simple, (Int, 
Ada_Indent))), (False, (Simple, (Label => None))),
-         (False, (Simple, (Label => None))), (False, (Simple, (Label => 
None)))));
+         (False, (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end selective_accept_0;
 
    procedure selective_accept_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4141,15 +4200,15 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((True, (Simple, 
(Label => None)), (Simple, (Int,
          Ada_Indent))), (True, (Simple, (Label => None)), (Simple, (Int, 
Ada_Indent))), (False, (Simple, (Label =>
-         None))), (False, (Simple, (Label => None))), (False, (Simple, (Label 
=> None)))));
+         None))), (False, (Simple, (Int, Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end selective_accept_1;
 
    procedure select_alternative_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4168,8 +4227,8 @@ package body Ada_Process_Actions is
    procedure select_alternative_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4188,8 +4247,8 @@ package body Ada_Process_Actions is
    procedure select_alternative_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4208,8 +4267,8 @@ package body Ada_Process_Actions is
    procedure select_alternative_4
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4226,8 +4285,8 @@ package body Ada_Process_Actions is
    procedure select_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4246,8 +4305,8 @@ package body Ada_Process_Actions is
    procedure select_alternative_list_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4264,8 +4323,8 @@ package body Ada_Process_Actions is
    procedure simple_return_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4276,15 +4335,15 @@ package body Ada_Process_Actions is
          null;
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Label => None)))));
+         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end simple_return_statement_0;
 
    procedure simple_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4301,8 +4360,8 @@ package body Ada_Process_Actions is
    procedure simple_statement_3
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4319,8 +4378,8 @@ package body Ada_Process_Actions is
    procedure simple_statement_8
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4337,8 +4396,8 @@ package body Ada_Process_Actions is
    procedure single_protected_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4355,7 +4414,7 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Label => None))), 
(False, (Simple, (Label => None))), (False,
          (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None))), (False, 
(Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Label => None))), (False, 
(Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end single_protected_declaration_0;
 
@@ -4374,8 +4433,8 @@ package body Ada_Process_Actions is
    procedure single_protected_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4390,7 +4449,7 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Label => None))), 
(True, (Simple, (Label => None)), (Simple,
-         (Int, Ada_Indent))), (False, (Simple, (Label => None))), (False, 
(Simple, (Label => None)))));
+         (Int, Ada_Indent))), (False, (Simple, (Label => None))), (False, 
(Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end single_protected_declaration_1;
 
@@ -4409,8 +4468,8 @@ package body Ada_Process_Actions is
    procedure single_task_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4428,7 +4487,7 @@ package body Ada_Process_Actions is
          (Int, Ada_Indent_Broken))), (False, (Simple, (Label => None))), 
(False, (Simple, (Label => None))), (False,
          (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
          Ada_Indent_Broken))), (False, (Simple, (Label => None))), (False, 
(Simple, (Label => None))), (False, (Simple,
-         (Label => None))), (False, (Simple, (Label => None)))));
+         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end single_task_declaration_0;
 
@@ -4447,8 +4506,8 @@ package body Ada_Process_Actions is
    procedure single_task_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4464,7 +4523,7 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Label => None))), 
(True, (Simple, (Label => None)), (Simple,
          (Int, Ada_Indent))), (False, (Simple, (Label => None))), (False, 
(Simple, (Label => None))), (False, (Simple,
-         (Label => None))), (False, (Simple, (Label => None)))));
+         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end single_task_declaration_1;
 
@@ -4483,8 +4542,8 @@ package body Ada_Process_Actions is
    procedure single_task_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4496,15 +4555,16 @@ package body Ada_Process_Actions is
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 3, 
2)));
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Label => None))), 
(False, (Simple, (Label => None)))));
+         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
+         Ada_Indent_Broken)))));
       end case;
    end single_task_declaration_2;
 
    procedure subprogram_body_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4521,7 +4581,7 @@ package body Ada_Process_Actions is
          (Label => None)), (Simple, (Int, Ada_Indent))), (False, (Simple, 
(Label => None))), (False, (Simple, (Label =>
          None))), (True, (Simple, (Int, Ada_Indent)), (Simple, (Int, 
Ada_Indent))), (False, (Simple, (Label => None))),
          (True, (Simple, (Int, Ada_Indent)), (Simple, (Int, Ada_Indent))), 
(False, (Simple, (Label => None))), (False,
-         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Label => 
None)))));
+         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end subprogram_body_0;
 
@@ -4540,8 +4600,8 @@ package body Ada_Process_Actions is
    procedure subprogram_body_stub_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4554,15 +4614,15 @@ 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, (Label => None))), (False, 
(Simple, (Int, Ada_Indent_Broken))), (False,
-         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Label => 
None)))));
+         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end subprogram_body_stub_0;
 
    procedure subprogram_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4580,8 +4640,8 @@ package body Ada_Process_Actions is
    procedure subprogram_default_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4598,8 +4658,8 @@ package body Ada_Process_Actions is
    procedure subprogram_renaming_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4611,8 +4671,9 @@ package body Ada_Process_Actions is
          Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (4, 1, 
1)));
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Label => None))), (False, (Simple, (Language, 
Ada_Indent_Renames_0'Access, +2))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Label => None)))));
+         (Label => None))), (False, (Simple, (Language, 
Ada_Indent_Renames_0'Access, +2))), (False, (Hanging_3, (Int,
+         Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, (Simple, 
(Int, Ada_Indent_Broken))), (False,
+         (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end subprogram_renaming_declaration_0;
 
@@ -4643,8 +4704,8 @@ package body Ada_Process_Actions is
    procedure subtype_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4657,15 +4718,15 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None))), (False, 
(Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Label => None))), (False, 
(Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end subtype_declaration_0;
 
    procedure subtype_indication_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4682,8 +4743,8 @@ package body Ada_Process_Actions is
    procedure subtype_indication_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4700,8 +4761,8 @@ package body Ada_Process_Actions is
    procedure subtype_indication_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4718,8 +4779,8 @@ package body Ada_Process_Actions is
    procedure subtype_indication_3
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4736,8 +4797,8 @@ package body Ada_Process_Actions is
    procedure subunit_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4747,17 +4808,17 @@ package body Ada_Process_Actions is
       when Face =>
          null;
       when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Anchored_0, 2, 1))), 
(False, (Simple, (Anchored_0, 2, 0))),
-         (False, (Simple, (Label => None)))));
+         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Hanging_3,
+         (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, 
(Simple, (Anchored_0, 2, 1))), (False,
+         (Simple, (Anchored_0, 2, 0))), (False, (Simple, (Label => None)))));
       end case;
    end subunit_0;
 
    procedure task_body_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4775,7 +4836,7 @@ package body Ada_Process_Actions is
          (Label => None))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Label => None))), (False,
          (Simple, (Label => None))), (True, (Simple, (Int, Ada_Indent)), 
(Simple, (Int, Ada_Indent))), (False, (Simple,
          (Label => None))), (True, (Simple, (Int, Ada_Indent)), (Simple, (Int, 
Ada_Indent))), (False, (Simple, (Label
-         => None))), (False, (Simple, (Label => None))), (False, (Simple, 
(Label => None)))));
+         => None))), (False, (Simple, (Int, Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end task_body_0;
 
@@ -4794,8 +4855,8 @@ package body Ada_Process_Actions is
    procedure task_body_stub_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4808,16 +4869,16 @@ 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, (Label => None))), (False,
-         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Label =>
-         None)))));
+         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
+         Ada_Indent_Broken)))));
       end case;
    end task_body_stub_0;
 
    procedure task_definition_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4836,8 +4897,8 @@ package body Ada_Process_Actions is
    procedure task_definition_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4855,8 +4916,8 @@ package body Ada_Process_Actions is
    procedure task_type_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4875,7 +4936,7 @@ package body Ada_Process_Actions is
          Ada_Indent_Broken))), (False, (Simple, (Label => None))), (False, 
(Simple, (Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
          Ada_Indent_Broken))), (False, (Simple, (Label => None))), (False, 
(Simple, (Label => None))), (False, (Simple,
-         (Label => None))), (False, (Simple, (Label => None)))));
+         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end task_type_declaration_0;
 
@@ -4894,8 +4955,8 @@ package body Ada_Process_Actions is
    procedure task_type_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4912,8 +4973,8 @@ package body Ada_Process_Actions is
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
          Ada_Indent_Broken))), (False, (Simple, (Label => None))), (True, 
(Simple, (Label => None)), (Simple, (Int,
-         Ada_Indent))), (False, (Simple, (Label => None))), (False, (Simple, 
(Label => None))), (False, (Simple, (Label
-         => None))), (False, (Simple, (Label => None)))));
+         Ada_Indent))), (False, (Simple, (Label => None))), (False, (Simple, 
(Label => None))), (False, (Simple, (Int,
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end task_type_declaration_1;
 
@@ -4932,8 +4993,8 @@ package body Ada_Process_Actions is
    procedure task_type_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4946,15 +5007,16 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Label => None))), (False, 
(Simple, (Label => None)))));
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Int,
+         Ada_Indent_Broken)))));
       end case;
    end task_type_declaration_2;
 
    procedure timed_entry_call_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4968,16 +5030,16 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (True, (Simple, (Int,
          Ada_Indent)), (Simple, (Int, Ada_Indent))), (False, (Simple, (Label 
=> None))), (True, (Simple, (Int,
-         Ada_Indent)), (Simple, (Int, Ada_Indent))), (False, (Simple, (Label 
=> None))), (False, (Simple, (Label =>
-         None))), (False, (Simple, (Label => None)))));
+         Ada_Indent)), (Simple, (Int, Ada_Indent))), (False, (Simple, (Label 
=> None))), (False, (Simple, (Int,
+         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end timed_entry_call_0;
 
    procedure variant_part_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -4991,15 +5053,16 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Label => None))), 
(False, (Simple, (Int, Ada_Indent_When))),
-         (False, (Simple, (Label => None))), (False, (Simple, (Label => 
None))), (False, (Simple, (Label => None)))));
+         (False, (Simple, (Label => None))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
+         Ada_Indent_Broken)))));
       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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -5016,8 +5079,8 @@ package body Ada_Process_Actions is
    procedure variant_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -5036,8 +5099,8 @@ package body Ada_Process_Actions is
    procedure use_clause_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -5049,15 +5112,15 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Use))), (False, (Simple, (Label => None)))));
+         Ada_Indent_Use))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end use_clause_0;
 
    procedure use_clause_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -5068,15 +5131,16 @@ package body Ada_Process_Actions is
          Face_Apply_List_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 
1, 2)));
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Use))), 
(False, (Simple, (Label => None)))));
+         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Use))), 
(False, (Simple, (Int,
+         Ada_Indent_Broken)))));
       end case;
    end use_clause_1;
 
    procedure use_clause_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -5087,15 +5151,15 @@ package body Ada_Process_Actions is
          Face_Apply_List_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 
1, 1)));
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Use))), (False, (Simple, (Label => None)))));
+         (Int, Ada_Indent_Use))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end use_clause_2;
 
    procedure with_clause_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -5107,15 +5171,15 @@ package body Ada_Process_Actions is
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
          (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_With))), (False, (Simple, (Label => None)))));
+         Ada_Indent_With))), (False, (Simple, (Int, Ada_Indent_Broken)))));
       end case;
    end with_clause_0;
 
    procedure with_clause_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -5126,15 +5190,16 @@ package body Ada_Process_Actions is
          Face_Apply_List_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 
1, 1)));
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_With))), (False, (Simple, (Label => None)))));
+         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_With))), (False, (Simple, (Int,
+         Ada_Indent_Broken)))));
       end case;
    end with_clause_1;
 
    procedure with_clause_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -5145,15 +5210,16 @@ package body Ada_Process_Actions is
          Face_Apply_List_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 
1, 1)));
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_With))), (False, (Simple, (Label => None)))));
+         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_With))), (False, (Simple, (Int,
+         Ada_Indent_Broken)))));
       end case;
    end with_clause_2;
 
    procedure with_clause_3
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -5164,7 +5230,7 @@ package body Ada_Process_Actions is
          Face_Apply_List_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 
1, 1)));
       when Indent =>
          Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent_With))), (False, (Simple, (Label => None)))));
+         (Int, Ada_Indent_With))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
       end case;
    end with_clause_3;
 
diff --git a/packages/ada-mode/ada_process_actions.ads 
b/packages/ada-mode/ada_process_actions.ads
index ab2ace3..37b9c5d 100644
--- a/packages/ada-mode/ada_process_actions.ads
+++ b/packages/ada-mode/ada_process_actions.ads
@@ -24,15 +24,15 @@ package Ada_Process_Actions is
 
    Descriptor : aliased WisiToken.Descriptor :=
      (First_Terminal    => 3,
-      Last_Terminal     => 108,
-      First_Nonterminal => 109,
-      Last_Nonterminal  => 333,
-      EOI_ID            => 108,
-      Accept_ID         => 109,
+      Last_Terminal     => 110,
+      First_Nonterminal => 111,
+      Last_Nonterminal  => 335,
+      EOI_ID            => 110,
+      Accept_ID         => 111,
       Case_Insensitive  => True,
       New_Line_ID       => 1,
-      String_1_ID       => 107,
-      String_2_ID       => 106,
+      String_1_ID       => 109,
+      String_2_ID       => 108,
       Image             =>
         (new String'("WHITESPACE"),
          new String'("NEW_LINE"),
@@ -111,7 +111,9 @@ package Ada_Process_Actions is
          new String'("WITH"),
          new String'("XOR"),
          new String'("LEFT_PAREN"),
+         new String'("LEFT_SQUARE_BRACKET"),
          new String'("RIGHT_PAREN"),
+         new String'("RIGHT_SQUARE_BRACKET"),
          new String'("AMPERSAND"),
          new String'("AT_SIGN"),
          new String'("BAR"),
@@ -368,9 +370,9 @@ package Ada_Process_Actions is
          new String'("unary_adding_operator"),
          new String'("use_clause"),
          new String'("with_clause")),
-      Terminal_Image_Width => 17,
+      Terminal_Image_Width => 20,
       Image_Width          => 38,
-      Last_Lookahead       => 108);
+      Last_Lookahead       => 110);
 
    type Token_Enum_ID is
      (WHITESPACE_ID,
@@ -450,7 +452,9 @@ package Ada_Process_Actions is
       WITH_ID,
       XOR_ID,
       LEFT_PAREN_ID,
+      LEFT_SQUARE_BRACKET_ID,
       RIGHT_PAREN_ID,
+      RIGHT_SQUARE_BRACKET_ID,
       AMPERSAND_ID,
       AT_SIGN_ID,
       BAR_ID,
@@ -719,1153 +723,1163 @@ package Ada_Process_Actions is
    procedure abstract_subprogram_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure accept_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure accept_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure access_definition_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure access_definition_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure access_definition_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure actual_parameter_part_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure actual_parameter_part_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure aggregate_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 aggregate_1
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
+   procedure aggregate_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure aggregate_3
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure aggregate_4
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure aggregate_5
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
+   procedure aggregate_6
+    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+     Tree      : in out WisiToken.Syntax_Trees.Tree;
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure array_type_definition_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure array_type_definition_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure aspect_clause_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure aspect_specification_opt_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure assignment_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure association_opt_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure association_opt_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure association_opt_3
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure association_opt_4
     (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 association_opt_5
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
+   procedure association_opt_6
+    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
+     Tree      : in out WisiToken.Syntax_Trees.Tree;
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
+   procedure association_opt_7
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure asynchronous_select_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure at_clause_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure block_label_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure block_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure block_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure case_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure case_expression_alternative_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure case_expression_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure case_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure case_statement_alternative_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.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;
-     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
-     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure compilation_unit_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure compilation_unit_list_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure component_clause_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure component_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure component_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure component_list_4
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure conditional_entry_call_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure declaration_9
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure delay_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure delay_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure derived_type_definition_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure derived_type_definition_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure discriminant_part_opt_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure elsif_expression_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.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;
-     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
-     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure entry_body_formal_part_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure entry_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure entry_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure enumeration_representation_clause_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure enumeration_type_definition_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure exception_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure exception_handler_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure exception_handler_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.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;
-     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
-     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure exit_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure expression_function_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure extended_return_object_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure extended_return_object_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure extended_return_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure extended_return_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure formal_object_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure formal_object_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure formal_object_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure formal_object_declaration_3
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure formal_part_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure formal_subprogram_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure formal_subprogram_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure formal_subprogram_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure formal_subprogram_declaration_3
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure formal_type_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure formal_type_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure formal_type_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure formal_derived_type_definition_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure formal_derived_type_definition_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure formal_package_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure full_type_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure function_specification_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure generic_formal_part_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure generic_formal_part_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure generic_instantiation_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure generic_instantiation_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure generic_instantiation_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure generic_package_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure generic_renaming_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure generic_renaming_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure generic_renaming_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure generic_subprogram_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure goto_label_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure handled_sequence_of_statements_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure identifier_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure identifier_list_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure if_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure if_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure if_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure if_expression_3
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure if_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure if_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure if_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure if_statement_3
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure incomplete_type_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure incomplete_type_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure index_constraint_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure interface_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure interface_list_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure iteration_scheme_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure iteration_scheme_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure iterator_specification_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure iterator_specification_5
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure loop_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure loop_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure name_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure name_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure name_5
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure null_exclusion_opt_name_type_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure null_exclusion_opt_name_type_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure null_exclusion_opt_name_type_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure null_exclusion_opt_name_type_3
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure null_procedure_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure object_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure object_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure object_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure object_declaration_3
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure object_declaration_4
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure object_declaration_5
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure object_renaming_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure object_renaming_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure object_renaming_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure overriding_indicator_opt_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure overriding_indicator_opt_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure package_body_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure package_body_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure package_body_stub_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure package_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure package_renaming_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure package_specification_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure package_specification_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure parameter_and_result_profile_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure parameter_specification_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure parameter_specification_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure parameter_specification_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure parameter_specification_3
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.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;
-     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
-     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure pragma_g_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure pragma_g_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure primary_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure primary_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure primary_4
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure private_extension_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure private_type_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure procedure_call_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure procedure_specification_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure protected_body_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure protected_body_stub_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure protected_definition_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure protected_definition_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure protected_type_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure protected_type_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure qualified_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure quantified_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure raise_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure raise_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure raise_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure raise_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure range_g_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure record_definition_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure record_representation_clause_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure requeue_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure requeue_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure result_profile_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure result_profile_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure selected_component_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure selected_component_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure selected_component_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure selected_component_3
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure selective_accept_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure selective_accept_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure select_alternative_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure select_alternative_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure select_alternative_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure select_alternative_4
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure select_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure select_alternative_list_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure simple_return_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure simple_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure simple_statement_3
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure simple_statement_8
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure single_protected_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure single_protected_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure single_task_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure single_task_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure single_task_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure subprogram_body_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure subprogram_body_stub_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure subprogram_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure subprogram_default_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure subprogram_renaming_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure subtype_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure subtype_indication_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure subtype_indication_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure subtype_indication_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure subtype_indication_3
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure subunit_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure task_body_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure task_body_stub_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure task_definition_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure task_definition_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure task_type_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure task_type_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure task_type_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure timed_entry_call_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure variant_part_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.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;
-     Nonterm   : in     WisiToken.Syntax_Trees.Valid_Node_Index;
-     Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure use_clause_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure use_clause_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure use_clause_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure with_clause_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure with_clause_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure with_clause_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure with_clause_3
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    function accept_statement_0_check
     (Lexer          : access constant WisiToken.Lexer.Instance'Class;
      Nonterm        : in out WisiToken.Recover_Token;
diff --git a/packages/ada-mode/ada_process_lalr_main.adb 
b/packages/ada-mode/ada_process_lalr_main.adb
index 9af10b0..8cf50f3 100644
--- a/packages/ada-mode/ada_process_lalr_main.adb
+++ b/packages/ada-mode/ada_process_lalr_main.adb
@@ -39,17 +39,17 @@ package body Ada_Process_LALR_Main is
       use WisiToken.Parse.LR;
       McKenzie_Param : constant McKenzie_Param_Type :=
         (First_Terminal    => 3,
-         Last_Terminal     => 108,
-         First_Nonterminal => 109,
-         Last_Nonterminal  => 333,
+         Last_Terminal     => 110,
+         First_Nonterminal => 111,
+         Last_Nonterminal  => 335,
          Insert =>
            (4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, 3, 
4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 4, 4, 4, 4,
             4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-            4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4),
+            4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4),
          Delete =>
            (4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
             4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-            4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4),
+            4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4),
          Push_Back =>
            (2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
             2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -60,7 +60,7 @@ package body Ada_Process_LALR_Main is
             2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
             2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
             2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-            2, 2, 2, 2, 2, 2, 2),
+            2, 2, 2, 2, 2, 2, 2, 2, 2),
          Undo_Reduce =>
            (2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
             2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -80,15694 +80,16372 @@ package body Ada_Process_LALR_Main is
 
       Table : constant Parse_Table_Ptr := new Parse_Table
         (State_First       => 0,
-         State_Last        => 1292,
+         State_Last        => 1302,
          First_Terminal    => 3,
-         Last_Terminal     => 108,
-         First_Nonterminal => 109,
-         Last_Nonterminal  => 333);
+         Last_Terminal     => 110,
+         First_Nonterminal => 111,
+         Last_Nonterminal  => 335);
    begin
       Table.McKenzie_Param := McKenzie_Param;
       declare
          procedure Subr_1
          is begin
             Table.States (0).Action_List.Set_Capacity (39);
-            Add_Action (Table.States (0), 4, 1);
-            Add_Action (Table.States (0), 5, 2);
-            Add_Action (Table.States (0), 13, Reduce, (133, 1), 0, null, null);
-            Add_Action (Table.States (0), 15, 3);
-            Add_Action (Table.States (0), 17, Reduce, (133, 1), 0, null, null);
-            Add_Action (Table.States (0), 18, 4);
-            Add_Action (Table.States (0), 25, Reduce, (247, 2), 0, null, null);
-            Add_Action (Table.States (0), 27, 5);
-            Add_Action (Table.States (0), 28, 6);
-            Add_Conflict (Table.States (0), 28, (133, 1), 0, null, null);
-            Add_Action (Table.States (0), 29, Reduce, (247, 2), 0, null, null);
-            Add_Action (Table.States (0), 30, 8);
-            Add_Action (Table.States (0), 31, 9);
-            Add_Action (Table.States (0), 32, 10);
-            Add_Action (Table.States (0), 36, 11);
-            Add_Action (Table.States (0), 37, Reduce, (133, 1), 0, null, null);
-            Add_Action (Table.States (0), 40, 12);
-            Add_Action (Table.States (0), 41, 13);
-            Add_Action (Table.States (0), 46, 14);
-            Add_Action (Table.States (0), 47, 15);
-            Add_Action (Table.States (0), 48, 16);
-            Add_Action (Table.States (0), 49, 17);
-            Add_Action (Table.States (0), 50, Reduce, (247, 2), 0, null, null);
-            Add_Action (Table.States (0), 51, 19);
-            Add_Action (Table.States (0), 52, 20);
-            Add_Action (Table.States (0), 57, 21);
-            Add_Action (Table.States (0), 58, 22);
-            Add_Action (Table.States (0), 60, 23);
-            Add_Action (Table.States (0), 61, 24);
-            Add_Action (Table.States (0), 63, 25);
-            Add_Action (Table.States (0), 66, 26);
-            Add_Action (Table.States (0), 69, 27);
-            Add_Action (Table.States (0), 71, 28);
-            Add_Action (Table.States (0), 73, Reduce, (133, 1), 0, null, null);
-            Add_Action (Table.States (0), 74, 30);
-            Add_Action (Table.States (0), 79, 31);
-            Add_Action (Table.States (0), 94, 32);
-            Add_Action (Table.States (0), 105, 33);
-            Add_Action (Table.States (0), 106, 34);
-            Add_Action (Table.States (0), 107, 35);
+            Add_Action (Table.States (0), 4, (116, 0), 1);
+            Add_Action (Table.States (0), 5, (306, 8), 2);
+            Add_Action (Table.States (0), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (0), 15, (142, 0), 3);
+            Add_Action (Table.States (0), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (0), 18, (164, 0), 4);
+            Add_Action (Table.States (0), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (0), 27, (193, 0), 5);
+            Add_Action (Table.States (0), 28, (124, 0), 6);
+            Add_Conflict (Table.States (0), 28, (135, 1),  0, null, null);
+            Add_Action (Table.States (0), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (0), 30, (213, 0), 8);
+            Add_Action (Table.States (0), 31, (306, 3), 9);
+            Add_Action (Table.States (0), 32, (225, 0), 10);
+            Add_Action (Table.States (0), 36, (335, 0), 11);
+            Add_Action (Table.States (0), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (0), 40, (249, 0), 12);
+            Add_Action (Table.States (0), 41, (306, 0), 13);
+            Add_Action (Table.States (0), 46, (249, 1), 14);
+            Add_Action (Table.States (0), 47, (216, 0), 15);
+            Add_Action (Table.States (0), 48, (260, 0), 16);
+            Add_Action (Table.States (0), 49, (145, 2), 17);
+            Add_Action (Table.States (0), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (0), 51, (267, 0), 19);
+            Add_Action (Table.States (0), 52, (279, 0), 20);
+            Add_Action (Table.States (0), 57, (293, 0), 21);
+            Add_Action (Table.States (0), 58, (199, 0), 22);
+            Add_Action (Table.States (0), 60, (318, 0), 23);
+            Add_Action (Table.States (0), 61, (129, 0), 24);
+            Add_Action (Table.States (0), 63, (316, 0), 25);
+            Add_Action (Table.States (0), 66, (308, 0), 26);
+            Add_Action (Table.States (0), 69, (209, 0), 27);
+            Add_Action (Table.States (0), 71, (334, 0), 28);
+            Add_Action (Table.States (0), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (0), 74, (335, 3), 30);
+            Add_Action (Table.States (0), 81, (242, 8), 31);
+            Add_Action (Table.States (0), 96, (220, 0), 32);
+            Add_Action (Table.States (0), 107, (134, 0), 33);
+            Add_Action (Table.States (0), 108, (242, 7), 34);
+            Add_Action (Table.States (0), 109, (242, 6), 35);
             Table.States (0).Goto_List.Set_Capacity (83);
-            Add_Goto (Table.States (0), 113, 36);
-            Add_Goto (Table.States (0), 114, 37);
-            Add_Goto (Table.States (0), 122, 38);
-            Add_Goto (Table.States (0), 124, 39);
-            Add_Goto (Table.States (0), 127, 40);
-            Add_Goto (Table.States (0), 128, 41);
-            Add_Goto (Table.States (0), 129, 42);
-            Add_Goto (Table.States (0), 132, 43);
-            Add_Goto (Table.States (0), 133, 44);
-            Add_Goto (Table.States (0), 134, 45);
-            Add_Goto (Table.States (0), 135, 46);
-            Add_Goto (Table.States (0), 136, 47);
-            Add_Goto (Table.States (0), 140, 48);
-            Add_Goto (Table.States (0), 143, 49);
-            Add_Goto (Table.States (0), 144, 50);
-            Add_Goto (Table.States (0), 152, 51);
-            Add_Goto (Table.States (0), 153, 52);
-            Add_Goto (Table.States (0), 158, 53);
-            Add_Goto (Table.States (0), 162, 54);
-            Add_Goto (Table.States (0), 180, 55);
-            Add_Goto (Table.States (0), 183, 56);
-            Add_Goto (Table.States (0), 187, 57);
-            Add_Goto (Table.States (0), 191, 58);
-            Add_Goto (Table.States (0), 194, 59);
-            Add_Goto (Table.States (0), 197, 60);
-            Add_Goto (Table.States (0), 207, 61);
-            Add_Goto (Table.States (0), 208, 62);
-            Add_Goto (Table.States (0), 210, 63);
-            Add_Goto (Table.States (0), 211, 64);
-            Add_Goto (Table.States (0), 214, 65);
-            Add_Goto (Table.States (0), 215, 66);
-            Add_Goto (Table.States (0), 216, 67);
-            Add_Goto (Table.States (0), 217, 68);
-            Add_Goto (Table.States (0), 218, 69);
-            Add_Goto (Table.States (0), 220, 70);
-            Add_Goto (Table.States (0), 223, 71);
-            Add_Goto (Table.States (0), 224, 72);
-            Add_Goto (Table.States (0), 233, 73);
-            Add_Goto (Table.States (0), 240, 74);
-            Add_Goto (Table.States (0), 244, 75);
-            Add_Goto (Table.States (0), 245, 76);
-            Add_Goto (Table.States (0), 246, 77);
-            Add_Goto (Table.States (0), 247, 78);
-            Add_Goto (Table.States (0), 248, 79);
-            Add_Goto (Table.States (0), 249, 80);
-            Add_Goto (Table.States (0), 250, 81);
-            Add_Goto (Table.States (0), 251, 82);
-            Add_Goto (Table.States (0), 252, 83);
-            Add_Goto (Table.States (0), 258, 84);
-            Add_Goto (Table.States (0), 260, 85);
-            Add_Goto (Table.States (0), 261, 86);
-            Add_Goto (Table.States (0), 262, 87);
-            Add_Goto (Table.States (0), 263, 88);
-            Add_Goto (Table.States (0), 264, 89);
-            Add_Goto (Table.States (0), 265, 90);
-            Add_Goto (Table.States (0), 266, 91);
-            Add_Goto (Table.States (0), 272, 92);
-            Add_Goto (Table.States (0), 273, 93);
-            Add_Goto (Table.States (0), 277, 94);
-            Add_Goto (Table.States (0), 282, 95);
-            Add_Goto (Table.States (0), 290, 96);
-            Add_Goto (Table.States (0), 291, 97);
-            Add_Goto (Table.States (0), 294, 98);
-            Add_Goto (Table.States (0), 295, 99);
-            Add_Goto (Table.States (0), 299, 100);
-            Add_Goto (Table.States (0), 303, 101);
-            Add_Goto (Table.States (0), 304, 102);
-            Add_Goto (Table.States (0), 305, 103);
-            Add_Goto (Table.States (0), 306, 104);
-            Add_Goto (Table.States (0), 307, 105);
-            Add_Goto (Table.States (0), 308, 106);
-            Add_Goto (Table.States (0), 309, 107);
-            Add_Goto (Table.States (0), 310, 108);
-            Add_Goto (Table.States (0), 312, 109);
-            Add_Goto (Table.States (0), 314, 110);
-            Add_Goto (Table.States (0), 316, 111);
-            Add_Goto (Table.States (0), 317, 112);
-            Add_Goto (Table.States (0), 318, 113);
-            Add_Goto (Table.States (0), 320, 114);
-            Add_Goto (Table.States (0), 324, 115);
-            Add_Goto (Table.States (0), 326, 116);
-            Add_Goto (Table.States (0), 332, 117);
-            Add_Goto (Table.States (0), 333, 118);
-            Table.States (0).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 41, 13)));
+            Add_Goto (Table.States (0), 115, 36);
+            Add_Goto (Table.States (0), 116, 37);
+            Add_Goto (Table.States (0), 124, 38);
+            Add_Goto (Table.States (0), 126, 39);
+            Add_Goto (Table.States (0), 129, 40);
+            Add_Goto (Table.States (0), 130, 41);
+            Add_Goto (Table.States (0), 131, 42);
+            Add_Goto (Table.States (0), 134, 43);
+            Add_Goto (Table.States (0), 135, 44);
+            Add_Goto (Table.States (0), 136, 45);
+            Add_Goto (Table.States (0), 137, 46);
+            Add_Goto (Table.States (0), 138, 47);
+            Add_Goto (Table.States (0), 142, 48);
+            Add_Goto (Table.States (0), 145, 49);
+            Add_Goto (Table.States (0), 146, 50);
+            Add_Goto (Table.States (0), 154, 51);
+            Add_Goto (Table.States (0), 155, 52);
+            Add_Goto (Table.States (0), 160, 53);
+            Add_Goto (Table.States (0), 164, 54);
+            Add_Goto (Table.States (0), 182, 55);
+            Add_Goto (Table.States (0), 185, 56);
+            Add_Goto (Table.States (0), 189, 57);
+            Add_Goto (Table.States (0), 193, 58);
+            Add_Goto (Table.States (0), 196, 59);
+            Add_Goto (Table.States (0), 199, 60);
+            Add_Goto (Table.States (0), 209, 61);
+            Add_Goto (Table.States (0), 210, 62);
+            Add_Goto (Table.States (0), 212, 63);
+            Add_Goto (Table.States (0), 213, 64);
+            Add_Goto (Table.States (0), 216, 65);
+            Add_Goto (Table.States (0), 217, 66);
+            Add_Goto (Table.States (0), 218, 67);
+            Add_Goto (Table.States (0), 219, 68);
+            Add_Goto (Table.States (0), 220, 69);
+            Add_Goto (Table.States (0), 222, 70);
+            Add_Goto (Table.States (0), 225, 71);
+            Add_Goto (Table.States (0), 226, 72);
+            Add_Goto (Table.States (0), 235, 73);
+            Add_Goto (Table.States (0), 242, 74);
+            Add_Goto (Table.States (0), 246, 75);
+            Add_Goto (Table.States (0), 247, 76);
+            Add_Goto (Table.States (0), 248, 77);
+            Add_Goto (Table.States (0), 249, 78);
+            Add_Goto (Table.States (0), 250, 79);
+            Add_Goto (Table.States (0), 251, 80);
+            Add_Goto (Table.States (0), 252, 81);
+            Add_Goto (Table.States (0), 253, 82);
+            Add_Goto (Table.States (0), 254, 83);
+            Add_Goto (Table.States (0), 260, 84);
+            Add_Goto (Table.States (0), 262, 85);
+            Add_Goto (Table.States (0), 263, 86);
+            Add_Goto (Table.States (0), 264, 87);
+            Add_Goto (Table.States (0), 265, 88);
+            Add_Goto (Table.States (0), 266, 89);
+            Add_Goto (Table.States (0), 267, 90);
+            Add_Goto (Table.States (0), 268, 91);
+            Add_Goto (Table.States (0), 274, 92);
+            Add_Goto (Table.States (0), 275, 93);
+            Add_Goto (Table.States (0), 279, 94);
+            Add_Goto (Table.States (0), 284, 95);
+            Add_Goto (Table.States (0), 292, 96);
+            Add_Goto (Table.States (0), 293, 97);
+            Add_Goto (Table.States (0), 296, 98);
+            Add_Goto (Table.States (0), 297, 99);
+            Add_Goto (Table.States (0), 301, 100);
+            Add_Goto (Table.States (0), 305, 101);
+            Add_Goto (Table.States (0), 306, 102);
+            Add_Goto (Table.States (0), 307, 103);
+            Add_Goto (Table.States (0), 308, 104);
+            Add_Goto (Table.States (0), 309, 105);
+            Add_Goto (Table.States (0), 310, 106);
+            Add_Goto (Table.States (0), 311, 107);
+            Add_Goto (Table.States (0), 312, 108);
+            Add_Goto (Table.States (0), 314, 109);
+            Add_Goto (Table.States (0), 316, 110);
+            Add_Goto (Table.States (0), 318, 111);
+            Add_Goto (Table.States (0), 319, 112);
+            Add_Goto (Table.States (0), 320, 113);
+            Add_Goto (Table.States (0), 322, 114);
+            Add_Goto (Table.States (0), 326, 115);
+            Add_Goto (Table.States (0), 328, 116);
+            Add_Goto (Table.States (0), 334, 117);
+            Add_Goto (Table.States (0), 335, 118);
             Table.States (1).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1), 105, 119);
-            Table.States (1).Kernel := To_Vector (((114, 4, 4, False), (114, 
4, 2, False)));
-            Table.States (1).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 119)));
+            Add_Action (Table.States (1), 107, (116, 0), 119);
+            Table.States (1).Kernel := To_Vector ((((116, 0),  4,  4, 
(2147483647, 0),  0), ((116, 1),  4,  2,
+            (2147483647, 0),  0)));
+            Table.States (1).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (116, 0),  107, 119)));
             Table.States (2).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (2), 79, 31);
-            Add_Action (Table.States (2), 105, 120);
-            Add_Action (Table.States (2), 106, 34);
-            Add_Action (Table.States (2), 107, 35);
+            Add_Action (Table.States (2), 81, (242, 8), 31);
+            Add_Action (Table.States (2), 107, (242, 5), 120);
+            Add_Action (Table.States (2), 108, (242, 7), 34);
+            Add_Action (Table.States (2), 109, (242, 6), 35);
             Table.States (2).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (2), 129, 42);
-            Add_Goto (Table.States (2), 240, 121);
-            Add_Goto (Table.States (2), 273, 93);
-            Add_Goto (Table.States (2), 294, 98);
-            Table.States (2).Kernel := To_Vector ((0 => (304, 5, 2, False)));
-            Table.States (2).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (3).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (3), 3, 122);
-            Add_Action (Table.States (3), 35, Reduce, (193, 1), 0, null, null);
-            Add_Action (Table.States (3), 39, 123);
-            Add_Action (Table.States (3), 40, 124);
-            Add_Action (Table.States (3), 41, 125);
-            Add_Action (Table.States (3), 52, 126);
-            Add_Action (Table.States (3), 76, 127);
-            Add_Action (Table.States (3), 79, 31);
-            Add_Action (Table.States (3), 95, 128);
-            Add_Action (Table.States (3), 96, 129);
-            Add_Action (Table.States (3), 104, 130);
-            Add_Action (Table.States (3), 105, 120);
-            Add_Action (Table.States (3), 106, 34);
-            Add_Action (Table.States (3), 107, 35);
+            Add_Goto (Table.States (2), 131, 42);
+            Add_Goto (Table.States (2), 242, 121);
+            Add_Goto (Table.States (2), 275, 93);
+            Add_Goto (Table.States (2), 296, 98);
+            Table.States (2).Kernel := To_Vector ((0 => ((306, 8),  5,  2, 
(2147483647, 0),  0)));
+            Table.States (2).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (3).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (3), 3, (200, 2), 122);
+            Add_Action (Table.States (3), 35, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (3), 39, (261, 4), 123);
+            Add_Action (Table.States (3), 40, (200, 3), 124);
+            Add_Action (Table.States (3), 41, (261, 1), 125);
+            Add_Action (Table.States (3), 52, (278, 0), 126);
+            Add_Action (Table.States (3), 76, (120, 0), 127);
+            Add_Action (Table.States (3), 77, (120, 5), 128);
+            Add_Action (Table.States (3), 81, (242, 8), 31);
+            Add_Action (Table.States (3), 97, (333, 1), 129);
+            Add_Action (Table.States (3), 98, (333, 0), 130);
+            Add_Action (Table.States (3), 106, (261, 0), 131);
+            Add_Action (Table.States (3), 107, (242, 5), 120);
+            Add_Action (Table.States (3), 108, (242, 7), 34);
+            Add_Action (Table.States (3), 109, (242, 6), 35);
             Table.States (3).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (3), 118, 131);
-            Add_Goto (Table.States (3), 129, 42);
-            Add_Goto (Table.States (3), 192, 132);
-            Add_Goto (Table.States (3), 193, 133);
-            Add_Goto (Table.States (3), 198, 134);
-            Add_Goto (Table.States (3), 240, 135);
-            Add_Goto (Table.States (3), 259, 136);
-            Add_Goto (Table.States (3), 273, 93);
-            Add_Goto (Table.States (3), 276, 137);
-            Add_Goto (Table.States (3), 283, 138);
-            Add_Goto (Table.States (3), 284, 139);
-            Add_Goto (Table.States (3), 285, 140);
-            Add_Goto (Table.States (3), 286, 141);
-            Add_Goto (Table.States (3), 287, 142);
-            Add_Goto (Table.States (3), 288, 143);
-            Add_Goto (Table.States (3), 294, 98);
-            Add_Goto (Table.States (3), 302, 144);
-            Add_Goto (Table.States (3), 321, 145);
-            Add_Goto (Table.States (3), 322, 146);
-            Add_Goto (Table.States (3), 331, 147);
-            Table.States (3).Kernel := To_Vector ((0 => (140, 15, 6, False)));
-            Table.States (3).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (4).Action_List.Set_Capacity (15);
-            Add_Action (Table.States (4), 3, 122);
-            Add_Action (Table.States (4), 39, 123);
-            Add_Action (Table.States (4), 40, 124);
-            Add_Action (Table.States (4), 41, 125);
-            Add_Action (Table.States (4), 52, 126);
-            Add_Action (Table.States (4), 70, 148);
-            Add_Action (Table.States (4), 76, 127);
-            Add_Action (Table.States (4), 79, 31);
-            Add_Action (Table.States (4), 95, 128);
-            Add_Action (Table.States (4), 96, 129);
-            Add_Action (Table.States (4), 97, Reduce, (193, 1), 0, null, null);
-            Add_Action (Table.States (4), 104, 130);
-            Add_Action (Table.States (4), 105, 120);
-            Add_Action (Table.States (4), 106, 34);
-            Add_Action (Table.States (4), 107, 35);
+            Add_Goto (Table.States (3), 120, 132);
+            Add_Goto (Table.States (3), 131, 42);
+            Add_Goto (Table.States (3), 194, 133);
+            Add_Goto (Table.States (3), 195, 134);
+            Add_Goto (Table.States (3), 200, 135);
+            Add_Goto (Table.States (3), 242, 136);
+            Add_Goto (Table.States (3), 261, 137);
+            Add_Goto (Table.States (3), 275, 93);
+            Add_Goto (Table.States (3), 278, 138);
+            Add_Goto (Table.States (3), 285, 139);
+            Add_Goto (Table.States (3), 286, 140);
+            Add_Goto (Table.States (3), 287, 141);
+            Add_Goto (Table.States (3), 288, 142);
+            Add_Goto (Table.States (3), 289, 143);
+            Add_Goto (Table.States (3), 290, 144);
+            Add_Goto (Table.States (3), 296, 98);
+            Add_Goto (Table.States (3), 304, 145);
+            Add_Goto (Table.States (3), 323, 146);
+            Add_Goto (Table.States (3), 324, 147);
+            Add_Goto (Table.States (3), 333, 148);
+            Table.States (3).Kernel := To_Vector ((0 => ((142, 0),  15,  6, 
(2147483647, 0),  0)));
+            Table.States (3).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (4).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (4), 3, (200, 2), 122);
+            Add_Action (Table.States (4), 39, (261, 4), 123);
+            Add_Action (Table.States (4), 40, (200, 3), 124);
+            Add_Action (Table.States (4), 41, (261, 1), 125);
+            Add_Action (Table.States (4), 52, (278, 0), 126);
+            Add_Action (Table.States (4), 70, (164, 0), 149);
+            Add_Action (Table.States (4), 76, (120, 0), 127);
+            Add_Action (Table.States (4), 77, (120, 5), 128);
+            Add_Action (Table.States (4), 81, (242, 8), 31);
+            Add_Action (Table.States (4), 97, (333, 1), 129);
+            Add_Action (Table.States (4), 98, (333, 0), 130);
+            Add_Action (Table.States (4), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (4), 106, (261, 0), 131);
+            Add_Action (Table.States (4), 107, (242, 5), 120);
+            Add_Action (Table.States (4), 108, (242, 7), 34);
+            Add_Action (Table.States (4), 109, (242, 6), 35);
             Table.States (4).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (4), 118, 131);
-            Add_Goto (Table.States (4), 129, 42);
-            Add_Goto (Table.States (4), 192, 132);
-            Add_Goto (Table.States (4), 193, 149);
-            Add_Goto (Table.States (4), 198, 134);
-            Add_Goto (Table.States (4), 240, 135);
-            Add_Goto (Table.States (4), 259, 136);
-            Add_Goto (Table.States (4), 273, 93);
-            Add_Goto (Table.States (4), 276, 137);
-            Add_Goto (Table.States (4), 283, 138);
-            Add_Goto (Table.States (4), 284, 139);
-            Add_Goto (Table.States (4), 285, 140);
-            Add_Goto (Table.States (4), 286, 141);
-            Add_Goto (Table.States (4), 287, 142);
-            Add_Goto (Table.States (4), 288, 143);
-            Add_Goto (Table.States (4), 294, 98);
-            Add_Goto (Table.States (4), 302, 144);
-            Add_Goto (Table.States (4), 321, 145);
-            Add_Goto (Table.States (4), 322, 146);
-            Add_Goto (Table.States (4), 331, 147);
-            Table.States (4).Kernel := To_Vector (((162, 18, 2, False), (162, 
18, 1, False)));
-            Table.States (4).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
+            Add_Goto (Table.States (4), 120, 132);
+            Add_Goto (Table.States (4), 131, 42);
+            Add_Goto (Table.States (4), 194, 133);
+            Add_Goto (Table.States (4), 195, 150);
+            Add_Goto (Table.States (4), 200, 135);
+            Add_Goto (Table.States (4), 242, 136);
+            Add_Goto (Table.States (4), 261, 137);
+            Add_Goto (Table.States (4), 275, 93);
+            Add_Goto (Table.States (4), 278, 138);
+            Add_Goto (Table.States (4), 285, 139);
+            Add_Goto (Table.States (4), 286, 140);
+            Add_Goto (Table.States (4), 287, 141);
+            Add_Goto (Table.States (4), 288, 142);
+            Add_Goto (Table.States (4), 289, 143);
+            Add_Goto (Table.States (4), 290, 144);
+            Add_Goto (Table.States (4), 296, 98);
+            Add_Goto (Table.States (4), 304, 145);
+            Add_Goto (Table.States (4), 323, 146);
+            Add_Goto (Table.States (4), 324, 147);
+            Add_Goto (Table.States (4), 333, 148);
+            Table.States (4).Kernel := To_Vector ((((164, 0),  18,  2, 
(2147483647, 0),  0), ((164, 1),  18,  1,
+            (2147483647, 0),  0)));
+            Table.States (4).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
             Table.States (5).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (5), 72, Reduce, (221, 1), 0, null, null);
-            Add_Action (Table.States (5), 97, Reduce, (221, 1), 0, null, null);
-            Add_Action (Table.States (5), 105, 150);
+            Add_Action (Table.States (5), 72, Reduce, (223, 1),  0, null, 
null);
+            Add_Action (Table.States (5), 99, Reduce, (223, 1),  0, null, 
null);
+            Add_Action (Table.States (5), 107, (223, 0), 151);
             Table.States (5).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (5), 221, 151);
-            Table.States (5).Kernel := To_Vector (((191, 27, 2, False), (191, 
27, 1, False)));
-            Table.States (5).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 0)));
+            Add_Goto (Table.States (5), 223, 152);
+            Table.States (5).Kernel := To_Vector ((((193, 0),  27,  2, 
(2147483647, 0),  0), ((193, 1),  27,  1,
+            (2147483647, 0),  0)));
+            Table.States (5).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (223, 1),  0)));
             Table.States (6).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (6), 79, 31);
-            Add_Action (Table.States (6), 105, 152);
-            Add_Action (Table.States (6), 106, 153);
-            Add_Action (Table.States (6), 107, 35);
+            Add_Action (Table.States (6), 81, (242, 8), 31);
+            Add_Action (Table.States (6), 107, (166, 0), 153);
+            Add_Action (Table.States (6), 108, (166, 1), 154);
+            Add_Action (Table.States (6), 109, (242, 6), 35);
             Table.States (6).Goto_List.Set_Capacity (7);
-            Add_Goto (Table.States (6), 129, 154);
-            Add_Goto (Table.States (6), 164, 155);
-            Add_Goto (Table.States (6), 231, 156);
-            Add_Goto (Table.States (6), 232, 157);
-            Add_Goto (Table.States (6), 240, 158);
-            Add_Goto (Table.States (6), 273, 93);
-            Add_Goto (Table.States (6), 294, 98);
-            Table.States (6).Kernel := To_Vector (((122, 28, 5, False), (128, 
28, 4, False), (183, 28, 5, False), (230,
-            28, 0, False), (282, 28, 14, False)));
-            Table.States (6).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 232, 0)));
+            Add_Goto (Table.States (6), 131, 155);
+            Add_Goto (Table.States (6), 166, 156);
+            Add_Goto (Table.States (6), 233, 157);
+            Add_Goto (Table.States (6), 234, 158);
+            Add_Goto (Table.States (6), 242, 159);
+            Add_Goto (Table.States (6), 275, 93);
+            Add_Goto (Table.States (6), 296, 98);
+            Table.States (6).Kernel := To_Vector ((((124, 0),  28,  5, 
(2147483647, 0),  0), ((130, 0),  28,  4,
+            (2147483647, 0),  0), ((185, 0),  28,  5, (2147483647, 0),  0), 
((232, 1),  28,  0, (234, 1),  0), ((284,
+            0),  28,  14, (2147483647, 0),  0)));
+            Table.States (6).Minimal_Complete_Actions := To_Vector (((Shift, 
(166, 0),  107, 153), (Reduce, (234, 1),
+            0)));
             Table.States (7).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (7), 79, 31);
-            Add_Action (Table.States (7), 105, 120);
-            Add_Action (Table.States (7), 106, 34);
-            Add_Action (Table.States (7), 107, 35);
+            Add_Action (Table.States (7), 81, (242, 8), 31);
+            Add_Action (Table.States (7), 107, (242, 5), 120);
+            Add_Action (Table.States (7), 108, (242, 7), 34);
+            Add_Action (Table.States (7), 109, (242, 6), 35);
             Table.States (7).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (7), 129, 42);
-            Add_Goto (Table.States (7), 240, 159);
-            Add_Goto (Table.States (7), 273, 93);
-            Add_Goto (Table.States (7), 294, 98);
-            Table.States (7).Kernel := To_Vector ((0 => (208, 29, 2, False)));
-            Table.States (7).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
+            Add_Goto (Table.States (7), 131, 42);
+            Add_Goto (Table.States (7), 242, 160);
+            Add_Goto (Table.States (7), 275, 93);
+            Add_Goto (Table.States (7), 296, 98);
+            Table.States (7).Kernel := To_Vector ((0 => ((210, 0),  29,  2, 
(2147483647, 0),  0)));
+            Table.States (7).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
             Table.States (8).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (8), 29, 160);
-            Add_Conflict (Table.States (8), 29, (211, 1), 1, 
generic_formal_part_1'Access, null);
-            Add_Action (Table.States (8), 47, 161);
-            Add_Conflict (Table.States (8), 47, (211, 1), 1, 
generic_formal_part_1'Access, null);
-            Add_Action (Table.States (8), 48, 16);
-            Add_Action (Table.States (8), 50, 162);
-            Add_Conflict (Table.States (8), 50, (211, 1), 1, 
generic_formal_part_1'Access, null);
-            Add_Action (Table.States (8), 69, 163);
-            Add_Action (Table.States (8), 71, 28);
-            Add_Action (Table.States (8), 74, 164);
-            Add_Action (Table.States (8), 105, 165);
+            Add_Action (Table.States (8), 29, (218, 2), 161);
+            Add_Conflict (Table.States (8), 29, (213, 1),  1, 
generic_formal_part_1'Access, null);
+            Add_Action (Table.States (8), 47, (218, 0), 162);
+            Add_Conflict (Table.States (8), 47, (213, 1),  1, 
generic_formal_part_1'Access, null);
+            Add_Action (Table.States (8), 48, (260, 0), 16);
+            Add_Action (Table.States (8), 50, (218, 1), 163);
+            Add_Conflict (Table.States (8), 50, (213, 1),  1, 
generic_formal_part_1'Access, null);
+            Add_Action (Table.States (8), 69, (204, 0), 164);
+            Add_Action (Table.States (8), 71, (334, 0), 28);
+            Add_Action (Table.States (8), 74, (203, 0), 165);
+            Add_Action (Table.States (8), 107, (222, 1), 166);
             Table.States (8).Goto_List.Set_Capacity (9);
-            Add_Goto (Table.States (8), 199, 166);
             Add_Goto (Table.States (8), 201, 167);
-            Add_Goto (Table.States (8), 202, 168);
-            Add_Goto (Table.States (8), 205, 169);
-            Add_Goto (Table.States (8), 212, 170);
-            Add_Goto (Table.States (8), 213, 171);
-            Add_Goto (Table.States (8), 220, 172);
-            Add_Goto (Table.States (8), 258, 173);
-            Add_Goto (Table.States (8), 332, 174);
-            Table.States (8).Kernel := To_Vector (((211, 30, 3, False), (211, 
30, 0, False), (216, 30, 5, False), (216,
-            30, 5, False), (216, 30, 5, False)));
-            Table.States (8).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 211, 1)));
+            Add_Goto (Table.States (8), 203, 168);
+            Add_Goto (Table.States (8), 204, 169);
+            Add_Goto (Table.States (8), 207, 170);
+            Add_Goto (Table.States (8), 214, 171);
+            Add_Goto (Table.States (8), 215, 172);
+            Add_Goto (Table.States (8), 222, 173);
+            Add_Goto (Table.States (8), 260, 174);
+            Add_Goto (Table.States (8), 334, 175);
+            Table.States (8).Kernel := To_Vector ((((213, 0),  30,  3, 
(2147483647, 0),  0), ((213, 1),  30,  0, (213,
+            1),  1), ((218, 0),  30,  5, (2147483647, 0),  0), ((218, 1),  30, 
 5, (2147483647, 0),  0), ((218, 2),
+            30,  5, (2147483647, 0),  0)));
+            Table.States (8).Minimal_Complete_Actions := To_Vector (((Shift, 
(204, 0),  69, 164), (Reduce, (213, 1),
+            1)));
             Table.States (9).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (9), 105, 175);
-            Table.States (9).Kernel := To_Vector ((0 => (304, 31, 2, False)));
-            Table.States (9).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 175)));
-            Table.States (10).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (10), 3, 122);
-            Add_Action (Table.States (10), 39, 123);
-            Add_Action (Table.States (10), 40, 124);
-            Add_Action (Table.States (10), 41, 125);
-            Add_Action (Table.States (10), 52, 126);
-            Add_Action (Table.States (10), 68, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (10), 76, 127);
-            Add_Action (Table.States (10), 79, 31);
-            Add_Action (Table.States (10), 95, 128);
-            Add_Action (Table.States (10), 96, 129);
-            Add_Action (Table.States (10), 104, 130);
-            Add_Action (Table.States (10), 105, 120);
-            Add_Action (Table.States (10), 106, 34);
-            Add_Action (Table.States (10), 107, 35);
+            Add_Action (Table.States (9), 107, (306, 3), 176);
+            Table.States (9).Kernel := To_Vector ((0 => ((306, 3),  31,  2, 
(2147483647, 0),  0)));
+            Table.States (9).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (306, 3),  107, 176)));
+            Table.States (10).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (10), 3, (200, 2), 122);
+            Add_Action (Table.States (10), 39, (261, 4), 123);
+            Add_Action (Table.States (10), 40, (200, 3), 124);
+            Add_Action (Table.States (10), 41, (261, 1), 125);
+            Add_Action (Table.States (10), 52, (278, 0), 126);
+            Add_Action (Table.States (10), 68, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (10), 76, (120, 0), 127);
+            Add_Action (Table.States (10), 77, (120, 5), 128);
+            Add_Action (Table.States (10), 81, (242, 8), 31);
+            Add_Action (Table.States (10), 97, (333, 1), 129);
+            Add_Action (Table.States (10), 98, (333, 0), 130);
+            Add_Action (Table.States (10), 106, (261, 0), 131);
+            Add_Action (Table.States (10), 107, (242, 5), 120);
+            Add_Action (Table.States (10), 108, (242, 7), 34);
+            Add_Action (Table.States (10), 109, (242, 6), 35);
             Table.States (10).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (10), 118, 131);
-            Add_Goto (Table.States (10), 129, 42);
-            Add_Goto (Table.States (10), 192, 132);
-            Add_Goto (Table.States (10), 193, 176);
-            Add_Goto (Table.States (10), 198, 134);
-            Add_Goto (Table.States (10), 240, 135);
-            Add_Goto (Table.States (10), 259, 136);
-            Add_Goto (Table.States (10), 273, 93);
-            Add_Goto (Table.States (10), 276, 137);
-            Add_Goto (Table.States (10), 283, 138);
-            Add_Goto (Table.States (10), 284, 139);
-            Add_Goto (Table.States (10), 285, 140);
-            Add_Goto (Table.States (10), 286, 141);
-            Add_Goto (Table.States (10), 287, 142);
-            Add_Goto (Table.States (10), 288, 143);
-            Add_Goto (Table.States (10), 294, 98);
-            Add_Goto (Table.States (10), 302, 144);
-            Add_Goto (Table.States (10), 321, 145);
-            Add_Goto (Table.States (10), 322, 146);
-            Add_Goto (Table.States (10), 331, 147);
-            Table.States (10).Kernel := To_Vector (((223, 32, 7, False), (223, 
32, 5, False), (223, 32, 6, False),
-            (223, 32, 4, False)));
-            Table.States (10).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
+            Add_Goto (Table.States (10), 120, 132);
+            Add_Goto (Table.States (10), 131, 42);
+            Add_Goto (Table.States (10), 194, 133);
+            Add_Goto (Table.States (10), 195, 177);
+            Add_Goto (Table.States (10), 200, 135);
+            Add_Goto (Table.States (10), 242, 136);
+            Add_Goto (Table.States (10), 261, 137);
+            Add_Goto (Table.States (10), 275, 93);
+            Add_Goto (Table.States (10), 278, 138);
+            Add_Goto (Table.States (10), 285, 139);
+            Add_Goto (Table.States (10), 286, 140);
+            Add_Goto (Table.States (10), 287, 141);
+            Add_Goto (Table.States (10), 288, 142);
+            Add_Goto (Table.States (10), 289, 143);
+            Add_Goto (Table.States (10), 290, 144);
+            Add_Goto (Table.States (10), 296, 98);
+            Add_Goto (Table.States (10), 304, 145);
+            Add_Goto (Table.States (10), 323, 146);
+            Add_Goto (Table.States (10), 324, 147);
+            Add_Goto (Table.States (10), 333, 148);
+            Table.States (10).Kernel := To_Vector ((((225, 0),  32,  7, 
(2147483647, 0),  0), ((225, 1),  32,  5,
+            (2147483647, 0),  0), ((225, 2),  32,  6, (2147483647, 0),  0), 
((225, 3),  32,  4, (2147483647, 0),  0)));
+            Table.States (10).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
             Table.States (11).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (11), 49, 177);
-            Add_Action (Table.States (11), 74, 178);
-            Table.States (11).Kernel := To_Vector (((333, 36, 4, False), (333, 
36, 3, False)));
-            Table.States (11).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 178)));
+            Add_Action (Table.States (11), 49, (335, 0), 178);
+            Add_Action (Table.States (11), 74, (335, 1), 179);
+            Table.States (11).Kernel := To_Vector ((((335, 0),  36,  4, 
(2147483647, 0),  0), ((335, 1),  36,  3,
+            (2147483647, 0),  0)));
+            Table.States (11).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (335, 1),  74, 179)));
             Table.States (12).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (12), 46, 179);
-            Table.States (12).Kernel := To_Vector ((0 => (247, 40, 1, False)));
-            Table.States (12).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 46, 179)));
+            Add_Action (Table.States (12), 46, (249, 0), 180);
+            Table.States (12).Kernel := To_Vector ((0 => ((249, 0),  40,  1, 
(2147483647, 0),  0)));
+            Table.States (12).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (249, 0),  46, 180)));
             Table.States (13).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (13), 97, 180);
-            Table.States (13).Kernel := To_Vector ((0 => (304, 41, 1, False)));
-            Table.States (13).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 180)));
+            Add_Action (Table.States (13), 99, (306, 0), 181);
+            Table.States (13).Kernel := To_Vector ((0 => ((306, 0),  41,  1, 
(2147483647, 0),  0)));
+            Table.States (13).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (306, 0),  99, 181)));
             Table.States (14).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (14), (25, 29, 50), (247, 1), 1, 
overriding_indicator_opt_1'Access, null);
-            Table.States (14).Kernel := To_Vector ((0 => (247, 46, 0, False)));
-            Table.States (14).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 247, 1)));
+            Add_Action (Table.States (14), (25, 29, 50), (249, 1),  1, 
overriding_indicator_opt_1'Access, null);
+            Table.States (14).Kernel := To_Vector ((0 => ((249, 1),  46,  0, 
(249, 1),  1)));
+            Table.States (14).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (249, 1),  1)));
             Table.States (15).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (15), 14, 181);
-            Add_Action (Table.States (15), 79, 31);
-            Add_Action (Table.States (15), 105, 120);
-            Add_Action (Table.States (15), 106, 34);
-            Add_Action (Table.States (15), 107, 35);
+            Add_Action (Table.States (15), 14, (250, 0), 182);
+            Add_Action (Table.States (15), 81, (242, 8), 31);
+            Add_Action (Table.States (15), 107, (242, 5), 120);
+            Add_Action (Table.States (15), 108, (242, 7), 34);
+            Add_Action (Table.States (15), 109, (242, 6), 35);
             Table.States (15).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (15), 129, 42);
-            Add_Goto (Table.States (15), 240, 182);
-            Add_Goto (Table.States (15), 273, 93);
-            Add_Goto (Table.States (15), 294, 98);
-            Table.States (15).Kernel := To_Vector (((214, 47, 5, False), (248, 
47, 6, False), (248, 47, 5, False),
-            (249, 47, 5, False), (251, 47, 4, False), (252, 47, 4, False), 
(252, 47, 3, False)));
-            Table.States (15).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
+            Add_Goto (Table.States (15), 131, 42);
+            Add_Goto (Table.States (15), 242, 183);
+            Add_Goto (Table.States (15), 275, 93);
+            Add_Goto (Table.States (15), 296, 98);
+            Table.States (15).Kernel := To_Vector ((((216, 0),  47,  5, 
(2147483647, 0),  0), ((250, 0),  47,  6,
+            (2147483647, 0),  0), ((250, 1),  47,  5, (2147483647, 0),  0), 
((251, 0),  47,  5, (2147483647, 0),  0),
+            ((253, 0),  47,  4, (2147483647, 0),  0), ((254, 0),  47,  4, 
(2147483647, 0),  0), ((254, 1),  47,  3,
+            (2147483647, 0),  0)));
+            Table.States (15).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
             Table.States (16).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (16), 105, 183);
-            Table.States (16).Kernel := To_Vector (((258, 48, 4, False), (258, 
48, 6, False), (258, 48, 2, False)));
-            Table.States (16).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 183)));
+            Add_Action (Table.States (16), 107, (260, 0), 184);
+            Table.States (16).Kernel := To_Vector ((((260, 0),  48,  4, 
(2147483647, 0),  0), ((260, 1),  48,  6,
+            (2147483647, 0),  0), ((260, 2),  48,  2, (2147483647, 0),  0)));
+            Table.States (16).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (260, 0),  107, 184)));
             Table.States (17).Action_List.Set_Capacity (15);
-            Add_Action (Table.States (17), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (17), 28, 184);
-            Add_Action (Table.States (17), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (17), 30, 8);
-            Add_Action (Table.States (17), 40, 12);
-            Add_Action (Table.States (17), 46, 14);
-            Add_Action (Table.States (17), 47, 15);
-            Add_Action (Table.States (17), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (17), 51, 19);
-            Add_Action (Table.States (17), 63, 25);
-            Add_Action (Table.States (17), 66, 26);
-            Add_Action (Table.States (17), 69, 27);
-            Add_Action (Table.States (17), 71, 28);
-            Add_Action (Table.States (17), 74, 185);
-            Add_Action (Table.States (17), 105, 186);
+            Add_Action (Table.States (17), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (17), 28, (124, 0), 185);
+            Add_Action (Table.States (17), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (17), 30, (213, 0), 8);
+            Add_Action (Table.States (17), 40, (249, 0), 12);
+            Add_Action (Table.States (17), 46, (249, 1), 14);
+            Add_Action (Table.States (17), 47, (216, 0), 15);
+            Add_Action (Table.States (17), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (17), 51, (267, 0), 19);
+            Add_Action (Table.States (17), 63, (316, 0), 25);
+            Add_Action (Table.States (17), 66, (308, 0), 26);
+            Add_Action (Table.States (17), 69, (209, 0), 27);
+            Add_Action (Table.States (17), 71, (334, 0), 28);
+            Add_Action (Table.States (17), 74, (335, 2), 186);
+            Add_Action (Table.States (17), 107, (222, 1), 187);
             Table.States (17).Goto_List.Set_Capacity (50);
-            Add_Goto (Table.States (17), 113, 36);
-            Add_Goto (Table.States (17), 122, 38);
-            Add_Goto (Table.States (17), 128, 41);
-            Add_Goto (Table.States (17), 135, 46);
-            Add_Goto (Table.States (17), 136, 47);
-            Add_Goto (Table.States (17), 158, 187);
-            Add_Goto (Table.States (17), 180, 55);
-            Add_Goto (Table.States (17), 183, 56);
-            Add_Goto (Table.States (17), 187, 57);
-            Add_Goto (Table.States (17), 194, 59);
-            Add_Goto (Table.States (17), 207, 61);
-            Add_Goto (Table.States (17), 208, 62);
-            Add_Goto (Table.States (17), 210, 63);
-            Add_Goto (Table.States (17), 211, 64);
-            Add_Goto (Table.States (17), 214, 65);
-            Add_Goto (Table.States (17), 215, 66);
-            Add_Goto (Table.States (17), 216, 67);
-            Add_Goto (Table.States (17), 217, 68);
-            Add_Goto (Table.States (17), 220, 70);
-            Add_Goto (Table.States (17), 224, 72);
-            Add_Goto (Table.States (17), 244, 75);
-            Add_Goto (Table.States (17), 245, 76);
-            Add_Goto (Table.States (17), 246, 77);
-            Add_Goto (Table.States (17), 247, 78);
-            Add_Goto (Table.States (17), 248, 79);
-            Add_Goto (Table.States (17), 249, 80);
-            Add_Goto (Table.States (17), 250, 81);
-            Add_Goto (Table.States (17), 251, 82);
-            Add_Goto (Table.States (17), 252, 83);
-            Add_Goto (Table.States (17), 260, 85);
-            Add_Goto (Table.States (17), 261, 86);
-            Add_Goto (Table.States (17), 263, 88);
-            Add_Goto (Table.States (17), 264, 89);
-            Add_Goto (Table.States (17), 265, 90);
-            Add_Goto (Table.States (17), 266, 91);
-            Add_Goto (Table.States (17), 272, 92);
-            Add_Goto (Table.States (17), 282, 95);
-            Add_Goto (Table.States (17), 290, 96);
-            Add_Goto (Table.States (17), 305, 103);
-            Add_Goto (Table.States (17), 306, 104);
-            Add_Goto (Table.States (17), 308, 106);
-            Add_Goto (Table.States (17), 309, 107);
-            Add_Goto (Table.States (17), 310, 108);
-            Add_Goto (Table.States (17), 312, 109);
-            Add_Goto (Table.States (17), 314, 110);
-            Add_Goto (Table.States (17), 317, 112);
-            Add_Goto (Table.States (17), 318, 113);
-            Add_Goto (Table.States (17), 320, 114);
-            Add_Goto (Table.States (17), 326, 116);
-            Add_Goto (Table.States (17), 332, 117);
-            Table.States (17).Kernel := To_Vector (((143, 49, 3, False), (333, 
49, 3, False)));
-            Table.States (17).Minimal_Complete_Actions := To_Vector (((Reduce, 
247, 0), (Shift, 74, 185)));
+            Add_Goto (Table.States (17), 115, 36);
+            Add_Goto (Table.States (17), 124, 38);
+            Add_Goto (Table.States (17), 130, 41);
+            Add_Goto (Table.States (17), 137, 46);
+            Add_Goto (Table.States (17), 138, 47);
+            Add_Goto (Table.States (17), 160, 188);
+            Add_Goto (Table.States (17), 182, 55);
+            Add_Goto (Table.States (17), 185, 56);
+            Add_Goto (Table.States (17), 189, 57);
+            Add_Goto (Table.States (17), 196, 59);
+            Add_Goto (Table.States (17), 209, 61);
+            Add_Goto (Table.States (17), 210, 62);
+            Add_Goto (Table.States (17), 212, 63);
+            Add_Goto (Table.States (17), 213, 64);
+            Add_Goto (Table.States (17), 216, 65);
+            Add_Goto (Table.States (17), 217, 66);
+            Add_Goto (Table.States (17), 218, 67);
+            Add_Goto (Table.States (17), 219, 68);
+            Add_Goto (Table.States (17), 222, 70);
+            Add_Goto (Table.States (17), 226, 72);
+            Add_Goto (Table.States (17), 246, 75);
+            Add_Goto (Table.States (17), 247, 76);
+            Add_Goto (Table.States (17), 248, 77);
+            Add_Goto (Table.States (17), 249, 78);
+            Add_Goto (Table.States (17), 250, 79);
+            Add_Goto (Table.States (17), 251, 80);
+            Add_Goto (Table.States (17), 252, 81);
+            Add_Goto (Table.States (17), 253, 82);
+            Add_Goto (Table.States (17), 254, 83);
+            Add_Goto (Table.States (17), 262, 85);
+            Add_Goto (Table.States (17), 263, 86);
+            Add_Goto (Table.States (17), 265, 88);
+            Add_Goto (Table.States (17), 266, 89);
+            Add_Goto (Table.States (17), 267, 90);
+            Add_Goto (Table.States (17), 268, 91);
+            Add_Goto (Table.States (17), 274, 92);
+            Add_Goto (Table.States (17), 284, 95);
+            Add_Goto (Table.States (17), 292, 96);
+            Add_Goto (Table.States (17), 307, 103);
+            Add_Goto (Table.States (17), 308, 104);
+            Add_Goto (Table.States (17), 310, 106);
+            Add_Goto (Table.States (17), 311, 107);
+            Add_Goto (Table.States (17), 312, 108);
+            Add_Goto (Table.States (17), 314, 109);
+            Add_Goto (Table.States (17), 316, 110);
+            Add_Goto (Table.States (17), 319, 112);
+            Add_Goto (Table.States (17), 320, 113);
+            Add_Goto (Table.States (17), 322, 114);
+            Add_Goto (Table.States (17), 328, 116);
+            Add_Goto (Table.States (17), 334, 117);
+            Table.States (17).Kernel := To_Vector ((((145, 2),  49,  3, 
(2147483647, 0),  0), ((335, 2),  49,  3,
+            (2147483647, 0),  0)));
+            Table.States (17).Minimal_Complete_Actions := To_Vector (((Reduce, 
(249, 2),  0), (Shift, (335, 2),  74,
+            186)));
             Table.States (18).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (18), 79, 31);
-            Add_Action (Table.States (18), 105, 120);
-            Add_Action (Table.States (18), 106, 34);
-            Add_Action (Table.States (18), 107, 35);
+            Add_Action (Table.States (18), 81, (242, 8), 31);
+            Add_Action (Table.States (18), 107, (242, 5), 120);
+            Add_Action (Table.States (18), 108, (242, 7), 34);
+            Add_Action (Table.States (18), 109, (242, 6), 35);
             Table.States (18).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (18), 129, 42);
-            Add_Goto (Table.States (18), 240, 188);
-            Add_Goto (Table.States (18), 273, 93);
-            Add_Goto (Table.States (18), 294, 98);
-            Table.States (18).Kernel := To_Vector ((0 => (263, 50, 1, False)));
-            Table.States (18).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
+            Add_Goto (Table.States (18), 131, 42);
+            Add_Goto (Table.States (18), 242, 189);
+            Add_Goto (Table.States (18), 275, 93);
+            Add_Goto (Table.States (18), 296, 98);
+            Table.States (18).Kernel := To_Vector ((0 => ((265, 0),  50,  1, 
(2147483647, 0),  0)));
+            Table.States (18).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
             Table.States (19).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (19), 14, 189);
-            Add_Action (Table.States (19), 69, 190);
-            Add_Action (Table.States (19), 105, 191);
-            Table.States (19).Kernel := To_Vector (((265, 51, 5, False), (266, 
51, 5, False), (272, 51, 8, False),
-            (272, 51, 5, False), (305, 51, 7, False), (305, 51, 4, False)));
-            Table.States (19).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 191)));
+            Add_Action (Table.States (19), 14, (267, 0), 190);
+            Add_Action (Table.States (19), 69, (274, 0), 191);
+            Add_Action (Table.States (19), 107, (307, 0), 192);
+            Table.States (19).Kernel := To_Vector ((((267, 0),  51,  5, 
(2147483647, 0),  0), ((268, 0),  51,  5,
+            (2147483647, 0),  0), ((274, 0),  51,  8, (2147483647, 0),  0), 
((274, 1),  51,  5, (2147483647, 0),  0),
+            ((307, 0),  51,  7, (2147483647, 0),  0), ((307, 1),  51,  4, 
(2147483647, 0),  0)));
+            Table.States (19).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (307, 0),  107, 192)));
             Table.States (20).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (20), 79, 31);
-            Add_Action (Table.States (20), 97, 192);
-            Add_Action (Table.States (20), 105, 120);
-            Add_Action (Table.States (20), 106, 34);
-            Add_Action (Table.States (20), 107, 35);
+            Add_Action (Table.States (20), 81, (242, 8), 31);
+            Add_Action (Table.States (20), 99, (279, 2), 193);
+            Add_Action (Table.States (20), 107, (242, 5), 120);
+            Add_Action (Table.States (20), 108, (242, 7), 34);
+            Add_Action (Table.States (20), 109, (242, 6), 35);
             Table.States (20).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (20), 129, 42);
-            Add_Goto (Table.States (20), 240, 193);
-            Add_Goto (Table.States (20), 273, 93);
-            Add_Goto (Table.States (20), 294, 98);
-            Table.States (20).Kernel := To_Vector (((277, 52, 3, False), (277, 
52, 2, False), (277, 52, 1, False)));
-            Table.States (20).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 192)));
+            Add_Goto (Table.States (20), 131, 42);
+            Add_Goto (Table.States (20), 242, 194);
+            Add_Goto (Table.States (20), 275, 93);
+            Add_Goto (Table.States (20), 296, 98);
+            Table.States (20).Kernel := To_Vector ((((279, 0),  52,  3, 
(2147483647, 0),  0), ((279, 1),  52,  2,
+            (2147483647, 0),  0), ((279, 2),  52,  1, (2147483647, 0),  0)));
+            Table.States (20).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (279, 2),  99, 193)));
             Table.States (21).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (21), 79, 31);
-            Add_Action (Table.States (21), 105, 120);
-            Add_Action (Table.States (21), 106, 34);
-            Add_Action (Table.States (21), 107, 35);
+            Add_Action (Table.States (21), 81, (242, 8), 31);
+            Add_Action (Table.States (21), 107, (242, 5), 120);
+            Add_Action (Table.States (21), 108, (242, 7), 34);
+            Add_Action (Table.States (21), 109, (242, 6), 35);
             Table.States (21).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (21), 129, 42);
-            Add_Goto (Table.States (21), 240, 194);
-            Add_Goto (Table.States (21), 273, 93);
-            Add_Goto (Table.States (21), 294, 98);
-            Table.States (21).Kernel := To_Vector (((291, 57, 4, False), (291, 
57, 2, False)));
-            Table.States (21).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (22).Action_List.Set_Capacity (15);
-            Add_Action (Table.States (22), 3, 122);
-            Add_Action (Table.States (22), 21, Reduce, (196, 1), 0, null, 
null);
-            Add_Action (Table.States (22), 39, 123);
-            Add_Action (Table.States (22), 40, 124);
-            Add_Action (Table.States (22), 41, 125);
-            Add_Action (Table.States (22), 52, 126);
-            Add_Action (Table.States (22), 76, 127);
-            Add_Action (Table.States (22), 79, 31);
-            Add_Action (Table.States (22), 95, 128);
-            Add_Action (Table.States (22), 96, 129);
-            Add_Action (Table.States (22), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (22), 104, 130);
-            Add_Action (Table.States (22), 105, 195);
-            Add_Action (Table.States (22), 106, 34);
-            Add_Action (Table.States (22), 107, 35);
+            Add_Goto (Table.States (21), 131, 42);
+            Add_Goto (Table.States (21), 242, 195);
+            Add_Goto (Table.States (21), 275, 93);
+            Add_Goto (Table.States (21), 296, 98);
+            Table.States (21).Kernel := To_Vector ((((293, 0),  57,  4, 
(2147483647, 0),  0), ((293, 1),  57,  2,
+            (2147483647, 0),  0)));
+            Table.States (21).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (22).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (22), 3, (200, 2), 122);
+            Add_Action (Table.States (22), 21, Reduce, (198, 1),  0, null, 
null);
+            Add_Action (Table.States (22), 39, (261, 4), 123);
+            Add_Action (Table.States (22), 40, (200, 3), 124);
+            Add_Action (Table.States (22), 41, (261, 1), 125);
+            Add_Action (Table.States (22), 52, (278, 0), 126);
+            Add_Action (Table.States (22), 76, (120, 0), 127);
+            Add_Action (Table.States (22), 77, (120, 5), 128);
+            Add_Action (Table.States (22), 81, (242, 8), 31);
+            Add_Action (Table.States (22), 97, (333, 1), 129);
+            Add_Action (Table.States (22), 98, (333, 0), 130);
+            Add_Action (Table.States (22), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (22), 106, (261, 0), 131);
+            Add_Action (Table.States (22), 107, (197, 0), 196);
+            Add_Action (Table.States (22), 108, (242, 7), 34);
+            Add_Action (Table.States (22), 109, (242, 6), 35);
             Table.States (22).Goto_List.Set_Capacity (22);
-            Add_Goto (Table.States (22), 118, 131);
-            Add_Goto (Table.States (22), 129, 42);
-            Add_Goto (Table.States (22), 192, 132);
-            Add_Goto (Table.States (22), 193, 196);
+            Add_Goto (Table.States (22), 120, 132);
+            Add_Goto (Table.States (22), 131, 42);
+            Add_Goto (Table.States (22), 194, 133);
             Add_Goto (Table.States (22), 195, 197);
-            Add_Goto (Table.States (22), 196, 198);
-            Add_Goto (Table.States (22), 198, 134);
-            Add_Goto (Table.States (22), 240, 135);
-            Add_Goto (Table.States (22), 259, 136);
-            Add_Goto (Table.States (22), 273, 93);
-            Add_Goto (Table.States (22), 276, 137);
-            Add_Goto (Table.States (22), 283, 138);
-            Add_Goto (Table.States (22), 284, 139);
-            Add_Goto (Table.States (22), 285, 140);
-            Add_Goto (Table.States (22), 286, 141);
-            Add_Goto (Table.States (22), 287, 142);
-            Add_Goto (Table.States (22), 288, 143);
-            Add_Goto (Table.States (22), 294, 98);
-            Add_Goto (Table.States (22), 302, 144);
-            Add_Goto (Table.States (22), 321, 145);
-            Add_Goto (Table.States (22), 322, 146);
-            Add_Goto (Table.States (22), 331, 147);
-            Table.States (22).Kernel := To_Vector (((197, 58, 4, False), (197, 
58, 4, False), (303, 58, 1, False)));
-            Table.States (22).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
+            Add_Goto (Table.States (22), 197, 198);
+            Add_Goto (Table.States (22), 198, 199);
+            Add_Goto (Table.States (22), 200, 135);
+            Add_Goto (Table.States (22), 242, 136);
+            Add_Goto (Table.States (22), 261, 137);
+            Add_Goto (Table.States (22), 275, 93);
+            Add_Goto (Table.States (22), 278, 138);
+            Add_Goto (Table.States (22), 285, 139);
+            Add_Goto (Table.States (22), 286, 140);
+            Add_Goto (Table.States (22), 287, 141);
+            Add_Goto (Table.States (22), 288, 142);
+            Add_Goto (Table.States (22), 289, 143);
+            Add_Goto (Table.States (22), 290, 144);
+            Add_Goto (Table.States (22), 296, 98);
+            Add_Goto (Table.States (22), 304, 145);
+            Add_Goto (Table.States (22), 323, 146);
+            Add_Goto (Table.States (22), 324, 147);
+            Add_Goto (Table.States (22), 333, 148);
+            Table.States (22).Kernel := To_Vector ((((199, 0),  58,  4, 
(2147483647, 0),  0), ((199, 1),  58,  4,
+            (2147483647, 0),  0), ((305, 0),  58,  1, (2147483647, 0),  0)));
+            Table.States (22).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
             Table.States (23).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (23), 76, 199);
-            Table.States (23).Kernel := To_Vector ((0 => (316, 60, 9, False)));
-            Table.States (23).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 76, 199)));
+            Add_Action (Table.States (23), 76, (318, 0), 200);
+            Table.States (23).Kernel := To_Vector ((0 => ((318, 0),  60,  9, 
(2147483647, 0),  0)));
+            Table.States (23).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (318, 0),  76, 200)));
             Table.States (24).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (24), 4, 1);
-            Add_Action (Table.States (24), 18, 4);
-            Add_Action (Table.States (24), 22, Reduce, (298, 1), 0, null, 
null);
-            Add_Action (Table.States (24), 24, Reduce, (298, 1), 0, null, 
null);
-            Add_Action (Table.States (24), 67, 200);
-            Add_Action (Table.States (24), 72, 201);
-            Add_Action (Table.States (24), 79, 31);
-            Add_Action (Table.States (24), 105, 120);
-            Add_Action (Table.States (24), 106, 34);
-            Add_Action (Table.States (24), 107, 35);
+            Add_Action (Table.States (24), 4, (116, 0), 1);
+            Add_Action (Table.States (24), 18, (164, 0), 4);
+            Add_Action (Table.States (24), 22, Reduce, (300, 1),  0, null, 
null);
+            Add_Action (Table.States (24), 24, Reduce, (300, 1),  0, null, 
null);
+            Add_Action (Table.States (24), 67, (298, 4), 201);
+            Add_Action (Table.States (24), 72, (298, 0), 202);
+            Add_Action (Table.States (24), 81, (242, 8), 31);
+            Add_Action (Table.States (24), 107, (242, 5), 120);
+            Add_Action (Table.States (24), 108, (242, 7), 34);
+            Add_Action (Table.States (24), 109, (242, 6), 35);
             Table.States (24).Goto_List.Set_Capacity (13);
-            Add_Goto (Table.States (24), 114, 202);
-            Add_Goto (Table.States (24), 129, 42);
-            Add_Goto (Table.States (24), 161, 203);
-            Add_Goto (Table.States (24), 162, 204);
-            Add_Goto (Table.States (24), 179, 205);
-            Add_Goto (Table.States (24), 240, 206);
-            Add_Goto (Table.States (24), 262, 207);
-            Add_Goto (Table.States (24), 273, 93);
-            Add_Goto (Table.States (24), 294, 98);
-            Add_Goto (Table.States (24), 296, 208);
-            Add_Goto (Table.States (24), 297, 209);
-            Add_Goto (Table.States (24), 298, 210);
-            Add_Goto (Table.States (24), 325, 211);
-            Table.States (24).Kernel := To_Vector (((127, 61, 6, False), (153, 
61, 5, False), (295, 61, 4, False),
-            (295, 61, 3, False), (324, 61, 7, False)));
-            Table.States (24).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 298, 0)));
+            Add_Goto (Table.States (24), 116, 203);
+            Add_Goto (Table.States (24), 131, 42);
+            Add_Goto (Table.States (24), 163, 204);
+            Add_Goto (Table.States (24), 164, 205);
+            Add_Goto (Table.States (24), 181, 206);
+            Add_Goto (Table.States (24), 242, 207);
+            Add_Goto (Table.States (24), 264, 208);
+            Add_Goto (Table.States (24), 275, 93);
+            Add_Goto (Table.States (24), 296, 98);
+            Add_Goto (Table.States (24), 298, 209);
+            Add_Goto (Table.States (24), 299, 210);
+            Add_Goto (Table.States (24), 300, 211);
+            Add_Goto (Table.States (24), 327, 212);
+            Table.States (24).Kernel := To_Vector ((((129, 0),  61,  6, 
(2147483647, 0),  0), ((155, 0),  61,  5,
+            (2147483647, 0),  0), ((297, 0),  61,  4, (2147483647, 0),  0), 
((297, 1),  61,  3, (2147483647, 0),  0),
+            ((326, 0),  61,  7, (2147483647, 0),  0)));
+            Table.States (24).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (300, 1),  0)));
             Table.States (25).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (25), 105, 212);
-            Table.States (25).Kernel := To_Vector ((0 => (314, 63, 4, False)));
-            Table.States (25).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 212)));
+            Add_Action (Table.States (25), 107, (316, 0), 213);
+            Table.States (25).Kernel := To_Vector ((0 => ((316, 0),  63,  4, 
(2147483647, 0),  0)));
+            Table.States (25).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (316, 0),  107, 213)));
             Table.States (26).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (26), 14, 213);
-            Add_Action (Table.States (26), 69, 214);
-            Add_Action (Table.States (26), 105, 215);
-            Table.States (26).Kernel := To_Vector (((306, 66, 7, False), (306, 
66, 4, False), (306, 66, 2, False),
-            (317, 66, 6, False), (318, 66, 5, False), (320, 66, 8, False), 
(320, 66, 5, False), (320, 66, 3, False)));
-            Table.States (26).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 215)));
+            Add_Action (Table.States (26), 14, (319, 0), 214);
+            Add_Action (Table.States (26), 69, (322, 0), 215);
+            Add_Action (Table.States (26), 107, (308, 0), 216);
+            Table.States (26).Kernel := To_Vector ((((308, 0),  66,  7, 
(2147483647, 0),  0), ((308, 1),  66,  4,
+            (2147483647, 0),  0), ((308, 2),  66,  2, (2147483647, 0),  0), 
((319, 0),  66,  6, (2147483647, 0),  0),
+            ((320, 0),  66,  5, (2147483647, 0),  0), ((322, 0),  66,  8, 
(2147483647, 0),  0), ((322, 1),  66,  5,
+            (2147483647, 0),  0), ((322, 2),  66,  3, (2147483647, 0),  0)));
+            Table.States (26).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (308, 0),  107, 216)));
             Table.States (27).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (27), 105, 216);
-            Table.States (27).Kernel := To_Vector (((207, 69, 4, False), (224, 
69, 4, False), (224, 69, 2, False),
-            (260, 69, 7, False), (261, 69, 4, False)));
-            Table.States (27).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 216)));
+            Add_Action (Table.States (27), 107, (209, 0), 217);
+            Table.States (27).Kernel := To_Vector ((((209, 0),  69,  4, 
(2147483647, 0),  0), ((226, 0),  69,  4,
+            (2147483647, 0),  0), ((226, 1),  69,  2, (2147483647, 0),  0), 
((262, 0),  69,  7, (2147483647, 0),  0),
+            ((263, 0),  69,  4, (2147483647, 0),  0)));
+            Table.States (27).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (209, 0),  107, 217)));
             Table.States (28).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (28), 9, 217);
-            Add_Action (Table.States (28), 69, 218);
-            Add_Action (Table.States (28), 79, 31);
-            Add_Action (Table.States (28), 105, 120);
-            Add_Action (Table.States (28), 106, 34);
-            Add_Action (Table.States (28), 107, 35);
+            Add_Action (Table.States (28), 9, (334, 0), 218);
+            Add_Action (Table.States (28), 69, (334, 1), 219);
+            Add_Action (Table.States (28), 81, (242, 8), 31);
+            Add_Action (Table.States (28), 107, (242, 5), 120);
+            Add_Action (Table.States (28), 108, (242, 7), 34);
+            Add_Action (Table.States (28), 109, (242, 6), 35);
             Table.States (28).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (28), 129, 42);
-            Add_Goto (Table.States (28), 239, 219);
-            Add_Goto (Table.States (28), 240, 220);
-            Add_Goto (Table.States (28), 273, 93);
-            Add_Goto (Table.States (28), 294, 98);
-            Table.States (28).Kernel := To_Vector (((332, 71, 4, False), (332, 
71, 3, False), (332, 71, 2, False)));
-            Table.States (28).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (29).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (29), 3, 122);
-            Add_Action (Table.States (29), 37, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (29), 39, 123);
-            Add_Action (Table.States (29), 40, 124);
-            Add_Action (Table.States (29), 41, 125);
-            Add_Action (Table.States (29), 52, 126);
-            Add_Action (Table.States (29), 76, 127);
-            Add_Action (Table.States (29), 79, 31);
-            Add_Action (Table.States (29), 95, 128);
-            Add_Action (Table.States (29), 96, 129);
-            Add_Action (Table.States (29), 104, 130);
-            Add_Action (Table.States (29), 105, 120);
-            Add_Action (Table.States (29), 106, 34);
-            Add_Action (Table.States (29), 107, 35);
+            Add_Goto (Table.States (28), 131, 42);
+            Add_Goto (Table.States (28), 241, 220);
+            Add_Goto (Table.States (28), 242, 221);
+            Add_Goto (Table.States (28), 275, 93);
+            Add_Goto (Table.States (28), 296, 98);
+            Table.States (28).Kernel := To_Vector ((((334, 0),  71,  4, 
(2147483647, 0),  0), ((334, 1),  71,  3,
+            (2147483647, 0),  0), ((334, 2),  71,  2, (2147483647, 0),  0)));
+            Table.States (28).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (29).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (29), 3, (200, 2), 122);
+            Add_Action (Table.States (29), 37, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (29), 39, (261, 4), 123);
+            Add_Action (Table.States (29), 40, (200, 3), 124);
+            Add_Action (Table.States (29), 41, (261, 1), 125);
+            Add_Action (Table.States (29), 52, (278, 0), 126);
+            Add_Action (Table.States (29), 76, (120, 0), 127);
+            Add_Action (Table.States (29), 77, (120, 5), 128);
+            Add_Action (Table.States (29), 81, (242, 8), 31);
+            Add_Action (Table.States (29), 97, (333, 1), 129);
+            Add_Action (Table.States (29), 98, (333, 0), 130);
+            Add_Action (Table.States (29), 106, (261, 0), 131);
+            Add_Action (Table.States (29), 107, (242, 5), 120);
+            Add_Action (Table.States (29), 108, (242, 7), 34);
+            Add_Action (Table.States (29), 109, (242, 6), 35);
             Table.States (29).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (29), 118, 131);
-            Add_Goto (Table.States (29), 129, 42);
-            Add_Goto (Table.States (29), 192, 132);
-            Add_Goto (Table.States (29), 193, 221);
-            Add_Goto (Table.States (29), 198, 134);
-            Add_Goto (Table.States (29), 240, 135);
-            Add_Goto (Table.States (29), 259, 136);
-            Add_Goto (Table.States (29), 273, 93);
-            Add_Goto (Table.States (29), 276, 137);
-            Add_Goto (Table.States (29), 283, 138);
-            Add_Goto (Table.States (29), 284, 139);
-            Add_Goto (Table.States (29), 285, 140);
-            Add_Goto (Table.States (29), 286, 141);
-            Add_Goto (Table.States (29), 287, 142);
-            Add_Goto (Table.States (29), 288, 143);
-            Add_Goto (Table.States (29), 294, 98);
-            Add_Goto (Table.States (29), 302, 144);
-            Add_Goto (Table.States (29), 321, 145);
-            Add_Goto (Table.States (29), 322, 146);
-            Add_Goto (Table.States (29), 331, 147);
-            Table.States (29).Kernel := To_Vector ((0 => (230, 73, 0, False)));
-            Table.States (29).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
+            Add_Goto (Table.States (29), 120, 132);
+            Add_Goto (Table.States (29), 131, 42);
+            Add_Goto (Table.States (29), 194, 133);
+            Add_Goto (Table.States (29), 195, 222);
+            Add_Goto (Table.States (29), 200, 135);
+            Add_Goto (Table.States (29), 242, 136);
+            Add_Goto (Table.States (29), 261, 137);
+            Add_Goto (Table.States (29), 275, 93);
+            Add_Goto (Table.States (29), 278, 138);
+            Add_Goto (Table.States (29), 285, 139);
+            Add_Goto (Table.States (29), 286, 140);
+            Add_Goto (Table.States (29), 287, 141);
+            Add_Goto (Table.States (29), 288, 142);
+            Add_Goto (Table.States (29), 289, 143);
+            Add_Goto (Table.States (29), 290, 144);
+            Add_Goto (Table.States (29), 296, 98);
+            Add_Goto (Table.States (29), 304, 145);
+            Add_Goto (Table.States (29), 323, 146);
+            Add_Goto (Table.States (29), 324, 147);
+            Add_Goto (Table.States (29), 333, 148);
+            Table.States (29).Kernel := To_Vector ((0 => ((232, 0),  73,  0, 
(195, 1),  0)));
+            Table.States (29).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
             Table.States (30).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (30), 79, 31);
-            Add_Action (Table.States (30), 105, 120);
-            Add_Action (Table.States (30), 106, 34);
-            Add_Action (Table.States (30), 107, 35);
+            Add_Action (Table.States (30), 81, (242, 8), 31);
+            Add_Action (Table.States (30), 107, (242, 5), 120);
+            Add_Action (Table.States (30), 108, (242, 7), 34);
+            Add_Action (Table.States (30), 109, (242, 6), 35);
             Table.States (30).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (30), 129, 42);
-            Add_Goto (Table.States (30), 239, 222);
-            Add_Goto (Table.States (30), 240, 220);
-            Add_Goto (Table.States (30), 273, 93);
-            Add_Goto (Table.States (30), 294, 98);
-            Table.States (30).Kernel := To_Vector ((0 => (333, 74, 2, False)));
-            Table.States (30).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (31).Action_List.Set_Capacity (64);
+            Add_Goto (Table.States (30), 131, 42);
+            Add_Goto (Table.States (30), 241, 223);
+            Add_Goto (Table.States (30), 242, 221);
+            Add_Goto (Table.States (30), 275, 93);
+            Add_Goto (Table.States (30), 296, 98);
+            Table.States (30).Kernel := To_Vector ((0 => ((335, 3),  74,  2, 
(2147483647, 0),  0)));
+            Table.States (30).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (31).Action_List.Set_Capacity (65);
             Add_Action (Table.States (31), (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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (240, 8), 1, null, null);
-            Table.States (31).Kernel := To_Vector ((0 => (240, 79, 0, False)));
-            Table.States (31).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 1)));
+            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (242, 8),  1, null,
+            null);
+            Table.States (31).Kernel := To_Vector ((0 => ((242, 8),  81,  0, 
(242, 8),  1)));
+            Table.States (31).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (242, 8),  1)));
             Table.States (32).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (32), 105, 223);
-            Table.States (32).Kernel := To_Vector ((0 => (218, 94, 2, False)));
-            Table.States (32).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 223)));
+            Add_Action (Table.States (32), 107, (220, 0), 224);
+            Table.States (32).Kernel := To_Vector ((0 => ((220, 0),  96,  2, 
(2147483647, 0),  0)));
+            Table.States (32).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (220, 0),  107, 224)));
             Table.States (33).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (33), 76, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (33), 82, 224);
-            Add_Conflict (Table.States (33), 82, (220, 1), 1, 
identifier_list_1'Access, null);
-            Add_Action (Table.States (33), 83, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (33), 84, Reduce, (220, 1), 1, 
identifier_list_1'Access, null);
-            Add_Action (Table.States (33), 85, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (33), 97, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (33), 102, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (33), 103, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Table.States (33).Kernel := To_Vector (((132, 105, 1, False), 
(220, 105, 0, False), (240, 105, 0, False),
-            (246, 105, 5, False), (246, 105, 6, False), (246, 105, 5, False)));
-            Table.States (33).Minimal_Complete_Actions := To_Vector (((Reduce, 
220, 1), (Reduce, 240, 1)));
-            Table.States (34).Action_List.Set_Capacity (63);
+            Add_Action (Table.States (33), 76, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (33), 84, (134, 0), 225);
+            Add_Conflict (Table.States (33), 84, (222, 1),  1, 
identifier_list_1'Access, null);
+            Add_Action (Table.States (33), 85, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (33), 86, Reduce, (222, 1),  1, 
identifier_list_1'Access, null);
+            Add_Action (Table.States (33), 87, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (33), 99, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (33), 104, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (33), 105, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Table.States (33).Kernel := To_Vector ((((134, 0),  107,  1, 
(2147483647, 0),  0), ((222, 1),  107,  0,
+            (222, 1),  1), ((242, 5),  107,  0, (242, 5),  1), ((248, 0),  
107,  5, (2147483647, 0),  0), ((248, 1),
+            107,  6, (2147483647, 0),  0), ((248, 2),  107,  5, (2147483647, 
0),  0)));
+            Table.States (33).Minimal_Complete_Actions := To_Vector (((Shift, 
(134, 0),  84, 225), (Reduce, (222, 1),
+            1), (Reduce, (242, 5),  1)));
+            Table.States (34).Action_List.Set_Capacity (64);
             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, 73, 74, 75, 
76, 77, 78, 79, 80, 83, 84, 85, 86, 87, 88,
-            89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 
106, 107), (240, 7), 1, null,
+            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 73, 74, 75, 
76, 78, 79, 80, 81, 82, 85, 86, 87, 88, 89,
+            90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 
107, 108, 109), (242, 7),  1, null,
             name_7_check'Access);
-            Table.States (34).Kernel := To_Vector ((0 => (240, 106, 0, 
False)));
-            Table.States (34).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 1)));
-            Table.States (35).Action_List.Set_Capacity (64);
+            Table.States (34).Kernel := To_Vector ((0 => ((242, 7),  108,  0, 
(242, 7),  1)));
+            Table.States (34).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (242, 7),  1)));
+            Table.States (35).Action_List.Set_Capacity (65);
             Add_Action (Table.States (35), (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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (240, 6), 1, null, null);
-            Table.States (35).Kernel := To_Vector ((0 => (240, 107, 0, 
False)));
-            Table.States (35).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 1)));
+            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (242, 6),  1, null,
+            null);
+            Table.States (35).Kernel := To_Vector ((0 => ((242, 6),  109,  0, 
(242, 6),  1)));
+            Table.States (35).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (242, 6),  1)));
             Table.States (36).Action_List.Set_Capacity (41);
             Add_Action (Table.States (36), (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, 
79, 94, 105, 106, 107, 108), (158, 0), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (160, 0),  1,
             null, null);
-            Table.States (36).Kernel := To_Vector ((0 => (158, 113, 0, 
False)));
-            Table.States (36).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 1)));
+            Table.States (36).Kernel := To_Vector ((0 => ((160, 0),  115,  0, 
(160, 0),  1)));
+            Table.States (36).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (160, 0),  1)));
             Table.States (37).Action_List.Set_Capacity (47);
             Add_Action (Table.States (37), (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, 79, 94, 105, 106,
-            107, 108), (152, 5), 1, null, null);
-            Table.States (37).Kernel := To_Vector ((0 => (152, 114, 0, 
False)));
-            Table.States (37).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 152, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (154, 5),  1, null, null);
+            Table.States (37).Kernel := To_Vector ((0 => ((154, 5),  116,  0, 
(154, 5),  1)));
+            Table.States (37).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (154, 5),  1)));
             Table.States (38).Action_List.Set_Capacity (41);
             Add_Action (Table.States (38), (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, 
79, 94, 105, 106, 107, 108), (158, 1), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (160, 1),  1,
             null, null);
-            Table.States (38).Kernel := To_Vector ((0 => (158, 122, 0, 
False)));
-            Table.States (38).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 1)));
+            Table.States (38).Kernel := To_Vector ((0 => ((160, 1),  124,  0, 
(160, 1),  1)));
+            Table.States (38).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (160, 1),  1)));
             Table.States (39).Action_List.Set_Capacity (47);
             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, 79, 94, 105, 106,
-            107, 108), (304, 1), 1, null, null);
-            Table.States (39).Kernel := To_Vector ((0 => (304, 124, 0, 
False)));
-            Table.States (39).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 304, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (306, 1),  1, null, null);
+            Table.States (39).Kernel := To_Vector ((0 => ((306, 1),  126,  0, 
(306, 1),  1)));
+            Table.States (39).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (306, 1),  1)));
             Table.States (40).Action_List.Set_Capacity (47);
             Add_Action (Table.States (40), (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, 79, 94, 105, 106,
-            107, 108), (299, 3), 1, null, null);
-            Table.States (40).Kernel := To_Vector ((0 => (299, 127, 0, 
False)));
-            Table.States (40).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 299, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (301, 3),  1, null, null);
+            Table.States (40).Kernel := To_Vector ((0 => ((301, 3),  129,  0, 
(301, 3),  1)));
+            Table.States (40).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (301, 3),  1)));
             Table.States (41).Action_List.Set_Capacity (42);
             Add_Action (Table.States (41), (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, 79, 94, 105, 106, 107, 108), (122, 3),
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 72, 73, 
74, 81, 96, 107, 108, 109, 110), (124, 3),
             1, null, null);
-            Table.States (41).Kernel := To_Vector ((0 => (122, 128, 0, 
False)));
-            Table.States (41).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 1)));
-            Table.States (42).Action_List.Set_Capacity (63);
+            Table.States (41).Kernel := To_Vector ((0 => ((124, 3),  130,  0, 
(124, 3),  1)));
+            Table.States (41).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (124, 3),  1)));
+            Table.States (42).Action_List.Set_Capacity (64);
             Add_Action (Table.States (42), (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, 73, 74, 75, 
76, 77, 78, 79, 80, 83, 84, 85, 86, 87, 88,
-            89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 
106, 107), (240, 3), 1, null, null);
-            Table.States (42).Kernel := To_Vector ((0 => (240, 129, 0, True)));
-            Table.States (42).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 1)));
-            Table.States (42).Minimal_Complete_Actions_Recursive := True;
+            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 73, 74, 75, 
76, 78, 79, 80, 81, 82, 85, 86, 87, 88, 89,
+            90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 
107, 108, 109), (242, 3),  1, null, null);
+            Table.States (42).Kernel := To_Vector ((0 => ((242, 3),  131,  0, 
(242, 3),  1)));
+            Table.States (42).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (242, 3),  1)));
             Table.States (43).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (43), (13, 17, 28, 37, 73), (133, 0), 1, 
null, block_label_opt_0_check'Access);
-            Table.States (43).Kernel := To_Vector ((0 => (133, 132, 0, 
False)));
-            Table.States (43).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 133, 1)));
+            Add_Action (Table.States (43), (13, 17, 28, 37, 73), (135, 0),  1, 
null, block_label_opt_0_check'Access);
+            Table.States (43).Kernel := To_Vector ((0 => ((135, 0),  134,  0, 
(135, 0),  1)));
+            Table.States (43).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (135, 0),  1)));
             Table.States (44).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (44), 13, 225);
-            Add_Action (Table.States (44), 17, 226);
-            Add_Action (Table.States (44), 28, 227);
-            Add_Action (Table.States (44), 37, 228);
-            Add_Action (Table.States (44), 73, 29);
+            Add_Action (Table.States (44), 13, (136, 1), 226);
+            Add_Action (Table.States (44), 17, (136, 0), 227);
+            Add_Action (Table.States (44), 28, (232, 1), 228);
+            Add_Action (Table.States (44), 37, (235, 1), 229);
+            Add_Action (Table.States (44), 73, (232, 0), 29);
             Table.States (44).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (44), 230, 229);
-            Table.States (44).Kernel := To_Vector (((134, 133, 4, False), 
(134, 133, 3, False), (233, 133, 5, False),
-            (233, 133, 4, False)));
-            Table.States (44).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 225)));
+            Add_Goto (Table.States (44), 232, 230);
+            Table.States (44).Kernel := To_Vector ((((136, 0),  135,  4, 
(2147483647, 0),  0), ((136, 1),  135,  3,
+            (2147483647, 0),  0), ((235, 0),  135,  5, (2147483647, 0),  0), 
((235, 1),  135,  4, (2147483647, 0),
+            0)));
+            Table.States (44).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (136, 1),  13, 226)));
             Table.States (45).Action_List.Set_Capacity (47);
             Add_Action (Table.States (45), (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, 79, 94, 105, 106,
-            107, 108), (152, 3), 1, null, null);
-            Table.States (45).Kernel := To_Vector ((0 => (152, 134, 0, 
False)));
-            Table.States (45).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 152, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (154, 3),  1, null, null);
+            Table.States (45).Kernel := To_Vector ((0 => ((154, 3),  136,  0, 
(154, 3),  1)));
+            Table.States (45).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (154, 3),  1)));
             Table.States (46).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (158, 2), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (160, 2),  1,
             null, null);
-            Table.States (46).Kernel := To_Vector ((0 => (158, 135, 0, 
False)));
-            Table.States (46).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 1)));
+            Table.States (46).Kernel := To_Vector ((0 => ((160, 2),  137,  0, 
(160, 2),  1)));
+            Table.States (46).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (160, 2),  1)));
+         end Subr_1;
+         procedure Subr_2
+         is begin
             Table.States (47).Action_List.Set_Capacity (41);
             Add_Action (Table.States (47), (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, 
79, 94, 105, 106, 107, 108), (135, 1), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (137, 1),  1,
             null, null);
-            Table.States (47).Kernel := To_Vector ((0 => (135, 136, 0, 
False)));
-            Table.States (47).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 135, 1)));
+            Table.States (47).Kernel := To_Vector ((0 => ((137, 1),  138,  0, 
(137, 1),  1)));
+            Table.States (47).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (137, 1),  1)));
             Table.States (48).Action_List.Set_Capacity (47);
             Add_Action (Table.States (48), (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, 79, 94, 105, 106,
-            107, 108), (152, 1), 1, null, null);
-            Table.States (48).Kernel := To_Vector ((0 => (152, 140, 0, 
False)));
-            Table.States (48).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 152, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (154, 1),  1, null, null);
+            Table.States (48).Kernel := To_Vector ((0 => ((154, 1),  142,  0, 
(154, 1),  1)));
+            Table.States (48).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (154, 1),  1)));
             Table.States (49).Action_List.Set_Capacity (40);
             Add_Action (Table.States (49), (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, 79, 
94, 105, 106, 107, 108), (144, 1), 1,
+            48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 81, 
96, 107, 108, 109, 110), (146, 1),  1,
             compilation_unit_list_1'Access, 
compilation_unit_list_1_check'Access);
-            Table.States (49).Kernel := To_Vector ((0 => (144, 143, 0, 
False)));
-            Table.States (49).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 144, 1)));
+            Table.States (49).Kernel := To_Vector ((0 => ((146, 1),  145,  0, 
(146, 1),  1)));
+            Table.States (49).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (146, 1),  1)));
             Table.States (50).Action_List.Set_Capacity (40);
-            Add_Action (Table.States (50), 4, 1);
-            Add_Action (Table.States (50), 5, 2);
-            Add_Action (Table.States (50), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (50), 15, 3);
-            Add_Action (Table.States (50), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (50), 18, 4);
-            Add_Action (Table.States (50), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (50), 27, 5);
-            Add_Action (Table.States (50), 28, 6);
-            Add_Conflict (Table.States (50), 28, (133, 1), 0, null, null);
-            Add_Action (Table.States (50), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (50), 30, 8);
-            Add_Action (Table.States (50), 31, 9);
-            Add_Action (Table.States (50), 32, 10);
-            Add_Action (Table.States (50), 36, 11);
-            Add_Action (Table.States (50), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (50), 40, 12);
-            Add_Action (Table.States (50), 41, 13);
-            Add_Action (Table.States (50), 46, 14);
-            Add_Action (Table.States (50), 47, 15);
-            Add_Action (Table.States (50), 48, 16);
-            Add_Action (Table.States (50), 49, 17);
-            Add_Action (Table.States (50), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (50), 51, 19);
-            Add_Action (Table.States (50), 52, 20);
-            Add_Action (Table.States (50), 57, 21);
-            Add_Action (Table.States (50), 58, 22);
-            Add_Action (Table.States (50), 60, 23);
-            Add_Action (Table.States (50), 61, 24);
-            Add_Action (Table.States (50), 63, 25);
-            Add_Action (Table.States (50), 66, 26);
-            Add_Action (Table.States (50), 69, 27);
-            Add_Action (Table.States (50), 71, 28);
-            Add_Action (Table.States (50), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (50), 74, 30);
-            Add_Action (Table.States (50), 79, 31);
-            Add_Action (Table.States (50), 94, 32);
-            Add_Action (Table.States (50), 105, 33);
-            Add_Action (Table.States (50), 106, 34);
-            Add_Action (Table.States (50), 107, 35);
-            Add_Action (Table.States (50), 108, Accept_It, (109, 0), 1, null, 
null);
+            Add_Action (Table.States (50), 4, (116, 0), 1);
+            Add_Action (Table.States (50), 5, (306, 8), 2);
+            Add_Action (Table.States (50), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (50), 15, (142, 0), 3);
+            Add_Action (Table.States (50), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (50), 18, (164, 0), 4);
+            Add_Action (Table.States (50), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (50), 27, (193, 0), 5);
+            Add_Action (Table.States (50), 28, (124, 0), 6);
+            Add_Conflict (Table.States (50), 28, (135, 1),  0, null, null);
+            Add_Action (Table.States (50), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (50), 30, (213, 0), 8);
+            Add_Action (Table.States (50), 31, (306, 3), 9);
+            Add_Action (Table.States (50), 32, (225, 0), 10);
+            Add_Action (Table.States (50), 36, (335, 0), 11);
+            Add_Action (Table.States (50), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (50), 40, (249, 0), 12);
+            Add_Action (Table.States (50), 41, (306, 0), 13);
+            Add_Action (Table.States (50), 46, (249, 1), 14);
+            Add_Action (Table.States (50), 47, (216, 0), 15);
+            Add_Action (Table.States (50), 48, (260, 0), 16);
+            Add_Action (Table.States (50), 49, (145, 2), 17);
+            Add_Action (Table.States (50), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (50), 51, (267, 0), 19);
+            Add_Action (Table.States (50), 52, (279, 0), 20);
+            Add_Action (Table.States (50), 57, (293, 0), 21);
+            Add_Action (Table.States (50), 58, (199, 0), 22);
+            Add_Action (Table.States (50), 60, (318, 0), 23);
+            Add_Action (Table.States (50), 61, (129, 0), 24);
+            Add_Action (Table.States (50), 63, (316, 0), 25);
+            Add_Action (Table.States (50), 66, (308, 0), 26);
+            Add_Action (Table.States (50), 69, (209, 0), 27);
+            Add_Action (Table.States (50), 71, (334, 0), 28);
+            Add_Action (Table.States (50), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (50), 74, (335, 3), 30);
+            Add_Action (Table.States (50), 81, (242, 8), 31);
+            Add_Action (Table.States (50), 96, (220, 0), 32);
+            Add_Action (Table.States (50), 107, (134, 0), 33);
+            Add_Action (Table.States (50), 108, (242, 7), 34);
+            Add_Action (Table.States (50), 109, (242, 6), 35);
+            Add_Action (Table.States (50), 110, Accept_It, (111, 0),  1, null, 
null);
             Table.States (50).Goto_List.Set_Capacity (82);
-            Add_Goto (Table.States (50), 113, 36);
-            Add_Goto (Table.States (50), 114, 37);
-            Add_Goto (Table.States (50), 122, 38);
-            Add_Goto (Table.States (50), 124, 39);
-            Add_Goto (Table.States (50), 127, 40);
-            Add_Goto (Table.States (50), 128, 41);
-            Add_Goto (Table.States (50), 129, 42);
-            Add_Goto (Table.States (50), 132, 43);
-            Add_Goto (Table.States (50), 133, 44);
-            Add_Goto (Table.States (50), 134, 45);
-            Add_Goto (Table.States (50), 135, 46);
-            Add_Goto (Table.States (50), 136, 47);
-            Add_Goto (Table.States (50), 140, 48);
-            Add_Goto (Table.States (50), 143, 230);
-            Add_Goto (Table.States (50), 152, 51);
-            Add_Goto (Table.States (50), 153, 52);
-            Add_Goto (Table.States (50), 158, 53);
-            Add_Goto (Table.States (50), 162, 54);
-            Add_Goto (Table.States (50), 180, 55);
-            Add_Goto (Table.States (50), 183, 56);
-            Add_Goto (Table.States (50), 187, 57);
-            Add_Goto (Table.States (50), 191, 58);
-            Add_Goto (Table.States (50), 194, 59);
-            Add_Goto (Table.States (50), 197, 60);
-            Add_Goto (Table.States (50), 207, 61);
-            Add_Goto (Table.States (50), 208, 62);
-            Add_Goto (Table.States (50), 210, 63);
-            Add_Goto (Table.States (50), 211, 64);
-            Add_Goto (Table.States (50), 214, 65);
-            Add_Goto (Table.States (50), 215, 66);
-            Add_Goto (Table.States (50), 216, 67);
-            Add_Goto (Table.States (50), 217, 68);
-            Add_Goto (Table.States (50), 218, 69);
-            Add_Goto (Table.States (50), 220, 70);
-            Add_Goto (Table.States (50), 223, 71);
-            Add_Goto (Table.States (50), 224, 72);
-            Add_Goto (Table.States (50), 233, 73);
-            Add_Goto (Table.States (50), 240, 74);
-            Add_Goto (Table.States (50), 244, 75);
-            Add_Goto (Table.States (50), 245, 76);
-            Add_Goto (Table.States (50), 246, 77);
-            Add_Goto (Table.States (50), 247, 78);
-            Add_Goto (Table.States (50), 248, 79);
-            Add_Goto (Table.States (50), 249, 80);
-            Add_Goto (Table.States (50), 250, 81);
-            Add_Goto (Table.States (50), 251, 82);
-            Add_Goto (Table.States (50), 252, 83);
-            Add_Goto (Table.States (50), 258, 84);
-            Add_Goto (Table.States (50), 260, 85);
-            Add_Goto (Table.States (50), 261, 86);
-            Add_Goto (Table.States (50), 262, 87);
-            Add_Goto (Table.States (50), 263, 88);
-            Add_Goto (Table.States (50), 264, 89);
-            Add_Goto (Table.States (50), 265, 90);
-            Add_Goto (Table.States (50), 266, 91);
-            Add_Goto (Table.States (50), 272, 92);
-            Add_Goto (Table.States (50), 273, 93);
-            Add_Goto (Table.States (50), 277, 94);
-            Add_Goto (Table.States (50), 282, 95);
-            Add_Goto (Table.States (50), 290, 96);
-            Add_Goto (Table.States (50), 291, 97);
-            Add_Goto (Table.States (50), 294, 98);
-            Add_Goto (Table.States (50), 295, 99);
-            Add_Goto (Table.States (50), 299, 100);
-            Add_Goto (Table.States (50), 303, 101);
-            Add_Goto (Table.States (50), 304, 102);
-            Add_Goto (Table.States (50), 305, 103);
-            Add_Goto (Table.States (50), 306, 104);
-            Add_Goto (Table.States (50), 307, 105);
-            Add_Goto (Table.States (50), 308, 106);
-            Add_Goto (Table.States (50), 309, 107);
-            Add_Goto (Table.States (50), 310, 108);
-            Add_Goto (Table.States (50), 312, 109);
-            Add_Goto (Table.States (50), 314, 110);
-            Add_Goto (Table.States (50), 316, 111);
-            Add_Goto (Table.States (50), 317, 112);
-            Add_Goto (Table.States (50), 318, 113);
-            Add_Goto (Table.States (50), 320, 114);
-            Add_Goto (Table.States (50), 324, 115);
-            Add_Goto (Table.States (50), 326, 116);
-            Add_Goto (Table.States (50), 332, 117);
-            Add_Goto (Table.States (50), 333, 118);
-            Table.States (50).Kernel := To_Vector (((109, 144, 1, False), 
(144, 144, 2, True)));
-         end Subr_1;
-         procedure Subr_2
-         is begin
+            Add_Goto (Table.States (50), 115, 36);
+            Add_Goto (Table.States (50), 116, 37);
+            Add_Goto (Table.States (50), 124, 38);
+            Add_Goto (Table.States (50), 126, 39);
+            Add_Goto (Table.States (50), 129, 40);
+            Add_Goto (Table.States (50), 130, 41);
+            Add_Goto (Table.States (50), 131, 42);
+            Add_Goto (Table.States (50), 134, 43);
+            Add_Goto (Table.States (50), 135, 44);
+            Add_Goto (Table.States (50), 136, 45);
+            Add_Goto (Table.States (50), 137, 46);
+            Add_Goto (Table.States (50), 138, 47);
+            Add_Goto (Table.States (50), 142, 48);
+            Add_Goto (Table.States (50), 145, 231);
+            Add_Goto (Table.States (50), 154, 51);
+            Add_Goto (Table.States (50), 155, 52);
+            Add_Goto (Table.States (50), 160, 53);
+            Add_Goto (Table.States (50), 164, 54);
+            Add_Goto (Table.States (50), 182, 55);
+            Add_Goto (Table.States (50), 185, 56);
+            Add_Goto (Table.States (50), 189, 57);
+            Add_Goto (Table.States (50), 193, 58);
+            Add_Goto (Table.States (50), 196, 59);
+            Add_Goto (Table.States (50), 199, 60);
+            Add_Goto (Table.States (50), 209, 61);
+            Add_Goto (Table.States (50), 210, 62);
+            Add_Goto (Table.States (50), 212, 63);
+            Add_Goto (Table.States (50), 213, 64);
+            Add_Goto (Table.States (50), 216, 65);
+            Add_Goto (Table.States (50), 217, 66);
+            Add_Goto (Table.States (50), 218, 67);
+            Add_Goto (Table.States (50), 219, 68);
+            Add_Goto (Table.States (50), 220, 69);
+            Add_Goto (Table.States (50), 222, 70);
+            Add_Goto (Table.States (50), 225, 71);
+            Add_Goto (Table.States (50), 226, 72);
+            Add_Goto (Table.States (50), 235, 73);
+            Add_Goto (Table.States (50), 242, 74);
+            Add_Goto (Table.States (50), 246, 75);
+            Add_Goto (Table.States (50), 247, 76);
+            Add_Goto (Table.States (50), 248, 77);
+            Add_Goto (Table.States (50), 249, 78);
+            Add_Goto (Table.States (50), 250, 79);
+            Add_Goto (Table.States (50), 251, 80);
+            Add_Goto (Table.States (50), 252, 81);
+            Add_Goto (Table.States (50), 253, 82);
+            Add_Goto (Table.States (50), 254, 83);
+            Add_Goto (Table.States (50), 260, 84);
+            Add_Goto (Table.States (50), 262, 85);
+            Add_Goto (Table.States (50), 263, 86);
+            Add_Goto (Table.States (50), 264, 87);
+            Add_Goto (Table.States (50), 265, 88);
+            Add_Goto (Table.States (50), 266, 89);
+            Add_Goto (Table.States (50), 267, 90);
+            Add_Goto (Table.States (50), 268, 91);
+            Add_Goto (Table.States (50), 274, 92);
+            Add_Goto (Table.States (50), 275, 93);
+            Add_Goto (Table.States (50), 279, 94);
+            Add_Goto (Table.States (50), 284, 95);
+            Add_Goto (Table.States (50), 292, 96);
+            Add_Goto (Table.States (50), 293, 97);
+            Add_Goto (Table.States (50), 296, 98);
+            Add_Goto (Table.States (50), 297, 99);
+            Add_Goto (Table.States (50), 301, 100);
+            Add_Goto (Table.States (50), 305, 101);
+            Add_Goto (Table.States (50), 306, 102);
+            Add_Goto (Table.States (50), 307, 103);
+            Add_Goto (Table.States (50), 308, 104);
+            Add_Goto (Table.States (50), 309, 105);
+            Add_Goto (Table.States (50), 310, 106);
+            Add_Goto (Table.States (50), 311, 107);
+            Add_Goto (Table.States (50), 312, 108);
+            Add_Goto (Table.States (50), 314, 109);
+            Add_Goto (Table.States (50), 316, 110);
+            Add_Goto (Table.States (50), 318, 111);
+            Add_Goto (Table.States (50), 319, 112);
+            Add_Goto (Table.States (50), 320, 113);
+            Add_Goto (Table.States (50), 322, 114);
+            Add_Goto (Table.States (50), 326, 115);
+            Add_Goto (Table.States (50), 328, 116);
+            Add_Goto (Table.States (50), 334, 117);
+            Add_Goto (Table.States (50), 335, 118);
             Table.States (51).Action_List.Set_Capacity (47);
             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, 79, 94, 105, 106,
-            107, 108), (307, 2), 1, null, null);
-            Table.States (51).Kernel := To_Vector ((0 => (307, 152, 0, 
False)));
-            Table.States (51).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 307, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (309, 2),  1, null, null);
+            Table.States (51).Kernel := To_Vector ((0 => ((309, 2),  154,  0, 
(309, 2),  1)));
+            Table.States (51).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (309, 2),  1)));
             Table.States (52).Action_List.Set_Capacity (47);
             Add_Action (Table.States (52), (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, 79, 94, 105, 106,
-            107, 108), (299, 2), 1, null, null);
-            Table.States (52).Kernel := To_Vector ((0 => (299, 153, 0, 
False)));
-            Table.States (52).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 299, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (301, 2),  1, null, null);
+            Table.States (52).Kernel := To_Vector ((0 => ((301, 2),  155,  0, 
(301, 2),  1)));
+            Table.States (52).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (301, 2),  1)));
             Table.States (53).Action_List.Set_Capacity (40);
             Add_Action (Table.States (53), (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, 79, 
94, 105, 106, 107, 108), (143, 3), 1, null,
-            null);
-            Table.States (53).Kernel := To_Vector ((0 => (143, 158, 0, 
False)));
-            Table.States (53).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 143, 1)));
+            48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 81, 
96, 107, 108, 109, 110), (145, 3),  1,
+            null, null);
+            Table.States (53).Kernel := To_Vector ((0 => ((145, 3),  160,  0, 
(145, 3),  1)));
+            Table.States (53).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (145, 3),  1)));
             Table.States (54).Action_List.Set_Capacity (47);
             Add_Action (Table.States (54), (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, 79, 94, 105, 106,
-            107, 108), (304, 7), 1, null, null);
-            Table.States (54).Kernel := To_Vector ((0 => (304, 162, 0, 
False)));
-            Table.States (54).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 304, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (306, 7),  1, null, null);
+            Table.States (54).Kernel := To_Vector ((0 => ((306, 7),  164,  0, 
(306, 7),  1)));
+            Table.States (54).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (306, 7),  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, 73, 74, 
79, 94, 105, 106, 107, 108), (158, 3), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (160, 3),  1,
             null, null);
-            Table.States (55).Kernel := To_Vector ((0 => (158, 180, 0, 
False)));
-            Table.States (55).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 1)));
+            Table.States (55).Kernel := To_Vector ((0 => ((160, 3),  182,  0, 
(160, 3),  1)));
+            Table.States (55).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (160, 3),  1)));
             Table.States (56).Action_List.Set_Capacity (42);
             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, 72, 73, 
74, 79, 94, 105, 106, 107, 108), (122, 1),
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 72, 73, 
74, 81, 96, 107, 108, 109, 110), (124, 1),
             1, null, null);
-            Table.States (56).Kernel := To_Vector ((0 => (122, 183, 0, 
False)));
-            Table.States (56).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 1)));
+            Table.States (56).Kernel := To_Vector ((0 => ((124, 1),  185,  0, 
(124, 1),  1)));
+            Table.States (56).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (124, 1),  1)));
             Table.States (57).Action_List.Set_Capacity (41);
             Add_Action (Table.States (57), (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, 
79, 94, 105, 106, 107, 108), (158, 4), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (160, 4),  1,
             null, null);
-            Table.States (57).Kernel := To_Vector ((0 => (158, 187, 0, 
False)));
-            Table.States (57).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 1)));
+            Table.States (57).Kernel := To_Vector ((0 => ((160, 4),  189,  0, 
(160, 4),  1)));
+            Table.States (57).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (160, 4),  1)));
             Table.States (58).Action_List.Set_Capacity (47);
             Add_Action (Table.States (58), (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, 79, 94, 105, 106,
-            107, 108), (304, 2), 1, null, null);
-            Table.States (58).Kernel := To_Vector ((0 => (304, 191, 0, 
False)));
-            Table.States (58).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 304, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (306, 2),  1, null, null);
+            Table.States (58).Kernel := To_Vector ((0 => ((306, 2),  193,  0, 
(306, 2),  1)));
+            Table.States (58).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (306, 2),  1)));
             Table.States (59).Action_List.Set_Capacity (41);
             Add_Action (Table.States (59), (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, 
79, 94, 105, 106, 107, 108), (158, 5), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (160, 5),  1,
             null, null);
-            Table.States (59).Kernel := To_Vector ((0 => (158, 194, 0, 
False)));
-            Table.States (59).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 1)));
+            Table.States (59).Kernel := To_Vector ((0 => ((160, 5),  196,  0, 
(160, 5),  1)));
+            Table.States (59).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (160, 5),  1)));
             Table.States (60).Action_List.Set_Capacity (47);
             Add_Action (Table.States (60), (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, 79, 94, 105, 106,
-            107, 108), (152, 4), 1, null, null);
-            Table.States (60).Kernel := To_Vector ((0 => (152, 197, 0, 
False)));
-            Table.States (60).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 152, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (154, 4),  1, null, null);
+            Table.States (60).Kernel := To_Vector ((0 => ((154, 4),  199,  0, 
(154, 4),  1)));
+            Table.States (60).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (154, 4),  1)));
             Table.States (61).Action_List.Set_Capacity (41);
             Add_Action (Table.States (61), (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, 
79, 94, 105, 106, 107, 108), (326, 0), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (328, 0),  1,
             null, null);
-            Table.States (61).Kernel := To_Vector ((0 => (326, 207, 0, 
False)));
-            Table.States (61).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 326, 1)));
+            Table.States (61).Kernel := To_Vector ((0 => ((328, 0),  209,  0, 
(328, 0),  1)));
+            Table.States (61).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (328, 0),  1)));
             Table.States (62).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (62), (35, 74, 97), (313, 1), 1, null, 
subprogram_specification_1_check'Access);
-            Table.States (62).Kernel := To_Vector ((0 => (313, 208, 0, 
False)));
-            Table.States (62).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 313, 1)));
+            Add_Action (Table.States (62), (35, 74, 99), (315, 1),  1, null, 
subprogram_specification_1_check'Access);
+            Table.States (62).Kernel := To_Vector ((0 => ((315, 1),  210,  0, 
(315, 1),  1)));
+            Table.States (62).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (315, 1),  1)));
             Table.States (63).Action_List.Set_Capacity (41);
             Add_Action (Table.States (63), (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, 
79, 94, 105, 106, 107, 108), (158, 6), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (160, 6),  1,
             null, null);
-            Table.States (63).Kernel := To_Vector ((0 => (158, 210, 0, 
False)));
-            Table.States (63).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 1)));
+            Table.States (63).Kernel := To_Vector ((0 => ((160, 6),  212,  0, 
(160, 6),  1)));
+            Table.States (63).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (160, 6),  1)));
             Table.States (64).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (64), 29, 7);
-            Add_Action (Table.States (64), 47, 231);
-            Add_Action (Table.States (64), 50, 18);
+            Add_Action (Table.States (64), 29, (210, 0), 7);
+            Add_Action (Table.States (64), 47, (254, 0), 232);
+            Add_Action (Table.States (64), 50, (265, 0), 18);
             Table.States (64).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (64), 208, 62);
-            Add_Goto (Table.States (64), 252, 232);
-            Add_Goto (Table.States (64), 263, 88);
-            Add_Goto (Table.States (64), 313, 233);
-            Table.States (64).Kernel := To_Vector (((215, 211, 5, False), 
(217, 211, 3, False)));
-            Table.States (64).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 50, 18)));
+            Add_Goto (Table.States (64), 210, 62);
+            Add_Goto (Table.States (64), 254, 233);
+            Add_Goto (Table.States (64), 265, 88);
+            Add_Goto (Table.States (64), 315, 234);
+            Table.States (64).Kernel := To_Vector ((((217, 0),  213,  5, 
(2147483647, 0),  0), ((219, 0),  213,  3,
+            (2147483647, 0),  0)));
+            Table.States (64).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (265, 0),  50, 18)));
             Table.States (65).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (158, 7), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (160, 7),  1,
             null, null);
-            Table.States (65).Kernel := To_Vector ((0 => (158, 214, 0, 
False)));
-            Table.States (65).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 1)));
+            Table.States (65).Kernel := To_Vector ((0 => ((160, 7),  216,  0, 
(160, 7),  1)));
+            Table.States (65).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (160, 7),  1)));
             Table.States (66).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (210, 1), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (212, 1),  1,
             null, null);
-            Table.States (66).Kernel := To_Vector ((0 => (210, 215, 0, 
False)));
-            Table.States (66).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 210, 1)));
+            Table.States (66).Kernel := To_Vector ((0 => ((212, 1),  217,  0, 
(212, 1),  1)));
+            Table.States (66).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (212, 1),  1)));
             Table.States (67).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (290, 3), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (292, 3),  1,
             null, null);
-            Table.States (67).Kernel := To_Vector ((0 => (290, 216, 0, 
False)));
-            Table.States (67).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 290, 1)));
+            Table.States (67).Kernel := To_Vector ((0 => ((292, 3),  218,  0, 
(292, 3),  1)));
+            Table.States (67).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (292, 3),  1)));
             Table.States (68).Action_List.Set_Capacity (41);
             Add_Action (Table.States (68), (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, 
79, 94, 105, 106, 107, 108), (210, 0), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (212, 0),  1,
             null, null);
-            Table.States (68).Kernel := To_Vector ((0 => (210, 217, 0, 
False)));
-            Table.States (68).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 210, 1)));
+            Table.States (68).Kernel := To_Vector ((0 => ((212, 0),  219,  0, 
(212, 0),  1)));
+            Table.States (68).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (212, 0),  1)));
             Table.States (69).Action_List.Set_Capacity (47);
             Add_Action (Table.States (69), (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, 79, 94, 105, 106,
-            107, 108), (307, 0), 1, null, null);
-            Table.States (69).Kernel := To_Vector ((0 => (307, 218, 0, 
False)));
-            Table.States (69).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 307, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (309, 0),  1, null, null);
+            Table.States (69).Kernel := To_Vector ((0 => ((309, 0),  220,  0, 
(309, 0),  1)));
+            Table.States (69).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (309, 0),  1)));
             Table.States (70).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (70), 82, 234);
-            Add_Action (Table.States (70), 84, 235);
-            Table.States (70).Kernel := To_Vector (((158, 220, 4, False), 
(187, 220, 3, False), (220, 220, 2, True),
-            (245, 220, 4, False), (245, 220, 5, False), (245, 220, 11, False), 
(245, 220, 3, False), (245, 220, 4,
-            False), (245, 220, 10, False)));
-            Table.States (70).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 82, 234)));
+            Add_Action (Table.States (70), 84, (160, 9), 235);
+            Add_Action (Table.States (70), 86, (222, 0), 236);
+            Table.States (70).Kernel := To_Vector ((((160, 9),  222,  4, 
(2147483647, 0),  0), ((189, 0),  222,  3,
+            (2147483647, 0),  0), ((222, 0),  222,  2, (2147483647, 0),  0), 
((247, 0),  222,  4, (2147483647, 0),  0),
+            ((247, 1),  222,  5, (2147483647, 0),  0), ((247, 2),  222,  11, 
(2147483647, 0),  0), ((247, 3),  222,  3,
+            (2147483647, 0),  0), ((247, 4),  222,  4, (2147483647, 0),  0), 
((247, 5),  222,  10, (2147483647, 0),
+            0)));
+            Table.States (70).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (160, 9),  84, 235)));
             Table.States (71).Action_List.Set_Capacity (47);
             Add_Action (Table.States (71), (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, 79, 94, 105, 106,
-            107, 108), (152, 0), 1, null, null);
-            Table.States (71).Kernel := To_Vector ((0 => (152, 223, 0, 
False)));
-            Table.States (71).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 152, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (154, 0),  1, null, null);
+            Table.States (71).Kernel := To_Vector ((0 => ((154, 0),  225,  0, 
(154, 0),  1)));
+            Table.States (71).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (154, 0),  1)));
             Table.States (72).Action_List.Set_Capacity (41);
             Add_Action (Table.States (72), (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, 
79, 94, 105, 106, 107, 108), (326, 1), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (328, 1),  1,
             null, null);
-            Table.States (72).Kernel := To_Vector ((0 => (326, 224, 0, 
False)));
-            Table.States (72).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 326, 1)));
+            Table.States (72).Kernel := To_Vector ((0 => ((328, 1),  226,  0, 
(328, 1),  1)));
+            Table.States (72).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (328, 1),  1)));
             Table.States (73).Action_List.Set_Capacity (47);
             Add_Action (Table.States (73), (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, 79, 94, 105, 106,
-            107, 108), (152, 2), 1, null, null);
-            Table.States (73).Kernel := To_Vector ((0 => (152, 233, 0, 
False)));
-            Table.States (73).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 152, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (154, 2),  1, null, null);
+            Table.States (73).Kernel := To_Vector ((0 => ((154, 2),  235,  0, 
(154, 2),  1)));
+            Table.States (73).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (154, 2),  1)));
             Table.States (74).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (74), 76, 236);
-            Add_Action (Table.States (74), 83, 237);
-            Add_Action (Table.States (74), 85, 238);
-            Add_Action (Table.States (74), 97, 239);
-            Add_Action (Table.States (74), 102, 240);
-            Add_Action (Table.States (74), 103, 241);
+            Add_Action (Table.States (74), 76, (118, 0), 237);
+            Add_Action (Table.States (74), 85, (126, 0), 238);
+            Add_Action (Table.States (74), 87, (296, 0), 239);
+            Add_Action (Table.States (74), 99, (264, 0), 240);
+            Add_Action (Table.States (74), 104, (325, 0), 241);
+            Add_Action (Table.States (74), 105, (325, 1), 242);
             Table.States (74).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (74), 116, 242);
-            Add_Goto (Table.States (74), 323, 243);
-            Table.States (74).Kernel := To_Vector (((124, 240, 2, False), 
(129, 240, 2, True), (240, 240, 5, True),
-            (240, 240, 2, True), (262, 240, 1, False), (273, 240, 3, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True), (294, 240, 2, True)));
-            Table.States (74).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 239)));
+            Add_Goto (Table.States (74), 118, 243);
+            Add_Goto (Table.States (74), 325, 244);
+            Table.States (74).Kernel := To_Vector ((((126, 0),  242,  2, 
(2147483647, 0),  0), ((131, 0),  242,  2,
+            (2147483647, 0),  0), ((242, 0),  242,  5, (2147483647, 0),  0), 
((242, 1),  242,  2, (2147483647, 0),  0),
+            ((264, 0),  242,  1, (2147483647, 0),  0), ((275, 0),  242,  3, 
(2147483647, 0),  0), ((296, 0),  242,  2,
+            (2147483647, 0),  0), ((296, 1),  242,  2, (2147483647, 0),  0), 
((296, 2),  242,  2, (2147483647, 0),  0),
+            ((296, 3),  242,  2, (2147483647, 0),  0)));
+            Table.States (74).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (264, 0),  99, 240)));
             Table.States (75).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (158, 8), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (160, 8),  1,
             null, null);
-            Table.States (75).Kernel := To_Vector ((0 => (158, 244, 0, 
False)));
-            Table.States (75).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 1)));
+            Table.States (75).Kernel := To_Vector ((0 => ((160, 8),  246,  0, 
(160, 8),  1)));
+            Table.States (75).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (160, 8),  1)));
             Table.States (76).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (158, 10), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (160, 10),  1,
             null, null);
-            Table.States (76).Kernel := To_Vector ((0 => (158, 245, 0, 
False)));
-            Table.States (76).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 1)));
+            Table.States (76).Kernel := To_Vector ((0 => ((160, 10),  247,  0, 
(160, 10),  1)));
+            Table.States (76).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (160, 10),  1)));
             Table.States (77).Action_List.Set_Capacity (41);
             Add_Action (Table.States (77), (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, 
79, 94, 105, 106, 107, 108), (290, 0), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (292, 0),  1,
             null, null);
-            Table.States (77).Kernel := To_Vector ((0 => (290, 246, 0, 
False)));
-            Table.States (77).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 290, 1)));
+            Table.States (77).Kernel := To_Vector ((0 => ((292, 0),  248,  0, 
(292, 0),  1)));
+            Table.States (77).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (292, 0),  1)));
             Table.States (78).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (78), 25, 244);
-            Add_Action (Table.States (78), 29, 245);
-            Add_Action (Table.States (78), 50, 246);
+            Add_Action (Table.States (78), 25, (182, 0), 245);
+            Add_Action (Table.States (78), 29, (210, 0), 246);
+            Add_Action (Table.States (78), 50, (216, 1), 247);
             Table.States (78).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (78), 208, 247);
-            Add_Goto (Table.States (78), 263, 248);
-            Add_Goto (Table.States (78), 313, 249);
-            Table.States (78).Kernel := To_Vector (((113, 247, 5, False), 
(180, 247, 6, False), (180, 247, 3, False),
-            (194, 247, 7, False), (214, 247, 6, False), (214, 247, 6, False), 
(244, 247, 5, False), (308, 247, 6,
-            False), (309, 247, 5, False), (310, 247, 3, False), (312, 247, 5, 
False)));
-            Table.States (78).Minimal_Complete_Actions := To_Vector (((Shift, 
25, 244), (Shift, 50, 246)));
+            Add_Goto (Table.States (78), 210, 248);
+            Add_Goto (Table.States (78), 265, 249);
+            Add_Goto (Table.States (78), 315, 250);
+            Table.States (78).Kernel := To_Vector ((((115, 0),  249,  5, 
(2147483647, 0),  0), ((182, 0),  249,  6,
+            (2147483647, 0),  0), ((182, 1),  249,  3, (2147483647, 0),  0), 
((196, 0),  249,  7, (2147483647, 0),  0),
+            ((216, 1),  249,  6, (2147483647, 0),  0), ((216, 2),  249,  6, 
(2147483647, 0),  0), ((246, 0),  249,  5,
+            (2147483647, 0),  0), ((310, 0),  249,  6, (2147483647, 0),  0), 
((311, 0),  249,  5, (2147483647, 0),  0),
+            ((312, 0),  249,  3, (2147483647, 0),  0), ((314, 0),  249,  5, 
(2147483647, 0),  0)));
+            Table.States (78).Minimal_Complete_Actions := To_Vector (((Shift, 
(182, 0),  25, 245), (Shift, (216, 1),
+            50, 247)));
             Table.States (79).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (264, 1), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (266, 1),  1,
             null, null);
-            Table.States (79).Kernel := To_Vector ((0 => (264, 248, 0, 
False)));
-            Table.States (79).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 264, 1)));
+            Table.States (79).Kernel := To_Vector ((0 => ((266, 1),  250,  0, 
(266, 1),  1)));
+            Table.States (79).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (266, 1),  1)));
             Table.States (80).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (136, 1), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (138, 1),  1,
             null, null);
-            Table.States (80).Kernel := To_Vector ((0 => (136, 249, 0, 
False)));
-            Table.States (80).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 136, 1)));
+            Table.States (80).Kernel := To_Vector ((0 => ((138, 1),  251,  0, 
(138, 1),  1)));
+            Table.States (80).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (138, 1),  1)));
             Table.States (81).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (158, 11), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (160, 11),  1,
             null, null);
-            Table.States (81).Kernel := To_Vector ((0 => (158, 250, 0, 
False)));
-            Table.States (81).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 1)));
+            Table.States (81).Kernel := To_Vector ((0 => ((160, 11),  252,  0, 
(160, 11),  1)));
+            Table.States (81).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (160, 11),  1)));
             Table.States (82).Action_List.Set_Capacity (41);
             Add_Action (Table.States (82), (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, 
79, 94, 105, 106, 107, 108), (290, 1), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (292, 1),  1,
             null, null);
-            Table.States (82).Kernel := To_Vector ((0 => (290, 251, 0, 
False)));
-            Table.States (82).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 290, 1)));
+            Table.States (82).Kernel := To_Vector ((0 => ((292, 1),  253,  0, 
(292, 1),  1)));
+            Table.States (82).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (292, 1),  1)));
             Table.States (83).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (83), 97, 250);
-            Table.States (83).Kernel := To_Vector ((0 => (250, 252, 1, 
False)));
-            Table.States (83).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 250)));
+            Add_Action (Table.States (83), 99, (252, 0), 251);
+            Table.States (83).Kernel := To_Vector ((0 => ((252, 0),  254,  1, 
(2147483647, 0),  0)));
+            Table.States (83).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (252, 0),  99, 251)));
             Table.States (84).Action_List.Set_Capacity (47);
             Add_Action (Table.States (84), (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, 79, 94, 105, 106,
-            107, 108), (304, 10), 1, null, null);
-            Table.States (84).Kernel := To_Vector ((0 => (304, 258, 0, 
False)));
-            Table.States (84).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 304, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (306, 10),  1, null, null);
+            Table.States (84).Kernel := To_Vector ((0 => ((306, 10),  260,  0, 
(306, 10),  1)));
+            Table.States (84).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (306, 10),  1)));
             Table.States (85).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (326, 3), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (328, 3),  1,
             null, null);
-            Table.States (85).Kernel := To_Vector ((0 => (326, 260, 0, 
False)));
-            Table.States (85).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 326, 1)));
+            Table.States (85).Kernel := To_Vector ((0 => ((328, 3),  262,  0, 
(328, 3),  1)));
+            Table.States (85).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (328, 3),  1)));
             Table.States (86).Action_List.Set_Capacity (41);
             Add_Action (Table.States (86), (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, 
79, 94, 105, 106, 107, 108), (326, 2), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (328, 2),  1,
             null, null);
-            Table.States (86).Kernel := To_Vector ((0 => (326, 261, 0, 
False)));
-            Table.States (86).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 326, 1)));
+            Table.States (86).Kernel := To_Vector ((0 => ((328, 2),  263,  0, 
(328, 2),  1)));
+            Table.States (86).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (328, 2),  1)));
             Table.States (87).Action_List.Set_Capacity (47);
             Add_Action (Table.States (87), (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, 79, 94, 105, 106,
-            107, 108), (304, 4), 1, null, null);
-            Table.States (87).Kernel := To_Vector ((0 => (304, 262, 0, 
False)));
-            Table.States (87).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 304, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (306, 4),  1, null, null);
+            Table.States (87).Kernel := To_Vector ((0 => ((306, 4),  264,  0, 
(306, 4),  1)));
+            Table.States (87).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (306, 4),  1)));
             Table.States (88).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (88), (35, 74, 97), (313, 0), 1, null, 
subprogram_specification_0_check'Access);
-            Table.States (88).Kernel := To_Vector ((0 => (313, 263, 0, 
False)));
-            Table.States (88).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 313, 1)));
+            Add_Action (Table.States (88), (35, 74, 99), (315, 0),  1, null, 
subprogram_specification_0_check'Access);
+            Table.States (88).Kernel := To_Vector ((0 => ((315, 0),  265,  0, 
(315, 0),  1)));
+            Table.States (88).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (315, 0),  1)));
             Table.States (89).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (135, 0), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (137, 0),  1,
             null, null);
-            Table.States (89).Kernel := To_Vector ((0 => (135, 264, 0, 
False)));
-            Table.States (89).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 135, 1)));
+            Table.States (89).Kernel := To_Vector ((0 => ((137, 0),  266,  0, 
(137, 0),  1)));
+            Table.States (89).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (137, 0),  1)));
             Table.States (90).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (264, 3), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (266, 3),  1,
             null, null);
-            Table.States (90).Kernel := To_Vector ((0 => (264, 265, 0, 
False)));
-            Table.States (90).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 264, 1)));
+            Table.States (90).Kernel := To_Vector ((0 => ((266, 3),  267,  0, 
(266, 3),  1)));
+            Table.States (90).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (266, 3),  1)));
             Table.States (91).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (136, 3), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (138, 3),  1,
             null, null);
-            Table.States (91).Kernel := To_Vector ((0 => (136, 266, 0, 
False)));
-            Table.States (91).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 136, 1)));
+            Table.States (91).Kernel := To_Vector ((0 => ((138, 3),  268,  0, 
(138, 3),  1)));
+            Table.States (91).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (138, 3),  1)));
             Table.States (92).Action_List.Set_Capacity (41);
             Add_Action (Table.States (92), (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, 
79, 94, 105, 106, 107, 108), (207, 2), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (209, 2),  1,
             null, null);
-            Table.States (92).Kernel := To_Vector ((0 => (207, 272, 0, 
False)));
-            Table.States (92).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 207, 1)));
-            Table.States (93).Action_List.Set_Capacity (64);
+            Table.States (92).Kernel := To_Vector ((0 => ((209, 2),  274,  0, 
(209, 2),  1)));
+            Table.States (92).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (209, 2),  1)));
+            Table.States (93).Action_List.Set_Capacity (65);
             Add_Action (Table.States (93), (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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (240, 4), 1, null, null);
-            Table.States (93).Kernel := To_Vector ((0 => (240, 273, 0, True)));
-            Table.States (93).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 1)));
-            Table.States (93).Minimal_Complete_Actions_Recursive := True;
+            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (242, 4),  1, null,
+            null);
+            Table.States (93).Kernel := To_Vector ((0 => ((242, 4),  275,  0, 
(242, 4),  1)));
+            Table.States (93).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (242, 4),  1)));
             Table.States (94).Action_List.Set_Capacity (47);
             Add_Action (Table.States (94), (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, 79, 94, 105, 106,
-            107, 108), (304, 9), 1, null, null);
-            Table.States (94).Kernel := To_Vector ((0 => (304, 277, 0, 
False)));
-            Table.States (94).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 304, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (306, 9),  1, null, null);
+            Table.States (94).Kernel := To_Vector ((0 => ((306, 9),  279,  0, 
(306, 9),  1)));
+            Table.States (94).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (306, 9),  1)));
             Table.States (95).Action_List.Set_Capacity (42);
             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, 72, 73, 
74, 79, 94, 105, 106, 107, 108), (122, 2),
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 72, 73, 
74, 81, 96, 107, 108, 109, 110), (124, 2),
             1, null, null);
-            Table.States (95).Kernel := To_Vector ((0 => (122, 282, 0, 
False)));
-            Table.States (95).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 1)));
+            Table.States (95).Kernel := To_Vector ((0 => ((124, 2),  284,  0, 
(124, 2),  1)));
+            Table.States (95).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (124, 2),  1)));
             Table.States (96).Action_List.Set_Capacity (41);
             Add_Action (Table.States (96), (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, 
79, 94, 105, 106, 107, 108), (158, 12), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (160, 12),  1,
             null, null);
-            Table.States (96).Kernel := To_Vector ((0 => (158, 290, 0, 
False)));
-            Table.States (96).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 1)));
+            Table.States (96).Kernel := To_Vector ((0 => ((160, 12),  292,  0, 
(160, 12),  1)));
+            Table.States (96).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (160, 12),  1)));
             Table.States (97).Action_List.Set_Capacity (47);
             Add_Action (Table.States (97), (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, 79, 94, 105, 106,
-            107, 108), (304, 6), 1, null, null);
-            Table.States (97).Kernel := To_Vector ((0 => (304, 291, 0, 
False)));
-            Table.States (97).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 304, 1)));
-            Table.States (98).Action_List.Set_Capacity (64);
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (306, 6),  1, null, null);
+            Table.States (97).Kernel := To_Vector ((0 => ((306, 6),  293,  0, 
(306, 6),  1)));
+            Table.States (97).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (306, 6),  1)));
+            Table.States (98).Action_List.Set_Capacity (65);
             Add_Action (Table.States (98), (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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (240, 2), 1, null,
+            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (242, 2),  1, null,
             name_2_check'Access);
-            Table.States (98).Kernel := To_Vector ((0 => (240, 294, 0, True)));
-            Table.States (98).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 1)));
-            Table.States (98).Minimal_Complete_Actions_Recursive := True;
+            Table.States (98).Kernel := To_Vector ((0 => ((242, 2),  296,  0, 
(242, 2),  1)));
+            Table.States (98).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (242, 2),  1)));
             Table.States (99).Action_List.Set_Capacity (47);
             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, 79, 94, 105, 106,
-            107, 108), (299, 0), 1, null, null);
-            Table.States (99).Kernel := To_Vector ((0 => (299, 295, 0, 
False)));
-            Table.States (99).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 299, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (301, 0),  1, null, null);
+            Table.States (99).Kernel := To_Vector ((0 => ((301, 0),  297,  0, 
(301, 0),  1)));
+            Table.States (99).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (301, 0),  1)));
             Table.States (100).Action_List.Set_Capacity (47);
             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, 79, 94, 105, 106,
-            107, 108), (152, 6), 1, null, null);
-            Table.States (100).Kernel := To_Vector ((0 => (152, 299, 0, 
False)));
-            Table.States (100).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 152, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (154, 6),  1, null, null);
+            Table.States (100).Kernel := To_Vector ((0 => ((154, 6),  301,  0, 
(154, 6),  1)));
+            Table.States (100).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (154, 6),  1)));
             Table.States (101).Action_List.Set_Capacity (47);
             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, 79, 94, 105, 106,
-            107, 108), (304, 5), 1, null, null);
-            Table.States (101).Kernel := To_Vector ((0 => (304, 303, 0, 
False)));
-            Table.States (101).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 304, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (306, 5),  1, null, null);
+            Table.States (101).Kernel := To_Vector ((0 => ((306, 5),  305,  0, 
(306, 5),  1)));
+            Table.States (101).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (306, 5),  1)));
             Table.States (102).Action_List.Set_Capacity (47);
             Add_Action (Table.States (102), (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, 79, 94, 105, 106,
-            107, 108), (307, 1), 1, null, null);
-            Table.States (102).Kernel := To_Vector ((0 => (307, 304, 0, 
False)));
-            Table.States (102).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 307, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (309, 1),  1, null, null);
+            Table.States (102).Kernel := To_Vector ((0 => ((309, 1),  306,  0, 
(309, 1),  1)));
+            Table.States (102).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (309, 1),  1)));
             Table.States (103).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (245, 7), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (247, 7),  1,
             null, null);
-            Table.States (103).Kernel := To_Vector ((0 => (245, 305, 0, 
False)));
-            Table.States (103).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 245, 1)));
+            Table.States (103).Kernel := To_Vector ((0 => ((247, 7),  307,  0, 
(247, 7),  1)));
+            Table.States (103).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (247, 7),  1)));
             Table.States (104).Action_List.Set_Capacity (41);
             Add_Action (Table.States (104), (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, 
79, 94, 105, 106, 107, 108), (245, 6), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (247, 6),  1,
             null, null);
-            Table.States (104).Kernel := To_Vector ((0 => (245, 306, 0, 
False)));
-            Table.States (104).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 245, 1)));
+            Table.States (104).Kernel := To_Vector ((0 => ((247, 6),  308,  0, 
(247, 6),  1)));
+            Table.States (104).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (247, 6),  1)));
             Table.States (105).Action_List.Set_Capacity (40);
             Add_Action (Table.States (105), (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, 79, 
94, 105, 106, 107, 108), (143, 4), 1, null,
-            null);
-            Table.States (105).Kernel := To_Vector ((0 => (143, 307, 0, 
False)));
-            Table.States (105).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 143, 1)));
+            48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 81, 
96, 107, 108, 109, 110), (145, 4),  1,
+            null, null);
+            Table.States (105).Kernel := To_Vector ((0 => ((145, 4),  309,  0, 
(145, 4),  1)));
+            Table.States (105).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (145, 4),  1)));
             Table.States (106).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (264, 0), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (266, 0),  1,
             null, null);
-            Table.States (106).Kernel := To_Vector ((0 => (264, 308, 0, 
False)));
-            Table.States (106).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 264, 1)));
+            Table.States (106).Kernel := To_Vector ((0 => ((266, 0),  310,  0, 
(266, 0),  1)));
+            Table.States (106).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (266, 0),  1)));
             Table.States (107).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (136, 0), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (138, 0),  1,
             null, null);
-            Table.States (107).Kernel := To_Vector ((0 => (136, 309, 0, 
False)));
-            Table.States (107).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 136, 1)));
+            Table.States (107).Kernel := To_Vector ((0 => ((138, 0),  311,  0, 
(138, 0),  1)));
+            Table.States (107).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (138, 0),  1)));
             Table.States (108).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (158, 13), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (160, 13),  1,
             null, null);
-            Table.States (108).Kernel := To_Vector ((0 => (158, 310, 0, 
False)));
-            Table.States (108).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 1)));
+            Table.States (108).Kernel := To_Vector ((0 => ((160, 13),  312,  
0, (160, 13),  1)));
+            Table.States (108).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (160, 13),  1)));
             Table.States (109).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (290, 2), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (292, 2),  1,
             null, null);
-            Table.States (109).Kernel := To_Vector ((0 => (290, 312, 0, 
False)));
-            Table.States (109).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 290, 1)));
+            Table.States (109).Kernel := To_Vector ((0 => ((292, 2),  314,  0, 
(292, 2),  1)));
+            Table.States (109).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (292, 2),  1)));
             Table.States (110).Action_List.Set_Capacity (41);
             Add_Action (Table.States (110), (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, 
79, 94, 105, 106, 107, 108), (158, 14), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (160, 14),  1,
             null, null);
-            Table.States (110).Kernel := To_Vector ((0 => (158, 314, 0, 
False)));
-            Table.States (110).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 1)));
+            Table.States (110).Kernel := To_Vector ((0 => ((160, 14),  316,  
0, (160, 14),  1)));
+            Table.States (110).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (160, 14),  1)));
             Table.States (111).Action_List.Set_Capacity (40);
             Add_Action (Table.States (111), (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, 79, 
94, 105, 106, 107, 108), (143, 1), 1, null,
-            null);
-            Table.States (111).Kernel := To_Vector ((0 => (143, 316, 0, 
False)));
-            Table.States (111).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 143, 1)));
+            48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 81, 
96, 107, 108, 109, 110), (145, 1),  1,
+            null, null);
+            Table.States (111).Kernel := To_Vector ((0 => ((145, 1),  318,  0, 
(145, 1),  1)));
+            Table.States (111).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (145, 1),  1)));
             Table.States (112).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (264, 2), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (266, 2),  1,
             null, null);
-            Table.States (112).Kernel := To_Vector ((0 => (264, 317, 0, 
False)));
-            Table.States (112).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 264, 1)));
+            Table.States (112).Kernel := To_Vector ((0 => ((266, 2),  319,  0, 
(266, 2),  1)));
+            Table.States (112).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (266, 2),  1)));
             Table.States (113).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (136, 2), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (138, 2),  1,
             null, null);
-            Table.States (113).Kernel := To_Vector ((0 => (136, 318, 0, 
False)));
-            Table.States (113).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 136, 1)));
+            Table.States (113).Kernel := To_Vector ((0 => ((138, 2),  320,  0, 
(138, 2),  1)));
+            Table.States (113).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (138, 2),  1)));
             Table.States (114).Action_List.Set_Capacity (41);
             Add_Action (Table.States (114), (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, 
79, 94, 105, 106, 107, 108), (207, 1), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (209, 1),  1,
             null, null);
-            Table.States (114).Kernel := To_Vector ((0 => (207, 320, 0, 
False)));
-            Table.States (114).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 207, 1)));
+            Table.States (114).Kernel := To_Vector ((0 => ((209, 1),  322,  0, 
(209, 1),  1)));
+            Table.States (114).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (209, 1),  1)));
             Table.States (115).Action_List.Set_Capacity (47);
             Add_Action (Table.States (115), (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, 79, 94, 105, 106,
-            107, 108), (299, 1), 1, null, null);
-            Table.States (115).Kernel := To_Vector ((0 => (299, 324, 0, 
False)));
-            Table.States (115).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 299, 1)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (301, 1),  1, null, null);
+            Table.States (115).Kernel := To_Vector ((0 => ((301, 1),  326,  0, 
(301, 1),  1)));
+            Table.States (115).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (301, 1),  1)));
             Table.States (116).Action_List.Set_Capacity (41);
             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, 
79, 94, 105, 106, 107, 108), (158, 15), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (160, 15),  1,
             null, null);
-            Table.States (116).Kernel := To_Vector ((0 => (158, 326, 0, 
False)));
-            Table.States (116).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 1)));
+            Table.States (116).Kernel := To_Vector ((0 => ((160, 15),  328,  
0, (160, 15),  1)));
+            Table.States (116).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (160, 15),  1)));
             Table.States (117).Action_List.Set_Capacity (41);
             Add_Action (Table.States (117), (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, 
79, 94, 105, 106, 107, 108), (158, 16), 1,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (160, 16),  1,
             null, null);
-            Table.States (117).Kernel := To_Vector ((0 => (158, 332, 0, 
False)));
-            Table.States (117).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 1)));
+            Table.States (117).Kernel := To_Vector ((0 => ((160, 16),  334,  
0, (160, 16),  1)));
+            Table.States (117).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (160, 16),  1)));
             Table.States (118).Action_List.Set_Capacity (40);
             Add_Action (Table.States (118), (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, 79, 
94, 105, 106, 107, 108), (143, 0), 1, null,
-            null);
-            Table.States (118).Kernel := To_Vector ((0 => (143, 333, 0, 
False)));
-            Table.States (118).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 143, 1)));
+            48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 81, 
96, 107, 108, 109, 110), (145, 0),  1,
+            null, null);
+            Table.States (118).Kernel := To_Vector ((0 => ((145, 0),  335,  0, 
(145, 0),  1)));
+            Table.States (118).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (145, 0),  1)));
             Table.States (119).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (119), 21, Reduce, (117, 1), 0, null, 
null);
-            Add_Action (Table.States (119), 76, 251);
-            Add_Conflict (Table.States (119), 76, (117, 1), 0, null, null);
-            Add_Action (Table.States (119), 97, Reduce, (117, 1), 0, null, 
null);
+            Add_Action (Table.States (119), 21, Reduce, (119, 1),  0, null, 
null);
+            Add_Action (Table.States (119), 76, (118, 0), 252);
+            Add_Conflict (Table.States (119), 76, (119, 1),  0, null, null);
+            Add_Action (Table.States (119), 99, Reduce, (119, 1),  0, null, 
null);
             Table.States (119).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (119), 116, 252);
-            Add_Goto (Table.States (119), 117, 253);
-            Table.States (119).Kernel := To_Vector (((114, 105, 3, False), 
(114, 105, 1, False)));
-            Table.States (119).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 117, 0)));
-            Table.States (120).Action_List.Set_Capacity (63);
+            Add_Goto (Table.States (119), 118, 253);
+            Add_Goto (Table.States (119), 119, 254);
+            Table.States (119).Kernel := To_Vector ((((116, 0),  107,  3, 
(2147483647, 0),  0), ((116, 1),  107,  1,
+            (2147483647, 0),  0)));
+            Table.States (119).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (119, 1),  0)));
+            Table.States (120).Action_List.Set_Capacity (64);
             Add_Action (Table.States (120), (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, 73, 74, 75, 
76, 77, 78, 79, 80, 83, 84, 85, 86, 87, 88,
-            89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 
106, 107), (240, 5), 1, name_5'Access,
-            name_5_check'Access);
-            Table.States (120).Kernel := To_Vector ((0 => (240, 105, 0, 
False)));
-            Table.States (120).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 1)));
+            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 73, 74, 75, 
76, 78, 79, 80, 81, 82, 85, 86, 87, 88, 89,
+            90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 
107, 108, 109), (242, 5),  1,
+            name_5'Access, name_5_check'Access);
+            Table.States (120).Kernel := To_Vector ((0 => ((242, 5),  107,  0, 
(242, 5),  1)));
+            Table.States (120).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (242, 5),  1)));
             Table.States (121).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (121), 76, 236);
-            Add_Action (Table.States (121), 85, 238);
-            Add_Action (Table.States (121), 97, 254);
-            Add_Action (Table.States (121), 102, 240);
-            Add_Action (Table.States (121), 103, 241);
+            Add_Action (Table.States (121), 76, (118, 0), 237);
+            Add_Action (Table.States (121), 87, (296, 0), 239);
+            Add_Action (Table.States (121), 99, (306, 8), 255);
+            Add_Action (Table.States (121), 104, (325, 0), 241);
+            Add_Action (Table.States (121), 105, (325, 1), 242);
             Table.States (121).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (121), 116, 242);
-            Add_Goto (Table.States (121), 323, 243);
-            Table.States (121).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (273, 240, 3, True), (294, 240, 2, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (304, 240, 1, False)));
-            Table.States (121).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 254)));
-            Table.States (122).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (122), 39, 123);
-            Add_Action (Table.States (122), 41, 125);
-            Add_Action (Table.States (122), 76, 127);
-            Add_Action (Table.States (122), 79, 31);
-            Add_Action (Table.States (122), 104, 130);
-            Add_Action (Table.States (122), 105, 120);
-            Add_Action (Table.States (122), 106, 34);
-            Add_Action (Table.States (122), 107, 35);
+            Add_Goto (Table.States (121), 118, 243);
+            Add_Goto (Table.States (121), 325, 244);
+            Table.States (121).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((275, 0),  242,  3, (2147483647, 0),  0),
+            ((296, 0),  242,  2, (2147483647, 0),  0), ((296, 1),  242,  2, 
(2147483647, 0),  0), ((296, 2),  242,  2,
+            (2147483647, 0),  0), ((296, 3),  242,  2, (2147483647, 0),  0), 
((306, 8),  242,  1, (2147483647, 0),
+            0)));
+            Table.States (121).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (306, 8),  99, 255)));
+            Table.States (122).Action_List.Set_Capacity (9);
+            Add_Action (Table.States (122), 39, (261, 4), 123);
+            Add_Action (Table.States (122), 41, (261, 1), 125);
+            Add_Action (Table.States (122), 76, (120, 0), 127);
+            Add_Action (Table.States (122), 77, (120, 5), 128);
+            Add_Action (Table.States (122), 81, (242, 8), 31);
+            Add_Action (Table.States (122), 106, (261, 0), 131);
+            Add_Action (Table.States (122), 107, (242, 5), 120);
+            Add_Action (Table.States (122), 108, (242, 7), 34);
+            Add_Action (Table.States (122), 109, (242, 6), 35);
             Table.States (122).Goto_List.Set_Capacity (6);
-            Add_Goto (Table.States (122), 118, 131);
-            Add_Goto (Table.States (122), 129, 42);
-            Add_Goto (Table.States (122), 240, 135);
-            Add_Goto (Table.States (122), 259, 255);
-            Add_Goto (Table.States (122), 273, 93);
-            Add_Goto (Table.States (122), 294, 98);
-            Table.States (122).Kernel := To_Vector ((0 => (198, 3, 1, False)));
-            Table.States (122).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
+            Add_Goto (Table.States (122), 120, 132);
+            Add_Goto (Table.States (122), 131, 42);
+            Add_Goto (Table.States (122), 242, 136);
+            Add_Goto (Table.States (122), 261, 256);
+            Add_Goto (Table.States (122), 275, 93);
+            Add_Goto (Table.States (122), 296, 98);
+            Table.States (122).Kernel := To_Vector ((0 => ((200, 2),  3,  1, 
(2147483647, 0),  0)));
+            Table.States (122).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
             Table.States (123).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (123), 79, 31);
-            Add_Action (Table.States (123), 105, 120);
-            Add_Action (Table.States (123), 106, 34);
-            Add_Action (Table.States (123), 107, 35);
+            Add_Action (Table.States (123), 81, (242, 8), 31);
+            Add_Action (Table.States (123), 107, (242, 5), 120);
+            Add_Action (Table.States (123), 108, (242, 7), 34);
+            Add_Action (Table.States (123), 109, (242, 6), 35);
             Table.States (123).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (123), 129, 42);
-            Add_Goto (Table.States (123), 240, 256);
-            Add_Goto (Table.States (123), 273, 93);
-            Add_Goto (Table.States (123), 294, 98);
-            Table.States (123).Kernel := To_Vector ((0 => (259, 39, 1, 
False)));
-            Table.States (123).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (124).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (124), 39, 123);
-            Add_Action (Table.States (124), 41, 125);
-            Add_Action (Table.States (124), 76, 127);
-            Add_Action (Table.States (124), 79, 31);
-            Add_Action (Table.States (124), 104, 130);
-            Add_Action (Table.States (124), 105, 120);
-            Add_Action (Table.States (124), 106, 34);
-            Add_Action (Table.States (124), 107, 35);
+            Add_Goto (Table.States (123), 131, 42);
+            Add_Goto (Table.States (123), 242, 257);
+            Add_Goto (Table.States (123), 275, 93);
+            Add_Goto (Table.States (123), 296, 98);
+            Table.States (123).Kernel := To_Vector ((0 => ((261, 4),  39,  1, 
(2147483647, 0),  0)));
+            Table.States (123).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (124).Action_List.Set_Capacity (9);
+            Add_Action (Table.States (124), 39, (261, 4), 123);
+            Add_Action (Table.States (124), 41, (261, 1), 125);
+            Add_Action (Table.States (124), 76, (120, 0), 127);
+            Add_Action (Table.States (124), 77, (120, 5), 128);
+            Add_Action (Table.States (124), 81, (242, 8), 31);
+            Add_Action (Table.States (124), 106, (261, 0), 131);
+            Add_Action (Table.States (124), 107, (242, 5), 120);
+            Add_Action (Table.States (124), 108, (242, 7), 34);
+            Add_Action (Table.States (124), 109, (242, 6), 35);
             Table.States (124).Goto_List.Set_Capacity (6);
-            Add_Goto (Table.States (124), 118, 131);
-            Add_Goto (Table.States (124), 129, 42);
-            Add_Goto (Table.States (124), 240, 135);
-            Add_Goto (Table.States (124), 259, 257);
-            Add_Goto (Table.States (124), 273, 93);
-            Add_Goto (Table.States (124), 294, 98);
-            Table.States (124).Kernel := To_Vector ((0 => (198, 40, 1, 
False)));
-            Table.States (124).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (125).Action_List.Set_Capacity (36);
-            Add_Action (Table.States (125), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 77,
-            78, 80, 83, 84, 86, 87, 88, 89, 90, 92, 93, 95, 96, 97, 98, 99, 
100, 101), (259, 1), 1, null, null);
-            Table.States (125).Kernel := To_Vector ((0 => (259, 41, 0, 
False)));
-            Table.States (125).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 259, 1)));
+            Add_Goto (Table.States (124), 120, 132);
+            Add_Goto (Table.States (124), 131, 42);
+            Add_Goto (Table.States (124), 242, 136);
+            Add_Goto (Table.States (124), 261, 258);
+            Add_Goto (Table.States (124), 275, 93);
+            Add_Goto (Table.States (124), 296, 98);
+            Table.States (124).Kernel := To_Vector ((0 => ((200, 3),  40,  1, 
(2147483647, 0),  0)));
+            Table.States (124).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (125).Action_List.Set_Capacity (37);
+            Add_Action (Table.States (125), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 78,
+            79, 80, 82, 85, 86, 88, 89, 90, 91, 92, 94, 95, 97, 98, 99, 100, 
101, 102, 103), (261, 1),  1, null, null);
+            Table.States (125).Kernel := To_Vector ((0 => ((261, 1),  41,  0, 
(261, 1),  1)));
+            Table.States (125).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (261, 1),  1)));
             Table.States (126).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (126), 79, 31);
-            Add_Action (Table.States (126), 105, 120);
-            Add_Action (Table.States (126), 106, 34);
-            Add_Action (Table.States (126), 107, 35);
+            Add_Action (Table.States (126), 81, (242, 8), 31);
+            Add_Action (Table.States (126), 107, (242, 5), 120);
+            Add_Action (Table.States (126), 108, (242, 7), 34);
+            Add_Action (Table.States (126), 109, (242, 6), 35);
             Table.States (126).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (126), 129, 42);
-            Add_Goto (Table.States (126), 240, 258);
-            Add_Goto (Table.States (126), 273, 93);
-            Add_Goto (Table.States (126), 294, 98);
-            Table.States (126).Kernel := To_Vector (((276, 52, 2, True), (276, 
52, 1, False)));
-            Table.States (126).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (127).Action_List.Set_Capacity (22);
-            Add_Action (Table.States (127), 3, 122);
-            Add_Action (Table.States (127), 15, 259);
-            Add_Action (Table.States (127), 28, 260);
-            Add_Action (Table.States (127), 32, 261);
-            Add_Action (Table.States (127), 39, 123);
-            Add_Action (Table.States (127), 40, 262);
-            Add_Action (Table.States (127), 41, 263);
-            Add_Action (Table.States (127), 44, 264);
-            Add_Action (Table.States (127), 52, 126);
-            Add_Action (Table.States (127), 74, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (127), 76, 127);
-            Add_Action (Table.States (127), 77, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (127), 79, 31);
-            Add_Action (Table.States (127), 80, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (127), 84, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (127), 88, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (127), 95, 128);
-            Add_Action (Table.States (127), 96, 129);
-            Add_Action (Table.States (127), 104, 130);
-            Add_Action (Table.States (127), 105, 120);
-            Add_Action (Table.States (127), 106, 34);
-            Add_Action (Table.States (127), 107, 265);
+            Add_Goto (Table.States (126), 131, 42);
+            Add_Goto (Table.States (126), 242, 259);
+            Add_Goto (Table.States (126), 275, 93);
+            Add_Goto (Table.States (126), 296, 98);
+            Table.States (126).Kernel := To_Vector ((((278, 0),  52,  2, 
(2147483647, 0),  0), ((278, 1),  52,  1,
+            (2147483647, 0),  0)));
+            Table.States (126).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (127).Action_List.Set_Capacity (23);
+            Add_Action (Table.States (127), 3, (200, 2), 122);
+            Add_Action (Table.States (127), 15, (139, 0), 260);
+            Add_Action (Table.States (127), 28, (127, 6), 261);
+            Add_Action (Table.States (127), 32, (224, 0), 262);
+            Add_Action (Table.States (127), 39, (261, 4), 123);
+            Add_Action (Table.States (127), 40, (168, 1), 263);
+            Add_Action (Table.States (127), 41, (120, 1), 264);
+            Add_Action (Table.States (127), 44, (168, 3), 265);
+            Add_Action (Table.States (127), 52, (278, 0), 126);
+            Add_Action (Table.States (127), 74, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (127), 76, (120, 0), 127);
+            Add_Action (Table.States (127), 77, (120, 5), 128);
+            Add_Action (Table.States (127), 78, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (127), 81, (242, 8), 31);
+            Add_Action (Table.States (127), 82, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (127), 86, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (127), 90, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (127), 97, (333, 1), 129);
+            Add_Action (Table.States (127), 98, (333, 0), 130);
+            Add_Action (Table.States (127), 106, (261, 0), 131);
+            Add_Action (Table.States (127), 107, (242, 5), 120);
+            Add_Action (Table.States (127), 108, (242, 7), 34);
+            Add_Action (Table.States (127), 109, (127, 0), 266);
             Table.States (127).Goto_List.Set_Capacity (29);
-            Add_Goto (Table.States (127), 118, 131);
-            Add_Goto (Table.States (127), 125, 266);
-            Add_Goto (Table.States (127), 126, 267);
-            Add_Goto (Table.States (127), 129, 42);
-            Add_Goto (Table.States (127), 137, 268);
-            Add_Goto (Table.States (127), 154, 269);
-            Add_Goto (Table.States (127), 166, 270);
-            Add_Goto (Table.States (127), 167, 271);
-            Add_Goto (Table.States (127), 192, 272);
-            Add_Goto (Table.States (127), 193, 273);
-            Add_Goto (Table.States (127), 198, 134);
-            Add_Goto (Table.States (127), 222, 274);
-            Add_Goto (Table.States (127), 240, 275);
-            Add_Goto (Table.States (127), 259, 136);
-            Add_Goto (Table.States (127), 273, 93);
-            Add_Goto (Table.States (127), 274, 276);
-            Add_Goto (Table.States (127), 276, 137);
-            Add_Goto (Table.States (127), 278, 277);
-            Add_Goto (Table.States (127), 283, 138);
-            Add_Goto (Table.States (127), 284, 139);
-            Add_Goto (Table.States (127), 285, 140);
-            Add_Goto (Table.States (127), 286, 141);
-            Add_Goto (Table.States (127), 287, 142);
-            Add_Goto (Table.States (127), 288, 143);
-            Add_Goto (Table.States (127), 294, 98);
-            Add_Goto (Table.States (127), 302, 278);
-            Add_Goto (Table.States (127), 321, 145);
-            Add_Goto (Table.States (127), 322, 146);
-            Add_Goto (Table.States (127), 331, 147);
-            Table.States (127).Kernel := To_Vector (((118, 76, 4, False), 
(118, 76, 2, False), (118, 76, 3, False),
-            (118, 76, 4, False), (118, 76, 3, False), (118, 76, 1, False)));
-            Table.States (127).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 126, 0)));
-            Table.States (128).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (128), (3, 39, 40, 41, 76, 79, 104, 105, 
106, 107), (331, 1), 1, null, null);
-            Table.States (128).Kernel := To_Vector ((0 => (331, 95, 0, 
False)));
-            Table.States (128).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 331, 1)));
-            Table.States (129).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (129), (3, 39, 40, 41, 76, 79, 104, 105, 
106, 107), (331, 0), 1, null, null);
-            Table.States (129).Kernel := To_Vector ((0 => (331, 96, 0, 
False)));
-            Table.States (129).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 331, 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, 80, 83, 84, 86, 87, 88, 89, 90, 92, 93, 95, 96, 97, 98, 99, 
100, 101), (259, 0), 1, primary_0'Access,
-            null);
-            Table.States (130).Kernel := To_Vector ((0 => (259, 104, 0, 
False)));
-            Table.States (130).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 259, 1)));
-            Table.States (131).Action_List.Set_Capacity (36);
-            Add_Action (Table.States (131), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 77,
-            78, 80, 83, 84, 86, 87, 88, 89, 90, 92, 93, 95, 96, 97, 98, 99, 
100, 101), (259, 2), 1, primary_2'Access,
-            null);
-            Table.States (131).Kernel := To_Vector ((0 => (259, 118, 0, 
False)));
-            Table.States (131).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 259, 1)));
-            Table.States (132).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (132), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 80, 84, 88, 97), (193,
-            0), 1, null, null);
-            Table.States (132).Kernel := To_Vector ((0 => (193, 192, 0, 
True)));
-            Table.States (132).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 1)));
-            Table.States (132).Minimal_Complete_Actions_Recursive := True;
-            Table.States (133).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (133), 35, 279);
-            Table.States (133).Kernel := To_Vector ((0 => (140, 193, 6, 
False)));
-            Table.States (133).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 279)));
-            Table.States (134).Action_List.Set_Capacity (35);
-            Add_Action (Table.States (134), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 77,
-            78, 80, 83, 84, 86, 87, 88, 89, 90, 92, 93, 95, 96, 97, 98, 99, 
100), (321, 1), 1, null, null);
-            Table.States (134).Kernel := To_Vector ((0 => (321, 198, 0, 
False)));
-            Table.States (134).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 321, 1)));
-            Table.States (135).Action_List.Set_Capacity (40);
-            Add_Action (Table.States (135), 10, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 20, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 21, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 22, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 23, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 33, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 35, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 37, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 38, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 40, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 42, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 43, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 53, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 55, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 68, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 74, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 75, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 76, 236);
-            Add_Action (Table.States (135), 77, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 78, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 80, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 83, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 84, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 85, 238);
-            Add_Action (Table.States (135), 86, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 87, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 88, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 89, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 90, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 92, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 93, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 95, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 96, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 97, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 98, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 99, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 100, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 101, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (135), 102, 240);
-            Add_Action (Table.States (135), 103, 241);
-            Table.States (135).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (135), 116, 242);
-            Add_Goto (Table.States (135), 323, 243);
-            Table.States (135).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (259, 240, 0, False), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (135).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 259, 1)));
-            Table.States (136).Action_List.Set_Capacity (36);
-            Add_Action (Table.States (136), 10, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 20, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 21, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 22, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 23, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 33, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 35, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 37, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 38, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 40, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 42, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 43, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 53, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 55, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 68, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 74, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 75, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 77, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 78, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 80, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 83, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 84, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 86, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 87, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 88, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 89, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 90, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 92, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 93, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 95, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 96, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 97, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 98, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 99, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 100, Reduce, (198, 1), 1, null, 
null);
-            Add_Action (Table.States (136), 101, 280);
-            Table.States (136).Kernel := To_Vector (((198, 259, 2, False), 
(198, 259, 0, False)));
-            Table.States (136).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 198, 1)));
-            Table.States (137).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (137), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 80, 84, 88, 97), (288,
-            4), 1, null, null);
-            Table.States (137).Kernel := To_Vector ((0 => (288, 276, 0, 
True)));
-            Table.States (137).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 288, 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, (192, 1), 1, null, null);
-            Add_Action (Table.States (138), 20, Reduce, (192, 1), 1, null, 
null);
-            Add_Action (Table.States (138), 21, Reduce, (192, 1), 1, null, 
null);
-            Add_Action (Table.States (138), 22, Reduce, (192, 1), 1, null, 
null);
-            Add_Action (Table.States (138), 23, Reduce, (192, 1), 1, null, 
null);
-            Add_Action (Table.States (138), 35, Reduce, (192, 1), 1, null, 
null);
-            Add_Action (Table.States (138), 37, Reduce, (192, 1), 1, null, 
null);
-            Add_Action (Table.States (138), 43, Reduce, (192, 1), 1, null, 
null);
-            Add_Action (Table.States (138), 53, Reduce, (192, 1), 1, null, 
null);
-            Add_Action (Table.States (138), 68, Reduce, (192, 1), 1, null, 
null);
-            Add_Action (Table.States (138), 74, Reduce, (192, 1), 1, null, 
null);
-            Add_Action (Table.States (138), 75, Reduce, (192, 1), 1, null, 
null);
-            Add_Action (Table.States (138), 77, Reduce, (192, 1), 1, null, 
null);
-            Add_Action (Table.States (138), 80, Reduce, (192, 1), 1, null, 
null);
-            Add_Action (Table.States (138), 84, Reduce, (192, 1), 1, null, 
null);
-            Add_Action (Table.States (138), 88, Reduce, (192, 1), 1, null, 
null);
-            Add_Action (Table.States (138), 97, Reduce, (192, 1), 1, null, 
null);
-            Table.States (138).Kernel := To_Vector (((192, 283, 0, True), 
(283, 283, 2, True)));
-            Table.States (138).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 1)));
-            Table.States (138).Minimal_Complete_Actions_Recursive := True;
-            Table.States (139).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (139), 10, 282);
-            Add_Conflict (Table.States (139), 10, (192, 2), 1, null, null);
-            Add_Action (Table.States (139), 20, Reduce, (192, 2), 1, null, 
null);
-            Add_Action (Table.States (139), 21, Reduce, (192, 2), 1, null, 
null);
-            Add_Action (Table.States (139), 22, Reduce, (192, 2), 1, null, 
null);
-            Add_Action (Table.States (139), 23, Reduce, (192, 2), 1, null, 
null);
-            Add_Action (Table.States (139), 35, Reduce, (192, 2), 1, null, 
null);
-            Add_Action (Table.States (139), 37, Reduce, (192, 2), 1, null, 
null);
-            Add_Action (Table.States (139), 43, Reduce, (192, 2), 1, null, 
null);
-            Add_Action (Table.States (139), 53, Reduce, (192, 2), 1, null, 
null);
-            Add_Action (Table.States (139), 68, Reduce, (192, 2), 1, null, 
null);
-            Add_Action (Table.States (139), 74, Reduce, (192, 2), 1, null, 
null);
-            Add_Action (Table.States (139), 75, Reduce, (192, 2), 1, null, 
null);
-            Add_Action (Table.States (139), 77, Reduce, (192, 2), 1, null, 
null);
-            Add_Action (Table.States (139), 80, Reduce, (192, 2), 1, null, 
null);
-            Add_Action (Table.States (139), 84, Reduce, (192, 2), 1, null, 
null);
-            Add_Action (Table.States (139), 88, Reduce, (192, 2), 1, null, 
null);
-            Add_Action (Table.States (139), 97, Reduce, (192, 2), 1, null, 
null);
-            Table.States (139).Kernel := To_Vector (((192, 284, 0, True), 
(284, 284, 3, True)));
-            Table.States (139).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 1)));
-            Table.States (139).Minimal_Complete_Actions_Recursive := True;
+            Add_Goto (Table.States (127), 120, 132);
+            Add_Goto (Table.States (127), 127, 267);
+            Add_Goto (Table.States (127), 128, 268);
+            Add_Goto (Table.States (127), 131, 42);
+            Add_Goto (Table.States (127), 139, 269);
+            Add_Goto (Table.States (127), 156, 270);
+            Add_Goto (Table.States (127), 168, 271);
+            Add_Goto (Table.States (127), 169, 272);
+            Add_Goto (Table.States (127), 194, 273);
+            Add_Goto (Table.States (127), 195, 274);
+            Add_Goto (Table.States (127), 200, 135);
+            Add_Goto (Table.States (127), 224, 275);
+            Add_Goto (Table.States (127), 242, 276);
+            Add_Goto (Table.States (127), 261, 137);
+            Add_Goto (Table.States (127), 275, 93);
+            Add_Goto (Table.States (127), 276, 277);
+            Add_Goto (Table.States (127), 278, 138);
+            Add_Goto (Table.States (127), 280, 278);
+            Add_Goto (Table.States (127), 285, 139);
+            Add_Goto (Table.States (127), 286, 140);
+            Add_Goto (Table.States (127), 287, 141);
+            Add_Goto (Table.States (127), 288, 142);
+            Add_Goto (Table.States (127), 289, 143);
+            Add_Goto (Table.States (127), 290, 144);
+            Add_Goto (Table.States (127), 296, 98);
+            Add_Goto (Table.States (127), 304, 279);
+            Add_Goto (Table.States (127), 323, 146);
+            Add_Goto (Table.States (127), 324, 147);
+            Add_Goto (Table.States (127), 333, 148);
+            Table.States (127).Kernel := To_Vector ((((120, 0),  76,  1, 
(2147483647, 0),  0), ((120, 1),  76,  3,
+            (2147483647, 0),  0), ((120, 2),  76,  4, (2147483647, 0),  0), 
((120, 3),  76,  2, (2147483647, 0),  0),
+            ((120, 4),  76,  4, (2147483647, 0),  0), ((120, 6),  76,  3, 
(2147483647, 0),  0)));
+            Table.States (127).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (128, 1),  0)));
+            Table.States (128).Action_List.Set_Capacity (14);
+            Add_Action (Table.States (128), 3, (200, 2), 122);
+            Add_Action (Table.States (128), 39, (261, 4), 123);
+            Add_Action (Table.States (128), 40, (200, 3), 124);
+            Add_Action (Table.States (128), 41, (261, 1), 125);
+            Add_Action (Table.States (128), 52, (278, 0), 126);
+            Add_Action (Table.States (128), 76, (120, 0), 127);
+            Add_Action (Table.States (128), 77, (120, 5), 128);
+            Add_Action (Table.States (128), 81, (242, 8), 31);
+            Add_Action (Table.States (128), 97, (333, 1), 129);
+            Add_Action (Table.States (128), 98, (333, 0), 130);
+            Add_Action (Table.States (128), 106, (261, 0), 131);
+            Add_Action (Table.States (128), 107, (242, 5), 120);
+            Add_Action (Table.States (128), 108, (242, 7), 34);
+            Add_Action (Table.States (128), 109, (242, 6), 35);
+            Table.States (128).Goto_List.Set_Capacity (19);
+            Add_Goto (Table.States (128), 120, 132);
+            Add_Goto (Table.States (128), 131, 42);
+            Add_Goto (Table.States (128), 194, 280);
+            Add_Goto (Table.States (128), 200, 135);
+            Add_Goto (Table.States (128), 242, 136);
+            Add_Goto (Table.States (128), 261, 137);
+            Add_Goto (Table.States (128), 275, 93);
+            Add_Goto (Table.States (128), 278, 138);
+            Add_Goto (Table.States (128), 285, 139);
+            Add_Goto (Table.States (128), 286, 140);
+            Add_Goto (Table.States (128), 287, 141);
+            Add_Goto (Table.States (128), 288, 142);
+            Add_Goto (Table.States (128), 289, 143);
+            Add_Goto (Table.States (128), 290, 144);
+            Add_Goto (Table.States (128), 296, 98);
+            Add_Goto (Table.States (128), 304, 145);
+            Add_Goto (Table.States (128), 323, 146);
+            Add_Goto (Table.States (128), 324, 147);
+            Add_Goto (Table.States (128), 333, 148);
+            Table.States (128).Kernel := To_Vector ((0 => ((120, 5),  77,  4, 
(2147483647, 0),  0)));
+            Table.States (128).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (129).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (129), (3, 39, 40, 41, 76, 77, 81, 106, 
107, 108, 109), (333, 1),  1, null, null);
+            Table.States (129).Kernel := To_Vector ((0 => ((333, 1),  97,  0, 
(333, 1),  1)));
+            Table.States (129).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (333, 1),  1)));
+            Table.States (130).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (130), (3, 39, 40, 41, 76, 77, 81, 106, 
107, 108, 109), (333, 0),  1, null, null);
+            Table.States (130).Kernel := To_Vector ((0 => ((333, 0),  98,  0, 
(333, 0),  1)));
+            Table.States (130).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (333, 0),  1)));
+            Table.States (131).Action_List.Set_Capacity (37);
+            Add_Action (Table.States (131), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 78,
+            79, 80, 82, 85, 86, 88, 89, 90, 91, 92, 94, 95, 97, 98, 99, 100, 
101, 102, 103), (261, 0),  1,
+            primary_0'Access, null);
+            Table.States (131).Kernel := To_Vector ((0 => ((261, 0),  106,  0, 
(261, 0),  1)));
+            Table.States (131).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (261, 0),  1)));
+            Table.States (132).Action_List.Set_Capacity (37);
+            Add_Action (Table.States (132), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 78,
+            79, 80, 82, 85, 86, 88, 89, 90, 91, 92, 94, 95, 97, 98, 99, 100, 
101, 102, 103), (261, 2),  1,
+            primary_2'Access, null);
+            Table.States (132).Kernel := To_Vector ((0 => ((261, 2),  120,  0, 
(261, 2),  1)));
+            Table.States (132).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (261, 2),  1)));
+            Table.States (133).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (133), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 78, 79, 82, 86, 90, 99),
+            (195, 0),  1, null, null);
+            Table.States (133).Kernel := To_Vector ((0 => ((195, 0),  194,  0, 
(195, 0),  1)));
+            Table.States (133).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 0),  1)));
+            Table.States (134).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (134), 35, (142, 0), 281);
+            Table.States (134).Kernel := To_Vector ((0 => ((142, 0),  195,  6, 
(2147483647, 0),  0)));
+            Table.States (134).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (142, 0),  35, 281)));
          end Subr_2;
          procedure Subr_3
          is begin
-            Table.States (140).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (140), 10, Reduce, (192, 3), 1, null, 
null);
-            Add_Action (Table.States (140), 20, Reduce, (192, 3), 1, null, 
null);
-            Add_Action (Table.States (140), 21, Reduce, (192, 3), 1, null, 
null);
-            Add_Action (Table.States (140), 22, Reduce, (192, 3), 1, null, 
null);
-            Add_Action (Table.States (140), 23, Reduce, (192, 3), 1, null, 
null);
-            Add_Action (Table.States (140), 35, Reduce, (192, 3), 1, null, 
null);
-            Add_Action (Table.States (140), 37, Reduce, (192, 3), 1, null, 
null);
-            Add_Action (Table.States (140), 43, 283);
-            Add_Conflict (Table.States (140), 43, (192, 3), 1, null, null);
-            Add_Action (Table.States (140), 53, Reduce, (192, 3), 1, null, 
null);
-            Add_Action (Table.States (140), 68, Reduce, (192, 3), 1, null, 
null);
-            Add_Action (Table.States (140), 74, Reduce, (192, 3), 1, null, 
null);
-            Add_Action (Table.States (140), 75, Reduce, (192, 3), 1, null, 
null);
-            Add_Action (Table.States (140), 77, Reduce, (192, 3), 1, null, 
null);
-            Add_Action (Table.States (140), 80, Reduce, (192, 3), 1, null, 
null);
-            Add_Action (Table.States (140), 84, Reduce, (192, 3), 1, null, 
null);
-            Add_Action (Table.States (140), 88, Reduce, (192, 3), 1, null, 
null);
-            Add_Action (Table.States (140), 97, Reduce, (192, 3), 1, null, 
null);
-            Table.States (140).Kernel := To_Vector (((192, 285, 0, True), 
(285, 285, 2, True)));
-            Table.States (140).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 1)));
-            Table.States (140).Minimal_Complete_Actions_Recursive := True;
-            Table.States (141).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (141), 10, Reduce, (192, 4), 1, null, 
null);
-            Add_Action (Table.States (141), 20, Reduce, (192, 4), 1, null, 
null);
-            Add_Action (Table.States (141), 21, Reduce, (192, 4), 1, null, 
null);
-            Add_Action (Table.States (141), 22, Reduce, (192, 4), 1, null, 
null);
-            Add_Action (Table.States (141), 23, Reduce, (192, 4), 1, null, 
null);
-            Add_Action (Table.States (141), 35, Reduce, (192, 4), 1, null, 
null);
-            Add_Action (Table.States (141), 37, Reduce, (192, 4), 1, null, 
null);
-            Add_Action (Table.States (141), 43, 284);
-            Add_Conflict (Table.States (141), 43, (192, 4), 1, null, null);
-            Add_Action (Table.States (141), 53, Reduce, (192, 4), 1, null, 
null);
-            Add_Action (Table.States (141), 68, Reduce, (192, 4), 1, null, 
null);
-            Add_Action (Table.States (141), 74, Reduce, (192, 4), 1, null, 
null);
-            Add_Action (Table.States (141), 75, Reduce, (192, 4), 1, null, 
null);
-            Add_Action (Table.States (141), 77, Reduce, (192, 4), 1, null, 
null);
-            Add_Action (Table.States (141), 80, Reduce, (192, 4), 1, null, 
null);
-            Add_Action (Table.States (141), 84, Reduce, (192, 4), 1, null, 
null);
-            Add_Action (Table.States (141), 88, Reduce, (192, 4), 1, null, 
null);
-            Add_Action (Table.States (141), 97, Reduce, (192, 4), 1, null, 
null);
-            Table.States (141).Kernel := To_Vector (((192, 286, 0, True), 
(286, 286, 3, True)));
-            Table.States (141).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 1)));
-            Table.States (141).Minimal_Complete_Actions_Recursive := True;
-            Table.States (142).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (142), 10, Reduce, (192, 5), 1, null, 
null);
-            Add_Action (Table.States (142), 20, Reduce, (192, 5), 1, null, 
null);
-            Add_Action (Table.States (142), 21, Reduce, (192, 5), 1, null, 
null);
-            Add_Action (Table.States (142), 22, Reduce, (192, 5), 1, null, 
null);
-            Add_Action (Table.States (142), 23, Reduce, (192, 5), 1, null, 
null);
-            Add_Action (Table.States (142), 35, Reduce, (192, 5), 1, null, 
null);
-            Add_Action (Table.States (142), 37, Reduce, (192, 5), 1, null, 
null);
-            Add_Action (Table.States (142), 43, Reduce, (192, 5), 1, null, 
null);
-            Add_Action (Table.States (142), 53, Reduce, (192, 5), 1, null, 
null);
-            Add_Action (Table.States (142), 68, Reduce, (192, 5), 1, null, 
null);
-            Add_Action (Table.States (142), 74, Reduce, (192, 5), 1, null, 
null);
-            Add_Action (Table.States (142), 75, 285);
-            Add_Conflict (Table.States (142), 75, (192, 5), 1, null, null);
-            Add_Action (Table.States (142), 77, Reduce, (192, 5), 1, null, 
null);
-            Add_Action (Table.States (142), 80, Reduce, (192, 5), 1, null, 
null);
-            Add_Action (Table.States (142), 84, Reduce, (192, 5), 1, null, 
null);
-            Add_Action (Table.States (142), 88, Reduce, (192, 5), 1, null, 
null);
-            Add_Action (Table.States (142), 97, Reduce, (192, 5), 1, null, 
null);
-            Table.States (142).Kernel := To_Vector (((192, 287, 0, True), 
(287, 287, 2, True)));
-            Table.States (142).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 1)));
-            Table.States (142).Minimal_Complete_Actions_Recursive := True;
-            Table.States (143).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (143), 10, 286);
-            Add_Conflict (Table.States (143), 10, (192, 0), 1, null, null);
-            Add_Action (Table.States (143), 20, Reduce, (192, 0), 1, null, 
null);
-            Add_Action (Table.States (143), 21, Reduce, (192, 0), 1, null, 
null);
-            Add_Action (Table.States (143), 22, Reduce, (192, 0), 1, null, 
null);
-            Add_Action (Table.States (143), 23, Reduce, (192, 0), 1, null, 
null);
-            Add_Action (Table.States (143), 35, Reduce, (192, 0), 1, null, 
null);
-            Add_Action (Table.States (143), 37, Reduce, (192, 0), 1, null, 
null);
-            Add_Action (Table.States (143), 43, 287);
-            Add_Conflict (Table.States (143), 43, (192, 0), 1, null, null);
-            Add_Action (Table.States (143), 53, Reduce, (192, 0), 1, null, 
null);
-            Add_Action (Table.States (143), 68, Reduce, (192, 0), 1, null, 
null);
-            Add_Action (Table.States (143), 74, Reduce, (192, 0), 1, null, 
null);
-            Add_Action (Table.States (143), 75, 288);
-            Add_Conflict (Table.States (143), 75, (192, 0), 1, null, null);
-            Add_Action (Table.States (143), 77, Reduce, (192, 0), 1, null, 
null);
-            Add_Action (Table.States (143), 80, Reduce, (192, 0), 1, null, 
null);
-            Add_Action (Table.States (143), 84, Reduce, (192, 0), 1, null, 
null);
-            Add_Action (Table.States (143), 88, Reduce, (192, 0), 1, null, 
null);
-            Add_Action (Table.States (143), 97, Reduce, (192, 0), 1, null, 
null);
-            Table.States (143).Kernel := To_Vector (((192, 288, 0, True), 
(283, 288, 2, True), (284, 288, 3, True),
-            (285, 288, 2, True), (286, 288, 3, True), (287, 288, 2, True)));
-            Table.States (143).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 192, 1)));
-            Table.States (143).Minimal_Complete_Actions_Recursive := True;
-            Table.States (144).Action_List.Set_Capacity (25);
-            Add_Action (Table.States (144), 10, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (144), 20, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (144), 21, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (144), 22, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (144), 23, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (144), 33, 289);
-            Add_Action (Table.States (144), 35, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (144), 37, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (144), 40, 290);
-            Add_Action (Table.States (144), 43, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (144), 53, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (144), 68, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (144), 74, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (144), 75, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (144), 77, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (144), 80, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (144), 84, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (144), 87, 291);
-            Add_Action (Table.States (144), 88, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (144), 89, 292);
-            Add_Action (Table.States (144), 90, 293);
-            Add_Action (Table.States (144), 92, 294);
-            Add_Action (Table.States (144), 93, 295);
-            Add_Action (Table.States (144), 97, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (144), 99, 296);
-            Table.States (144).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (144), 289, 297);
-            Table.States (144).Kernel := To_Vector (((288, 302, 3, False), 
(288, 302, 2, False), (288, 302, 2, False),
-            (288, 302, 0, False)));
-            Table.States (144).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 288, 1)));
-            Table.States (145).Action_List.Set_Capacity (35);
-            Add_Action (Table.States (145), 10, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 20, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 21, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 22, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 23, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 33, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 35, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 37, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 38, 298);
-            Add_Action (Table.States (145), 40, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 42, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 43, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 53, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 55, 299);
-            Add_Action (Table.States (145), 68, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 74, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 75, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 77, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 78, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 80, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 83, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 84, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 86, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 87, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 88, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 89, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 90, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 92, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 93, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 95, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 96, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 97, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 98, 300);
-            Add_Action (Table.States (145), 99, Reduce, (322, 1), 1, null, 
null);
-            Add_Action (Table.States (145), 100, 301);
+            Table.States (135).Action_List.Set_Capacity (36);
+            Add_Action (Table.States (135), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 78,
+            79, 80, 82, 85, 86, 88, 89, 90, 91, 92, 94, 95, 97, 98, 99, 100, 
101, 102), (323, 1),  1, null, null);
+            Table.States (135).Kernel := To_Vector ((0 => ((323, 1),  200,  0, 
(323, 1),  1)));
+            Table.States (135).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (323, 1),  1)));
+            Table.States (136).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (136), 10, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 20, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 21, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 22, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 23, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 33, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 35, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 37, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 38, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 40, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 42, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 43, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 53, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 55, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 68, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 74, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 75, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 76, (118, 0), 237);
+            Add_Action (Table.States (136), 78, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 79, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 80, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 82, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 85, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 86, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 87, (296, 0), 239);
+            Add_Action (Table.States (136), 88, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 89, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 90, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 91, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 92, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 94, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 95, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 97, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 98, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 99, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 100, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 101, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 102, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 103, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (136), 104, (325, 0), 241);
+            Add_Action (Table.States (136), 105, (325, 1), 242);
+            Table.States (136).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (136), 118, 243);
+            Add_Goto (Table.States (136), 325, 244);
+            Table.States (136).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((261, 3),  242,  0, (261, 3),  1), ((275,
+            0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (136).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (261, 3),  1)));
+            Table.States (137).Action_List.Set_Capacity (37);
+            Add_Action (Table.States (137), 10, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 20, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 21, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 22, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 23, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 33, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 35, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 37, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 38, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 40, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 42, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 43, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 53, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 55, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 68, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 74, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 75, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 78, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 79, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 80, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 82, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 85, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 86, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 88, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 89, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 90, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 91, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 92, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 94, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 95, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 97, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 98, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 99, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 100, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 101, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 102, Reduce, (200, 1),  1, null, 
null);
+            Add_Action (Table.States (137), 103, (200, 0), 282);
+            Table.States (137).Kernel := To_Vector ((((200, 0),  261,  2, 
(2147483647, 0),  0), ((200, 1),  261,  0,
+            (200, 1),  1)));
+            Table.States (137).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (200, 1),  1)));
+            Table.States (138).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (138), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 78, 79, 82, 86, 90, 99),
+            (290, 4),  1, null, null);
+            Table.States (138).Kernel := To_Vector ((0 => ((290, 4),  278,  0, 
(290, 4),  1)));
+            Table.States (138).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (290, 4),  1)));
+            Table.States (139).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (139), 10, (285, 0), 283);
+            Add_Conflict (Table.States (139), 10, (194, 1),  1, null, null);
+            Add_Action (Table.States (139), 20, Reduce, (194, 1),  1, null, 
null);
+            Add_Action (Table.States (139), 21, Reduce, (194, 1),  1, null, 
null);
+            Add_Action (Table.States (139), 22, Reduce, (194, 1),  1, null, 
null);
+            Add_Action (Table.States (139), 23, Reduce, (194, 1),  1, null, 
null);
+            Add_Action (Table.States (139), 35, Reduce, (194, 1),  1, null, 
null);
+            Add_Action (Table.States (139), 37, Reduce, (194, 1),  1, null, 
null);
+            Add_Action (Table.States (139), 43, Reduce, (194, 1),  1, null, 
null);
+            Add_Action (Table.States (139), 53, Reduce, (194, 1),  1, null, 
null);
+            Add_Action (Table.States (139), 68, Reduce, (194, 1),  1, null, 
null);
+            Add_Action (Table.States (139), 74, Reduce, (194, 1),  1, null, 
null);
+            Add_Action (Table.States (139), 75, Reduce, (194, 1),  1, null, 
null);
+            Add_Action (Table.States (139), 78, Reduce, (194, 1),  1, null, 
null);
+            Add_Action (Table.States (139), 79, Reduce, (194, 1),  1, null, 
null);
+            Add_Action (Table.States (139), 82, Reduce, (194, 1),  1, null, 
null);
+            Add_Action (Table.States (139), 86, Reduce, (194, 1),  1, null, 
null);
+            Add_Action (Table.States (139), 90, Reduce, (194, 1),  1, null, 
null);
+            Add_Action (Table.States (139), 99, Reduce, (194, 1),  1, null, 
null);
+            Table.States (139).Kernel := To_Vector ((((194, 1),  285,  0, 
(194, 1),  1), ((285, 0),  285,  2,
+            (2147483647, 0),  0)));
+            Table.States (139).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (194, 1),  1)));
+            Table.States (140).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (140), 10, (286, 0), 284);
+            Add_Conflict (Table.States (140), 10, (194, 2),  1, null, null);
+            Add_Action (Table.States (140), 20, Reduce, (194, 2),  1, null, 
null);
+            Add_Action (Table.States (140), 21, Reduce, (194, 2),  1, null, 
null);
+            Add_Action (Table.States (140), 22, Reduce, (194, 2),  1, null, 
null);
+            Add_Action (Table.States (140), 23, Reduce, (194, 2),  1, null, 
null);
+            Add_Action (Table.States (140), 35, Reduce, (194, 2),  1, null, 
null);
+            Add_Action (Table.States (140), 37, Reduce, (194, 2),  1, null, 
null);
+            Add_Action (Table.States (140), 43, Reduce, (194, 2),  1, null, 
null);
+            Add_Action (Table.States (140), 53, Reduce, (194, 2),  1, null, 
null);
+            Add_Action (Table.States (140), 68, Reduce, (194, 2),  1, null, 
null);
+            Add_Action (Table.States (140), 74, Reduce, (194, 2),  1, null, 
null);
+            Add_Action (Table.States (140), 75, Reduce, (194, 2),  1, null, 
null);
+            Add_Action (Table.States (140), 78, Reduce, (194, 2),  1, null, 
null);
+            Add_Action (Table.States (140), 79, Reduce, (194, 2),  1, null, 
null);
+            Add_Action (Table.States (140), 82, Reduce, (194, 2),  1, null, 
null);
+            Add_Action (Table.States (140), 86, Reduce, (194, 2),  1, null, 
null);
+            Add_Action (Table.States (140), 90, Reduce, (194, 2),  1, null, 
null);
+            Add_Action (Table.States (140), 99, Reduce, (194, 2),  1, null, 
null);
+            Table.States (140).Kernel := To_Vector ((((194, 2),  286,  0, 
(194, 2),  1), ((286, 0),  286,  3,
+            (2147483647, 0),  0)));
+            Table.States (140).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (194, 2),  1)));
+            Table.States (141).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (141), 10, Reduce, (194, 3),  1, null, 
null);
+            Add_Action (Table.States (141), 20, Reduce, (194, 3),  1, null, 
null);
+            Add_Action (Table.States (141), 21, Reduce, (194, 3),  1, null, 
null);
+            Add_Action (Table.States (141), 22, Reduce, (194, 3),  1, null, 
null);
+            Add_Action (Table.States (141), 23, Reduce, (194, 3),  1, null, 
null);
+            Add_Action (Table.States (141), 35, Reduce, (194, 3),  1, null, 
null);
+            Add_Action (Table.States (141), 37, Reduce, (194, 3),  1, null, 
null);
+            Add_Action (Table.States (141), 43, (287, 0), 285);
+            Add_Conflict (Table.States (141), 43, (194, 3),  1, null, null);
+            Add_Action (Table.States (141), 53, Reduce, (194, 3),  1, null, 
null);
+            Add_Action (Table.States (141), 68, Reduce, (194, 3),  1, null, 
null);
+            Add_Action (Table.States (141), 74, Reduce, (194, 3),  1, null, 
null);
+            Add_Action (Table.States (141), 75, Reduce, (194, 3),  1, null, 
null);
+            Add_Action (Table.States (141), 78, Reduce, (194, 3),  1, null, 
null);
+            Add_Action (Table.States (141), 79, Reduce, (194, 3),  1, null, 
null);
+            Add_Action (Table.States (141), 82, Reduce, (194, 3),  1, null, 
null);
+            Add_Action (Table.States (141), 86, Reduce, (194, 3),  1, null, 
null);
+            Add_Action (Table.States (141), 90, Reduce, (194, 3),  1, null, 
null);
+            Add_Action (Table.States (141), 99, Reduce, (194, 3),  1, null, 
null);
+            Table.States (141).Kernel := To_Vector ((((194, 3),  287,  0, 
(194, 3),  1), ((287, 0),  287,  2,
+            (2147483647, 0),  0)));
+            Table.States (141).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (194, 3),  1)));
+            Table.States (142).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (142), 10, Reduce, (194, 4),  1, null, 
null);
+            Add_Action (Table.States (142), 20, Reduce, (194, 4),  1, null, 
null);
+            Add_Action (Table.States (142), 21, Reduce, (194, 4),  1, null, 
null);
+            Add_Action (Table.States (142), 22, Reduce, (194, 4),  1, null, 
null);
+            Add_Action (Table.States (142), 23, Reduce, (194, 4),  1, null, 
null);
+            Add_Action (Table.States (142), 35, Reduce, (194, 4),  1, null, 
null);
+            Add_Action (Table.States (142), 37, Reduce, (194, 4),  1, null, 
null);
+            Add_Action (Table.States (142), 43, (288, 0), 286);
+            Add_Conflict (Table.States (142), 43, (194, 4),  1, null, null);
+            Add_Action (Table.States (142), 53, Reduce, (194, 4),  1, null, 
null);
+            Add_Action (Table.States (142), 68, Reduce, (194, 4),  1, null, 
null);
+            Add_Action (Table.States (142), 74, Reduce, (194, 4),  1, null, 
null);
+            Add_Action (Table.States (142), 75, Reduce, (194, 4),  1, null, 
null);
+            Add_Action (Table.States (142), 78, Reduce, (194, 4),  1, null, 
null);
+            Add_Action (Table.States (142), 79, Reduce, (194, 4),  1, null, 
null);
+            Add_Action (Table.States (142), 82, Reduce, (194, 4),  1, null, 
null);
+            Add_Action (Table.States (142), 86, Reduce, (194, 4),  1, null, 
null);
+            Add_Action (Table.States (142), 90, Reduce, (194, 4),  1, null, 
null);
+            Add_Action (Table.States (142), 99, Reduce, (194, 4),  1, null, 
null);
+            Table.States (142).Kernel := To_Vector ((((194, 4),  288,  0, 
(194, 4),  1), ((288, 0),  288,  3,
+            (2147483647, 0),  0)));
+            Table.States (142).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (194, 4),  1)));
+            Table.States (143).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (143), 10, Reduce, (194, 5),  1, null, 
null);
+            Add_Action (Table.States (143), 20, Reduce, (194, 5),  1, null, 
null);
+            Add_Action (Table.States (143), 21, Reduce, (194, 5),  1, null, 
null);
+            Add_Action (Table.States (143), 22, Reduce, (194, 5),  1, null, 
null);
+            Add_Action (Table.States (143), 23, Reduce, (194, 5),  1, null, 
null);
+            Add_Action (Table.States (143), 35, Reduce, (194, 5),  1, null, 
null);
+            Add_Action (Table.States (143), 37, Reduce, (194, 5),  1, null, 
null);
+            Add_Action (Table.States (143), 43, Reduce, (194, 5),  1, null, 
null);
+            Add_Action (Table.States (143), 53, Reduce, (194, 5),  1, null, 
null);
+            Add_Action (Table.States (143), 68, Reduce, (194, 5),  1, null, 
null);
+            Add_Action (Table.States (143), 74, Reduce, (194, 5),  1, null, 
null);
+            Add_Action (Table.States (143), 75, (289, 0), 287);
+            Add_Conflict (Table.States (143), 75, (194, 5),  1, null, null);
+            Add_Action (Table.States (143), 78, Reduce, (194, 5),  1, null, 
null);
+            Add_Action (Table.States (143), 79, Reduce, (194, 5),  1, null, 
null);
+            Add_Action (Table.States (143), 82, Reduce, (194, 5),  1, null, 
null);
+            Add_Action (Table.States (143), 86, Reduce, (194, 5),  1, null, 
null);
+            Add_Action (Table.States (143), 90, Reduce, (194, 5),  1, null, 
null);
+            Add_Action (Table.States (143), 99, Reduce, (194, 5),  1, null, 
null);
+            Table.States (143).Kernel := To_Vector ((((194, 5),  289,  0, 
(194, 5),  1), ((289, 0),  289,  2,
+            (2147483647, 0),  0)));
+            Table.States (143).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (194, 5),  1)));
+            Table.States (144).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (144), 10, (285, 1), 288);
+            Add_Conflict (Table.States (144), 10, (194, 0),  1, null, null);
+            Add_Action (Table.States (144), 20, Reduce, (194, 0),  1, null, 
null);
+            Add_Action (Table.States (144), 21, Reduce, (194, 0),  1, null, 
null);
+            Add_Action (Table.States (144), 22, Reduce, (194, 0),  1, null, 
null);
+            Add_Action (Table.States (144), 23, Reduce, (194, 0),  1, null, 
null);
+            Add_Action (Table.States (144), 35, Reduce, (194, 0),  1, null, 
null);
+            Add_Action (Table.States (144), 37, Reduce, (194, 0),  1, null, 
null);
+            Add_Action (Table.States (144), 43, (287, 1), 289);
+            Add_Conflict (Table.States (144), 43, (194, 0),  1, null, null);
+            Add_Action (Table.States (144), 53, Reduce, (194, 0),  1, null, 
null);
+            Add_Action (Table.States (144), 68, Reduce, (194, 0),  1, null, 
null);
+            Add_Action (Table.States (144), 74, Reduce, (194, 0),  1, null, 
null);
+            Add_Action (Table.States (144), 75, (289, 1), 290);
+            Add_Conflict (Table.States (144), 75, (194, 0),  1, null, null);
+            Add_Action (Table.States (144), 78, Reduce, (194, 0),  1, null, 
null);
+            Add_Action (Table.States (144), 79, Reduce, (194, 0),  1, null, 
null);
+            Add_Action (Table.States (144), 82, Reduce, (194, 0),  1, null, 
null);
+            Add_Action (Table.States (144), 86, Reduce, (194, 0),  1, null, 
null);
+            Add_Action (Table.States (144), 90, Reduce, (194, 0),  1, null, 
null);
+            Add_Action (Table.States (144), 99, Reduce, (194, 0),  1, null, 
null);
+            Table.States (144).Kernel := To_Vector ((((194, 0),  290,  0, 
(194, 0),  1), ((285, 1),  290,  2,
+            (2147483647, 0),  0), ((286, 1),  290,  3, (2147483647, 0),  0), 
((287, 1),  290,  2, (2147483647, 0),  0),
+            ((288, 1),  290,  3, (2147483647, 0),  0), ((289, 1),  290,  2, 
(2147483647, 0),  0)));
+            Table.States (144).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (194, 0),  1)));
+            Table.States (145).Action_List.Set_Capacity (26);
+            Add_Action (Table.States (145), 10, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (145), 20, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (145), 21, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (145), 22, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (145), 23, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (145), 33, (290, 1), 291);
+            Add_Action (Table.States (145), 35, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (145), 37, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (145), 40, (290, 0), 292);
+            Add_Action (Table.States (145), 43, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (145), 53, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (145), 68, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (145), 74, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (145), 75, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (145), 78, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (145), 79, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (145), 82, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (145), 86, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (145), 89, (291, 0), 293);
+            Add_Action (Table.States (145), 90, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (145), 91, (291, 4), 294);
+            Add_Action (Table.States (145), 92, (291, 5), 295);
+            Add_Action (Table.States (145), 94, (291, 2), 296);
+            Add_Action (Table.States (145), 95, (291, 3), 297);
+            Add_Action (Table.States (145), 99, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (145), 101, (291, 1), 298);
             Table.States (145).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (145), 238, 302);
-            Table.States (145).Kernel := To_Vector (((321, 321, 2, True), 
(322, 321, 0, False)));
-            Table.States (145).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 322, 1)));
-            Table.States (146).Action_List.Set_Capacity (31);
-            Add_Action (Table.States (146), 10, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 20, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 21, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 22, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 23, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 33, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 35, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 37, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 40, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 42, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 43, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 53, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 68, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 74, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 75, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 77, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 78, 303);
-            Add_Action (Table.States (146), 80, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 83, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 84, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 86, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 87, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 88, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 89, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 90, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 92, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 93, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 95, 304);
-            Add_Action (Table.States (146), 96, 305);
-            Add_Action (Table.States (146), 97, Reduce, (302, 1), 1, null, 
null);
-            Add_Action (Table.States (146), 99, Reduce, (302, 1), 1, null, 
null);
+            Add_Goto (Table.States (145), 291, 299);
+            Table.States (145).Kernel := To_Vector ((((290, 0),  304,  3, 
(2147483647, 0),  0), ((290, 1),  304,  2,
+            (2147483647, 0),  0), ((290, 2),  304,  2, (2147483647, 0),  0), 
((290, 3),  304,  0, (290, 3),  1)));
+            Table.States (145).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (290, 3),  1)));
+            Table.States (146).Action_List.Set_Capacity (36);
+            Add_Action (Table.States (146), 10, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 20, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 21, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 22, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 23, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 33, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 35, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 37, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 38, (240, 2), 300);
+            Add_Action (Table.States (146), 40, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 42, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 43, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 53, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 55, (240, 3), 301);
+            Add_Action (Table.States (146), 68, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 74, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 75, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 78, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 79, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 80, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 82, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 85, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 86, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 88, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 89, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 90, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 91, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 92, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 94, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 95, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 97, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 98, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 99, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 100, (240, 1), 302);
+            Add_Action (Table.States (146), 101, Reduce, (324, 1),  1, null, 
null);
+            Add_Action (Table.States (146), 102, (240, 0), 303);
             Table.States (146).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (146), 131, 306);
-            Table.States (146).Kernel := To_Vector (((302, 322, 0, False), 
(322, 322, 2, True)));
-            Table.States (146).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 302, 1)));
-            Table.States (147).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (147), 3, 122);
-            Add_Action (Table.States (147), 39, 123);
-            Add_Action (Table.States (147), 40, 124);
-            Add_Action (Table.States (147), 41, 125);
-            Add_Action (Table.States (147), 76, 127);
-            Add_Action (Table.States (147), 79, 31);
-            Add_Action (Table.States (147), 104, 130);
-            Add_Action (Table.States (147), 105, 120);
-            Add_Action (Table.States (147), 106, 34);
-            Add_Action (Table.States (147), 107, 35);
-            Table.States (147).Goto_List.Set_Capacity (9);
-            Add_Goto (Table.States (147), 118, 131);
-            Add_Goto (Table.States (147), 129, 42);
-            Add_Goto (Table.States (147), 198, 134);
-            Add_Goto (Table.States (147), 240, 135);
-            Add_Goto (Table.States (147), 259, 136);
-            Add_Goto (Table.States (147), 273, 93);
-            Add_Goto (Table.States (147), 294, 98);
-            Add_Goto (Table.States (147), 321, 145);
-            Add_Goto (Table.States (147), 322, 307);
-            Table.States (147).Kernel := To_Vector ((0 => (302, 331, 1, 
False)));
-            Table.States (147).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (148).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (148), 3, 122);
-            Add_Action (Table.States (148), 39, 123);
-            Add_Action (Table.States (148), 40, 124);
-            Add_Action (Table.States (148), 41, 125);
-            Add_Action (Table.States (148), 52, 126);
-            Add_Action (Table.States (148), 76, 127);
-            Add_Action (Table.States (148), 79, 31);
-            Add_Action (Table.States (148), 95, 128);
-            Add_Action (Table.States (148), 96, 129);
-            Add_Action (Table.States (148), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (148), 104, 130);
-            Add_Action (Table.States (148), 105, 120);
-            Add_Action (Table.States (148), 106, 34);
-            Add_Action (Table.States (148), 107, 35);
-            Table.States (148).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (148), 118, 131);
-            Add_Goto (Table.States (148), 129, 42);
-            Add_Goto (Table.States (148), 192, 132);
-            Add_Goto (Table.States (148), 193, 308);
-            Add_Goto (Table.States (148), 198, 134);
-            Add_Goto (Table.States (148), 240, 135);
-            Add_Goto (Table.States (148), 259, 136);
-            Add_Goto (Table.States (148), 273, 93);
-            Add_Goto (Table.States (148), 276, 137);
-            Add_Goto (Table.States (148), 283, 138);
-            Add_Goto (Table.States (148), 284, 139);
-            Add_Goto (Table.States (148), 285, 140);
-            Add_Goto (Table.States (148), 286, 141);
-            Add_Goto (Table.States (148), 287, 142);
-            Add_Goto (Table.States (148), 288, 143);
-            Add_Goto (Table.States (148), 294, 98);
-            Add_Goto (Table.States (148), 302, 144);
-            Add_Goto (Table.States (148), 321, 145);
-            Add_Goto (Table.States (148), 322, 146);
-            Add_Goto (Table.States (148), 331, 147);
-            Table.States (148).Kernel := To_Vector ((0 => (162, 70, 1, 
False)));
-            Table.States (148).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (149).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (149), 97, 309);
-            Table.States (149).Kernel := To_Vector ((0 => (162, 193, 1, 
False)));
-            Table.States (149).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 309)));
-            Table.States (150).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (150), (72, 97), (221, 0), 1, null, 
identifier_opt_0_check'Access);
-            Table.States (150).Kernel := To_Vector ((0 => (221, 105, 0, 
False)));
-            Table.States (150).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 1)));
+            Add_Goto (Table.States (146), 240, 304);
+            Table.States (146).Kernel := To_Vector ((((323, 0),  323,  2, 
(2147483647, 0),  0), ((324, 1),  323,  0,
+            (324, 1),  1)));
+            Table.States (146).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (324, 1),  1)));
+            Table.States (147).Action_List.Set_Capacity (32);
+            Add_Action (Table.States (147), 10, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 20, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 21, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 22, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 23, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 33, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 35, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 37, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 40, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 42, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 43, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 53, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 68, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 74, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 75, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 78, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 79, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 80, (133, 2), 305);
+            Add_Action (Table.States (147), 82, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 85, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 86, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 88, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 89, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 90, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 91, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 92, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 94, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 95, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 97, (133, 1), 306);
+            Add_Action (Table.States (147), 98, (133, 0), 307);
+            Add_Action (Table.States (147), 99, Reduce, (304, 1),  1, null, 
null);
+            Add_Action (Table.States (147), 101, Reduce, (304, 1),  1, null, 
null);
+            Table.States (147).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (147), 133, 308);
+            Table.States (147).Kernel := To_Vector ((((304, 1),  324,  0, 
(304, 1),  1), ((324, 0),  324,  2,
+            (2147483647, 0),  0)));
+            Table.States (147).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (304, 1),  1)));
+            Table.States (148).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (148), 3, (200, 2), 122);
+            Add_Action (Table.States (148), 39, (261, 4), 123);
+            Add_Action (Table.States (148), 40, (200, 3), 124);
+            Add_Action (Table.States (148), 41, (261, 1), 125);
+            Add_Action (Table.States (148), 76, (120, 0), 127);
+            Add_Action (Table.States (148), 77, (120, 5), 128);
+            Add_Action (Table.States (148), 81, (242, 8), 31);
+            Add_Action (Table.States (148), 106, (261, 0), 131);
+            Add_Action (Table.States (148), 107, (242, 5), 120);
+            Add_Action (Table.States (148), 108, (242, 7), 34);
+            Add_Action (Table.States (148), 109, (242, 6), 35);
+            Table.States (148).Goto_List.Set_Capacity (9);
+            Add_Goto (Table.States (148), 120, 132);
+            Add_Goto (Table.States (148), 131, 42);
+            Add_Goto (Table.States (148), 200, 135);
+            Add_Goto (Table.States (148), 242, 136);
+            Add_Goto (Table.States (148), 261, 137);
+            Add_Goto (Table.States (148), 275, 93);
+            Add_Goto (Table.States (148), 296, 98);
+            Add_Goto (Table.States (148), 323, 146);
+            Add_Goto (Table.States (148), 324, 309);
+            Table.States (148).Kernel := To_Vector ((0 => ((304, 0),  333,  1, 
(2147483647, 0),  0)));
+            Table.States (148).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (149).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (149), 3, (200, 2), 122);
+            Add_Action (Table.States (149), 39, (261, 4), 123);
+            Add_Action (Table.States (149), 40, (200, 3), 124);
+            Add_Action (Table.States (149), 41, (261, 1), 125);
+            Add_Action (Table.States (149), 52, (278, 0), 126);
+            Add_Action (Table.States (149), 76, (120, 0), 127);
+            Add_Action (Table.States (149), 77, (120, 5), 128);
+            Add_Action (Table.States (149), 81, (242, 8), 31);
+            Add_Action (Table.States (149), 97, (333, 1), 129);
+            Add_Action (Table.States (149), 98, (333, 0), 130);
+            Add_Action (Table.States (149), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (149), 106, (261, 0), 131);
+            Add_Action (Table.States (149), 107, (242, 5), 120);
+            Add_Action (Table.States (149), 108, (242, 7), 34);
+            Add_Action (Table.States (149), 109, (242, 6), 35);
+            Table.States (149).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (149), 120, 132);
+            Add_Goto (Table.States (149), 131, 42);
+            Add_Goto (Table.States (149), 194, 133);
+            Add_Goto (Table.States (149), 195, 310);
+            Add_Goto (Table.States (149), 200, 135);
+            Add_Goto (Table.States (149), 242, 136);
+            Add_Goto (Table.States (149), 261, 137);
+            Add_Goto (Table.States (149), 275, 93);
+            Add_Goto (Table.States (149), 278, 138);
+            Add_Goto (Table.States (149), 285, 139);
+            Add_Goto (Table.States (149), 286, 140);
+            Add_Goto (Table.States (149), 287, 141);
+            Add_Goto (Table.States (149), 288, 142);
+            Add_Goto (Table.States (149), 289, 143);
+            Add_Goto (Table.States (149), 290, 144);
+            Add_Goto (Table.States (149), 296, 98);
+            Add_Goto (Table.States (149), 304, 145);
+            Add_Goto (Table.States (149), 323, 146);
+            Add_Goto (Table.States (149), 324, 147);
+            Add_Goto (Table.States (149), 333, 148);
+            Table.States (149).Kernel := To_Vector ((0 => ((164, 0),  70,  1, 
(2147483647, 0),  0)));
+            Table.States (149).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (150).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (150), 99, (164, 1), 311);
+            Table.States (150).Kernel := To_Vector ((0 => ((164, 1),  195,  1, 
(2147483647, 0),  0)));
+            Table.States (150).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (164, 1),  99, 311)));
             Table.States (151).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (151), 72, 310);
-            Add_Action (Table.States (151), 97, 311);
-            Table.States (151).Kernel := To_Vector (((191, 221, 2, False), 
(191, 221, 1, False)));
-            Table.States (151).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 311)));
-            Table.States (152).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (152), 33, 312);
-            Add_Action (Table.States (152), 42, 313);
-            Add_Action (Table.States (152), 71, Reduce, (164, 0), 1, null, 
null);
-            Add_Conflict (Table.States (152), 71, (240, 5), 1, name_5'Access, 
name_5_check'Access);
-            Add_Action (Table.States (152), 76, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (152), 82, 314);
-            Add_Action (Table.States (152), 85, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (152), 102, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (152), 103, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Table.States (152).Kernel := To_Vector (((164, 105, 0, False), 
(231, 105, 5, False), (231, 105, 4, False),
-            (231, 105, 3, False), (231, 105, 3, False), (231, 105, 2, False), 
(231, 105, 2, False), (240, 105, 0,
-            False)));
-            Table.States (152).Minimal_Complete_Actions := To_Vector 
(((Reduce, 164, 1), (Reduce, 240, 1)));
-            Table.States (153).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (153), 71, Reduce, (164, 1), 1, null, 
null);
-            Add_Conflict (Table.States (153), 71, (240, 7), 1, null, 
name_7_check'Access);
-            Add_Action (Table.States (153), 76, Reduce, (240, 7), 1, null, 
name_7_check'Access);
-            Add_Action (Table.States (153), 85, Reduce, (240, 7), 1, null, 
name_7_check'Access);
-            Add_Action (Table.States (153), 102, Reduce, (240, 7), 1, null, 
name_7_check'Access);
-            Add_Action (Table.States (153), 103, Reduce, (240, 7), 1, null, 
name_7_check'Access);
-            Table.States (153).Kernel := To_Vector (((164, 106, 0, False), 
(240, 106, 0, False)));
-            Table.States (153).Minimal_Complete_Actions := To_Vector 
(((Reduce, 164, 1), (Reduce, 240, 1)));
+            Add_Action (Table.States (151), (72, 99), (223, 0),  1, null, 
identifier_opt_0_check'Access);
+            Table.States (151).Kernel := To_Vector ((0 => ((223, 0),  107,  0, 
(223, 0),  1)));
+            Table.States (151).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (223, 0),  1)));
+            Table.States (152).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (152), 72, (193, 0), 312);
+            Add_Action (Table.States (152), 99, (193, 1), 313);
+            Table.States (152).Kernel := To_Vector ((((193, 0),  223,  2, 
(2147483647, 0),  0), ((193, 1),  223,  1,
+            (2147483647, 0),  0)));
+            Table.States (152).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (193, 1),  99, 313)));
+            Table.States (153).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (153), 33, (233, 2), 314);
+            Add_Action (Table.States (153), 42, (233, 3), 315);
+            Add_Action (Table.States (153), 71, Reduce, (166, 0),  1, null, 
null);
+            Add_Conflict (Table.States (153), 71, (242, 5),  1, name_5'Access, 
name_5_check'Access);
+            Add_Action (Table.States (153), 76, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (153), 84, (233, 0), 316);
+            Add_Action (Table.States (153), 87, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (153), 104, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (153), 105, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Table.States (153).Kernel := To_Vector ((((166, 0),  107,  0, 
(166, 0),  1), ((233, 0),  107,  5,
+            (2147483647, 0),  0), ((233, 1),  107,  4, (2147483647, 0),  0), 
((233, 2),  107,  3, (2147483647, 0),  0),
+            ((233, 3),  107,  3, (2147483647, 0),  0), ((233, 4),  107,  2, 
(2147483647, 0),  0), ((233, 5),  107,  2,
+            (2147483647, 0),  0), ((242, 5),  107,  0, (242, 5),  1)));
+            Table.States (153).Minimal_Complete_Actions := To_Vector 
(((Reduce, (166, 0),  1), (Shift, (233, 3),  42,
+            315), (Shift, (233, 2),  33, 314), (Reduce, (242, 5),  1)));
             Table.States (154).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (154), 71, 315);
-            Add_Conflict (Table.States (154), 71, (240, 3), 1, null, null);
-            Add_Action (Table.States (154), 76, Reduce, (240, 3), 1, null, 
null);
-            Add_Action (Table.States (154), 85, Reduce, (240, 3), 1, null, 
null);
-            Add_Action (Table.States (154), 102, Reduce, (240, 3), 1, null, 
null);
-            Add_Action (Table.States (154), 103, Reduce, (240, 3), 1, null, 
null);
-            Table.States (154).Kernel := To_Vector (((122, 129, 2, False), 
(240, 129, 0, True)));
-            Table.States (154).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 1)));
-            Table.States (154).Minimal_Complete_Actions_Recursive := True;
-            Table.States (155).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (155), 71, 316);
-            Table.States (155).Kernel := To_Vector ((0 => (128, 164, 3, 
False)));
-            Table.States (155).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 71, 316)));
+            Add_Action (Table.States (154), 71, Reduce, (166, 1),  1, null, 
null);
+            Add_Conflict (Table.States (154), 71, (242, 7),  1, null, 
name_7_check'Access);
+            Add_Action (Table.States (154), 76, Reduce, (242, 7),  1, null, 
name_7_check'Access);
+            Add_Action (Table.States (154), 87, Reduce, (242, 7),  1, null, 
name_7_check'Access);
+            Add_Action (Table.States (154), 104, Reduce, (242, 7),  1, null, 
name_7_check'Access);
+            Add_Action (Table.States (154), 105, Reduce, (242, 7),  1, null, 
name_7_check'Access);
+            Table.States (154).Kernel := To_Vector ((((166, 1),  108,  0, 
(166, 1),  1), ((242, 7),  108,  0, (242, 7),
+             1)));
+            Table.States (154).Minimal_Complete_Actions := To_Vector 
(((Reduce, (166, 1),  1), (Reduce, (242, 7),
+            1)));
+            Table.States (155).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (155), 71, (124, 0), 317);
+            Add_Conflict (Table.States (155), 71, (242, 3),  1, null, null);
+            Add_Action (Table.States (155), 76, Reduce, (242, 3),  1, null, 
null);
+            Add_Action (Table.States (155), 87, Reduce, (242, 3),  1, null, 
null);
+            Add_Action (Table.States (155), 104, Reduce, (242, 3),  1, null, 
null);
+            Add_Action (Table.States (155), 105, Reduce, (242, 3),  1, null, 
null);
+            Table.States (155).Kernel := To_Vector ((((124, 0),  131,  2, 
(2147483647, 0),  0), ((242, 3),  131,  0,
+            (242, 3),  1)));
+            Table.States (155).Minimal_Complete_Actions := To_Vector (((Shift, 
(124, 0),  71, 317), (Reduce, (242, 3),
+            1)));
             Table.States (156).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (156), (1 =>  37), (232, 0), 1, null, 
null);
-            Table.States (156).Kernel := To_Vector ((0 => (232, 231, 0, 
False)));
-            Table.States (156).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 232, 1)));
+            Add_Action (Table.States (156), 71, (130, 0), 318);
+            Table.States (156).Kernel := To_Vector ((0 => ((130, 0),  166,  3, 
(2147483647, 0),  0)));
+            Table.States (156).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (130, 0),  71, 318)));
             Table.States (157).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (157), (1 =>  37), (230, 1), 2, 
iteration_scheme_1'Access, null);
-            Table.States (157).Kernel := To_Vector ((0 => (230, 232, 0, 
False)));
-            Table.States (157).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 230, 2)));
-            Table.States (158).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (158), 71, 317);
-            Add_Action (Table.States (158), 76, 236);
-            Add_Action (Table.States (158), 85, 238);
-            Add_Action (Table.States (158), 102, 240);
-            Add_Action (Table.States (158), 103, 241);
-            Table.States (158).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (158), 116, 242);
-            Add_Goto (Table.States (158), 323, 243);
-            Table.States (158).Kernel := To_Vector (((129, 240, 2, True), 
(183, 240, 4, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (282, 240, 13, False), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True), (294, 240, 2, True)));
-            Table.States (158).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 71, 317)));
+            Add_Action (Table.States (157), (1 =>  37), (234, 0),  1, null, 
null);
+            Table.States (157).Kernel := To_Vector ((0 => ((234, 0),  233,  0, 
(234, 0),  1)));
+            Table.States (157).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (234, 0),  1)));
+            Table.States (158).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (158), (1 =>  37), (232, 1),  2, 
iteration_scheme_1'Access, null);
+            Table.States (158).Kernel := To_Vector ((0 => ((232, 1),  234,  0, 
(232, 1),  2)));
+            Table.States (158).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (232, 1),  2)));
             Table.States (159).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (159), 58, 318);
-            Add_Action (Table.States (159), 76, 319);
-            Add_Action (Table.States (159), 85, 238);
-            Add_Action (Table.States (159), 102, 240);
-            Add_Action (Table.States (159), 103, 241);
-            Table.States (159).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (159), 116, 242);
-            Add_Goto (Table.States (159), 200, 320);
-            Add_Goto (Table.States (159), 253, 321);
-            Add_Goto (Table.States (159), 292, 322);
-            Add_Goto (Table.States (159), 323, 243);
-            Table.States (159).Kernel := To_Vector (((129, 240, 2, True), 
(208, 240, 1, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (159).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 58, 318)));
-            Table.States (160).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (160), 79, 31);
-            Add_Action (Table.States (160), 105, 120);
-            Add_Action (Table.States (160), 106, 34);
-            Add_Action (Table.States (160), 107, 35);
-            Table.States (160).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (160), 129, 42);
-            Add_Goto (Table.States (160), 240, 323);
-            Add_Goto (Table.States (160), 273, 93);
-            Add_Goto (Table.States (160), 294, 98);
-            Table.States (160).Kernel := To_Vector ((0 => (216, 29, 4, 
False)));
-            Table.States (160).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
+            Add_Action (Table.States (159), 71, (185, 0), 319);
+            Add_Action (Table.States (159), 76, (118, 0), 237);
+            Add_Action (Table.States (159), 87, (296, 0), 239);
+            Add_Action (Table.States (159), 104, (325, 0), 241);
+            Add_Action (Table.States (159), 105, (325, 1), 242);
+            Table.States (159).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (159), 118, 243);
+            Add_Goto (Table.States (159), 325, 244);
+            Table.States (159).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((185, 0),  242,  4,
+            (2147483647, 0),  0), ((242, 0),  242,  5, (2147483647, 0),  0), 
((242, 1),  242,  2, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((284, 0),  242,  13, 
(2147483647, 0),  0), ((296, 0),  242,  2,
+            (2147483647, 0),  0), ((296, 1),  242,  2, (2147483647, 0),  0), 
((296, 2),  242,  2, (2147483647, 0),  0),
+            ((296, 3),  242,  2, (2147483647, 0),  0)));
+            Table.States (159).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (185, 0),  71, 319)));
+            Table.States (160).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (160), 58, (294, 0), 320);
+            Add_Action (Table.States (160), 76, (118, 0), 321);
+            Add_Action (Table.States (160), 87, (296, 0), 239);
+            Add_Action (Table.States (160), 104, (325, 0), 241);
+            Add_Action (Table.States (160), 105, (325, 1), 242);
+            Table.States (160).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (160), 118, 243);
+            Add_Goto (Table.States (160), 202, 322);
+            Add_Goto (Table.States (160), 255, 323);
+            Add_Goto (Table.States (160), 294, 324);
+            Add_Goto (Table.States (160), 325, 244);
+            Table.States (160).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((210, 0),  242,  1,
+            (2147483647, 0),  0), ((242, 0),  242,  5, (2147483647, 0),  0), 
((242, 1),  242,  2, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (160).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (294, 0),  58, 320)));
             Table.States (161).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (161), 79, 31);
-            Add_Action (Table.States (161), 105, 120);
-            Add_Action (Table.States (161), 106, 34);
-            Add_Action (Table.States (161), 107, 35);
+            Add_Action (Table.States (161), 81, (242, 8), 31);
+            Add_Action (Table.States (161), 107, (242, 5), 120);
+            Add_Action (Table.States (161), 108, (242, 7), 34);
+            Add_Action (Table.States (161), 109, (242, 6), 35);
             Table.States (161).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (161), 129, 42);
-            Add_Goto (Table.States (161), 240, 324);
-            Add_Goto (Table.States (161), 273, 93);
-            Add_Goto (Table.States (161), 294, 98);
-            Table.States (161).Kernel := To_Vector ((0 => (216, 47, 4, 
False)));
-            Table.States (161).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
+            Add_Goto (Table.States (161), 131, 42);
+            Add_Goto (Table.States (161), 242, 325);
+            Add_Goto (Table.States (161), 275, 93);
+            Add_Goto (Table.States (161), 296, 98);
+            Table.States (161).Kernel := To_Vector ((0 => ((218, 2),  29,  4, 
(2147483647, 0),  0)));
+            Table.States (161).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
             Table.States (162).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (162), 79, 31);
-            Add_Action (Table.States (162), 105, 120);
-            Add_Action (Table.States (162), 106, 34);
-            Add_Action (Table.States (162), 107, 35);
+            Add_Action (Table.States (162), 81, (242, 8), 31);
+            Add_Action (Table.States (162), 107, (242, 5), 120);
+            Add_Action (Table.States (162), 108, (242, 7), 34);
+            Add_Action (Table.States (162), 109, (242, 6), 35);
             Table.States (162).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (162), 129, 42);
-            Add_Goto (Table.States (162), 240, 325);
-            Add_Goto (Table.States (162), 273, 93);
-            Add_Goto (Table.States (162), 294, 98);
-            Table.States (162).Kernel := To_Vector ((0 => (216, 50, 4, 
False)));
-            Table.States (162).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (163).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (163), 105, 326);
-            Table.States (163).Kernel := To_Vector (((202, 69, 4, False), 
(202, 69, 4, False), (202, 69, 2, False)));
-            Table.States (163).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 326)));
-            Table.States (164).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (164), 29, 7);
-            Add_Action (Table.States (164), 47, 327);
-            Add_Action (Table.States (164), 50, 18);
-            Table.States (164).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (164), 208, 62);
-            Add_Goto (Table.States (164), 263, 88);
-            Add_Goto (Table.States (164), 313, 328);
-            Table.States (164).Kernel := To_Vector (((201, 74, 6, False), 
(201, 74, 5, False), (201, 74, 5, False),
-            (201, 74, 3, False), (205, 74, 6, False)));
-            Table.States (164).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 50, 18)));
-            Table.States (165).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (165), (82, 84), (220, 1), 1, 
identifier_list_1'Access, null);
-            Table.States (165).Kernel := To_Vector ((0 => (220, 105, 0, 
False)));
-            Table.States (165).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 1)));
-            Table.States (166).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (166), (29, 47, 48, 50, 69, 71, 74, 105), 
(213, 0), 1, null, null);
-            Table.States (166).Kernel := To_Vector ((0 => (213, 199, 0, 
False)));
-            Table.States (166).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 213, 1)));
+            Add_Goto (Table.States (162), 131, 42);
+            Add_Goto (Table.States (162), 242, 326);
+            Add_Goto (Table.States (162), 275, 93);
+            Add_Goto (Table.States (162), 296, 98);
+            Table.States (162).Kernel := To_Vector ((0 => ((218, 0),  47,  4, 
(2147483647, 0),  0)));
+            Table.States (162).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (163).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (163), 81, (242, 8), 31);
+            Add_Action (Table.States (163), 107, (242, 5), 120);
+            Add_Action (Table.States (163), 108, (242, 7), 34);
+            Add_Action (Table.States (163), 109, (242, 6), 35);
+            Table.States (163).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (163), 131, 42);
+            Add_Goto (Table.States (163), 242, 327);
+            Add_Goto (Table.States (163), 275, 93);
+            Add_Goto (Table.States (163), 296, 98);
+            Table.States (163).Kernel := To_Vector ((0 => ((218, 1),  50,  4, 
(2147483647, 0),  0)));
+            Table.States (163).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (164).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (164), 107, (204, 0), 328);
+            Table.States (164).Kernel := To_Vector ((((204, 0),  69,  4, 
(2147483647, 0),  0), ((204, 1),  69,  4,
+            (2147483647, 0),  0), ((204, 2),  69,  2, (2147483647, 0),  0)));
+            Table.States (164).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (204, 0),  107, 328)));
+            Table.States (165).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (165), 29, (210, 0), 7);
+            Add_Action (Table.States (165), 47, (207, 0), 329);
+            Add_Action (Table.States (165), 50, (265, 0), 18);
+            Table.States (165).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (165), 210, 62);
+            Add_Goto (Table.States (165), 265, 88);
+            Add_Goto (Table.States (165), 315, 330);
+            Table.States (165).Kernel := To_Vector ((((203, 0),  74,  6, 
(2147483647, 0),  0), ((203, 1),  74,  5,
+            (2147483647, 0),  0), ((203, 2),  74,  5, (2147483647, 0),  0), 
((203, 3),  74,  3, (2147483647, 0),  0),
+            ((207, 0),  74,  6, (2147483647, 0),  0)));
+            Table.States (165).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (265, 0),  50, 18)));
+            Table.States (166).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (166), (84, 86), (222, 1),  1, 
identifier_list_1'Access, null);
+            Table.States (166).Kernel := To_Vector ((0 => ((222, 1),  107,  0, 
(222, 1),  1)));
+            Table.States (166).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (222, 1),  1)));
             Table.States (167).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (167), (29, 47, 48, 50, 69, 71, 74, 105), 
(213, 2), 1, null, null);
-            Table.States (167).Kernel := To_Vector ((0 => (213, 201, 0, 
False)));
-            Table.States (167).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 213, 1)));
+            Add_Action (Table.States (167), (29, 47, 48, 50, 69, 71, 74, 107), 
(215, 0),  1, null, null);
+            Table.States (167).Kernel := To_Vector ((0 => ((215, 0),  201,  0, 
(215, 0),  1)));
+            Table.States (167).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (215, 0),  1)));
             Table.States (168).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (168), (29, 47, 48, 50, 69, 71, 74, 105), 
(213, 1), 1, null, null);
-            Table.States (168).Kernel := To_Vector ((0 => (213, 202, 0, 
False)));
-            Table.States (168).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 213, 1)));
+            Add_Action (Table.States (168), (29, 47, 48, 50, 69, 71, 74, 107), 
(215, 2),  1, null, null);
+            Table.States (168).Kernel := To_Vector ((0 => ((215, 2),  203,  0, 
(215, 2),  1)));
+            Table.States (168).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (215, 2),  1)));
             Table.States (169).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (169), (29, 47, 48, 50, 69, 71, 74, 105), 
(213, 3), 1, null, null);
-            Table.States (169).Kernel := To_Vector ((0 => (213, 205, 0, 
False)));
-            Table.States (169).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 213, 1)));
+            Add_Action (Table.States (169), (29, 47, 48, 50, 69, 71, 74, 107), 
(215, 1),  1, null, null);
+            Table.States (169).Kernel := To_Vector ((0 => ((215, 1),  204,  0, 
(215, 1),  1)));
+            Table.States (169).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (215, 1),  1)));
             Table.States (170).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (170), 29, Reduce, (211, 0), 2, 
generic_formal_part_0'Access, null);
-            Add_Action (Table.States (170), 47, Reduce, (211, 0), 2, 
generic_formal_part_0'Access, null);
-            Add_Action (Table.States (170), 48, 16);
-            Add_Action (Table.States (170), 50, Reduce, (211, 0), 2, 
generic_formal_part_0'Access, null);
-            Add_Action (Table.States (170), 69, 163);
-            Add_Action (Table.States (170), 71, 28);
-            Add_Action (Table.States (170), 74, 164);
-            Add_Action (Table.States (170), 105, 165);
-            Table.States (170).Goto_List.Set_Capacity (8);
-            Add_Goto (Table.States (170), 199, 166);
-            Add_Goto (Table.States (170), 201, 167);
-            Add_Goto (Table.States (170), 202, 168);
-            Add_Goto (Table.States (170), 205, 169);
-            Add_Goto (Table.States (170), 213, 329);
-            Add_Goto (Table.States (170), 220, 172);
-            Add_Goto (Table.States (170), 258, 173);
-            Add_Goto (Table.States (170), 332, 174);
-            Table.States (170).Kernel := To_Vector (((211, 212, 0, False), 
(212, 212, 3, True)));
-            Table.States (170).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 211, 2)));
+            Add_Action (Table.States (170), (29, 47, 48, 50, 69, 71, 74, 107), 
(215, 3),  1, null, null);
+            Table.States (170).Kernel := To_Vector ((0 => ((215, 3),  207,  0, 
(215, 3),  1)));
+            Table.States (170).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (215, 3),  1)));
             Table.States (171).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (171), (29, 47, 48, 50, 69, 71, 74, 105), 
(212, 1), 1, null, null);
-            Table.States (171).Kernel := To_Vector ((0 => (212, 213, 0, 
False)));
-            Table.States (171).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 212, 1)));
-            Table.States (172).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (172), 82, 330);
-            Add_Action (Table.States (172), 84, 235);
-            Table.States (172).Kernel := To_Vector (((199, 220, 4, False), 
(199, 220, 5, False), (199, 220, 3, False),
-            (199, 220, 4, False), (220, 220, 2, True)));
-            Table.States (172).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 82, 330)));
-            Table.States (173).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (173), (29, 47, 48, 50, 69, 71, 74, 105), 
(213, 4), 1, null, null);
-            Table.States (173).Kernel := To_Vector ((0 => (213, 258, 0, 
False)));
-            Table.States (173).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 213, 1)));
+            Add_Action (Table.States (171), 29, Reduce, (213, 0),  2, 
generic_formal_part_0'Access, null);
+            Add_Action (Table.States (171), 47, Reduce, (213, 0),  2, 
generic_formal_part_0'Access, null);
+            Add_Action (Table.States (171), 48, (260, 0), 16);
+            Add_Action (Table.States (171), 50, Reduce, (213, 0),  2, 
generic_formal_part_0'Access, null);
+            Add_Action (Table.States (171), 69, (204, 0), 164);
+            Add_Action (Table.States (171), 71, (334, 0), 28);
+            Add_Action (Table.States (171), 74, (203, 0), 165);
+            Add_Action (Table.States (171), 107, (222, 1), 166);
+            Table.States (171).Goto_List.Set_Capacity (8);
+            Add_Goto (Table.States (171), 201, 167);
+            Add_Goto (Table.States (171), 203, 168);
+            Add_Goto (Table.States (171), 204, 169);
+            Add_Goto (Table.States (171), 207, 170);
+            Add_Goto (Table.States (171), 215, 331);
+            Add_Goto (Table.States (171), 222, 173);
+            Add_Goto (Table.States (171), 260, 174);
+            Add_Goto (Table.States (171), 334, 175);
+            Table.States (171).Kernel := To_Vector ((((213, 0),  214,  0, 
(213, 0),  2), ((214, 0),  214,  3,
+            (2147483647, 0),  0)));
+            Table.States (171).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (213, 0),  2)));
+            Table.States (172).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (172), (29, 47, 48, 50, 69, 71, 74, 107), 
(214, 1),  1, null, null);
+            Table.States (172).Kernel := To_Vector ((0 => ((214, 1),  215,  0, 
(214, 1),  1)));
+            Table.States (172).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (214, 1),  1)));
+            Table.States (173).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (173), 84, (201, 0), 332);
+            Add_Action (Table.States (173), 86, (222, 0), 236);
+            Table.States (173).Kernel := To_Vector ((((201, 0),  222,  4, 
(2147483647, 0),  0), ((201, 1),  222,  5,
+            (2147483647, 0),  0), ((201, 2),  222,  3, (2147483647, 0),  0), 
((201, 3),  222,  4, (2147483647, 0),  0),
+            ((222, 0),  222,  2, (2147483647, 0),  0)));
+            Table.States (173).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (201, 0),  84, 332)));
+         end Subr_3;
+         procedure Subr_4
+         is begin
             Table.States (174).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (174), (29, 47, 48, 50, 69, 71, 74, 105), 
(213, 5), 1, null, null);
-            Table.States (174).Kernel := To_Vector ((0 => (213, 332, 0, 
False)));
-            Table.States (174).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 213, 1)));
-            Table.States (175).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (175), 97, 331);
-            Table.States (175).Kernel := To_Vector ((0 => (304, 105, 1, 
False)));
-            Table.States (175).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 331)));
+            Add_Action (Table.States (174), (29, 47, 48, 50, 69, 71, 74, 107), 
(215, 4),  1, null, null);
+            Table.States (174).Kernel := To_Vector ((0 => ((215, 4),  260,  0, 
(215, 4),  1)));
+            Table.States (174).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (215, 4),  1)));
+            Table.States (175).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (175), (29, 47, 48, 50, 69, 71, 74, 107), 
(215, 5),  1, null, null);
+            Table.States (175).Kernel := To_Vector ((0 => ((215, 5),  334,  0, 
(215, 5),  1)));
+            Table.States (175).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (215, 5),  1)));
             Table.States (176).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (176), 68, 332);
-            Table.States (176).Kernel := To_Vector (((223, 193, 7, False), 
(223, 193, 5, False), (223, 193, 6, False),
-            (223, 193, 4, False)));
-            Table.States (176).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 68, 332)));
+            Add_Action (Table.States (176), 99, (306, 3), 333);
+            Table.States (176).Kernel := To_Vector ((0 => ((306, 3),  107,  1, 
(2147483647, 0),  0)));
+            Table.States (176).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (306, 3),  99, 333)));
             Table.States (177).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (177), 74, 333);
-            Table.States (177).Kernel := To_Vector ((0 => (333, 49, 3, 
False)));
-            Table.States (177).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 333)));
-            Table.States (178).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (178), 79, 31);
-            Add_Action (Table.States (178), 105, 120);
-            Add_Action (Table.States (178), 106, 34);
-            Add_Action (Table.States (178), 107, 35);
-            Table.States (178).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (178), 129, 42);
-            Add_Goto (Table.States (178), 239, 334);
-            Add_Goto (Table.States (178), 240, 220);
-            Add_Goto (Table.States (178), 273, 93);
-            Add_Goto (Table.States (178), 294, 98);
-            Table.States (178).Kernel := To_Vector ((0 => (333, 74, 2, 
False)));
-            Table.States (178).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (179).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (179), (25, 29, 50), (247, 0), 2, 
overriding_indicator_opt_0'Access, null);
-            Table.States (179).Kernel := To_Vector ((0 => (247, 46, 0, 
False)));
-            Table.States (179).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 247, 2)));
-            Table.States (180).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (180), (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, 79, 94, 105, 106,
-            107, 108), (304, 0), 2, simple_statement_0'Access, null);
-            Table.States (180).Kernel := To_Vector ((0 => (304, 97, 0, 
False)));
-            Table.States (180).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 304, 2)));
-            Table.States (181).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (181), 79, 31);
-            Add_Action (Table.States (181), 105, 120);
-            Add_Action (Table.States (181), 106, 34);
-            Add_Action (Table.States (181), 107, 35);
-            Table.States (181).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (181), 129, 42);
-            Add_Goto (Table.States (181), 240, 335);
-            Add_Goto (Table.States (181), 273, 93);
-            Add_Goto (Table.States (181), 294, 98);
-            Table.States (181).Kernel := To_Vector (((248, 14, 5, False), 
(248, 14, 4, False), (249, 14, 4, False)));
-            Table.States (181).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (182).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (182), 35, 336);
-            Add_Conflict (Table.States (182), 35, (123, 1), 0, null, null);
-            Add_Action (Table.States (182), 56, 337);
-            Add_Action (Table.States (182), 74, 338);
-            Add_Action (Table.States (182), 76, 236);
-            Add_Action (Table.States (182), 85, 238);
-            Add_Action (Table.States (182), 102, 240);
-            Add_Action (Table.States (182), 103, 241);
-            Table.States (182).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (182), 116, 242);
-            Add_Goto (Table.States (182), 123, 339);
-            Add_Goto (Table.States (182), 323, 243);
-            Table.States (182).Kernel := To_Vector (((129, 240, 2, True), 
(214, 240, 4, False), (240, 240, 5, True),
-            (240, 240, 2, True), (251, 240, 3, False), (252, 240, 3, False), 
(252, 240, 2, False), (273, 240, 3, True),
-            (294, 240, 2, True), (294, 240, 2, True), (294, 240, 2, True), 
(294, 240, 2, True)));
-            Table.States (182).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (183).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (183), 76, 340);
-            Add_Action (Table.States (183), 97, 341);
-            Table.States (183).Kernel := To_Vector (((258, 105, 3, False), 
(258, 105, 5, False), (258, 105, 1,
-            False)));
-            Table.States (183).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 341)));
-            Table.States (184).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (184), 79, 31);
-            Add_Action (Table.States (184), 105, 342);
-            Add_Action (Table.States (184), 106, 153);
-            Add_Action (Table.States (184), 107, 35);
-            Table.States (184).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (184), 129, 154);
-            Add_Goto (Table.States (184), 164, 155);
-            Add_Goto (Table.States (184), 240, 158);
-            Add_Goto (Table.States (184), 273, 93);
-            Add_Goto (Table.States (184), 294, 98);
-            Table.States (184).Kernel := To_Vector (((122, 28, 5, False), 
(128, 28, 4, False), (183, 28, 5, False),
-            (282, 28, 14, False)));
-            Table.States (184).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 342)));
+            Add_Action (Table.States (177), 68, (225, 0), 334);
+            Table.States (177).Kernel := To_Vector ((((225, 0),  195,  7, 
(2147483647, 0),  0), ((225, 1),  195,  5,
+            (2147483647, 0),  0), ((225, 2),  195,  6, (2147483647, 0),  0), 
((225, 3),  195,  4, (2147483647, 0),
+            0)));
+            Table.States (177).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (225, 0),  68, 334)));
+            Table.States (178).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (178), 74, (335, 0), 335);
+            Table.States (178).Kernel := To_Vector ((0 => ((335, 0),  49,  3, 
(2147483647, 0),  0)));
+            Table.States (178).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (335, 0),  74, 335)));
+            Table.States (179).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (179), 81, (242, 8), 31);
+            Add_Action (Table.States (179), 107, (242, 5), 120);
+            Add_Action (Table.States (179), 108, (242, 7), 34);
+            Add_Action (Table.States (179), 109, (242, 6), 35);
+            Table.States (179).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (179), 131, 42);
+            Add_Goto (Table.States (179), 241, 336);
+            Add_Goto (Table.States (179), 242, 221);
+            Add_Goto (Table.States (179), 275, 93);
+            Add_Goto (Table.States (179), 296, 98);
+            Table.States (179).Kernel := To_Vector ((0 => ((335, 1),  74,  2, 
(2147483647, 0),  0)));
+            Table.States (179).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (180).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (180), (25, 29, 50), (249, 0),  2, 
overriding_indicator_opt_0'Access, null);
+            Table.States (180).Kernel := To_Vector ((0 => ((249, 0),  46,  0, 
(249, 0),  2)));
+            Table.States (180).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (249, 0),  2)));
+            Table.States (181).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (181), (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, 81, 96, 107, 108,
+            109, 110), (306, 0),  2, simple_statement_0'Access, null);
+            Table.States (181).Kernel := To_Vector ((0 => ((306, 0),  99,  0, 
(306, 0),  2)));
+            Table.States (181).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (306, 0),  2)));
+            Table.States (182).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (182), 81, (242, 8), 31);
+            Add_Action (Table.States (182), 107, (242, 5), 120);
+            Add_Action (Table.States (182), 108, (242, 7), 34);
+            Add_Action (Table.States (182), 109, (242, 6), 35);
+            Table.States (182).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (182), 131, 42);
+            Add_Goto (Table.States (182), 242, 337);
+            Add_Goto (Table.States (182), 275, 93);
+            Add_Goto (Table.States (182), 296, 98);
+            Table.States (182).Kernel := To_Vector ((((250, 0),  14,  5, 
(2147483647, 0),  0), ((250, 1),  14,  4,
+            (2147483647, 0),  0), ((251, 0),  14,  4, (2147483647, 0),  0)));
+            Table.States (182).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (183).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (183), 35, (216, 0), 338);
+            Add_Conflict (Table.States (183), 35, (125, 1),  0, null, null);
+            Add_Action (Table.States (183), 56, (253, 0), 339);
+            Add_Action (Table.States (183), 74, (125, 0), 340);
+            Add_Action (Table.States (183), 76, (118, 0), 237);
+            Add_Action (Table.States (183), 87, (296, 0), 239);
+            Add_Action (Table.States (183), 104, (325, 0), 241);
+            Add_Action (Table.States (183), 105, (325, 1), 242);
+            Table.States (183).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (183), 118, 243);
+            Add_Goto (Table.States (183), 125, 341);
+            Add_Goto (Table.States (183), 325, 244);
+            Table.States (183).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((216, 0),  242,  4,
+            (2147483647, 0),  0), ((242, 0),  242,  5, (2147483647, 0),  0), 
((242, 1),  242,  2, (2147483647, 0),  0),
+            ((253, 0),  242,  3, (2147483647, 0),  0), ((254, 0),  242,  3, 
(2147483647, 0),  0), ((254, 1),  242,  2,
+            (2147483647, 0),  0), ((275, 0),  242,  3, (2147483647, 0),  0), 
((296, 0),  242,  2, (2147483647, 0),  0),
+            ((296, 1),  242,  2, (2147483647, 0),  0), ((296, 2),  242,  2, 
(2147483647, 0),  0), ((296, 3),  242,  2,
+            (2147483647, 0),  0)));
+            Table.States (183).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (184).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (184), 76, (260, 0), 342);
+            Add_Action (Table.States (184), 99, (260, 2), 343);
+            Table.States (184).Kernel := To_Vector ((((260, 0),  107,  3, 
(2147483647, 0),  0), ((260, 1),  107,  5,
+            (2147483647, 0),  0), ((260, 2),  107,  1, (2147483647, 0),  0)));
+            Table.States (184).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (260, 2),  99, 343)));
             Table.States (185).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (185), 79, 31);
-            Add_Action (Table.States (185), 105, 120);
-            Add_Action (Table.States (185), 106, 34);
-            Add_Action (Table.States (185), 107, 35);
+            Add_Action (Table.States (185), 81, (242, 8), 31);
+            Add_Action (Table.States (185), 107, (166, 0), 344);
+            Add_Action (Table.States (185), 108, (166, 1), 154);
+            Add_Action (Table.States (185), 109, (242, 6), 35);
             Table.States (185).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (185), 129, 42);
-            Add_Goto (Table.States (185), 239, 343);
-            Add_Goto (Table.States (185), 240, 220);
-            Add_Goto (Table.States (185), 273, 93);
-            Add_Goto (Table.States (185), 294, 98);
-            Table.States (185).Kernel := To_Vector ((0 => (333, 74, 2, 
False)));
-            Table.States (185).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (186).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (186), 82, 344);
-            Add_Conflict (Table.States (186), 82, (220, 1), 1, 
identifier_list_1'Access, null);
-            Add_Action (Table.States (186), 84, Reduce, (220, 1), 1, 
identifier_list_1'Access, null);
-            Table.States (186).Kernel := To_Vector (((220, 105, 0, False), 
(246, 105, 5, False), (246, 105, 6, False),
-            (246, 105, 5, False)));
-            Table.States (186).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 1)));
-            Table.States (187).Action_List.Set_Capacity (40);
-            Add_Action (Table.States (187), (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, 79, 
94, 105, 106, 107, 108), (143, 2), 2,
+            Add_Goto (Table.States (185), 131, 155);
+            Add_Goto (Table.States (185), 166, 156);
+            Add_Goto (Table.States (185), 242, 159);
+            Add_Goto (Table.States (185), 275, 93);
+            Add_Goto (Table.States (185), 296, 98);
+            Table.States (185).Kernel := To_Vector ((((124, 0),  28,  5, 
(2147483647, 0),  0), ((130, 0),  28,  4,
+            (2147483647, 0),  0), ((185, 0),  28,  5, (2147483647, 0),  0), 
((284, 0),  28,  14, (2147483647, 0),  0)));
+            Table.States (185).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (166, 0),  107, 344)));
+            Table.States (186).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (186), 81, (242, 8), 31);
+            Add_Action (Table.States (186), 107, (242, 5), 120);
+            Add_Action (Table.States (186), 108, (242, 7), 34);
+            Add_Action (Table.States (186), 109, (242, 6), 35);
+            Table.States (186).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (186), 131, 42);
+            Add_Goto (Table.States (186), 241, 345);
+            Add_Goto (Table.States (186), 242, 221);
+            Add_Goto (Table.States (186), 275, 93);
+            Add_Goto (Table.States (186), 296, 98);
+            Table.States (186).Kernel := To_Vector ((0 => ((335, 2),  74,  2, 
(2147483647, 0),  0)));
+            Table.States (186).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (187).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (187), 84, (248, 0), 346);
+            Add_Conflict (Table.States (187), 84, (222, 1),  1, 
identifier_list_1'Access, null);
+            Add_Action (Table.States (187), 86, Reduce, (222, 1),  1, 
identifier_list_1'Access, null);
+            Table.States (187).Kernel := To_Vector ((((222, 1),  107,  0, 
(222, 1),  1), ((248, 0),  107,  5,
+            (2147483647, 0),  0), ((248, 1),  107,  6, (2147483647, 0),  0), 
((248, 2),  107,  5, (2147483647, 0),
+            0)));
+            Table.States (187).Minimal_Complete_Actions := To_Vector 
(((Reduce, (222, 1),  1), (Shift, (248, 0),  84,
+            346)));
+            Table.States (188).Action_List.Set_Capacity (40);
+            Add_Action (Table.States (188), (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, 81, 
96, 107, 108, 109, 110), (145, 2),  2,
             compilation_unit_2'Access, null);
-            Table.States (187).Kernel := To_Vector ((0 => (143, 158, 0, 
False)));
-            Table.States (187).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 143, 2)));
-            Table.States (188).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (188), 35, Reduce, (254, 1), 0, null, 
null);
-            Add_Action (Table.States (188), 74, Reduce, (254, 1), 0, null, 
null);
-            Add_Action (Table.States (188), 76, 319);
-            Add_Action (Table.States (188), 85, 238);
-            Add_Action (Table.States (188), 97, Reduce, (254, 1), 0, null, 
null);
-            Add_Action (Table.States (188), 102, 240);
-            Add_Action (Table.States (188), 103, 241);
-            Table.States (188).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (188), 116, 242);
-            Add_Goto (Table.States (188), 200, 345);
-            Add_Goto (Table.States (188), 254, 346);
-            Add_Goto (Table.States (188), 323, 243);
-            Table.States (188).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (263, 240, 0, False), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (188).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 254, 0)));
-            Table.States (189).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (189), 105, 347);
-            Table.States (189).Kernel := To_Vector (((265, 14, 4, False), 
(266, 14, 4, False)));
-            Table.States (189).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 347)));
+            Table.States (188).Kernel := To_Vector ((0 => ((145, 2),  160,  0, 
(145, 2),  2)));
+            Table.States (188).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (145, 2),  2)));
+            Table.States (189).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (189), 35, Reduce, (256, 1),  0, null, 
null);
+            Add_Action (Table.States (189), 74, Reduce, (256, 1),  0, null, 
null);
+            Add_Action (Table.States (189), 76, (118, 0), 321);
+            Add_Action (Table.States (189), 87, (296, 0), 239);
+            Add_Action (Table.States (189), 99, Reduce, (256, 1),  0, null, 
null);
+            Add_Action (Table.States (189), 104, (325, 0), 241);
+            Add_Action (Table.States (189), 105, (325, 1), 242);
+            Table.States (189).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (189), 118, 243);
+            Add_Goto (Table.States (189), 202, 347);
+            Add_Goto (Table.States (189), 256, 348);
+            Add_Goto (Table.States (189), 325, 244);
+            Table.States (189).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((265, 0),  242,  0, (256, 1),  0), ((275,
+            0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (189).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (256, 1),  0)));
             Table.States (190).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (190), 105, 348);
-            Table.States (190).Kernel := To_Vector (((272, 69, 7, False), 
(272, 69, 4, False)));
-            Table.States (190).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 348)));
-            Table.States (191).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (191), 35, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (191), 74, 338);
-            Table.States (191).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (191), 123, 349);
-            Table.States (191).Kernel := To_Vector (((305, 105, 6, False), 
(305, 105, 3, False)));
-            Table.States (191).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (192).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (192), (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, 79, 94, 105, 106,
-            107, 108), (277, 2), 2, raise_statement_2'Access, null);
-            Table.States (192).Kernel := To_Vector ((0 => (277, 97, 0, 
False)));
-            Table.States (192).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 277, 2)));
-            Table.States (193).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (193), 74, 350);
-            Add_Action (Table.States (193), 76, 236);
-            Add_Action (Table.States (193), 85, 238);
-            Add_Action (Table.States (193), 97, 351);
-            Add_Action (Table.States (193), 102, 240);
-            Add_Action (Table.States (193), 103, 241);
-            Table.States (193).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (193), 116, 242);
-            Add_Goto (Table.States (193), 323, 243);
-            Table.States (193).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (273, 240, 3, True), (277, 240, 2, False), (277, 240, 1, False), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True), (294, 240, 2, True)));
-            Table.States (193).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 351)));
+            Add_Action (Table.States (190), 107, (267, 0), 349);
+            Table.States (190).Kernel := To_Vector ((((267, 0),  14,  4, 
(2147483647, 0),  0), ((268, 0),  14,  4,
+            (2147483647, 0),  0)));
+            Table.States (190).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (267, 0),  107, 349)));
+            Table.States (191).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (191), 107, (274, 0), 350);
+            Table.States (191).Kernel := To_Vector ((((274, 0),  69,  7, 
(2147483647, 0),  0), ((274, 1),  69,  4,
+            (2147483647, 0),  0)));
+            Table.States (191).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (274, 0),  107, 350)));
+            Table.States (192).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (192), 35, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (192), 74, (125, 0), 340);
+            Table.States (192).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (192), 125, 351);
+            Table.States (192).Kernel := To_Vector ((((307, 0),  107,  6, 
(2147483647, 0),  0), ((307, 1),  107,  3,
+            (2147483647, 0),  0)));
+            Table.States (192).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (193).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (193), (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, 81, 96, 107, 108,
+            109, 110), (279, 2),  2, raise_statement_2'Access, null);
+            Table.States (193).Kernel := To_Vector ((0 => ((279, 2),  99,  0, 
(279, 2),  2)));
+            Table.States (193).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (279, 2),  2)));
             Table.States (194).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (194), 74, 352);
-            Add_Action (Table.States (194), 76, 236);
-            Add_Action (Table.States (194), 85, 238);
-            Add_Action (Table.States (194), 97, 353);
-            Add_Action (Table.States (194), 102, 240);
-            Add_Action (Table.States (194), 103, 241);
+            Add_Action (Table.States (194), 74, (279, 0), 352);
+            Add_Action (Table.States (194), 76, (118, 0), 237);
+            Add_Action (Table.States (194), 87, (296, 0), 239);
+            Add_Action (Table.States (194), 99, (279, 1), 353);
+            Add_Action (Table.States (194), 104, (325, 0), 241);
+            Add_Action (Table.States (194), 105, (325, 1), 242);
             Table.States (194).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (194), 116, 242);
-            Add_Goto (Table.States (194), 323, 243);
-            Table.States (194).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (273, 240, 3, True), (291, 240, 3, False), (291, 240, 1, False), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True), (294, 240, 2, True)));
-            Table.States (194).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 353)));
-            Table.States (195).Action_List.Set_Capacity (25);
-            Add_Action (Table.States (195), 10, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 33, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 38, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 40, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 43, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 55, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 75, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 76, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 78, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 82, 354);
-            Add_Action (Table.States (195), 85, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 87, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 89, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 90, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 92, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 93, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 95, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 96, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 97, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 98, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 99, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 100, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 101, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 102, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (195), 103, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Table.States (195).Kernel := To_Vector (((195, 105, 3, False), 
(195, 105, 2, False), (240, 105, 0,
-            False)));
-            Table.States (195).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 1)));
-         end Subr_3;
-         procedure Subr_4
-         is begin
-            Table.States (196).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (196), 97, 355);
-            Table.States (196).Kernel := To_Vector ((0 => (303, 193, 1, 
False)));
-            Table.States (196).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 355)));
-            Table.States (197).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (197), 21, Reduce, (196, 0), 1, null, 
null);
-            Add_Action (Table.States (197), 97, 356);
-            Table.States (197).Kernel := To_Vector (((196, 195, 0, False), 
(197, 195, 1, False)));
-            Table.States (197).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 196, 1)));
-            Table.States (198).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (198), 21, 357);
-            Table.States (198).Kernel := To_Vector ((0 => (197, 196, 4, 
False)));
-            Table.States (198).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 357)));
-            Table.States (199).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (199), 79, 31);
-            Add_Action (Table.States (199), 105, 120);
-            Add_Action (Table.States (199), 106, 34);
-            Add_Action (Table.States (199), 107, 35);
-            Table.States (199).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (199), 129, 42);
-            Add_Goto (Table.States (199), 240, 358);
-            Add_Goto (Table.States (199), 273, 93);
-            Add_Goto (Table.States (199), 294, 98);
-            Table.States (199).Kernel := To_Vector ((0 => (316, 76, 8, 
False)));
-            Table.States (199).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (200).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (200), 97, 359);
-            Table.States (200).Kernel := To_Vector ((0 => (296, 67, 1, 
False)));
-            Table.States (200).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 359)));
-            Table.States (201).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (201), 3, 122);
-            Add_Action (Table.States (201), 39, 123);
-            Add_Action (Table.States (201), 40, 124);
-            Add_Action (Table.States (201), 41, 125);
-            Add_Action (Table.States (201), 52, 126);
-            Add_Action (Table.States (201), 76, 127);
-            Add_Action (Table.States (201), 79, 31);
-            Add_Action (Table.States (201), 88, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (201), 95, 128);
-            Add_Action (Table.States (201), 96, 129);
-            Add_Action (Table.States (201), 104, 130);
-            Add_Action (Table.States (201), 105, 120);
-            Add_Action (Table.States (201), 106, 34);
-            Add_Action (Table.States (201), 107, 35);
-            Table.States (201).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (201), 118, 131);
-            Add_Goto (Table.States (201), 129, 42);
-            Add_Goto (Table.States (201), 192, 132);
-            Add_Goto (Table.States (201), 193, 360);
-            Add_Goto (Table.States (201), 198, 134);
-            Add_Goto (Table.States (201), 240, 135);
-            Add_Goto (Table.States (201), 259, 136);
-            Add_Goto (Table.States (201), 273, 93);
-            Add_Goto (Table.States (201), 276, 137);
-            Add_Goto (Table.States (201), 283, 138);
-            Add_Goto (Table.States (201), 284, 139);
-            Add_Goto (Table.States (201), 285, 140);
-            Add_Goto (Table.States (201), 286, 141);
-            Add_Goto (Table.States (201), 287, 142);
-            Add_Goto (Table.States (201), 288, 143);
-            Add_Goto (Table.States (201), 294, 98);
-            Add_Goto (Table.States (201), 302, 144);
-            Add_Goto (Table.States (201), 321, 145);
-            Add_Goto (Table.States (201), 322, 146);
-            Add_Goto (Table.States (201), 331, 147);
-            Table.States (201).Kernel := To_Vector (((296, 72, 4, False), 
(296, 72, 3, False), (296, 72, 3, False)));
-            Table.States (201).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (202).Action_List.Set_Capacity (26);
-            Add_Action (Table.States (202), 4, 1);
-            Add_Action (Table.States (202), 5, 2);
-            Add_Action (Table.States (202), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (202), 15, 3);
-            Add_Action (Table.States (202), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (202), 18, 4);
-            Add_Action (Table.States (202), 22, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (202), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (202), 27, 5);
-            Add_Action (Table.States (202), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (202), 31, 9);
-            Add_Action (Table.States (202), 32, 10);
-            Add_Action (Table.States (202), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (202), 41, 13);
-            Add_Action (Table.States (202), 43, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (202), 48, 16);
-            Add_Action (Table.States (202), 52, 20);
-            Add_Action (Table.States (202), 57, 21);
-            Add_Action (Table.States (202), 58, 22);
-            Add_Action (Table.States (202), 61, 24);
-            Add_Action (Table.States (202), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (202), 79, 31);
-            Add_Action (Table.States (202), 94, 32);
-            Add_Action (Table.States (202), 105, 361);
-            Add_Action (Table.States (202), 106, 34);
-            Add_Action (Table.States (202), 107, 35);
-            Table.States (202).Goto_List.Set_Capacity (31);
-            Add_Goto (Table.States (202), 114, 37);
-            Add_Goto (Table.States (202), 124, 39);
-            Add_Goto (Table.States (202), 127, 40);
-            Add_Goto (Table.States (202), 129, 42);
-            Add_Goto (Table.States (202), 132, 43);
-            Add_Goto (Table.States (202), 133, 44);
-            Add_Goto (Table.States (202), 134, 45);
-            Add_Goto (Table.States (202), 140, 48);
-            Add_Goto (Table.States (202), 152, 51);
-            Add_Goto (Table.States (202), 153, 52);
-            Add_Goto (Table.States (202), 162, 54);
-            Add_Goto (Table.States (202), 191, 58);
-            Add_Goto (Table.States (202), 197, 60);
-            Add_Goto (Table.States (202), 218, 69);
-            Add_Goto (Table.States (202), 223, 71);
-            Add_Goto (Table.States (202), 233, 73);
-            Add_Goto (Table.States (202), 240, 74);
-            Add_Goto (Table.States (202), 258, 84);
-            Add_Goto (Table.States (202), 262, 87);
-            Add_Goto (Table.States (202), 273, 93);
-            Add_Goto (Table.States (202), 277, 94);
-            Add_Goto (Table.States (202), 291, 97);
-            Add_Goto (Table.States (202), 294, 98);
-            Add_Goto (Table.States (202), 295, 99);
-            Add_Goto (Table.States (202), 299, 100);
-            Add_Goto (Table.States (202), 300, 362);
-            Add_Goto (Table.States (202), 301, 363);
-            Add_Goto (Table.States (202), 303, 101);
-            Add_Goto (Table.States (202), 304, 102);
-            Add_Goto (Table.States (202), 307, 364);
-            Add_Goto (Table.States (202), 324, 115);
-            Table.States (202).Kernel := To_Vector ((0 => (296, 114, 0, 
False)));
-            Table.States (202).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 0)));
-            Table.States (203).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (203), (22, 24, 43), (296, 5), 1, null, 
null);
-            Table.States (203).Kernel := To_Vector ((0 => (296, 161, 0, 
False)));
-            Table.States (203).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 296, 1)));
-            Table.States (204).Action_List.Set_Capacity (27);
-            Add_Action (Table.States (204), 4, 1);
-            Add_Action (Table.States (204), 5, 2);
-            Add_Action (Table.States (204), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (204), 15, 3);
-            Add_Action (Table.States (204), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (204), 18, 4);
-            Add_Action (Table.States (204), 22, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (204), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (204), 27, 5);
-            Add_Action (Table.States (204), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (204), 31, 9);
-            Add_Action (Table.States (204), 32, 10);
-            Add_Action (Table.States (204), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (204), 41, 13);
-            Add_Action (Table.States (204), 43, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (204), 48, 16);
-            Add_Action (Table.States (204), 52, 20);
-            Add_Action (Table.States (204), 57, 21);
-            Add_Action (Table.States (204), 58, 22);
-            Add_Action (Table.States (204), 61, 24);
-            Add_Action (Table.States (204), 68, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (204), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (204), 79, 31);
-            Add_Action (Table.States (204), 94, 32);
-            Add_Action (Table.States (204), 105, 361);
-            Add_Action (Table.States (204), 106, 34);
-            Add_Action (Table.States (204), 107, 35);
-            Table.States (204).Goto_List.Set_Capacity (31);
-            Add_Goto (Table.States (204), 114, 37);
-            Add_Goto (Table.States (204), 124, 39);
-            Add_Goto (Table.States (204), 127, 40);
-            Add_Goto (Table.States (204), 129, 42);
-            Add_Goto (Table.States (204), 132, 43);
-            Add_Goto (Table.States (204), 133, 44);
-            Add_Goto (Table.States (204), 134, 45);
-            Add_Goto (Table.States (204), 140, 48);
-            Add_Goto (Table.States (204), 152, 51);
-            Add_Goto (Table.States (204), 153, 52);
-            Add_Goto (Table.States (204), 162, 54);
-            Add_Goto (Table.States (204), 191, 58);
-            Add_Goto (Table.States (204), 197, 60);
-            Add_Goto (Table.States (204), 218, 69);
-            Add_Goto (Table.States (204), 223, 71);
-            Add_Goto (Table.States (204), 233, 73);
-            Add_Goto (Table.States (204), 240, 74);
-            Add_Goto (Table.States (204), 258, 84);
-            Add_Goto (Table.States (204), 262, 87);
-            Add_Goto (Table.States (204), 273, 93);
-            Add_Goto (Table.States (204), 277, 94);
-            Add_Goto (Table.States (204), 291, 97);
-            Add_Goto (Table.States (204), 294, 98);
-            Add_Goto (Table.States (204), 295, 99);
-            Add_Goto (Table.States (204), 299, 100);
-            Add_Goto (Table.States (204), 300, 362);
-            Add_Goto (Table.States (204), 301, 365);
-            Add_Goto (Table.States (204), 303, 101);
-            Add_Goto (Table.States (204), 304, 102);
-            Add_Goto (Table.States (204), 307, 364);
-            Add_Goto (Table.States (204), 324, 115);
-            Table.States (204).Kernel := To_Vector (((161, 162, 0, False), 
(325, 162, 0, False)));
-            Table.States (204).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 0)));
-            Table.States (205).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (205), 22, 366);
-            Add_Action (Table.States (205), 43, 367);
-            Table.States (205).Kernel := To_Vector (((153, 179, 4, False), 
(324, 179, 6, False)));
-            Table.States (205).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 22, 366)));
-            Table.States (206).Action_List.Set_Capacity (31);
-            Add_Action (Table.States (206), 4, 1);
-            Add_Action (Table.States (206), 5, 2);
-            Add_Action (Table.States (206), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (206), 15, 3);
-            Add_Action (Table.States (206), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (206), 18, 4);
-            Add_Action (Table.States (206), 22, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (206), 27, 5);
-            Add_Action (Table.States (206), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (206), 31, 9);
-            Add_Action (Table.States (206), 32, 10);
-            Add_Action (Table.States (206), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (206), 41, 13);
-            Add_Action (Table.States (206), 43, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (206), 48, 16);
-            Add_Action (Table.States (206), 52, 20);
-            Add_Action (Table.States (206), 57, 21);
-            Add_Action (Table.States (206), 58, 22);
-            Add_Action (Table.States (206), 61, 24);
-            Add_Action (Table.States (206), 68, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (206), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (206), 76, 236);
-            Add_Action (Table.States (206), 79, 31);
-            Add_Action (Table.States (206), 85, 238);
-            Add_Action (Table.States (206), 94, 32);
-            Add_Action (Table.States (206), 97, 239);
-            Add_Action (Table.States (206), 102, 240);
-            Add_Action (Table.States (206), 103, 241);
-            Add_Action (Table.States (206), 105, 361);
-            Add_Action (Table.States (206), 106, 34);
-            Add_Action (Table.States (206), 107, 35);
-            Table.States (206).Goto_List.Set_Capacity (33);
-            Add_Goto (Table.States (206), 114, 37);
-            Add_Goto (Table.States (206), 116, 242);
-            Add_Goto (Table.States (206), 124, 39);
-            Add_Goto (Table.States (206), 127, 40);
-            Add_Goto (Table.States (206), 129, 42);
-            Add_Goto (Table.States (206), 132, 43);
-            Add_Goto (Table.States (206), 133, 44);
-            Add_Goto (Table.States (206), 134, 45);
-            Add_Goto (Table.States (206), 140, 48);
-            Add_Goto (Table.States (206), 152, 51);
-            Add_Goto (Table.States (206), 153, 52);
-            Add_Goto (Table.States (206), 162, 54);
-            Add_Goto (Table.States (206), 191, 58);
-            Add_Goto (Table.States (206), 197, 60);
-            Add_Goto (Table.States (206), 218, 69);
-            Add_Goto (Table.States (206), 223, 71);
-            Add_Goto (Table.States (206), 233, 73);
-            Add_Goto (Table.States (206), 240, 74);
-            Add_Goto (Table.States (206), 258, 84);
-            Add_Goto (Table.States (206), 262, 87);
-            Add_Goto (Table.States (206), 273, 93);
-            Add_Goto (Table.States (206), 277, 94);
-            Add_Goto (Table.States (206), 291, 97);
-            Add_Goto (Table.States (206), 294, 98);
-            Add_Goto (Table.States (206), 295, 99);
-            Add_Goto (Table.States (206), 299, 100);
-            Add_Goto (Table.States (206), 300, 362);
-            Add_Goto (Table.States (206), 301, 368);
-            Add_Goto (Table.States (206), 303, 101);
-            Add_Goto (Table.States (206), 304, 102);
-            Add_Goto (Table.States (206), 307, 364);
-            Add_Goto (Table.States (206), 323, 243);
-            Add_Goto (Table.States (206), 324, 115);
-            Table.States (206).Kernel := To_Vector (((129, 240, 2, True), 
(179, 240, 0, False), (240, 240, 5, True),
-            (240, 240, 2, True), (262, 240, 1, False), (273, 240, 3, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True), (294, 240, 2, True), (325, 240, 0, False)));
-            Table.States (206).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 0)));
-            Table.States (207).Action_List.Set_Capacity (26);
-            Add_Action (Table.States (207), 4, 1);
-            Add_Action (Table.States (207), 5, 2);
-            Add_Action (Table.States (207), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (207), 15, 3);
-            Add_Action (Table.States (207), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (207), 18, 4);
-            Add_Action (Table.States (207), 22, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (207), 27, 5);
-            Add_Action (Table.States (207), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (207), 31, 9);
-            Add_Action (Table.States (207), 32, 10);
-            Add_Action (Table.States (207), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (207), 41, 13);
-            Add_Action (Table.States (207), 43, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (207), 48, 16);
-            Add_Action (Table.States (207), 52, 20);
-            Add_Action (Table.States (207), 57, 21);
-            Add_Action (Table.States (207), 58, 22);
-            Add_Action (Table.States (207), 61, 24);
-            Add_Action (Table.States (207), 68, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (207), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (207), 79, 31);
-            Add_Action (Table.States (207), 94, 32);
-            Add_Action (Table.States (207), 105, 361);
-            Add_Action (Table.States (207), 106, 34);
-            Add_Action (Table.States (207), 107, 35);
-            Table.States (207).Goto_List.Set_Capacity (31);
-            Add_Goto (Table.States (207), 114, 37);
-            Add_Goto (Table.States (207), 124, 39);
-            Add_Goto (Table.States (207), 127, 40);
-            Add_Goto (Table.States (207), 129, 42);
-            Add_Goto (Table.States (207), 132, 43);
-            Add_Goto (Table.States (207), 133, 44);
-            Add_Goto (Table.States (207), 134, 45);
-            Add_Goto (Table.States (207), 140, 48);
-            Add_Goto (Table.States (207), 152, 51);
-            Add_Goto (Table.States (207), 153, 52);
-            Add_Goto (Table.States (207), 162, 54);
-            Add_Goto (Table.States (207), 191, 58);
-            Add_Goto (Table.States (207), 197, 60);
-            Add_Goto (Table.States (207), 218, 69);
-            Add_Goto (Table.States (207), 223, 71);
-            Add_Goto (Table.States (207), 233, 73);
-            Add_Goto (Table.States (207), 240, 74);
-            Add_Goto (Table.States (207), 258, 84);
-            Add_Goto (Table.States (207), 262, 87);
-            Add_Goto (Table.States (207), 273, 93);
-            Add_Goto (Table.States (207), 277, 94);
-            Add_Goto (Table.States (207), 291, 97);
-            Add_Goto (Table.States (207), 294, 98);
-            Add_Goto (Table.States (207), 295, 99);
-            Add_Goto (Table.States (207), 299, 100);
-            Add_Goto (Table.States (207), 300, 362);
-            Add_Goto (Table.States (207), 301, 369);
-            Add_Goto (Table.States (207), 303, 101);
-            Add_Goto (Table.States (207), 304, 102);
-            Add_Goto (Table.States (207), 307, 364);
-            Add_Goto (Table.States (207), 324, 115);
-            Table.States (207).Kernel := To_Vector (((179, 262, 0, False), 
(325, 262, 0, False)));
-            Table.States (207).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 0)));
-            Table.States (208).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (208), (22, 24, 43), (297, 1), 1, 
select_alternative_list_1'Access, null);
-            Table.States (208).Kernel := To_Vector ((0 => (297, 296, 0, 
False)));
-            Table.States (208).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 297, 1)));
+            Add_Goto (Table.States (194), 118, 243);
+            Add_Goto (Table.States (194), 325, 244);
+            Table.States (194).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((275, 0),  242,  3, (2147483647, 0),  0),
+            ((279, 0),  242,  2, (2147483647, 0),  0), ((279, 1),  242,  1, 
(2147483647, 0),  0), ((296, 0),  242,  2,
+            (2147483647, 0),  0), ((296, 1),  242,  2, (2147483647, 0),  0), 
((296, 2),  242,  2, (2147483647, 0),  0),
+            ((296, 3),  242,  2, (2147483647, 0),  0)));
+            Table.States (194).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (279, 1),  99, 353)));
+            Table.States (195).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (195), 74, (293, 0), 354);
+            Add_Action (Table.States (195), 76, (118, 0), 237);
+            Add_Action (Table.States (195), 87, (296, 0), 239);
+            Add_Action (Table.States (195), 99, (293, 1), 355);
+            Add_Action (Table.States (195), 104, (325, 0), 241);
+            Add_Action (Table.States (195), 105, (325, 1), 242);
+            Table.States (195).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (195), 118, 243);
+            Add_Goto (Table.States (195), 325, 244);
+            Table.States (195).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((275, 0),  242,  3, (2147483647, 0),  0),
+            ((293, 0),  242,  3, (2147483647, 0),  0), ((293, 1),  242,  1, 
(2147483647, 0),  0), ((296, 0),  242,  2,
+            (2147483647, 0),  0), ((296, 1),  242,  2, (2147483647, 0),  0), 
((296, 2),  242,  2, (2147483647, 0),  0),
+            ((296, 3),  242,  2, (2147483647, 0),  0)));
+            Table.States (195).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (293, 1),  99, 355)));
+            Table.States (196).Action_List.Set_Capacity (25);
+            Add_Action (Table.States (196), 10, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 33, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 38, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 40, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 43, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 55, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 75, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 76, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 80, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 84, (197, 0), 356);
+            Add_Action (Table.States (196), 87, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 89, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 91, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 92, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 94, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 95, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 97, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 98, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 99, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 100, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 101, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 102, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 103, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 104, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (196), 105, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Table.States (196).Kernel := To_Vector ((((197, 0),  107,  3, 
(2147483647, 0),  0), ((197, 1),  107,  2,
+            (2147483647, 0),  0), ((242, 5),  107,  0, (242, 5),  1)));
+            Table.States (196).Minimal_Complete_Actions := To_Vector (((Shift, 
(197, 0),  84, 356), (Reduce, (242, 5),
+            1)));
+            Table.States (197).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (197), 99, (305, 0), 357);
+            Table.States (197).Kernel := To_Vector ((0 => ((305, 0),  195,  1, 
(2147483647, 0),  0)));
+            Table.States (197).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (305, 0),  99, 357)));
+            Table.States (198).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (198), 21, Reduce, (198, 0),  1, null, 
null);
+            Add_Action (Table.States (198), 99, (199, 1), 358);
+            Table.States (198).Kernel := To_Vector ((((198, 0),  197,  0, 
(198, 0),  1), ((199, 1),  197,  1,
+            (2147483647, 0),  0)));
+            Table.States (198).Minimal_Complete_Actions := To_Vector 
(((Reduce, (198, 0),  1), (Shift, (199, 1),  99,
+            358)));
+            Table.States (199).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (199), 21, (199, 0), 359);
+            Table.States (199).Kernel := To_Vector ((0 => ((199, 0),  198,  4, 
(2147483647, 0),  0)));
+            Table.States (199).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (199, 0),  21, 359)));
+            Table.States (200).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (200), 81, (242, 8), 31);
+            Add_Action (Table.States (200), 107, (242, 5), 120);
+            Add_Action (Table.States (200), 108, (242, 7), 34);
+            Add_Action (Table.States (200), 109, (242, 6), 35);
+            Table.States (200).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (200), 131, 42);
+            Add_Goto (Table.States (200), 242, 360);
+            Add_Goto (Table.States (200), 275, 93);
+            Add_Goto (Table.States (200), 296, 98);
+            Table.States (200).Kernel := To_Vector ((0 => ((318, 0),  76,  8, 
(2147483647, 0),  0)));
+            Table.States (200).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (201).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (201), 99, (298, 4), 361);
+            Table.States (201).Kernel := To_Vector ((0 => ((298, 4),  67,  1, 
(2147483647, 0),  0)));
+            Table.States (201).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (298, 4),  99, 361)));
+            Table.States (202).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (202), 3, (200, 2), 122);
+            Add_Action (Table.States (202), 39, (261, 4), 123);
+            Add_Action (Table.States (202), 40, (200, 3), 124);
+            Add_Action (Table.States (202), 41, (261, 1), 125);
+            Add_Action (Table.States (202), 52, (278, 0), 126);
+            Add_Action (Table.States (202), 76, (120, 0), 127);
+            Add_Action (Table.States (202), 77, (120, 5), 128);
+            Add_Action (Table.States (202), 81, (242, 8), 31);
+            Add_Action (Table.States (202), 90, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (202), 97, (333, 1), 129);
+            Add_Action (Table.States (202), 98, (333, 0), 130);
+            Add_Action (Table.States (202), 106, (261, 0), 131);
+            Add_Action (Table.States (202), 107, (242, 5), 120);
+            Add_Action (Table.States (202), 108, (242, 7), 34);
+            Add_Action (Table.States (202), 109, (242, 6), 35);
+            Table.States (202).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (202), 120, 132);
+            Add_Goto (Table.States (202), 131, 42);
+            Add_Goto (Table.States (202), 194, 133);
+            Add_Goto (Table.States (202), 195, 362);
+            Add_Goto (Table.States (202), 200, 135);
+            Add_Goto (Table.States (202), 242, 136);
+            Add_Goto (Table.States (202), 261, 137);
+            Add_Goto (Table.States (202), 275, 93);
+            Add_Goto (Table.States (202), 278, 138);
+            Add_Goto (Table.States (202), 285, 139);
+            Add_Goto (Table.States (202), 286, 140);
+            Add_Goto (Table.States (202), 287, 141);
+            Add_Goto (Table.States (202), 288, 142);
+            Add_Goto (Table.States (202), 289, 143);
+            Add_Goto (Table.States (202), 290, 144);
+            Add_Goto (Table.States (202), 296, 98);
+            Add_Goto (Table.States (202), 304, 145);
+            Add_Goto (Table.States (202), 323, 146);
+            Add_Goto (Table.States (202), 324, 147);
+            Add_Goto (Table.States (202), 333, 148);
+            Table.States (202).Kernel := To_Vector ((((298, 0),  72,  4, 
(2147483647, 0),  0), ((298, 1),  72,  3,
+            (2147483647, 0),  0), ((298, 2),  72,  3, (2147483647, 0),  0)));
+            Table.States (202).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (203).Action_List.Set_Capacity (26);
+            Add_Action (Table.States (203), 4, (116, 0), 1);
+            Add_Action (Table.States (203), 5, (306, 8), 2);
+            Add_Action (Table.States (203), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (203), 15, (142, 0), 3);
+            Add_Action (Table.States (203), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (203), 18, (164, 0), 4);
+            Add_Action (Table.States (203), 22, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (203), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (203), 27, (193, 0), 5);
+            Add_Action (Table.States (203), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (203), 31, (306, 3), 9);
+            Add_Action (Table.States (203), 32, (225, 0), 10);
+            Add_Action (Table.States (203), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (203), 41, (306, 0), 13);
+            Add_Action (Table.States (203), 43, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (203), 48, (260, 0), 16);
+            Add_Action (Table.States (203), 52, (279, 0), 20);
+            Add_Action (Table.States (203), 57, (293, 0), 21);
+            Add_Action (Table.States (203), 58, (199, 0), 22);
+            Add_Action (Table.States (203), 61, (129, 0), 24);
+            Add_Action (Table.States (203), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (203), 81, (242, 8), 31);
+            Add_Action (Table.States (203), 96, (220, 0), 32);
+            Add_Action (Table.States (203), 107, (134, 0), 363);
+            Add_Action (Table.States (203), 108, (242, 7), 34);
+            Add_Action (Table.States (203), 109, (242, 6), 35);
+            Table.States (203).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (203), 116, 37);
+            Add_Goto (Table.States (203), 126, 39);
+            Add_Goto (Table.States (203), 129, 40);
+            Add_Goto (Table.States (203), 131, 42);
+            Add_Goto (Table.States (203), 134, 43);
+            Add_Goto (Table.States (203), 135, 44);
+            Add_Goto (Table.States (203), 136, 45);
+            Add_Goto (Table.States (203), 142, 48);
+            Add_Goto (Table.States (203), 154, 51);
+            Add_Goto (Table.States (203), 155, 52);
+            Add_Goto (Table.States (203), 164, 54);
+            Add_Goto (Table.States (203), 193, 58);
+            Add_Goto (Table.States (203), 199, 60);
+            Add_Goto (Table.States (203), 220, 69);
+            Add_Goto (Table.States (203), 225, 71);
+            Add_Goto (Table.States (203), 235, 73);
+            Add_Goto (Table.States (203), 242, 74);
+            Add_Goto (Table.States (203), 260, 84);
+            Add_Goto (Table.States (203), 264, 87);
+            Add_Goto (Table.States (203), 275, 93);
+            Add_Goto (Table.States (203), 279, 94);
+            Add_Goto (Table.States (203), 293, 97);
+            Add_Goto (Table.States (203), 296, 98);
+            Add_Goto (Table.States (203), 297, 99);
+            Add_Goto (Table.States (203), 301, 100);
+            Add_Goto (Table.States (203), 302, 364);
+            Add_Goto (Table.States (203), 303, 365);
+            Add_Goto (Table.States (203), 305, 101);
+            Add_Goto (Table.States (203), 306, 102);
+            Add_Goto (Table.States (203), 309, 366);
+            Add_Goto (Table.States (203), 326, 115);
+            Table.States (203).Kernel := To_Vector ((0 => ((298, 3),  116,  0, 
(303, 1),  0)));
+            Table.States (203).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (303, 1),  0)));
+            Table.States (204).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (204), (22, 24, 43), (298, 5),  1, null, 
null);
+            Table.States (204).Kernel := To_Vector ((0 => ((298, 5),  163,  0, 
(298, 5),  1)));
+            Table.States (204).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (298, 5),  1)));
+            Table.States (205).Action_List.Set_Capacity (27);
+            Add_Action (Table.States (205), 4, (116, 0), 1);
+            Add_Action (Table.States (205), 5, (306, 8), 2);
+            Add_Action (Table.States (205), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (205), 15, (142, 0), 3);
+            Add_Action (Table.States (205), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (205), 18, (164, 0), 4);
+            Add_Action (Table.States (205), 22, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (205), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (205), 27, (193, 0), 5);
+            Add_Action (Table.States (205), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (205), 31, (306, 3), 9);
+            Add_Action (Table.States (205), 32, (225, 0), 10);
+            Add_Action (Table.States (205), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (205), 41, (306, 0), 13);
+            Add_Action (Table.States (205), 43, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (205), 48, (260, 0), 16);
+            Add_Action (Table.States (205), 52, (279, 0), 20);
+            Add_Action (Table.States (205), 57, (293, 0), 21);
+            Add_Action (Table.States (205), 58, (199, 0), 22);
+            Add_Action (Table.States (205), 61, (129, 0), 24);
+            Add_Action (Table.States (205), 68, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (205), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (205), 81, (242, 8), 31);
+            Add_Action (Table.States (205), 96, (220, 0), 32);
+            Add_Action (Table.States (205), 107, (134, 0), 363);
+            Add_Action (Table.States (205), 108, (242, 7), 34);
+            Add_Action (Table.States (205), 109, (242, 6), 35);
+            Table.States (205).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (205), 116, 37);
+            Add_Goto (Table.States (205), 126, 39);
+            Add_Goto (Table.States (205), 129, 40);
+            Add_Goto (Table.States (205), 131, 42);
+            Add_Goto (Table.States (205), 134, 43);
+            Add_Goto (Table.States (205), 135, 44);
+            Add_Goto (Table.States (205), 136, 45);
+            Add_Goto (Table.States (205), 142, 48);
+            Add_Goto (Table.States (205), 154, 51);
+            Add_Goto (Table.States (205), 155, 52);
+            Add_Goto (Table.States (205), 164, 54);
+            Add_Goto (Table.States (205), 193, 58);
+            Add_Goto (Table.States (205), 199, 60);
+            Add_Goto (Table.States (205), 220, 69);
+            Add_Goto (Table.States (205), 225, 71);
+            Add_Goto (Table.States (205), 235, 73);
+            Add_Goto (Table.States (205), 242, 74);
+            Add_Goto (Table.States (205), 260, 84);
+            Add_Goto (Table.States (205), 264, 87);
+            Add_Goto (Table.States (205), 275, 93);
+            Add_Goto (Table.States (205), 279, 94);
+            Add_Goto (Table.States (205), 293, 97);
+            Add_Goto (Table.States (205), 296, 98);
+            Add_Goto (Table.States (205), 297, 99);
+            Add_Goto (Table.States (205), 301, 100);
+            Add_Goto (Table.States (205), 302, 364);
+            Add_Goto (Table.States (205), 303, 367);
+            Add_Goto (Table.States (205), 305, 101);
+            Add_Goto (Table.States (205), 306, 102);
+            Add_Goto (Table.States (205), 309, 366);
+            Add_Goto (Table.States (205), 326, 115);
+            Table.States (205).Kernel := To_Vector ((((163, 0),  164,  0, 
(303, 1),  0), ((327, 2),  164,  0, (303, 1),
+             0)));
+            Table.States (205).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (303, 1),  0)));
+            Table.States (206).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (206), 22, (155, 0), 368);
+            Add_Action (Table.States (206), 43, (326, 0), 369);
+            Table.States (206).Kernel := To_Vector ((((155, 0),  181,  4, 
(2147483647, 0),  0), ((326, 0),  181,  6,
+            (2147483647, 0),  0)));
+            Table.States (206).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (155, 0),  22, 368)));
+            Table.States (207).Action_List.Set_Capacity (31);
+            Add_Action (Table.States (207), 4, (116, 0), 1);
+            Add_Action (Table.States (207), 5, (306, 8), 2);
+            Add_Action (Table.States (207), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (207), 15, (142, 0), 3);
+            Add_Action (Table.States (207), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (207), 18, (164, 0), 4);
+            Add_Action (Table.States (207), 22, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (207), 27, (193, 0), 5);
+            Add_Action (Table.States (207), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (207), 31, (306, 3), 9);
+            Add_Action (Table.States (207), 32, (225, 0), 10);
+            Add_Action (Table.States (207), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (207), 41, (306, 0), 13);
+            Add_Action (Table.States (207), 43, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (207), 48, (260, 0), 16);
+            Add_Action (Table.States (207), 52, (279, 0), 20);
+            Add_Action (Table.States (207), 57, (293, 0), 21);
+            Add_Action (Table.States (207), 58, (199, 0), 22);
+            Add_Action (Table.States (207), 61, (129, 0), 24);
+            Add_Action (Table.States (207), 68, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (207), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (207), 76, (118, 0), 237);
+            Add_Action (Table.States (207), 81, (242, 8), 31);
+            Add_Action (Table.States (207), 87, (296, 0), 239);
+            Add_Action (Table.States (207), 96, (220, 0), 32);
+            Add_Action (Table.States (207), 99, (264, 0), 240);
+            Add_Action (Table.States (207), 104, (325, 0), 241);
+            Add_Action (Table.States (207), 105, (325, 1), 242);
+            Add_Action (Table.States (207), 107, (134, 0), 363);
+            Add_Action (Table.States (207), 108, (242, 7), 34);
+            Add_Action (Table.States (207), 109, (242, 6), 35);
+            Table.States (207).Goto_List.Set_Capacity (33);
+            Add_Goto (Table.States (207), 116, 37);
+            Add_Goto (Table.States (207), 118, 243);
+            Add_Goto (Table.States (207), 126, 39);
+            Add_Goto (Table.States (207), 129, 40);
+            Add_Goto (Table.States (207), 131, 42);
+            Add_Goto (Table.States (207), 134, 43);
+            Add_Goto (Table.States (207), 135, 44);
+            Add_Goto (Table.States (207), 136, 45);
+            Add_Goto (Table.States (207), 142, 48);
+            Add_Goto (Table.States (207), 154, 51);
+            Add_Goto (Table.States (207), 155, 52);
+            Add_Goto (Table.States (207), 164, 54);
+            Add_Goto (Table.States (207), 193, 58);
+            Add_Goto (Table.States (207), 199, 60);
+            Add_Goto (Table.States (207), 220, 69);
+            Add_Goto (Table.States (207), 225, 71);
+            Add_Goto (Table.States (207), 235, 73);
+            Add_Goto (Table.States (207), 242, 74);
+            Add_Goto (Table.States (207), 260, 84);
+            Add_Goto (Table.States (207), 264, 87);
+            Add_Goto (Table.States (207), 275, 93);
+            Add_Goto (Table.States (207), 279, 94);
+            Add_Goto (Table.States (207), 293, 97);
+            Add_Goto (Table.States (207), 296, 98);
+            Add_Goto (Table.States (207), 297, 99);
+            Add_Goto (Table.States (207), 301, 100);
+            Add_Goto (Table.States (207), 302, 364);
+            Add_Goto (Table.States (207), 303, 370);
+            Add_Goto (Table.States (207), 305, 101);
+            Add_Goto (Table.States (207), 306, 102);
+            Add_Goto (Table.States (207), 309, 366);
+            Add_Goto (Table.States (207), 325, 244);
+            Add_Goto (Table.States (207), 326, 115);
+            Table.States (207).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((181, 1),  242,  0,
+            (303, 1),  0), ((242, 0),  242,  5, (2147483647, 0),  0), ((242, 
1),  242,  2, (2147483647, 0),  0), ((264,
+            0),  242,  1, (2147483647, 0),  0), ((275, 0),  242,  3, 
(2147483647, 0),  0), ((296, 0),  242,  2,
+            (2147483647, 0),  0), ((296, 1),  242,  2, (2147483647, 0),  0), 
((296, 2),  242,  2, (2147483647, 0),  0),
+            ((296, 3),  242,  2, (2147483647, 0),  0), ((327, 1),  242,  0, 
(303, 1),  0)));
+            Table.States (207).Minimal_Complete_Actions := To_Vector 
(((Reduce, (303, 1),  0), (Shift, (264, 0),  99,
+            240)));
+            Table.States (208).Action_List.Set_Capacity (26);
+            Add_Action (Table.States (208), 4, (116, 0), 1);
+            Add_Action (Table.States (208), 5, (306, 8), 2);
+            Add_Action (Table.States (208), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (208), 15, (142, 0), 3);
+            Add_Action (Table.States (208), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (208), 18, (164, 0), 4);
+            Add_Action (Table.States (208), 22, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (208), 27, (193, 0), 5);
+            Add_Action (Table.States (208), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (208), 31, (306, 3), 9);
+            Add_Action (Table.States (208), 32, (225, 0), 10);
+            Add_Action (Table.States (208), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (208), 41, (306, 0), 13);
+            Add_Action (Table.States (208), 43, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (208), 48, (260, 0), 16);
+            Add_Action (Table.States (208), 52, (279, 0), 20);
+            Add_Action (Table.States (208), 57, (293, 0), 21);
+            Add_Action (Table.States (208), 58, (199, 0), 22);
+            Add_Action (Table.States (208), 61, (129, 0), 24);
+            Add_Action (Table.States (208), 68, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (208), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (208), 81, (242, 8), 31);
+            Add_Action (Table.States (208), 96, (220, 0), 32);
+            Add_Action (Table.States (208), 107, (134, 0), 363);
+            Add_Action (Table.States (208), 108, (242, 7), 34);
+            Add_Action (Table.States (208), 109, (242, 6), 35);
+            Table.States (208).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (208), 116, 37);
+            Add_Goto (Table.States (208), 126, 39);
+            Add_Goto (Table.States (208), 129, 40);
+            Add_Goto (Table.States (208), 131, 42);
+            Add_Goto (Table.States (208), 134, 43);
+            Add_Goto (Table.States (208), 135, 44);
+            Add_Goto (Table.States (208), 136, 45);
+            Add_Goto (Table.States (208), 142, 48);
+            Add_Goto (Table.States (208), 154, 51);
+            Add_Goto (Table.States (208), 155, 52);
+            Add_Goto (Table.States (208), 164, 54);
+            Add_Goto (Table.States (208), 193, 58);
+            Add_Goto (Table.States (208), 199, 60);
+            Add_Goto (Table.States (208), 220, 69);
+            Add_Goto (Table.States (208), 225, 71);
+            Add_Goto (Table.States (208), 235, 73);
+            Add_Goto (Table.States (208), 242, 74);
+            Add_Goto (Table.States (208), 260, 84);
+            Add_Goto (Table.States (208), 264, 87);
+            Add_Goto (Table.States (208), 275, 93);
+            Add_Goto (Table.States (208), 279, 94);
+            Add_Goto (Table.States (208), 293, 97);
+            Add_Goto (Table.States (208), 296, 98);
+            Add_Goto (Table.States (208), 297, 99);
+            Add_Goto (Table.States (208), 301, 100);
+            Add_Goto (Table.States (208), 302, 364);
+            Add_Goto (Table.States (208), 303, 371);
+            Add_Goto (Table.States (208), 305, 101);
+            Add_Goto (Table.States (208), 306, 102);
+            Add_Goto (Table.States (208), 309, 366);
+            Add_Goto (Table.States (208), 326, 115);
+            Table.States (208).Kernel := To_Vector ((((181, 0),  264,  0, 
(303, 1),  0), ((327, 0),  264,  0, (303, 1),
+             0)));
+            Table.States (208).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (303, 1),  0)));
             Table.States (209).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (209), 22, Reduce, (298, 0), 1, null, 
null);
-            Add_Action (Table.States (209), 24, Reduce, (298, 0), 1, null, 
null);
-            Add_Action (Table.States (209), 43, 370);
-            Table.States (209).Kernel := To_Vector (((297, 297, 3, True), 
(298, 297, 0, False)));
-            Table.States (209).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 298, 1)));
-            Table.States (210).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (210), 22, 371);
-            Add_Action (Table.States (210), 24, 372);
-            Table.States (210).Kernel := To_Vector (((295, 298, 4, False), 
(295, 298, 3, False)));
-            Table.States (210).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 372)));
-            Table.States (211).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (211), 68, 373);
-            Table.States (211).Kernel := To_Vector ((0 => (127, 325, 5, 
False)));
-            Table.States (211).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 68, 373)));
+            Add_Action (Table.States (209), (22, 24, 43), (299, 1),  1, 
select_alternative_list_1'Access, null);
+            Table.States (209).Kernel := To_Vector ((0 => ((299, 1),  298,  0, 
(299, 1),  1)));
+            Table.States (209).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (299, 1),  1)));
+            Table.States (210).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (210), 22, Reduce, (300, 0),  1, null, 
null);
+            Add_Action (Table.States (210), 24, Reduce, (300, 0),  1, null, 
null);
+            Add_Action (Table.States (210), 43, (299, 0), 372);
+            Table.States (210).Kernel := To_Vector ((((299, 0),  299,  3, 
(2147483647, 0),  0), ((300, 0),  299,  0,
+            (300, 0),  1)));
+            Table.States (210).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (300, 0),  1)));
+            Table.States (211).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (211), 22, (297, 0), 373);
+            Add_Action (Table.States (211), 24, (297, 1), 374);
+            Table.States (211).Kernel := To_Vector ((((297, 0),  300,  4, 
(2147483647, 0),  0), ((297, 1),  300,  3,
+            (2147483647, 0),  0)));
+            Table.States (211).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (297, 1),  24, 374)));
             Table.States (212).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (212), 35, 374);
-            Table.States (212).Kernel := To_Vector ((0 => (314, 105, 3, 
False)));
-            Table.States (212).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 374)));
+            Add_Action (Table.States (212), 68, (129, 0), 375);
+            Table.States (212).Kernel := To_Vector ((0 => ((129, 0),  327,  5, 
(2147483647, 0),  0)));
+            Table.States (212).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (129, 0),  68, 375)));
             Table.States (213).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (213), 105, 375);
-            Table.States (213).Kernel := To_Vector (((317, 14, 5, False), 
(318, 14, 4, False)));
-            Table.States (213).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 375)));
+            Add_Action (Table.States (213), 35, (316, 0), 376);
+            Table.States (213).Kernel := To_Vector ((0 => ((316, 0),  107,  3, 
(2147483647, 0),  0)));
+            Table.States (213).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (316, 0),  35, 376)));
             Table.States (214).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (214), 105, 376);
-            Table.States (214).Kernel := To_Vector (((320, 69, 7, False), 
(320, 69, 4, False), (320, 69, 2, False)));
-            Table.States (214).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 376)));
-            Table.States (215).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (215), 35, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (215), 74, 338);
-            Add_Action (Table.States (215), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (215).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (215), 123, 377);
-            Table.States (215).Kernel := To_Vector (((306, 105, 6, False), 
(306, 105, 3, False), (306, 105, 1,
-            False)));
-            Table.States (215).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
+            Add_Action (Table.States (214), 107, (319, 0), 377);
+            Table.States (214).Kernel := To_Vector ((((319, 0),  14,  5, 
(2147483647, 0),  0), ((320, 0),  14,  4,
+            (2147483647, 0),  0)));
+            Table.States (214).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (319, 0),  107, 377)));
+            Table.States (215).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (215), 107, (322, 0), 378);
+            Table.States (215).Kernel := To_Vector ((((322, 0),  69,  7, 
(2147483647, 0),  0), ((322, 1),  69,  4,
+            (2147483647, 0),  0), ((322, 2),  69,  2, (2147483647, 0),  0)));
+            Table.States (215).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (322, 0),  107, 378)));
             Table.States (216).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (216), 35, Reduce, (170, 2), 0, null, 
null);
-            Add_Action (Table.States (216), 76, 378);
-            Add_Action (Table.States (216), 97, Reduce, (170, 2), 0, null, 
null);
+            Add_Action (Table.States (216), 35, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (216), 74, (125, 0), 340);
+            Add_Action (Table.States (216), 99, Reduce, (125, 1),  0, null, 
null);
             Table.States (216).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (216), 170, 379);
-            Table.States (216).Kernel := To_Vector (((207, 105, 3, False), 
(224, 105, 3, False), (224, 105, 1, False),
-            (260, 105, 6, False), (261, 105, 3, False)));
-            Table.States (216).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 170, 0)));
-            Table.States (217).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (217), 69, 380);
-            Table.States (217).Kernel := To_Vector ((0 => (332, 9, 3, False)));
-            Table.States (217).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 69, 380)));
-            Table.States (218).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (218), 79, 31);
-            Add_Action (Table.States (218), 105, 120);
-            Add_Action (Table.States (218), 106, 34);
-            Add_Action (Table.States (218), 107, 35);
-            Table.States (218).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (218), 129, 42);
-            Add_Goto (Table.States (218), 239, 381);
-            Add_Goto (Table.States (218), 240, 220);
-            Add_Goto (Table.States (218), 273, 93);
-            Add_Goto (Table.States (218), 294, 98);
-            Table.States (218).Kernel := To_Vector ((0 => (332, 69, 2, 
False)));
-            Table.States (218).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (219).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (219), 84, 382);
-            Add_Action (Table.States (219), 97, 383);
-            Table.States (219).Kernel := To_Vector (((239, 239, 2, True), 
(332, 239, 1, False)));
-            Table.States (219).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 383)));
-            Table.States (220).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (220), 76, 236);
-            Add_Action (Table.States (220), 84, Reduce, (239, 1), 1, null, 
null);
-            Add_Action (Table.States (220), 85, 238);
-            Add_Action (Table.States (220), 97, Reduce, (239, 1), 1, null, 
null);
-            Add_Action (Table.States (220), 102, 240);
-            Add_Action (Table.States (220), 103, 241);
-            Table.States (220).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (220), 116, 242);
-            Add_Goto (Table.States (220), 323, 243);
-            Table.States (220).Kernel := To_Vector (((129, 240, 2, True), 
(239, 240, 0, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (220).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 239, 1)));
-            Table.States (221).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (221), (1 =>  37), (230, 0), 2, 
iteration_scheme_0'Access, null);
-            Table.States (221).Kernel := To_Vector ((0 => (230, 193, 0, 
False)));
-            Table.States (221).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 230, 2)));
-            Table.States (222).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (222), 84, 382);
-            Add_Action (Table.States (222), 97, 384);
-            Table.States (222).Kernel := To_Vector (((239, 239, 2, True), 
(333, 239, 1, False)));
-            Table.States (222).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 384)));
-            Table.States (223).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (223), 91, 385);
-            Table.States (223).Kernel := To_Vector ((0 => (218, 105, 1, 
False)));
-            Table.States (223).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 91, 385)));
-            Table.States (224).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (224), 7, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (224), 13, Reduce, (132, 0), 2, 
block_label_0'Access, block_label_0_check'Access);
-            Add_Action (Table.States (224), 17, Reduce, (132, 0), 2, 
block_label_0'Access, block_label_0_check'Access);
-            Add_Action (Table.States (224), 26, 386);
-            Add_Action (Table.States (224), 28, Reduce, (132, 0), 2, 
block_label_0'Access, block_label_0_check'Access);
-            Add_Action (Table.States (224), 37, Reduce, (132, 0), 2, 
block_label_0'Access, block_label_0_check'Access);
-            Add_Action (Table.States (224), 40, 387);
-            Add_Action (Table.States (224), 73, Reduce, (132, 0), 2, 
block_label_0'Access, block_label_0_check'Access);
-            Add_Action (Table.States (224), 79, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (224), 105, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (224), 106, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (224), 107, Reduce, (242, 1), 0, null, 
null);
-            Table.States (224).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (224), 115, 388);
-            Add_Goto (Table.States (224), 242, 389);
-            Table.States (224).Kernel := To_Vector (((132, 82, 0, False), 
(246, 82, 4, False), (246, 82, 5, False),
-            (246, 82, 4, False)));
-            Table.States (224).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 132, 2)));
-            Table.States (225).Action_List.Set_Capacity (25);
-            Add_Action (Table.States (225), 4, 1);
-            Add_Action (Table.States (225), 5, 2);
-            Add_Action (Table.States (225), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (225), 15, 3);
-            Add_Action (Table.States (225), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (225), 18, 4);
-            Add_Action (Table.States (225), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (225), 26, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (225), 27, 5);
-            Add_Action (Table.States (225), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (225), 31, 9);
-            Add_Action (Table.States (225), 32, 10);
-            Add_Action (Table.States (225), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (225), 41, 13);
-            Add_Action (Table.States (225), 48, 16);
-            Add_Action (Table.States (225), 52, 20);
-            Add_Action (Table.States (225), 57, 21);
-            Add_Action (Table.States (225), 58, 22);
-            Add_Action (Table.States (225), 61, 24);
-            Add_Action (Table.States (225), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (225), 79, 31);
-            Add_Action (Table.States (225), 94, 32);
-            Add_Action (Table.States (225), 105, 361);
-            Add_Action (Table.States (225), 106, 34);
-            Add_Action (Table.States (225), 107, 35);
-            Table.States (225).Goto_List.Set_Capacity (32);
-            Add_Goto (Table.States (225), 114, 37);
-            Add_Goto (Table.States (225), 124, 39);
-            Add_Goto (Table.States (225), 127, 40);
-            Add_Goto (Table.States (225), 129, 42);
-            Add_Goto (Table.States (225), 132, 43);
-            Add_Goto (Table.States (225), 133, 44);
-            Add_Goto (Table.States (225), 134, 45);
-            Add_Goto (Table.States (225), 140, 48);
-            Add_Goto (Table.States (225), 152, 51);
-            Add_Goto (Table.States (225), 153, 52);
-            Add_Goto (Table.States (225), 162, 54);
-            Add_Goto (Table.States (225), 191, 58);
-            Add_Goto (Table.States (225), 197, 60);
-            Add_Goto (Table.States (225), 218, 69);
-            Add_Goto (Table.States (225), 219, 390);
-            Add_Goto (Table.States (225), 223, 71);
-            Add_Goto (Table.States (225), 233, 73);
-            Add_Goto (Table.States (225), 240, 74);
-            Add_Goto (Table.States (225), 258, 84);
-            Add_Goto (Table.States (225), 262, 87);
-            Add_Goto (Table.States (225), 273, 93);
-            Add_Goto (Table.States (225), 277, 94);
-            Add_Goto (Table.States (225), 291, 97);
-            Add_Goto (Table.States (225), 294, 98);
-            Add_Goto (Table.States (225), 295, 99);
-            Add_Goto (Table.States (225), 299, 100);
-            Add_Goto (Table.States (225), 300, 362);
-            Add_Goto (Table.States (225), 301, 391);
-            Add_Goto (Table.States (225), 303, 101);
-            Add_Goto (Table.States (225), 304, 102);
-            Add_Goto (Table.States (225), 307, 364);
-            Add_Goto (Table.States (225), 324, 115);
-            Table.States (225).Kernel := To_Vector ((0 => (134, 13, 2, 
False)));
-            Table.States (225).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 219, 0)));
-            Table.States (226).Action_List.Set_Capacity (16);
-            Add_Action (Table.States (226), 13, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (226), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (226), 28, 184);
-            Add_Action (Table.States (226), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (226), 30, 8);
-            Add_Action (Table.States (226), 40, 12);
-            Add_Action (Table.States (226), 46, 14);
-            Add_Action (Table.States (226), 47, 15);
-            Add_Action (Table.States (226), 48, 16);
-            Add_Action (Table.States (226), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (226), 51, 19);
-            Add_Action (Table.States (226), 63, 25);
-            Add_Action (Table.States (226), 66, 26);
-            Add_Action (Table.States (226), 69, 27);
-            Add_Action (Table.States (226), 71, 28);
-            Add_Action (Table.States (226), 105, 186);
-            Table.States (226).Goto_List.Set_Capacity (53);
-            Add_Goto (Table.States (226), 113, 36);
-            Add_Goto (Table.States (226), 122, 38);
-            Add_Goto (Table.States (226), 128, 41);
-            Add_Goto (Table.States (226), 135, 46);
-            Add_Goto (Table.States (226), 136, 47);
-            Add_Goto (Table.States (226), 158, 392);
-            Add_Goto (Table.States (226), 159, 393);
-            Add_Goto (Table.States (226), 160, 394);
-            Add_Goto (Table.States (226), 180, 55);
-            Add_Goto (Table.States (226), 183, 56);
-            Add_Goto (Table.States (226), 187, 57);
-            Add_Goto (Table.States (226), 194, 59);
-            Add_Goto (Table.States (226), 207, 61);
-            Add_Goto (Table.States (226), 208, 62);
-            Add_Goto (Table.States (226), 210, 63);
-            Add_Goto (Table.States (226), 211, 64);
-            Add_Goto (Table.States (226), 214, 65);
-            Add_Goto (Table.States (226), 215, 66);
-            Add_Goto (Table.States (226), 216, 67);
-            Add_Goto (Table.States (226), 217, 68);
-            Add_Goto (Table.States (226), 220, 70);
-            Add_Goto (Table.States (226), 224, 72);
-            Add_Goto (Table.States (226), 244, 75);
-            Add_Goto (Table.States (226), 245, 76);
-            Add_Goto (Table.States (226), 246, 77);
-            Add_Goto (Table.States (226), 247, 78);
-            Add_Goto (Table.States (226), 248, 79);
-            Add_Goto (Table.States (226), 249, 80);
-            Add_Goto (Table.States (226), 250, 81);
-            Add_Goto (Table.States (226), 251, 82);
-            Add_Goto (Table.States (226), 252, 83);
-            Add_Goto (Table.States (226), 258, 395);
-            Add_Goto (Table.States (226), 260, 85);
-            Add_Goto (Table.States (226), 261, 86);
-            Add_Goto (Table.States (226), 263, 88);
-            Add_Goto (Table.States (226), 264, 89);
-            Add_Goto (Table.States (226), 265, 90);
-            Add_Goto (Table.States (226), 266, 91);
-            Add_Goto (Table.States (226), 272, 92);
-            Add_Goto (Table.States (226), 282, 95);
-            Add_Goto (Table.States (226), 290, 96);
-            Add_Goto (Table.States (226), 305, 103);
-            Add_Goto (Table.States (226), 306, 104);
-            Add_Goto (Table.States (226), 308, 106);
-            Add_Goto (Table.States (226), 309, 107);
-            Add_Goto (Table.States (226), 310, 108);
-            Add_Goto (Table.States (226), 312, 109);
-            Add_Goto (Table.States (226), 314, 110);
-            Add_Goto (Table.States (226), 317, 112);
-            Add_Goto (Table.States (226), 318, 113);
-            Add_Goto (Table.States (226), 320, 114);
-            Add_Goto (Table.States (226), 326, 116);
-            Add_Goto (Table.States (226), 332, 117);
-            Table.States (226).Kernel := To_Vector ((0 => (134, 17, 3, 
False)));
-            Table.States (226).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 160, 0)));
-            Table.States (227).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (227), 37, Reduce, (232, 1), 0, null, 
null);
-            Add_Action (Table.States (227), 105, 396);
-            Table.States (227).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (227), 231, 156);
-            Add_Goto (Table.States (227), 232, 157);
-            Table.States (227).Kernel := To_Vector ((0 => (230, 28, 0, 
False)));
-            Table.States (227).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 232, 0)));
-            Table.States (228).Action_List.Set_Capacity (24);
-            Add_Action (Table.States (228), 4, 1);
-            Add_Action (Table.States (228), 5, 2);
-            Add_Action (Table.States (228), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (228), 15, 3);
-            Add_Action (Table.States (228), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (228), 18, 4);
-            Add_Action (Table.States (228), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (228), 27, 5);
-            Add_Action (Table.States (228), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (228), 31, 9);
-            Add_Action (Table.States (228), 32, 10);
-            Add_Action (Table.States (228), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (228), 41, 13);
-            Add_Action (Table.States (228), 48, 16);
-            Add_Action (Table.States (228), 52, 20);
-            Add_Action (Table.States (228), 57, 21);
-            Add_Action (Table.States (228), 58, 22);
-            Add_Action (Table.States (228), 61, 24);
-            Add_Action (Table.States (228), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (228), 79, 31);
-            Add_Action (Table.States (228), 94, 32);
-            Add_Action (Table.States (228), 105, 361);
-            Add_Action (Table.States (228), 106, 34);
-            Add_Action (Table.States (228), 107, 35);
-            Table.States (228).Goto_List.Set_Capacity (31);
-            Add_Goto (Table.States (228), 114, 37);
-            Add_Goto (Table.States (228), 124, 39);
-            Add_Goto (Table.States (228), 127, 40);
-            Add_Goto (Table.States (228), 129, 42);
-            Add_Goto (Table.States (228), 132, 43);
-            Add_Goto (Table.States (228), 133, 44);
-            Add_Goto (Table.States (228), 134, 45);
-            Add_Goto (Table.States (228), 140, 48);
-            Add_Goto (Table.States (228), 152, 51);
-            Add_Goto (Table.States (228), 153, 52);
-            Add_Goto (Table.States (228), 162, 54);
-            Add_Goto (Table.States (228), 191, 58);
-            Add_Goto (Table.States (228), 197, 60);
-            Add_Goto (Table.States (228), 218, 69);
-            Add_Goto (Table.States (228), 223, 71);
-            Add_Goto (Table.States (228), 233, 73);
-            Add_Goto (Table.States (228), 240, 74);
-            Add_Goto (Table.States (228), 258, 84);
-            Add_Goto (Table.States (228), 262, 87);
-            Add_Goto (Table.States (228), 273, 93);
-            Add_Goto (Table.States (228), 277, 94);
-            Add_Goto (Table.States (228), 291, 97);
-            Add_Goto (Table.States (228), 294, 98);
-            Add_Goto (Table.States (228), 295, 99);
-            Add_Goto (Table.States (228), 299, 100);
-            Add_Goto (Table.States (228), 300, 362);
-            Add_Goto (Table.States (228), 301, 397);
-            Add_Goto (Table.States (228), 303, 101);
-            Add_Goto (Table.States (228), 304, 102);
-            Add_Goto (Table.States (228), 307, 364);
-            Add_Goto (Table.States (228), 324, 115);
-            Table.States (228).Kernel := To_Vector ((0 => (233, 37, 3, 
False)));
-            Table.States (228).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 0)));
-            Table.States (229).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (229), 37, 398);
-            Table.States (229).Kernel := To_Vector ((0 => (233, 230, 4, 
False)));
-            Table.States (229).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 398)));
-            Table.States (230).Action_List.Set_Capacity (40);
-            Add_Action (Table.States (230), (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, 79, 
94, 105, 106, 107, 108), (144, 0), 2,
-            compilation_unit_list_0'Access, null);
-            Table.States (230).Kernel := To_Vector ((0 => (144, 143, 0, 
True)));
-            Table.States (230).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 144, 2)));
-            Table.States (230).Minimal_Complete_Actions_Recursive := True;
-            Table.States (231).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (231), 79, 31);
-            Add_Action (Table.States (231), 105, 120);
-            Add_Action (Table.States (231), 106, 34);
-            Add_Action (Table.States (231), 107, 35);
-            Table.States (231).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (231), 129, 42);
-            Add_Goto (Table.States (231), 240, 399);
-            Add_Goto (Table.States (231), 273, 93);
-            Add_Goto (Table.States (231), 294, 98);
-            Table.States (231).Kernel := To_Vector (((252, 47, 4, False), 
(252, 47, 3, False)));
-            Table.States (231).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (232).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (232), 97, 400);
-            Table.States (232).Kernel := To_Vector ((0 => (215, 252, 1, 
False)));
-            Table.States (232).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 400)));
-            Table.States (233).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (233), 74, 338);
-            Add_Action (Table.States (233), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (233).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (233), 123, 401);
-            Table.States (233).Kernel := To_Vector ((0 => (217, 313, 1, 
False)));
-            Table.States (233).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (234).Action_List.Set_Capacity (13);
-            Add_Action (Table.States (234), 7, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (234), 8, 402);
-            Add_Action (Table.States (234), 11, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (234), 16, 403);
-            Add_Conflict (Table.States (234), 16, (119, 1), 0, null, null);
-            Add_Action (Table.States (234), 26, 404);
-            Add_Action (Table.States (234), 40, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (234), 74, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (234), 79, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (234), 83, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (234), 97, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (234), 105, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (234), 106, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (234), 107, Reduce, (119, 1), 0, null, 
null);
-            Table.States (234).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (234), 119, 405);
-            Table.States (234).Kernel := To_Vector (((158, 82, 3, False), 
(187, 82, 2, False), (245, 82, 3, False),
-            (245, 82, 4, False), (245, 82, 10, False), (245, 82, 2, False), 
(245, 82, 3, False), (245, 82, 9, False)));
-            Table.States (234).Minimal_Complete_Actions := To_Vector (((Shift, 
26, 404), (Reduce, 119, 0)));
-            Table.States (235).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (235), 105, 406);
-            Table.States (235).Kernel := To_Vector ((0 => (220, 84, 1, True)));
-            Table.States (235).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 406)));
-            Table.States (235).Minimal_Complete_Actions_Recursive := True;
-            Table.States (236).Action_List.Set_Capacity (21);
-            Add_Action (Table.States (236), 3, 122);
-            Add_Action (Table.States (236), 15, 259);
-            Add_Action (Table.States (236), 28, 260);
-            Add_Action (Table.States (236), 32, 261);
-            Add_Action (Table.States (236), 39, 123);
-            Add_Action (Table.States (236), 40, 262);
-            Add_Action (Table.States (236), 41, 125);
-            Add_Action (Table.States (236), 44, 264);
-            Add_Action (Table.States (236), 52, 126);
-            Add_Action (Table.States (236), 76, 127);
-            Add_Action (Table.States (236), 77, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (236), 79, 31);
-            Add_Action (Table.States (236), 80, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (236), 84, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (236), 88, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (236), 95, 128);
-            Add_Action (Table.States (236), 96, 129);
-            Add_Action (Table.States (236), 104, 130);
-            Add_Action (Table.States (236), 105, 120);
-            Add_Action (Table.States (236), 106, 34);
-            Add_Action (Table.States (236), 107, 265);
-            Table.States (236).Goto_List.Set_Capacity (29);
-            Add_Goto (Table.States (236), 118, 131);
-            Add_Goto (Table.States (236), 125, 266);
-            Add_Goto (Table.States (236), 126, 407);
-            Add_Goto (Table.States (236), 129, 42);
-            Add_Goto (Table.States (236), 137, 268);
-            Add_Goto (Table.States (236), 154, 408);
-            Add_Goto (Table.States (236), 166, 270);
-            Add_Goto (Table.States (236), 167, 271);
-            Add_Goto (Table.States (236), 192, 409);
-            Add_Goto (Table.States (236), 198, 134);
-            Add_Goto (Table.States (236), 222, 274);
-            Add_Goto (Table.States (236), 240, 275);
-            Add_Goto (Table.States (236), 259, 136);
-            Add_Goto (Table.States (236), 273, 93);
-            Add_Goto (Table.States (236), 274, 276);
-            Add_Goto (Table.States (236), 276, 137);
-            Add_Goto (Table.States (236), 278, 410);
-            Add_Goto (Table.States (236), 279, 411);
-            Add_Goto (Table.States (236), 283, 138);
-            Add_Goto (Table.States (236), 284, 139);
-            Add_Goto (Table.States (236), 285, 140);
-            Add_Goto (Table.States (236), 286, 141);
-            Add_Goto (Table.States (236), 287, 142);
-            Add_Goto (Table.States (236), 288, 143);
-            Add_Goto (Table.States (236), 294, 98);
-            Add_Goto (Table.States (236), 302, 278);
-            Add_Goto (Table.States (236), 321, 145);
-            Add_Goto (Table.States (236), 322, 146);
-            Add_Goto (Table.States (236), 331, 147);
-            Table.States (236).Kernel := To_Vector (((116, 76, 1, False), 
(116, 76, 3, False), (240, 76, 4, True)));
-            Table.States (236).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 126, 0)));
-            Table.States (236).Minimal_Complete_Actions_Recursive := True;
+            Add_Goto (Table.States (216), 125, 379);
+            Table.States (216).Kernel := To_Vector ((((308, 0),  107,  6, 
(2147483647, 0),  0), ((308, 1),  107,  3,
+            (2147483647, 0),  0), ((308, 2),  107,  1, (2147483647, 0),  0)));
+            Table.States (216).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (217).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (217), 35, Reduce, (172, 2),  0, null, 
null);
+            Add_Action (Table.States (217), 76, (172, 0), 380);
+            Add_Action (Table.States (217), 99, Reduce, (172, 2),  0, null, 
null);
+            Table.States (217).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (217), 172, 381);
+            Table.States (217).Kernel := To_Vector ((((209, 0),  107,  3, 
(2147483647, 0),  0), ((226, 0),  107,  3,
+            (2147483647, 0),  0), ((226, 1),  107,  1, (2147483647, 0),  0), 
((262, 0),  107,  6, (2147483647, 0),  0),
+            ((263, 0),  107,  3, (2147483647, 0),  0)));
+            Table.States (217).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (172, 2),  0)));
+            Table.States (218).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (218), 69, (334, 0), 382);
+            Table.States (218).Kernel := To_Vector ((0 => ((334, 0),  9,  3, 
(2147483647, 0),  0)));
+            Table.States (218).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (334, 0),  69, 382)));
+            Table.States (219).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (219), 81, (242, 8), 31);
+            Add_Action (Table.States (219), 107, (242, 5), 120);
+            Add_Action (Table.States (219), 108, (242, 7), 34);
+            Add_Action (Table.States (219), 109, (242, 6), 35);
+            Table.States (219).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (219), 131, 42);
+            Add_Goto (Table.States (219), 241, 383);
+            Add_Goto (Table.States (219), 242, 221);
+            Add_Goto (Table.States (219), 275, 93);
+            Add_Goto (Table.States (219), 296, 98);
+            Table.States (219).Kernel := To_Vector ((0 => ((334, 1),  69,  2, 
(2147483647, 0),  0)));
+            Table.States (219).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (220).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (220), 86, (241, 0), 384);
+            Add_Action (Table.States (220), 99, (334, 2), 385);
+            Table.States (220).Kernel := To_Vector ((((241, 0),  241,  2, 
(2147483647, 0),  0), ((334, 2),  241,  1,
+            (2147483647, 0),  0)));
+            Table.States (220).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (334, 2),  99, 385)));
+            Table.States (221).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (221), 76, (118, 0), 237);
+            Add_Action (Table.States (221), 86, Reduce, (241, 1),  1, null, 
null);
+            Add_Action (Table.States (221), 87, (296, 0), 239);
+            Add_Action (Table.States (221), 99, Reduce, (241, 1),  1, null, 
null);
+            Add_Action (Table.States (221), 104, (325, 0), 241);
+            Add_Action (Table.States (221), 105, (325, 1), 242);
+            Table.States (221).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (221), 118, 243);
+            Add_Goto (Table.States (221), 325, 244);
+            Table.States (221).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((241, 1),  242,  0,
+            (241, 1),  1), ((242, 0),  242,  5, (2147483647, 0),  0), ((242, 
1),  242,  2, (2147483647, 0),  0), ((275,
+            0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (221).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (241, 1),  1)));
+            Table.States (222).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (222), (1 =>  37), (232, 0),  2, 
iteration_scheme_0'Access, null);
+            Table.States (222).Kernel := To_Vector ((0 => ((232, 0),  195,  0, 
(232, 0),  2)));
+            Table.States (222).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (232, 0),  2)));
+            Table.States (223).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (223), 86, (241, 0), 384);
+            Add_Action (Table.States (223), 99, (335, 3), 386);
+            Table.States (223).Kernel := To_Vector ((((241, 0),  241,  2, 
(2147483647, 0),  0), ((335, 3),  241,  1,
+            (2147483647, 0),  0)));
+            Table.States (223).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (335, 3),  99, 386)));
+            Table.States (224).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (224), 93, (220, 0), 387);
+            Table.States (224).Kernel := To_Vector ((0 => ((220, 0),  107,  1, 
(2147483647, 0),  0)));
+            Table.States (224).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (220, 0),  93, 387)));
+            Table.States (225).Action_List.Set_Capacity (12);
+            Add_Action (Table.States (225), 7, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (225), 13, Reduce, (134, 0),  2, 
block_label_0'Access,
+            block_label_0_check'Access);
+            Add_Action (Table.States (225), 17, Reduce, (134, 0),  2, 
block_label_0'Access,
+            block_label_0_check'Access);
+            Add_Action (Table.States (225), 26, (248, 2), 388);
+            Add_Action (Table.States (225), 28, Reduce, (134, 0),  2, 
block_label_0'Access,
+            block_label_0_check'Access);
+            Add_Action (Table.States (225), 37, Reduce, (134, 0),  2, 
block_label_0'Access,
+            block_label_0_check'Access);
+            Add_Action (Table.States (225), 40, (244, 0), 389);
+            Add_Action (Table.States (225), 73, Reduce, (134, 0),  2, 
block_label_0'Access,
+            block_label_0_check'Access);
+            Add_Action (Table.States (225), 81, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (225), 107, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (225), 108, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (225), 109, Reduce, (244, 1),  0, null, 
null);
+            Table.States (225).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (225), 117, 390);
+            Add_Goto (Table.States (225), 244, 391);
+            Table.States (225).Kernel := To_Vector ((((134, 0),  84,  0, (134, 
0),  2), ((248, 0),  84,  4,
+            (2147483647, 0),  0), ((248, 1),  84,  5, (2147483647, 0),  0), 
((248, 2),  84,  4, (2147483647, 0),  0)));
+            Table.States (225).Minimal_Complete_Actions := To_Vector 
(((Reduce, (134, 0),  2), (Reduce, (244, 1),  0),
+            (Shift, (248, 2),  26, 388)));
+            Table.States (226).Action_List.Set_Capacity (25);
+            Add_Action (Table.States (226), 4, (116, 0), 1);
+            Add_Action (Table.States (226), 5, (306, 8), 2);
+            Add_Action (Table.States (226), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (226), 15, (142, 0), 3);
+            Add_Action (Table.States (226), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (226), 18, (164, 0), 4);
+            Add_Action (Table.States (226), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (226), 26, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (226), 27, (193, 0), 5);
+            Add_Action (Table.States (226), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (226), 31, (306, 3), 9);
+            Add_Action (Table.States (226), 32, (225, 0), 10);
+            Add_Action (Table.States (226), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (226), 41, (306, 0), 13);
+            Add_Action (Table.States (226), 48, (260, 0), 16);
+            Add_Action (Table.States (226), 52, (279, 0), 20);
+            Add_Action (Table.States (226), 57, (293, 0), 21);
+            Add_Action (Table.States (226), 58, (199, 0), 22);
+            Add_Action (Table.States (226), 61, (129, 0), 24);
+            Add_Action (Table.States (226), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (226), 81, (242, 8), 31);
+            Add_Action (Table.States (226), 96, (220, 0), 32);
+            Add_Action (Table.States (226), 107, (134, 0), 363);
+            Add_Action (Table.States (226), 108, (242, 7), 34);
+            Add_Action (Table.States (226), 109, (242, 6), 35);
+            Table.States (226).Goto_List.Set_Capacity (32);
+            Add_Goto (Table.States (226), 116, 37);
+            Add_Goto (Table.States (226), 126, 39);
+            Add_Goto (Table.States (226), 129, 40);
+            Add_Goto (Table.States (226), 131, 42);
+            Add_Goto (Table.States (226), 134, 43);
+            Add_Goto (Table.States (226), 135, 44);
+            Add_Goto (Table.States (226), 136, 45);
+            Add_Goto (Table.States (226), 142, 48);
+            Add_Goto (Table.States (226), 154, 51);
+            Add_Goto (Table.States (226), 155, 52);
+            Add_Goto (Table.States (226), 164, 54);
+            Add_Goto (Table.States (226), 193, 58);
+            Add_Goto (Table.States (226), 199, 60);
+            Add_Goto (Table.States (226), 220, 69);
+            Add_Goto (Table.States (226), 221, 392);
+            Add_Goto (Table.States (226), 225, 71);
+            Add_Goto (Table.States (226), 235, 73);
+            Add_Goto (Table.States (226), 242, 74);
+            Add_Goto (Table.States (226), 260, 84);
+            Add_Goto (Table.States (226), 264, 87);
+            Add_Goto (Table.States (226), 275, 93);
+            Add_Goto (Table.States (226), 279, 94);
+            Add_Goto (Table.States (226), 293, 97);
+            Add_Goto (Table.States (226), 296, 98);
+            Add_Goto (Table.States (226), 297, 99);
+            Add_Goto (Table.States (226), 301, 100);
+            Add_Goto (Table.States (226), 302, 364);
+            Add_Goto (Table.States (226), 303, 393);
+            Add_Goto (Table.States (226), 305, 101);
+            Add_Goto (Table.States (226), 306, 102);
+            Add_Goto (Table.States (226), 309, 366);
+            Add_Goto (Table.States (226), 326, 115);
+            Table.States (226).Kernel := To_Vector ((0 => ((136, 1),  13,  2, 
(2147483647, 0),  0)));
+            Table.States (226).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (221, 1),  0)));
          end Subr_4;
          procedure Subr_5
          is begin
-            Table.States (237).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (237), 3, 122);
-            Add_Action (Table.States (237), 39, 123);
-            Add_Action (Table.States (237), 40, 124);
-            Add_Action (Table.States (237), 41, 125);
-            Add_Action (Table.States (237), 52, 126);
-            Add_Action (Table.States (237), 76, 127);
-            Add_Action (Table.States (237), 79, 31);
-            Add_Action (Table.States (237), 95, 128);
-            Add_Action (Table.States (237), 96, 129);
-            Add_Action (Table.States (237), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (237), 104, 130);
-            Add_Action (Table.States (237), 105, 120);
-            Add_Action (Table.States (237), 106, 34);
-            Add_Action (Table.States (237), 107, 35);
-            Table.States (237).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (237), 118, 131);
-            Add_Goto (Table.States (237), 129, 42);
-            Add_Goto (Table.States (237), 192, 132);
-            Add_Goto (Table.States (237), 193, 412);
-            Add_Goto (Table.States (237), 198, 134);
-            Add_Goto (Table.States (237), 240, 135);
-            Add_Goto (Table.States (237), 259, 136);
-            Add_Goto (Table.States (237), 273, 93);
-            Add_Goto (Table.States (237), 276, 137);
-            Add_Goto (Table.States (237), 283, 138);
-            Add_Goto (Table.States (237), 284, 139);
-            Add_Goto (Table.States (237), 285, 140);
-            Add_Goto (Table.States (237), 286, 141);
-            Add_Goto (Table.States (237), 287, 142);
-            Add_Goto (Table.States (237), 288, 143);
-            Add_Goto (Table.States (237), 294, 98);
-            Add_Goto (Table.States (237), 302, 144);
-            Add_Goto (Table.States (237), 321, 145);
-            Add_Goto (Table.States (237), 322, 146);
-            Add_Goto (Table.States (237), 331, 147);
-            Table.States (237).Kernel := To_Vector ((0 => (124, 83, 1, 
False)));
-            Table.States (237).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (238).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (238), 9, 413);
-            Add_Action (Table.States (238), 105, 414);
-            Add_Action (Table.States (238), 106, 415);
-            Add_Action (Table.States (238), 107, 416);
-            Table.States (238).Kernel := To_Vector (((294, 85, 1, True), (294, 
85, 1, True), (294, 85, 1, True), (294,
-            85, 1, True)));
-            Table.States (238).Minimal_Complete_Actions := To_Vector (((Shift, 
105, 414), (Shift, 107, 416), (Shift,
-            106, 415), (Shift, 9, 413)));
-            Table.States (238).Minimal_Complete_Actions_Recursive := True;
-            Table.States (239).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (239), (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, 79, 94, 105, 106,
-            107, 108), (262, 0), 2, procedure_call_statement_0'Access, null);
-            Table.States (239).Kernel := To_Vector ((0 => (262, 97, 0, 
False)));
-            Table.States (239).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 262, 2)));
-            Table.States (240).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (240), (7, 19, 20, 38, 53, 76, 105), 
(323, 0), 1, null, null);
-            Table.States (240).Kernel := To_Vector ((0 => (323, 102, 0, 
False)));
-            Table.States (240).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 323, 1)));
-            Table.States (241).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (241), (7, 19, 20, 38, 53, 76, 105), 
(323, 1), 1, null, null);
-            Table.States (241).Kernel := To_Vector ((0 => (323, 103, 0, 
False)));
-            Table.States (241).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 323, 1)));
-            Table.States (242).Action_List.Set_Capacity (64);
-            Add_Action (Table.States (242), (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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (240, 1), 2, name_1'Access,
-            null);
-            Table.States (242).Kernel := To_Vector ((0 => (240, 116, 0, 
True)));
-            Table.States (242).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 2)));
-            Table.States (242).Minimal_Complete_Actions_Recursive := True;
-            Table.States (243).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (243), 7, 417);
-            Add_Action (Table.States (243), 19, 418);
-            Add_Action (Table.States (243), 20, 419);
-            Add_Action (Table.States (243), 38, 420);
-            Add_Action (Table.States (243), 76, 127);
-            Add_Action (Table.States (243), 105, 421);
-            Table.States (243).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (243), 118, 422);
-            Add_Goto (Table.States (243), 130, 423);
-            Table.States (243).Kernel := To_Vector (((129, 323, 1, True), 
(273, 323, 2, True)));
-            Table.States (243).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 421)));
-            Table.States (243).Minimal_Complete_Actions_Recursive := True;
-            Table.States (244).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (244), 105, 424);
-            Table.States (244).Kernel := To_Vector (((180, 25, 5, False), 
(180, 25, 2, False)));
-            Table.States (244).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 424)));
-            Table.States (245).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (245), 79, 31);
-            Add_Action (Table.States (245), 105, 120);
-            Add_Action (Table.States (245), 106, 34);
-            Add_Action (Table.States (245), 107, 35);
-            Table.States (245).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (245), 129, 42);
-            Add_Goto (Table.States (245), 240, 425);
-            Add_Goto (Table.States (245), 273, 93);
-            Add_Goto (Table.States (245), 294, 98);
-            Table.States (245).Kernel := To_Vector (((208, 29, 2, False), 
(214, 29, 5, False)));
-            Table.States (245).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
+            Table.States (227).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (227), 13, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (227), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (227), 28, (124, 0), 185);
+            Add_Action (Table.States (227), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (227), 30, (213, 0), 8);
+            Add_Action (Table.States (227), 40, (249, 0), 12);
+            Add_Action (Table.States (227), 46, (249, 1), 14);
+            Add_Action (Table.States (227), 47, (216, 0), 15);
+            Add_Action (Table.States (227), 48, (260, 0), 16);
+            Add_Action (Table.States (227), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (227), 51, (267, 0), 19);
+            Add_Action (Table.States (227), 63, (316, 0), 25);
+            Add_Action (Table.States (227), 66, (308, 0), 26);
+            Add_Action (Table.States (227), 69, (209, 0), 27);
+            Add_Action (Table.States (227), 71, (334, 0), 28);
+            Add_Action (Table.States (227), 107, (222, 1), 187);
+            Table.States (227).Goto_List.Set_Capacity (53);
+            Add_Goto (Table.States (227), 115, 36);
+            Add_Goto (Table.States (227), 124, 38);
+            Add_Goto (Table.States (227), 130, 41);
+            Add_Goto (Table.States (227), 137, 46);
+            Add_Goto (Table.States (227), 138, 47);
+            Add_Goto (Table.States (227), 160, 394);
+            Add_Goto (Table.States (227), 161, 395);
+            Add_Goto (Table.States (227), 162, 396);
+            Add_Goto (Table.States (227), 182, 55);
+            Add_Goto (Table.States (227), 185, 56);
+            Add_Goto (Table.States (227), 189, 57);
+            Add_Goto (Table.States (227), 196, 59);
+            Add_Goto (Table.States (227), 209, 61);
+            Add_Goto (Table.States (227), 210, 62);
+            Add_Goto (Table.States (227), 212, 63);
+            Add_Goto (Table.States (227), 213, 64);
+            Add_Goto (Table.States (227), 216, 65);
+            Add_Goto (Table.States (227), 217, 66);
+            Add_Goto (Table.States (227), 218, 67);
+            Add_Goto (Table.States (227), 219, 68);
+            Add_Goto (Table.States (227), 222, 70);
+            Add_Goto (Table.States (227), 226, 72);
+            Add_Goto (Table.States (227), 246, 75);
+            Add_Goto (Table.States (227), 247, 76);
+            Add_Goto (Table.States (227), 248, 77);
+            Add_Goto (Table.States (227), 249, 78);
+            Add_Goto (Table.States (227), 250, 79);
+            Add_Goto (Table.States (227), 251, 80);
+            Add_Goto (Table.States (227), 252, 81);
+            Add_Goto (Table.States (227), 253, 82);
+            Add_Goto (Table.States (227), 254, 83);
+            Add_Goto (Table.States (227), 260, 397);
+            Add_Goto (Table.States (227), 262, 85);
+            Add_Goto (Table.States (227), 263, 86);
+            Add_Goto (Table.States (227), 265, 88);
+            Add_Goto (Table.States (227), 266, 89);
+            Add_Goto (Table.States (227), 267, 90);
+            Add_Goto (Table.States (227), 268, 91);
+            Add_Goto (Table.States (227), 274, 92);
+            Add_Goto (Table.States (227), 284, 95);
+            Add_Goto (Table.States (227), 292, 96);
+            Add_Goto (Table.States (227), 307, 103);
+            Add_Goto (Table.States (227), 308, 104);
+            Add_Goto (Table.States (227), 310, 106);
+            Add_Goto (Table.States (227), 311, 107);
+            Add_Goto (Table.States (227), 312, 108);
+            Add_Goto (Table.States (227), 314, 109);
+            Add_Goto (Table.States (227), 316, 110);
+            Add_Goto (Table.States (227), 319, 112);
+            Add_Goto (Table.States (227), 320, 113);
+            Add_Goto (Table.States (227), 322, 114);
+            Add_Goto (Table.States (227), 328, 116);
+            Add_Goto (Table.States (227), 334, 117);
+            Table.States (227).Kernel := To_Vector ((0 => ((136, 0),  17,  3, 
(2147483647, 0),  0)));
+            Table.States (227).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (162, 1),  0)));
+            Table.States (228).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (228), 37, Reduce, (234, 1),  0, null, 
null);
+            Add_Action (Table.States (228), 107, (233, 0), 398);
+            Table.States (228).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (228), 233, 157);
+            Add_Goto (Table.States (228), 234, 158);
+            Table.States (228).Kernel := To_Vector ((0 => ((232, 1),  28,  0, 
(234, 1),  0)));
+            Table.States (228).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (234, 1),  0)));
+            Table.States (229).Action_List.Set_Capacity (24);
+            Add_Action (Table.States (229), 4, (116, 0), 1);
+            Add_Action (Table.States (229), 5, (306, 8), 2);
+            Add_Action (Table.States (229), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (229), 15, (142, 0), 3);
+            Add_Action (Table.States (229), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (229), 18, (164, 0), 4);
+            Add_Action (Table.States (229), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (229), 27, (193, 0), 5);
+            Add_Action (Table.States (229), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (229), 31, (306, 3), 9);
+            Add_Action (Table.States (229), 32, (225, 0), 10);
+            Add_Action (Table.States (229), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (229), 41, (306, 0), 13);
+            Add_Action (Table.States (229), 48, (260, 0), 16);
+            Add_Action (Table.States (229), 52, (279, 0), 20);
+            Add_Action (Table.States (229), 57, (293, 0), 21);
+            Add_Action (Table.States (229), 58, (199, 0), 22);
+            Add_Action (Table.States (229), 61, (129, 0), 24);
+            Add_Action (Table.States (229), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (229), 81, (242, 8), 31);
+            Add_Action (Table.States (229), 96, (220, 0), 32);
+            Add_Action (Table.States (229), 107, (134, 0), 363);
+            Add_Action (Table.States (229), 108, (242, 7), 34);
+            Add_Action (Table.States (229), 109, (242, 6), 35);
+            Table.States (229).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (229), 116, 37);
+            Add_Goto (Table.States (229), 126, 39);
+            Add_Goto (Table.States (229), 129, 40);
+            Add_Goto (Table.States (229), 131, 42);
+            Add_Goto (Table.States (229), 134, 43);
+            Add_Goto (Table.States (229), 135, 44);
+            Add_Goto (Table.States (229), 136, 45);
+            Add_Goto (Table.States (229), 142, 48);
+            Add_Goto (Table.States (229), 154, 51);
+            Add_Goto (Table.States (229), 155, 52);
+            Add_Goto (Table.States (229), 164, 54);
+            Add_Goto (Table.States (229), 193, 58);
+            Add_Goto (Table.States (229), 199, 60);
+            Add_Goto (Table.States (229), 220, 69);
+            Add_Goto (Table.States (229), 225, 71);
+            Add_Goto (Table.States (229), 235, 73);
+            Add_Goto (Table.States (229), 242, 74);
+            Add_Goto (Table.States (229), 260, 84);
+            Add_Goto (Table.States (229), 264, 87);
+            Add_Goto (Table.States (229), 275, 93);
+            Add_Goto (Table.States (229), 279, 94);
+            Add_Goto (Table.States (229), 293, 97);
+            Add_Goto (Table.States (229), 296, 98);
+            Add_Goto (Table.States (229), 297, 99);
+            Add_Goto (Table.States (229), 301, 100);
+            Add_Goto (Table.States (229), 302, 364);
+            Add_Goto (Table.States (229), 303, 399);
+            Add_Goto (Table.States (229), 305, 101);
+            Add_Goto (Table.States (229), 306, 102);
+            Add_Goto (Table.States (229), 309, 366);
+            Add_Goto (Table.States (229), 326, 115);
+            Table.States (229).Kernel := To_Vector ((0 => ((235, 1),  37,  3, 
(2147483647, 0),  0)));
+            Table.States (229).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (303, 1),  0)));
+            Table.States (230).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (230), 37, (235, 0), 400);
+            Table.States (230).Kernel := To_Vector ((0 => ((235, 0),  232,  4, 
(2147483647, 0),  0)));
+            Table.States (230).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (235, 0),  37, 400)));
+            Table.States (231).Action_List.Set_Capacity (40);
+            Add_Action (Table.States (231), (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, 81, 
96, 107, 108, 109, 110), (146, 0),  2,
+            compilation_unit_list_0'Access, null);
+            Table.States (231).Kernel := To_Vector ((0 => ((146, 0),  145,  0, 
(146, 0),  2)));
+            Table.States (231).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (146, 0),  2)));
+            Table.States (232).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (232), 81, (242, 8), 31);
+            Add_Action (Table.States (232), 107, (242, 5), 120);
+            Add_Action (Table.States (232), 108, (242, 7), 34);
+            Add_Action (Table.States (232), 109, (242, 6), 35);
+            Table.States (232).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (232), 131, 42);
+            Add_Goto (Table.States (232), 242, 401);
+            Add_Goto (Table.States (232), 275, 93);
+            Add_Goto (Table.States (232), 296, 98);
+            Table.States (232).Kernel := To_Vector ((((254, 0),  47,  4, 
(2147483647, 0),  0), ((254, 1),  47,  3,
+            (2147483647, 0),  0)));
+            Table.States (232).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (233).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (233), 99, (217, 0), 402);
+            Table.States (233).Kernel := To_Vector ((0 => ((217, 0),  254,  1, 
(2147483647, 0),  0)));
+            Table.States (233).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (217, 0),  99, 402)));
+            Table.States (234).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (234), 74, (125, 0), 340);
+            Add_Action (Table.States (234), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (234).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (234), 125, 403);
+            Table.States (234).Kernel := To_Vector ((0 => ((219, 0),  315,  1, 
(2147483647, 0),  0)));
+            Table.States (234).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (235).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (235), 7, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (235), 8, (121, 0), 404);
+            Add_Action (Table.States (235), 11, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (235), 16, (160, 9), 405);
+            Add_Conflict (Table.States (235), 16, (121, 1),  0, null, null);
+            Add_Action (Table.States (235), 26, (189, 0), 406);
+            Add_Action (Table.States (235), 40, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (235), 74, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (235), 81, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (235), 85, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (235), 99, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (235), 107, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (235), 108, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (235), 109, Reduce, (121, 1),  0, null, 
null);
+            Table.States (235).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (235), 121, 407);
+            Table.States (235).Kernel := To_Vector ((((160, 9),  84,  3, 
(2147483647, 0),  0), ((189, 0),  84,  2,
+            (2147483647, 0),  0), ((247, 0),  84,  3, (2147483647, 0),  0), 
((247, 1),  84,  4, (2147483647, 0),  0),
+            ((247, 2),  84,  10, (2147483647, 0),  0), ((247, 3),  84,  2, 
(2147483647, 0),  0), ((247, 4),  84,  3,
+            (2147483647, 0),  0), ((247, 5),  84,  9, (2147483647, 0),  0)));
+            Table.States (235).Minimal_Complete_Actions := To_Vector (((Shift, 
(189, 0),  26, 406), (Reduce, (121, 1),
+            0)));
+            Table.States (236).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (236), 107, (222, 0), 408);
+            Table.States (236).Kernel := To_Vector ((0 => ((222, 0),  86,  1, 
(2147483647, 0),  0)));
+            Table.States (236).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (222, 0),  107, 408)));
+            Table.States (237).Action_List.Set_Capacity (22);
+            Add_Action (Table.States (237), 3, (200, 2), 122);
+            Add_Action (Table.States (237), 15, (139, 0), 260);
+            Add_Action (Table.States (237), 28, (127, 6), 261);
+            Add_Action (Table.States (237), 32, (224, 0), 262);
+            Add_Action (Table.States (237), 39, (261, 4), 123);
+            Add_Action (Table.States (237), 40, (168, 1), 263);
+            Add_Action (Table.States (237), 41, (261, 1), 125);
+            Add_Action (Table.States (237), 44, (168, 3), 265);
+            Add_Action (Table.States (237), 52, (278, 0), 126);
+            Add_Action (Table.States (237), 76, (120, 0), 127);
+            Add_Action (Table.States (237), 77, (120, 5), 128);
+            Add_Action (Table.States (237), 78, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (237), 81, (242, 8), 31);
+            Add_Action (Table.States (237), 82, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (237), 86, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (237), 90, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (237), 97, (333, 1), 129);
+            Add_Action (Table.States (237), 98, (333, 0), 130);
+            Add_Action (Table.States (237), 106, (261, 0), 131);
+            Add_Action (Table.States (237), 107, (242, 5), 120);
+            Add_Action (Table.States (237), 108, (242, 7), 34);
+            Add_Action (Table.States (237), 109, (127, 0), 266);
+            Table.States (237).Goto_List.Set_Capacity (29);
+            Add_Goto (Table.States (237), 120, 132);
+            Add_Goto (Table.States (237), 127, 267);
+            Add_Goto (Table.States (237), 128, 409);
+            Add_Goto (Table.States (237), 131, 42);
+            Add_Goto (Table.States (237), 139, 269);
+            Add_Goto (Table.States (237), 156, 410);
+            Add_Goto (Table.States (237), 168, 271);
+            Add_Goto (Table.States (237), 169, 272);
+            Add_Goto (Table.States (237), 194, 411);
+            Add_Goto (Table.States (237), 200, 135);
+            Add_Goto (Table.States (237), 224, 275);
+            Add_Goto (Table.States (237), 242, 276);
+            Add_Goto (Table.States (237), 261, 137);
+            Add_Goto (Table.States (237), 275, 93);
+            Add_Goto (Table.States (237), 276, 277);
+            Add_Goto (Table.States (237), 278, 138);
+            Add_Goto (Table.States (237), 280, 412);
+            Add_Goto (Table.States (237), 281, 413);
+            Add_Goto (Table.States (237), 285, 139);
+            Add_Goto (Table.States (237), 286, 140);
+            Add_Goto (Table.States (237), 287, 141);
+            Add_Goto (Table.States (237), 288, 142);
+            Add_Goto (Table.States (237), 289, 143);
+            Add_Goto (Table.States (237), 290, 144);
+            Add_Goto (Table.States (237), 296, 98);
+            Add_Goto (Table.States (237), 304, 279);
+            Add_Goto (Table.States (237), 323, 146);
+            Add_Goto (Table.States (237), 324, 147);
+            Add_Goto (Table.States (237), 333, 148);
+            Table.States (237).Kernel := To_Vector ((((118, 0),  76,  1, 
(2147483647, 0),  0), ((118, 1),  76,  3,
+            (2147483647, 0),  0), ((242, 0),  76,  4, (2147483647, 0),  0)));
+            Table.States (237).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (128, 1),  0)));
+            Table.States (238).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (238), 3, (200, 2), 122);
+            Add_Action (Table.States (238), 39, (261, 4), 123);
+            Add_Action (Table.States (238), 40, (200, 3), 124);
+            Add_Action (Table.States (238), 41, (261, 1), 125);
+            Add_Action (Table.States (238), 52, (278, 0), 126);
+            Add_Action (Table.States (238), 76, (120, 0), 127);
+            Add_Action (Table.States (238), 77, (120, 5), 128);
+            Add_Action (Table.States (238), 81, (242, 8), 31);
+            Add_Action (Table.States (238), 97, (333, 1), 129);
+            Add_Action (Table.States (238), 98, (333, 0), 130);
+            Add_Action (Table.States (238), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (238), 106, (261, 0), 131);
+            Add_Action (Table.States (238), 107, (242, 5), 120);
+            Add_Action (Table.States (238), 108, (242, 7), 34);
+            Add_Action (Table.States (238), 109, (242, 6), 35);
+            Table.States (238).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (238), 120, 132);
+            Add_Goto (Table.States (238), 131, 42);
+            Add_Goto (Table.States (238), 194, 133);
+            Add_Goto (Table.States (238), 195, 414);
+            Add_Goto (Table.States (238), 200, 135);
+            Add_Goto (Table.States (238), 242, 136);
+            Add_Goto (Table.States (238), 261, 137);
+            Add_Goto (Table.States (238), 275, 93);
+            Add_Goto (Table.States (238), 278, 138);
+            Add_Goto (Table.States (238), 285, 139);
+            Add_Goto (Table.States (238), 286, 140);
+            Add_Goto (Table.States (238), 287, 141);
+            Add_Goto (Table.States (238), 288, 142);
+            Add_Goto (Table.States (238), 289, 143);
+            Add_Goto (Table.States (238), 290, 144);
+            Add_Goto (Table.States (238), 296, 98);
+            Add_Goto (Table.States (238), 304, 145);
+            Add_Goto (Table.States (238), 323, 146);
+            Add_Goto (Table.States (238), 324, 147);
+            Add_Goto (Table.States (238), 333, 148);
+            Table.States (238).Kernel := To_Vector ((0 => ((126, 0),  85,  1, 
(2147483647, 0),  0)));
+            Table.States (238).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (239).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (239), 9, (296, 3), 415);
+            Add_Action (Table.States (239), 107, (296, 0), 416);
+            Add_Action (Table.States (239), 108, (296, 2), 417);
+            Add_Action (Table.States (239), 109, (296, 1), 418);
+            Table.States (239).Kernel := To_Vector ((((296, 0),  87,  1, 
(2147483647, 0),  0), ((296, 1),  87,  1,
+            (2147483647, 0),  0), ((296, 2),  87,  1, (2147483647, 0),  0), 
((296, 3),  87,  1, (2147483647, 0),  0)));
+            Table.States (240).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (240), (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, 81, 96, 107, 108,
+            109, 110), (264, 0),  2, procedure_call_statement_0'Access, null);
+            Table.States (240).Kernel := To_Vector ((0 => ((264, 0),  99,  0, 
(264, 0),  2)));
+            Table.States (240).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (264, 0),  2)));
+            Table.States (241).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (241), (7, 19, 20, 38, 53, 76, 77, 107), 
(325, 0),  1, null, null);
+            Table.States (241).Kernel := To_Vector ((0 => ((325, 0),  104,  0, 
(325, 0),  1)));
+            Table.States (241).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (325, 0),  1)));
+            Table.States (242).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (242), (7, 19, 20, 38, 53, 76, 77, 107), 
(325, 1),  1, null, null);
+            Table.States (242).Kernel := To_Vector ((0 => ((325, 1),  105,  0, 
(325, 1),  1)));
+            Table.States (242).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (325, 1),  1)));
+            Table.States (243).Action_List.Set_Capacity (65);
+            Add_Action (Table.States (243), (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, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (242, 1),  2,
+            name_1'Access, null);
+            Table.States (243).Kernel := To_Vector ((0 => ((242, 1),  118,  0, 
(242, 1),  2)));
+            Table.States (243).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (242, 1),  2)));
+            Table.States (244).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (244), 7, (132, 2), 419);
+            Add_Action (Table.States (244), 19, (132, 3), 420);
+            Add_Action (Table.States (244), 20, (132, 4), 421);
+            Add_Action (Table.States (244), 38, (132, 5), 422);
+            Add_Action (Table.States (244), 76, (120, 0), 127);
+            Add_Action (Table.States (244), 77, (120, 5), 128);
+            Add_Action (Table.States (244), 107, (132, 0), 423);
+            Table.States (244).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (244), 120, 424);
+            Add_Goto (Table.States (244), 132, 425);
+            Table.States (244).Kernel := To_Vector ((((131, 0),  325,  1, 
(2147483647, 0),  0), ((275, 0),  325,  2,
+            (2147483647, 0),  0)));
+            Table.States (245).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (245), 107, (182, 0), 426);
+            Table.States (245).Kernel := To_Vector ((((182, 0),  25,  5, 
(2147483647, 0),  0), ((182, 1),  25,  2,
+            (2147483647, 0),  0)));
+            Table.States (245).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (182, 0),  107, 426)));
             Table.States (246).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (246), 79, 31);
-            Add_Action (Table.States (246), 105, 120);
-            Add_Action (Table.States (246), 106, 34);
-            Add_Action (Table.States (246), 107, 35);
+            Add_Action (Table.States (246), 81, (242, 8), 31);
+            Add_Action (Table.States (246), 107, (242, 5), 120);
+            Add_Action (Table.States (246), 108, (242, 7), 34);
+            Add_Action (Table.States (246), 109, (242, 6), 35);
             Table.States (246).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (246), 129, 42);
-            Add_Goto (Table.States (246), 240, 426);
-            Add_Goto (Table.States (246), 273, 93);
-            Add_Goto (Table.States (246), 294, 98);
-            Table.States (246).Kernel := To_Vector (((214, 50, 5, False), 
(263, 50, 1, False)));
-            Table.States (246).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
+            Add_Goto (Table.States (246), 131, 42);
+            Add_Goto (Table.States (246), 242, 427);
+            Add_Goto (Table.States (246), 275, 93);
+            Add_Goto (Table.States (246), 296, 98);
+            Table.States (246).Kernel := To_Vector ((((210, 0),  29,  2, 
(2147483647, 0),  0), ((216, 2),  29,  5,
+            (2147483647, 0),  0)));
+            Table.States (246).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
             Table.States (247).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (247), 35, 427);
-            Add_Conflict (Table.States (247), 35, (313, 1), 1, null, 
subprogram_specification_1_check'Access);
-            Add_Action (Table.States (247), 56, Reduce, (313, 1), 1, null, 
subprogram_specification_1_check'Access);
-            Add_Action (Table.States (247), 74, Reduce, (313, 1), 1, null, 
subprogram_specification_1_check'Access);
-            Add_Action (Table.States (247), 97, Reduce, (313, 1), 1, null, 
subprogram_specification_1_check'Access);
-            Table.States (247).Kernel := To_Vector (((194, 208, 4, False), 
(313, 208, 0, False)));
-            Table.States (247).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 313, 1)));
+            Add_Action (Table.States (247), 81, (242, 8), 31);
+            Add_Action (Table.States (247), 107, (242, 5), 120);
+            Add_Action (Table.States (247), 108, (242, 7), 34);
+            Add_Action (Table.States (247), 109, (242, 6), 35);
+            Table.States (247).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (247), 131, 42);
+            Add_Goto (Table.States (247), 242, 428);
+            Add_Goto (Table.States (247), 275, 93);
+            Add_Goto (Table.States (247), 296, 98);
+            Table.States (247).Kernel := To_Vector ((((216, 1),  50,  5, 
(2147483647, 0),  0), ((265, 0),  50,  1,
+            (2147483647, 0),  0)));
+            Table.States (247).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
             Table.States (248).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (248), 35, 428);
-            Add_Conflict (Table.States (248), 35, (313, 0), 1, null, 
subprogram_specification_0_check'Access);
-            Add_Action (Table.States (248), 56, Reduce, (313, 0), 1, null, 
subprogram_specification_0_check'Access);
-            Add_Action (Table.States (248), 74, Reduce, (313, 0), 1, null, 
subprogram_specification_0_check'Access);
-            Add_Action (Table.States (248), 97, Reduce, (313, 0), 1, null, 
subprogram_specification_0_check'Access);
-            Table.States (248).Kernel := To_Vector (((244, 263, 3, False), 
(313, 263, 0, False)));
-            Table.States (248).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 313, 1)));
+            Add_Action (Table.States (248), 35, (196, 0), 429);
+            Add_Conflict (Table.States (248), 35, (315, 1),  1, null, 
subprogram_specification_1_check'Access);
+            Add_Action (Table.States (248), 56, Reduce, (315, 1),  1, null, 
subprogram_specification_1_check'Access);
+            Add_Action (Table.States (248), 74, Reduce, (315, 1),  1, null, 
subprogram_specification_1_check'Access);
+            Add_Action (Table.States (248), 99, Reduce, (315, 1),  1, null, 
subprogram_specification_1_check'Access);
+            Table.States (248).Kernel := To_Vector ((((196, 0),  210,  4, 
(2147483647, 0),  0), ((315, 1),  210,  0,
+            (315, 1),  1)));
+            Table.States (248).Minimal_Complete_Actions := To_Vector (((Shift, 
(196, 0),  35, 429), (Reduce, (315, 1),
+            1)));
             Table.States (249).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (249), 35, 429);
-            Add_Conflict (Table.States (249), 35, (123, 1), 0, null, null);
-            Add_Action (Table.States (249), 56, 430);
-            Add_Action (Table.States (249), 74, 338);
-            Add_Action (Table.States (249), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (249).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (249), 123, 431);
-            Table.States (249).Kernel := To_Vector (((113, 313, 3, False), 
(308, 313, 4, False), (309, 313, 3, False),
-            (310, 313, 1, False), (312, 313, 3, False)));
-            Table.States (249).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (250).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (250), (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, 
79, 94, 105, 106, 107, 108), (250, 0), 2,
+            Add_Action (Table.States (249), 35, (246, 0), 430);
+            Add_Conflict (Table.States (249), 35, (315, 0),  1, null, 
subprogram_specification_0_check'Access);
+            Add_Action (Table.States (249), 56, Reduce, (315, 0),  1, null, 
subprogram_specification_0_check'Access);
+            Add_Action (Table.States (249), 74, Reduce, (315, 0),  1, null, 
subprogram_specification_0_check'Access);
+            Add_Action (Table.States (249), 99, Reduce, (315, 0),  1, null, 
subprogram_specification_0_check'Access);
+            Table.States (249).Kernel := To_Vector ((((246, 0),  265,  3, 
(2147483647, 0),  0), ((315, 0),  265,  0,
+            (315, 0),  1)));
+            Table.States (249).Minimal_Complete_Actions := To_Vector (((Shift, 
(246, 0),  35, 430), (Reduce, (315, 0),
+            1)));
+            Table.States (250).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (250), 35, (115, 0), 431);
+            Add_Conflict (Table.States (250), 35, (125, 1),  0, null, null);
+            Add_Action (Table.States (250), 56, (314, 0), 432);
+            Add_Action (Table.States (250), 74, (125, 0), 340);
+            Add_Action (Table.States (250), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (250).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (250), 125, 433);
+            Table.States (250).Kernel := To_Vector ((((115, 0),  315,  3, 
(2147483647, 0),  0), ((310, 0),  315,  4,
+            (2147483647, 0),  0), ((311, 0),  315,  3, (2147483647, 0),  0), 
((312, 0),  315,  1, (2147483647, 0),  0),
+            ((314, 0),  315,  3, (2147483647, 0),  0)));
+            Table.States (250).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (251).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (251), (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, 
81, 96, 107, 108, 109, 110), (252, 0),  2,
             package_declaration_0'Access, null);
-            Table.States (250).Kernel := To_Vector ((0 => (250, 97, 0, 
False)));
-            Table.States (250).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 250, 2)));
-            Table.States (251).Action_List.Set_Capacity (21);
-            Add_Action (Table.States (251), 3, 122);
-            Add_Action (Table.States (251), 15, 259);
-            Add_Action (Table.States (251), 28, 260);
-            Add_Action (Table.States (251), 32, 261);
-            Add_Action (Table.States (251), 39, 123);
-            Add_Action (Table.States (251), 40, 262);
-            Add_Action (Table.States (251), 41, 125);
-            Add_Action (Table.States (251), 44, 264);
-            Add_Action (Table.States (251), 52, 126);
-            Add_Action (Table.States (251), 76, 127);
-            Add_Action (Table.States (251), 77, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (251), 79, 31);
-            Add_Action (Table.States (251), 80, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (251), 84, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (251), 88, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (251), 95, 128);
-            Add_Action (Table.States (251), 96, 129);
-            Add_Action (Table.States (251), 104, 130);
-            Add_Action (Table.States (251), 105, 120);
-            Add_Action (Table.States (251), 106, 34);
-            Add_Action (Table.States (251), 107, 265);
-            Table.States (251).Goto_List.Set_Capacity (28);
-            Add_Goto (Table.States (251), 118, 131);
-            Add_Goto (Table.States (251), 125, 266);
-            Add_Goto (Table.States (251), 126, 407);
-            Add_Goto (Table.States (251), 129, 42);
-            Add_Goto (Table.States (251), 137, 268);
-            Add_Goto (Table.States (251), 154, 408);
-            Add_Goto (Table.States (251), 166, 270);
-            Add_Goto (Table.States (251), 167, 271);
-            Add_Goto (Table.States (251), 192, 409);
-            Add_Goto (Table.States (251), 198, 134);
-            Add_Goto (Table.States (251), 222, 274);
-            Add_Goto (Table.States (251), 240, 275);
-            Add_Goto (Table.States (251), 259, 136);
-            Add_Goto (Table.States (251), 273, 93);
-            Add_Goto (Table.States (251), 274, 276);
-            Add_Goto (Table.States (251), 276, 137);
-            Add_Goto (Table.States (251), 278, 277);
-            Add_Goto (Table.States (251), 283, 138);
-            Add_Goto (Table.States (251), 284, 139);
-            Add_Goto (Table.States (251), 285, 140);
-            Add_Goto (Table.States (251), 286, 141);
-            Add_Goto (Table.States (251), 287, 142);
-            Add_Goto (Table.States (251), 288, 143);
-            Add_Goto (Table.States (251), 294, 98);
-            Add_Goto (Table.States (251), 302, 278);
-            Add_Goto (Table.States (251), 321, 145);
-            Add_Goto (Table.States (251), 322, 146);
-            Add_Goto (Table.States (251), 331, 147);
-            Table.States (251).Kernel := To_Vector (((116, 76, 1, False), 
(116, 76, 3, False)));
-            Table.States (251).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 126, 0)));
-            Table.States (252).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (252), (21, 76, 97), (117, 0), 1, null, 
null);
-            Table.States (252).Kernel := To_Vector ((0 => (117, 116, 0, 
False)));
-            Table.States (252).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 117, 1)));
+            Table.States (251).Kernel := To_Vector ((0 => ((252, 0),  99,  0, 
(252, 0),  2)));
+            Table.States (251).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (252, 0),  2)));
+            Table.States (252).Action_List.Set_Capacity (22);
+            Add_Action (Table.States (252), 3, (200, 2), 122);
+            Add_Action (Table.States (252), 15, (139, 0), 260);
+            Add_Action (Table.States (252), 28, (127, 6), 261);
+            Add_Action (Table.States (252), 32, (224, 0), 262);
+            Add_Action (Table.States (252), 39, (261, 4), 123);
+            Add_Action (Table.States (252), 40, (168, 1), 263);
+            Add_Action (Table.States (252), 41, (261, 1), 125);
+            Add_Action (Table.States (252), 44, (168, 3), 265);
+            Add_Action (Table.States (252), 52, (278, 0), 126);
+            Add_Action (Table.States (252), 76, (120, 0), 127);
+            Add_Action (Table.States (252), 77, (120, 5), 128);
+            Add_Action (Table.States (252), 78, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (252), 81, (242, 8), 31);
+            Add_Action (Table.States (252), 82, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (252), 86, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (252), 90, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (252), 97, (333, 1), 129);
+            Add_Action (Table.States (252), 98, (333, 0), 130);
+            Add_Action (Table.States (252), 106, (261, 0), 131);
+            Add_Action (Table.States (252), 107, (242, 5), 120);
+            Add_Action (Table.States (252), 108, (242, 7), 34);
+            Add_Action (Table.States (252), 109, (127, 0), 266);
+            Table.States (252).Goto_List.Set_Capacity (28);
+            Add_Goto (Table.States (252), 120, 132);
+            Add_Goto (Table.States (252), 127, 267);
+            Add_Goto (Table.States (252), 128, 409);
+            Add_Goto (Table.States (252), 131, 42);
+            Add_Goto (Table.States (252), 139, 269);
+            Add_Goto (Table.States (252), 156, 410);
+            Add_Goto (Table.States (252), 168, 271);
+            Add_Goto (Table.States (252), 169, 272);
+            Add_Goto (Table.States (252), 194, 411);
+            Add_Goto (Table.States (252), 200, 135);
+            Add_Goto (Table.States (252), 224, 275);
+            Add_Goto (Table.States (252), 242, 276);
+            Add_Goto (Table.States (252), 261, 137);
+            Add_Goto (Table.States (252), 275, 93);
+            Add_Goto (Table.States (252), 276, 277);
+            Add_Goto (Table.States (252), 278, 138);
+            Add_Goto (Table.States (252), 280, 278);
+            Add_Goto (Table.States (252), 285, 139);
+            Add_Goto (Table.States (252), 286, 140);
+            Add_Goto (Table.States (252), 287, 141);
+            Add_Goto (Table.States (252), 288, 142);
+            Add_Goto (Table.States (252), 289, 143);
+            Add_Goto (Table.States (252), 290, 144);
+            Add_Goto (Table.States (252), 296, 98);
+            Add_Goto (Table.States (252), 304, 279);
+            Add_Goto (Table.States (252), 323, 146);
+            Add_Goto (Table.States (252), 324, 147);
+            Add_Goto (Table.States (252), 333, 148);
+            Table.States (252).Kernel := To_Vector ((((118, 0),  76,  1, 
(2147483647, 0),  0), ((118, 1),  76,  3,
+            (2147483647, 0),  0)));
+            Table.States (252).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (128, 1),  0)));
             Table.States (253).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (253), 21, Reduce, (254, 1), 0, null, 
null);
-            Add_Action (Table.States (253), 76, 432);
-            Add_Action (Table.States (253), 97, Reduce, (254, 1), 0, null, 
null);
-            Table.States (253).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (253), 200, 345);
-            Add_Goto (Table.States (253), 254, 433);
-            Table.States (253).Kernel := To_Vector (((114, 117, 3, False), 
(114, 117, 1, False)));
-            Table.States (253).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 254, 0)));
-            Table.States (254).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (254), (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, 79, 94, 105, 106,
-            107, 108), (304, 8), 3, simple_statement_8'Access, null);
-            Table.States (254).Kernel := To_Vector ((0 => (304, 97, 0, 
False)));
-            Table.States (254).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 304, 3)));
-            Table.States (255).Action_List.Set_Capacity (35);
-            Add_Action (Table.States (255), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 77,
-            78, 80, 83, 84, 86, 87, 88, 89, 90, 92, 93, 95, 96, 97, 98, 99, 
100), (198, 2), 2, null, null);
-            Table.States (255).Kernel := To_Vector ((0 => (198, 259, 0, 
False)));
-            Table.States (255).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 198, 2)));
-            Table.States (256).Action_List.Set_Capacity (40);
-            Add_Action (Table.States (256), 10, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 20, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 21, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 22, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 23, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 33, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 35, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 37, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 38, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 40, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 42, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 43, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 53, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 55, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 68, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 74, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 75, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 76, 236);
-            Add_Action (Table.States (256), 77, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 78, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 80, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 83, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 84, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 85, 238);
-            Add_Action (Table.States (256), 86, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 87, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 88, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 89, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 90, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 92, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 93, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 95, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 96, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 97, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 98, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 99, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 100, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 101, Reduce, (259, 4), 2, 
primary_4'Access, null);
-            Add_Action (Table.States (256), 102, 240);
-            Add_Action (Table.States (256), 103, 241);
-            Table.States (256).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (256), 116, 242);
-            Add_Goto (Table.States (256), 323, 243);
-            Table.States (256).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (259, 240, 0, False), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (256).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 259, 2)));
-            Table.States (257).Action_List.Set_Capacity (35);
-            Add_Action (Table.States (257), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 77,
-            78, 80, 83, 84, 86, 87, 88, 89, 90, 92, 93, 95, 96, 97, 98, 99, 
100), (198, 3), 2, null, null);
-            Table.States (257).Kernel := To_Vector ((0 => (198, 259, 0, 
False)));
-            Table.States (257).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 198, 2)));
-            Table.States (258).Action_List.Set_Capacity (21);
-            Add_Action (Table.States (258), 10, Reduce, (276, 1), 2, null, 
null);
-            Add_Action (Table.States (258), 20, Reduce, (276, 1), 2, null, 
null);
-            Add_Action (Table.States (258), 21, Reduce, (276, 1), 2, null, 
null);
-            Add_Action (Table.States (258), 22, Reduce, (276, 1), 2, null, 
null);
-            Add_Action (Table.States (258), 23, Reduce, (276, 1), 2, null, 
null);
-            Add_Action (Table.States (258), 35, Reduce, (276, 1), 2, null, 
null);
-            Add_Action (Table.States (258), 37, Reduce, (276, 1), 2, null, 
null);
-            Add_Action (Table.States (258), 43, Reduce, (276, 1), 2, null, 
null);
-            Add_Action (Table.States (258), 53, Reduce, (276, 1), 2, null, 
null);
-            Add_Action (Table.States (258), 68, Reduce, (276, 1), 2, null, 
null);
-            Add_Action (Table.States (258), 74, 434);
-            Add_Conflict (Table.States (258), 74, (276, 1), 2, null, null);
-            Add_Action (Table.States (258), 75, Reduce, (276, 1), 2, null, 
null);
-            Add_Action (Table.States (258), 76, 236);
-            Add_Action (Table.States (258), 77, Reduce, (276, 1), 2, null, 
null);
-            Add_Action (Table.States (258), 80, Reduce, (276, 1), 2, null, 
null);
-            Add_Action (Table.States (258), 84, Reduce, (276, 1), 2, null, 
null);
-            Add_Action (Table.States (258), 85, 238);
-            Add_Action (Table.States (258), 88, Reduce, (276, 1), 2, null, 
null);
-            Add_Action (Table.States (258), 97, Reduce, (276, 1), 2, null, 
null);
-            Add_Action (Table.States (258), 102, 240);
-            Add_Action (Table.States (258), 103, 241);
-            Table.States (258).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (258), 116, 242);
-            Add_Goto (Table.States (258), 323, 243);
-            Table.States (258).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (273, 240, 3, True), (276, 240, 1, True), (276, 240, 0, False), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True), (294, 240, 2, True)));
-            Table.States (258).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 276, 2)));
-            Table.States (258).Minimal_Complete_Actions_Recursive := True;
-            Table.States (259).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (259), 3, 122);
-            Add_Action (Table.States (259), 35, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (259), 39, 123);
-            Add_Action (Table.States (259), 40, 124);
-            Add_Action (Table.States (259), 41, 125);
-            Add_Action (Table.States (259), 52, 126);
-            Add_Action (Table.States (259), 76, 127);
-            Add_Action (Table.States (259), 79, 31);
-            Add_Action (Table.States (259), 95, 128);
-            Add_Action (Table.States (259), 96, 129);
-            Add_Action (Table.States (259), 104, 130);
-            Add_Action (Table.States (259), 105, 120);
-            Add_Action (Table.States (259), 106, 34);
-            Add_Action (Table.States (259), 107, 35);
-            Table.States (259).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (259), 118, 131);
-            Add_Goto (Table.States (259), 129, 42);
-            Add_Goto (Table.States (259), 192, 132);
-            Add_Goto (Table.States (259), 193, 435);
-            Add_Goto (Table.States (259), 198, 134);
-            Add_Goto (Table.States (259), 240, 135);
-            Add_Goto (Table.States (259), 259, 136);
-            Add_Goto (Table.States (259), 273, 93);
-            Add_Goto (Table.States (259), 276, 137);
-            Add_Goto (Table.States (259), 283, 138);
-            Add_Goto (Table.States (259), 284, 139);
-            Add_Goto (Table.States (259), 285, 140);
-            Add_Goto (Table.States (259), 286, 141);
-            Add_Goto (Table.States (259), 287, 142);
-            Add_Goto (Table.States (259), 288, 143);
-            Add_Goto (Table.States (259), 294, 98);
-            Add_Goto (Table.States (259), 302, 144);
-            Add_Goto (Table.States (259), 321, 145);
-            Add_Goto (Table.States (259), 322, 146);
-            Add_Goto (Table.States (259), 331, 147);
-            Table.States (259).Kernel := To_Vector ((0 => (137, 15, 3, 
False)));
-            Table.States (259).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (260).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (260), 9, 436);
-            Add_Action (Table.States (260), 62, 437);
-            Add_Action (Table.States (260), 105, 438);
-            Table.States (260).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (260), 275, 439);
-            Table.States (260).Kernel := To_Vector (((125, 28, 4, False), 
(274, 28, 5, False)));
-            Table.States (260).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 438)));
-            Table.States (261).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (261), 3, 122);
-            Add_Action (Table.States (261), 39, 123);
-            Add_Action (Table.States (261), 40, 124);
-            Add_Action (Table.States (261), 41, 125);
-            Add_Action (Table.States (261), 52, 126);
-            Add_Action (Table.States (261), 68, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (261), 76, 127);
-            Add_Action (Table.States (261), 79, 31);
-            Add_Action (Table.States (261), 95, 128);
-            Add_Action (Table.States (261), 96, 129);
-            Add_Action (Table.States (261), 104, 130);
-            Add_Action (Table.States (261), 105, 120);
-            Add_Action (Table.States (261), 106, 34);
-            Add_Action (Table.States (261), 107, 35);
-            Table.States (261).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (261), 118, 131);
-            Add_Goto (Table.States (261), 129, 42);
-            Add_Goto (Table.States (261), 192, 132);
-            Add_Goto (Table.States (261), 193, 440);
-            Add_Goto (Table.States (261), 198, 134);
-            Add_Goto (Table.States (261), 240, 135);
-            Add_Goto (Table.States (261), 259, 136);
-            Add_Goto (Table.States (261), 273, 93);
-            Add_Goto (Table.States (261), 276, 137);
-            Add_Goto (Table.States (261), 283, 138);
-            Add_Goto (Table.States (261), 284, 139);
-            Add_Goto (Table.States (261), 285, 140);
-            Add_Goto (Table.States (261), 286, 141);
-            Add_Goto (Table.States (261), 287, 142);
-            Add_Goto (Table.States (261), 288, 143);
-            Add_Goto (Table.States (261), 294, 98);
-            Add_Goto (Table.States (261), 302, 144);
-            Add_Goto (Table.States (261), 321, 145);
-            Add_Goto (Table.States (261), 322, 146);
-            Add_Goto (Table.States (261), 331, 147);
-            Table.States (261).Kernel := To_Vector (((222, 32, 4, False), 
(222, 32, 2, False), (222, 32, 3, False),
-            (222, 32, 1, False)));
-            Table.States (261).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (262).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (262), 39, 123);
-            Add_Action (Table.States (262), 41, 441);
-            Add_Action (Table.States (262), 76, 127);
-            Add_Action (Table.States (262), 79, 31);
-            Add_Action (Table.States (262), 104, 130);
-            Add_Action (Table.States (262), 105, 120);
-            Add_Action (Table.States (262), 106, 34);
-            Add_Action (Table.States (262), 107, 35);
-            Table.States (262).Goto_List.Set_Capacity (6);
-            Add_Goto (Table.States (262), 118, 131);
-            Add_Goto (Table.States (262), 129, 42);
-            Add_Goto (Table.States (262), 240, 135);
-            Add_Goto (Table.States (262), 259, 257);
-            Add_Goto (Table.States (262), 273, 93);
-            Add_Goto (Table.States (262), 294, 98);
-            Table.States (262).Kernel := To_Vector (((166, 40, 2, False), 
(198, 40, 1, False)));
-            Table.States (262).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (263).Action_List.Set_Capacity (26);
-            Add_Action (Table.States (263), 10, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 33, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 38, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 40, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 43, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 54, 442);
-            Add_Action (Table.States (263), 55, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 74, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 75, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 77, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 78, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 80, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 84, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 86, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 87, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 88, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 89, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 90, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 92, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 93, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 95, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 96, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 98, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 99, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 100, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (263), 101, Reduce, (259, 1), 1, null, 
null);
-            Table.States (263).Kernel := To_Vector (((118, 41, 2, False), 
(259, 41, 0, False)));
-            Table.States (263).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 259, 1)));
-            Table.States (264).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (264), (80, 88), (166, 3), 1, null, null);
-            Table.States (264).Kernel := To_Vector ((0 => (166, 44, 0, 
False)));
-            Table.States (264).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 166, 1)));
-            Table.States (265).Action_List.Set_Capacity (32);
-            Add_Action (Table.States (265), 10, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 33, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 35, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 38, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 40, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 43, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 53, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 55, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 74, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 75, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 76, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 77, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 78, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 80, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 84, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 85, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 86, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 87, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 88, 443);
-            Add_Conflict (Table.States (265), 88, (240, 6), 1, null, null);
-            Add_Action (Table.States (265), 89, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 90, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 92, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 93, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 95, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 96, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 97, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 98, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 99, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 100, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 101, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 102, Reduce, (240, 6), 1, null, 
null);
-            Add_Action (Table.States (265), 103, Reduce, (240, 6), 1, null, 
null);
-            Table.States (265).Kernel := To_Vector (((125, 107, 1, False), 
(125, 107, 2, False), (240, 107, 0,
-            False)));
-            Table.States (265).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 1)));
-            Table.States (266).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (266), (35, 77, 84, 97), (126, 1), 1, 
null, null);
-            Table.States (266).Kernel := To_Vector ((0 => (126, 125, 0, 
False)));
-            Table.States (266).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 126, 1)));
-            Table.States (267).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (267), 77, 444);
-            Add_Action (Table.States (267), 84, 445);
-            Table.States (267).Kernel := To_Vector (((118, 126, 1, False), 
(126, 126, 1, True)));
-            Table.States (267).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 444)));
-            Table.States (268).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (268), (1 =>  77), (154, 1), 1, null, 
null);
-            Table.States (268).Kernel := To_Vector ((0 => (154, 137, 0, 
False)));
-            Table.States (268).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 154, 1)));
-            Table.States (269).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (269), 77, 446);
-            Table.States (269).Kernel := To_Vector ((0 => (118, 154, 1, 
False)));
-            Table.States (269).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 446)));
-            Table.States (270).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (270), (80, 88), (167, 1), 1, null, null);
-            Table.States (270).Kernel := To_Vector ((0 => (167, 166, 0, 
False)));
-            Table.States (270).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 167, 1)));
-            Table.States (271).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (271), 80, 447);
-            Add_Action (Table.States (271), 88, 448);
-            Table.States (271).Kernel := To_Vector (((125, 167, 1, False), 
(125, 167, 2, False), (167, 167, 2, True)));
-            Table.States (271).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 88, 448)));
-            Table.States (272).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (272), 74, 449);
-            Add_Conflict (Table.States (272), 74, (193, 0), 1, null, null);
-            Add_Action (Table.States (272), 77, Reduce, (125, 5), 1, 
association_opt_5'Access, null);
-            Add_Conflict (Table.States (272), 77, (193, 0), 1, null, null);
-            Add_Action (Table.States (272), 80, Reduce, (166, 0), 1, null, 
null);
-            Add_Action (Table.States (272), 84, Reduce, (125, 5), 1, 
association_opt_5'Access, null);
-            Add_Action (Table.States (272), 88, Reduce, (166, 0), 1, null, 
null);
-            Table.States (272).Kernel := To_Vector (((118, 192, 3, False), 
(125, 192, 0, False), (166, 192, 0, False),
-            (193, 192, 0, True)));
-            Table.States (272).Minimal_Complete_Actions := To_Vector 
(((Reduce, 125, 1), (Reduce, 166, 1), (Reduce,
-            193, 1)));
-            Table.States (272).Minimal_Complete_Actions_Recursive := True;
-            Table.States (273).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (273), 74, 450);
-            Table.States (273).Kernel := To_Vector (((118, 193, 4, False), 
(118, 193, 2, False)));
-            Table.States (273).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 450)));
-            Table.States (274).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (274), (1 =>  77), (154, 0), 1, null, 
null);
-            Table.States (274).Kernel := To_Vector ((0 => (154, 222, 0, 
False)));
-            Table.States (274).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 154, 1)));
-            Table.States (275).Action_List.Set_Capacity (38);
-            Add_Action (Table.States (275), 10, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 20, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 21, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 22, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 23, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 33, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 35, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 37, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 38, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 40, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 43, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 53, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 55, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 68, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 74, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 75, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 76, 236);
-            Add_Action (Table.States (275), 77, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 78, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 80, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 84, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 85, 238);
-            Add_Action (Table.States (275), 86, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 87, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 88, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 89, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 90, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 92, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 93, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 95, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 96, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 97, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 98, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 99, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 100, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 101, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (275), 102, 240);
-            Add_Action (Table.States (275), 103, 241);
-            Table.States (275).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (275), 116, 242);
-            Add_Goto (Table.States (275), 323, 451);
-            Table.States (275).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (259, 240, 0, False), (273, 240, 3, True), (278, 240, 4, False), 
(278, 240, 2, False), (294, 240, 2, True),
-            (294, 240, 2, True), (294, 240, 2, True), (294, 240, 2, True)));
-            Table.States (275).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 259, 1)));
-            Table.States (276).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (276), (1 =>  77), (154, 2), 1, null, 
null);
-            Table.States (276).Kernel := To_Vector ((0 => (154, 274, 0, 
False)));
-            Table.States (276).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 154, 1)));
-            Table.States (277).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (277), (80, 88), (166, 2), 1, null, null);
-            Table.States (277).Kernel := To_Vector ((0 => (166, 278, 0, 
False)));
-            Table.States (277).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 166, 1)));
-            Table.States (278).Action_List.Set_Capacity (19);
-            Add_Action (Table.States (278), 10, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (278), 33, 289);
-            Add_Action (Table.States (278), 35, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (278), 40, 290);
-            Add_Action (Table.States (278), 43, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (278), 74, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (278), 75, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (278), 77, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (278), 80, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (278), 84, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (278), 86, 452);
-            Add_Action (Table.States (278), 87, 291);
-            Add_Action (Table.States (278), 88, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (278), 89, 292);
-            Add_Action (Table.States (278), 90, 293);
-            Add_Action (Table.States (278), 92, 294);
-            Add_Action (Table.States (278), 93, 295);
-            Add_Action (Table.States (278), 97, Reduce, (288, 3), 1, null, 
null);
-            Add_Action (Table.States (278), 99, 296);
-            Table.States (278).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (278), 289, 297);
-            Table.States (278).Kernel := To_Vector (((278, 302, 2, False), 
(288, 302, 3, False), (288, 302, 2, False),
-            (288, 302, 2, False), (288, 302, 0, False)));
-            Table.States (278).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 288, 1)));
-            Table.States (279).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (279), 72, 453);
-            Table.States (279).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (279), 141, 454);
-            Add_Goto (Table.States (279), 142, 455);
-            Table.States (279).Kernel := To_Vector ((0 => (140, 35, 5, 
False)));
-            Table.States (279).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 72, 453)));
-            Table.States (280).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (280), 39, 123);
-            Add_Action (Table.States (280), 41, 125);
-            Add_Action (Table.States (280), 76, 127);
-            Add_Action (Table.States (280), 79, 31);
-            Add_Action (Table.States (280), 104, 130);
-            Add_Action (Table.States (280), 105, 120);
-            Add_Action (Table.States (280), 106, 34);
-            Add_Action (Table.States (280), 107, 35);
-            Table.States (280).Goto_List.Set_Capacity (6);
-            Add_Goto (Table.States (280), 118, 131);
-            Add_Goto (Table.States (280), 129, 42);
-            Add_Goto (Table.States (280), 240, 135);
-            Add_Goto (Table.States (280), 259, 456);
-            Add_Goto (Table.States (280), 273, 93);
-            Add_Goto (Table.States (280), 294, 98);
-            Table.States (280).Kernel := To_Vector ((0 => (198, 101, 1, 
False)));
-            Table.States (280).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (281).Action_List.Set_Capacity (13);
-            Add_Action (Table.States (281), 3, 122);
-            Add_Action (Table.States (281), 39, 123);
-            Add_Action (Table.States (281), 40, 124);
-            Add_Action (Table.States (281), 41, 125);
-            Add_Action (Table.States (281), 52, 126);
-            Add_Action (Table.States (281), 76, 127);
-            Add_Action (Table.States (281), 79, 31);
-            Add_Action (Table.States (281), 95, 128);
-            Add_Action (Table.States (281), 96, 129);
-            Add_Action (Table.States (281), 104, 130);
-            Add_Action (Table.States (281), 105, 120);
-            Add_Action (Table.States (281), 106, 34);
-            Add_Action (Table.States (281), 107, 35);
-            Table.States (281).Goto_List.Set_Capacity (13);
-            Add_Goto (Table.States (281), 118, 131);
-            Add_Goto (Table.States (281), 129, 42);
-            Add_Goto (Table.States (281), 198, 134);
-            Add_Goto (Table.States (281), 240, 135);
-            Add_Goto (Table.States (281), 259, 136);
-            Add_Goto (Table.States (281), 273, 93);
-            Add_Goto (Table.States (281), 276, 137);
-            Add_Goto (Table.States (281), 288, 457);
-            Add_Goto (Table.States (281), 294, 98);
-            Add_Goto (Table.States (281), 302, 144);
-            Add_Goto (Table.States (281), 321, 145);
-            Add_Goto (Table.States (281), 322, 146);
-            Add_Goto (Table.States (281), 331, 147);
-            Table.States (281).Kernel := To_Vector ((0 => (283, 10, 1, True)));
-            Table.States (281).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (281).Minimal_Complete_Actions_Recursive := True;
+            Add_Action (Table.States (253), (21, 76, 99), (119, 0),  1, null, 
null);
+            Table.States (253).Kernel := To_Vector ((0 => ((119, 0),  118,  0, 
(119, 0),  1)));
+            Table.States (253).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (119, 0),  1)));
+            Table.States (254).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (254), 21, Reduce, (256, 1),  0, null, 
null);
+            Add_Action (Table.States (254), 76, (202, 0), 434);
+            Add_Action (Table.States (254), 99, Reduce, (256, 1),  0, null, 
null);
+            Table.States (254).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (254), 202, 347);
+            Add_Goto (Table.States (254), 256, 435);
+            Table.States (254).Kernel := To_Vector ((((116, 0),  119,  3, 
(2147483647, 0),  0), ((116, 1),  119,  1,
+            (2147483647, 0),  0)));
+            Table.States (254).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (256, 1),  0)));
+            Table.States (255).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (255), (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, 81, 96, 107, 108,
+            109, 110), (306, 8),  3, simple_statement_8'Access, null);
+            Table.States (255).Kernel := To_Vector ((0 => ((306, 8),  99,  0, 
(306, 8),  3)));
+            Table.States (255).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (306, 8),  3)));
+            Table.States (256).Action_List.Set_Capacity (36);
+            Add_Action (Table.States (256), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 78,
+            79, 80, 82, 85, 86, 88, 89, 90, 91, 92, 94, 95, 97, 98, 99, 100, 
101, 102), (200, 2),  2, null, null);
+            Table.States (256).Kernel := To_Vector ((0 => ((200, 2),  261,  0, 
(200, 2),  2)));
+            Table.States (256).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (200, 2),  2)));
+            Table.States (257).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (257), 10, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 20, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 21, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 22, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 23, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 33, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 35, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 37, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 38, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 40, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 42, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 43, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 53, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 55, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 68, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 74, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 75, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 76, (118, 0), 237);
+            Add_Action (Table.States (257), 78, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 79, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 80, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 82, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 85, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 86, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 87, (296, 0), 239);
+            Add_Action (Table.States (257), 88, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 89, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 90, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 91, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 92, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 94, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 95, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 97, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 98, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 99, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 100, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 101, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 102, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 103, Reduce, (261, 4),  2, 
primary_4'Access, null);
+            Add_Action (Table.States (257), 104, (325, 0), 241);
+            Add_Action (Table.States (257), 105, (325, 1), 242);
+            Table.States (257).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (257), 118, 243);
+            Add_Goto (Table.States (257), 325, 244);
+            Table.States (257).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((261, 4),  242,  0, (261, 4),  2), ((275,
+            0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (257).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (261, 4),  2)));
+            Table.States (258).Action_List.Set_Capacity (36);
+            Add_Action (Table.States (258), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 78,
+            79, 80, 82, 85, 86, 88, 89, 90, 91, 92, 94, 95, 97, 98, 99, 100, 
101, 102), (200, 3),  2, null, null);
+            Table.States (258).Kernel := To_Vector ((0 => ((200, 3),  261,  0, 
(200, 3),  2)));
+            Table.States (258).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (200, 3),  2)));
+            Table.States (259).Action_List.Set_Capacity (22);
+            Add_Action (Table.States (259), 10, Reduce, (278, 1),  2, null, 
null);
+            Add_Action (Table.States (259), 20, Reduce, (278, 1),  2, null, 
null);
+            Add_Action (Table.States (259), 21, Reduce, (278, 1),  2, null, 
null);
+            Add_Action (Table.States (259), 22, Reduce, (278, 1),  2, null, 
null);
+            Add_Action (Table.States (259), 23, Reduce, (278, 1),  2, null, 
null);
+            Add_Action (Table.States (259), 35, Reduce, (278, 1),  2, null, 
null);
+            Add_Action (Table.States (259), 37, Reduce, (278, 1),  2, null, 
null);
+            Add_Action (Table.States (259), 43, Reduce, (278, 1),  2, null, 
null);
+            Add_Action (Table.States (259), 53, Reduce, (278, 1),  2, null, 
null);
+            Add_Action (Table.States (259), 68, Reduce, (278, 1),  2, null, 
null);
+            Add_Action (Table.States (259), 74, (278, 0), 436);
+            Add_Conflict (Table.States (259), 74, (278, 1),  2, null, null);
+            Add_Action (Table.States (259), 75, Reduce, (278, 1),  2, null, 
null);
+            Add_Action (Table.States (259), 76, (118, 0), 237);
+            Add_Action (Table.States (259), 78, Reduce, (278, 1),  2, null, 
null);
+            Add_Action (Table.States (259), 79, Reduce, (278, 1),  2, null, 
null);
+            Add_Action (Table.States (259), 82, Reduce, (278, 1),  2, null, 
null);
+            Add_Action (Table.States (259), 86, Reduce, (278, 1),  2, null, 
null);
+            Add_Action (Table.States (259), 87, (296, 0), 239);
+            Add_Action (Table.States (259), 90, Reduce, (278, 1),  2, null, 
null);
+            Add_Action (Table.States (259), 99, Reduce, (278, 1),  2, null, 
null);
+            Add_Action (Table.States (259), 104, (325, 0), 241);
+            Add_Action (Table.States (259), 105, (325, 1), 242);
+            Table.States (259).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (259), 118, 243);
+            Add_Goto (Table.States (259), 325, 244);
+            Table.States (259).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((275, 0),  242,  3, (2147483647, 0),  0),
+            ((278, 0),  242,  1, (2147483647, 0),  0), ((278, 1),  242,  0, 
(278, 1),  2), ((296, 0),  242,  2,
+            (2147483647, 0),  0), ((296, 1),  242,  2, (2147483647, 0),  0), 
((296, 2),  242,  2, (2147483647, 0),  0),
+            ((296, 3),  242,  2, (2147483647, 0),  0)));
+            Table.States (259).Minimal_Complete_Actions := To_Vector (((Shift, 
(278, 0),  74, 436), (Reduce, (278, 1),
+            2)));
+            Table.States (260).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (260), 3, (200, 2), 122);
+            Add_Action (Table.States (260), 35, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (260), 39, (261, 4), 123);
+            Add_Action (Table.States (260), 40, (200, 3), 124);
+            Add_Action (Table.States (260), 41, (261, 1), 125);
+            Add_Action (Table.States (260), 52, (278, 0), 126);
+            Add_Action (Table.States (260), 76, (120, 0), 127);
+            Add_Action (Table.States (260), 77, (120, 5), 128);
+            Add_Action (Table.States (260), 81, (242, 8), 31);
+            Add_Action (Table.States (260), 97, (333, 1), 129);
+            Add_Action (Table.States (260), 98, (333, 0), 130);
+            Add_Action (Table.States (260), 106, (261, 0), 131);
+            Add_Action (Table.States (260), 107, (242, 5), 120);
+            Add_Action (Table.States (260), 108, (242, 7), 34);
+            Add_Action (Table.States (260), 109, (242, 6), 35);
+            Table.States (260).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (260), 120, 132);
+            Add_Goto (Table.States (260), 131, 42);
+            Add_Goto (Table.States (260), 194, 133);
+            Add_Goto (Table.States (260), 195, 437);
+            Add_Goto (Table.States (260), 200, 135);
+            Add_Goto (Table.States (260), 242, 136);
+            Add_Goto (Table.States (260), 261, 137);
+            Add_Goto (Table.States (260), 275, 93);
+            Add_Goto (Table.States (260), 278, 138);
+            Add_Goto (Table.States (260), 285, 139);
+            Add_Goto (Table.States (260), 286, 140);
+            Add_Goto (Table.States (260), 287, 141);
+            Add_Goto (Table.States (260), 288, 142);
+            Add_Goto (Table.States (260), 289, 143);
+            Add_Goto (Table.States (260), 290, 144);
+            Add_Goto (Table.States (260), 296, 98);
+            Add_Goto (Table.States (260), 304, 145);
+            Add_Goto (Table.States (260), 323, 146);
+            Add_Goto (Table.States (260), 324, 147);
+            Add_Goto (Table.States (260), 333, 148);
+            Table.States (260).Kernel := To_Vector ((0 => ((139, 0),  15,  3, 
(2147483647, 0),  0)));
+            Table.States (260).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (261).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (261), 9, (277, 0), 438);
+            Add_Action (Table.States (261), 62, (277, 1), 439);
+            Add_Action (Table.States (261), 107, (127, 6), 440);
+            Table.States (261).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (261), 233, 441);
+            Add_Goto (Table.States (261), 277, 442);
+            Table.States (261).Kernel := To_Vector ((((127, 6),  28,  4, 
(2147483647, 0),  0), ((127, 7),  28,  5,
+            (2147483647, 0),  0), ((276, 0),  28,  5, (2147483647, 0),  0)));
+            Table.States (261).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (127, 6),  107, 440)));
+            Table.States (262).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (262), 3, (200, 2), 122);
+            Add_Action (Table.States (262), 39, (261, 4), 123);
+            Add_Action (Table.States (262), 40, (200, 3), 124);
+            Add_Action (Table.States (262), 41, (261, 1), 125);
+            Add_Action (Table.States (262), 52, (278, 0), 126);
+            Add_Action (Table.States (262), 68, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (262), 76, (120, 0), 127);
+            Add_Action (Table.States (262), 77, (120, 5), 128);
+            Add_Action (Table.States (262), 81, (242, 8), 31);
+            Add_Action (Table.States (262), 97, (333, 1), 129);
+            Add_Action (Table.States (262), 98, (333, 0), 130);
+            Add_Action (Table.States (262), 106, (261, 0), 131);
+            Add_Action (Table.States (262), 107, (242, 5), 120);
+            Add_Action (Table.States (262), 108, (242, 7), 34);
+            Add_Action (Table.States (262), 109, (242, 6), 35);
+            Table.States (262).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (262), 120, 132);
+            Add_Goto (Table.States (262), 131, 42);
+            Add_Goto (Table.States (262), 194, 133);
+            Add_Goto (Table.States (262), 195, 443);
+            Add_Goto (Table.States (262), 200, 135);
+            Add_Goto (Table.States (262), 242, 136);
+            Add_Goto (Table.States (262), 261, 137);
+            Add_Goto (Table.States (262), 275, 93);
+            Add_Goto (Table.States (262), 278, 138);
+            Add_Goto (Table.States (262), 285, 139);
+            Add_Goto (Table.States (262), 286, 140);
+            Add_Goto (Table.States (262), 287, 141);
+            Add_Goto (Table.States (262), 288, 142);
+            Add_Goto (Table.States (262), 289, 143);
+            Add_Goto (Table.States (262), 290, 144);
+            Add_Goto (Table.States (262), 296, 98);
+            Add_Goto (Table.States (262), 304, 145);
+            Add_Goto (Table.States (262), 323, 146);
+            Add_Goto (Table.States (262), 324, 147);
+            Add_Goto (Table.States (262), 333, 148);
+            Table.States (262).Kernel := To_Vector ((((224, 0),  32,  4, 
(2147483647, 0),  0), ((224, 1),  32,  2,
+            (2147483647, 0),  0), ((224, 2),  32,  3, (2147483647, 0),  0), 
((224, 3),  32,  1, (2147483647, 0),  0)));
+            Table.States (262).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (263).Action_List.Set_Capacity (9);
+            Add_Action (Table.States (263), 39, (261, 4), 123);
+            Add_Action (Table.States (263), 41, (168, 1), 444);
+            Add_Action (Table.States (263), 76, (120, 0), 127);
+            Add_Action (Table.States (263), 77, (120, 5), 128);
+            Add_Action (Table.States (263), 81, (242, 8), 31);
+            Add_Action (Table.States (263), 106, (261, 0), 131);
+            Add_Action (Table.States (263), 107, (242, 5), 120);
+            Add_Action (Table.States (263), 108, (242, 7), 34);
+            Add_Action (Table.States (263), 109, (242, 6), 35);
+            Table.States (263).Goto_List.Set_Capacity (6);
+            Add_Goto (Table.States (263), 120, 132);
+            Add_Goto (Table.States (263), 131, 42);
+            Add_Goto (Table.States (263), 242, 136);
+            Add_Goto (Table.States (263), 261, 258);
+            Add_Goto (Table.States (263), 275, 93);
+            Add_Goto (Table.States (263), 296, 98);
+            Table.States (263).Kernel := To_Vector ((((168, 1),  40,  2, 
(2147483647, 0),  0), ((200, 3),  40,  1,
+            (2147483647, 0),  0)));
+            Table.States (263).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (264).Action_List.Set_Capacity (26);
+            Add_Action (Table.States (264), 10, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 33, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 38, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 40, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 43, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 54, (120, 1), 445);
+            Add_Action (Table.States (264), 55, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 74, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 75, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 78, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 80, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 82, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 86, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 88, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 89, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 90, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 91, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 92, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 94, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 95, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 97, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 98, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 100, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 101, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 102, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (264), 103, Reduce, (261, 1),  1, null, 
null);
+            Table.States (264).Kernel := To_Vector ((((120, 1),  41,  2, 
(2147483647, 0),  0), ((261, 1),  41,  0,
+            (261, 1),  1)));
+            Table.States (264).Minimal_Complete_Actions := To_Vector (((Shift, 
(120, 1),  54, 445), (Reduce, (261, 1),
+            1)));
          end Subr_5;
          procedure Subr_6
          is begin
-            Table.States (282).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (282), 68, 458);
-            Table.States (282).Kernel := To_Vector ((0 => (284, 10, 2, True)));
-            Table.States (282).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 68, 458)));
-            Table.States (282).Minimal_Complete_Actions_Recursive := True;
-            Table.States (283).Action_List.Set_Capacity (13);
-            Add_Action (Table.States (283), 3, 122);
-            Add_Action (Table.States (283), 39, 123);
-            Add_Action (Table.States (283), 40, 124);
-            Add_Action (Table.States (283), 41, 125);
-            Add_Action (Table.States (283), 52, 126);
-            Add_Action (Table.States (283), 76, 127);
-            Add_Action (Table.States (283), 79, 31);
-            Add_Action (Table.States (283), 95, 128);
-            Add_Action (Table.States (283), 96, 129);
-            Add_Action (Table.States (283), 104, 130);
-            Add_Action (Table.States (283), 105, 120);
-            Add_Action (Table.States (283), 106, 34);
-            Add_Action (Table.States (283), 107, 35);
+            Table.States (265).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (265), (82, 90), (168, 3),  1, null, 
null);
+            Table.States (265).Kernel := To_Vector ((0 => ((168, 3),  44,  0, 
(168, 3),  1)));
+            Table.States (265).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (168, 3),  1)));
+            Table.States (266).Action_List.Set_Capacity (33);
+            Add_Action (Table.States (266), 10, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 33, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 35, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 38, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 40, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 43, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 53, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 55, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 74, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 75, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 76, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 78, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 79, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 80, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 82, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 86, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 87, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 88, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 89, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 90, (127, 0), 446);
+            Add_Conflict (Table.States (266), 90, (242, 6),  1, null, null);
+            Add_Action (Table.States (266), 91, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 92, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 94, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 95, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 97, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 98, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 99, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 100, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 101, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 102, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 103, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 104, Reduce, (242, 6),  1, null, 
null);
+            Add_Action (Table.States (266), 105, Reduce, (242, 6),  1, null, 
null);
+            Table.States (266).Kernel := To_Vector ((((127, 0),  109,  1, 
(2147483647, 0),  0), ((127, 1),  109,  2,
+            (2147483647, 0),  0), ((242, 6),  109,  0, (242, 6),  1)));
+            Table.States (266).Minimal_Complete_Actions := To_Vector (((Shift, 
(127, 0),  90, 446), (Reduce, (242, 6),
+            1)));
+            Table.States (267).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (267), (35, 78, 79, 86, 99), (128, 1),  
1, null, null);
+            Table.States (267).Kernel := To_Vector ((0 => ((128, 1),  127,  0, 
(128, 1),  1)));
+            Table.States (267).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (128, 1),  1)));
+            Table.States (268).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (268), 78, (120, 0), 447);
+            Add_Action (Table.States (268), 86, (128, 0), 448);
+            Table.States (268).Kernel := To_Vector ((((120, 0),  128,  1, 
(2147483647, 0),  0), ((128, 0),  128,  1,
+            (2147483647, 0),  0)));
+            Table.States (268).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (120, 0),  78, 447)));
+            Table.States (269).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (269), (1 =>  78), (156, 1),  1, null, 
null);
+            Table.States (269).Kernel := To_Vector ((0 => ((156, 1),  139,  0, 
(156, 1),  1)));
+            Table.States (269).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (156, 1),  1)));
+            Table.States (270).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (270), 78, (120, 6), 449);
+            Table.States (270).Kernel := To_Vector ((0 => ((120, 6),  156,  1, 
(2147483647, 0),  0)));
+            Table.States (270).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (120, 6),  78, 449)));
+            Table.States (271).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (271), (82, 90), (169, 1),  1, null, 
null);
+            Table.States (271).Kernel := To_Vector ((0 => ((169, 1),  168,  0, 
(169, 1),  1)));
+            Table.States (271).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (169, 1),  1)));
+            Table.States (272).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (272), 82, (169, 0), 450);
+            Add_Action (Table.States (272), 90, (127, 2), 451);
+            Table.States (272).Kernel := To_Vector ((((127, 2),  169,  1, 
(2147483647, 0),  0), ((127, 3),  169,  2,
+            (2147483647, 0),  0), ((169, 0),  169,  2, (2147483647, 0),  0)));
+            Table.States (273).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (273), 74, (120, 4), 452);
+            Add_Conflict (Table.States (273), 74, (195, 0),  1, null, null);
+            Add_Action (Table.States (273), 78, Reduce, (127, 4),  1, 
association_opt_4'Access, null);
+            Add_Conflict (Table.States (273), 78, (195, 0),  1, null, null);
+            Add_Action (Table.States (273), 82, Reduce, (168, 0),  1, null, 
null);
+            Add_Action (Table.States (273), 86, Reduce, (127, 4),  1, 
association_opt_4'Access, null);
+            Add_Action (Table.States (273), 90, Reduce, (168, 0),  1, null, 
null);
+            Table.States (273).Kernel := To_Vector ((((120, 4),  194,  3, 
(2147483647, 0),  0), ((127, 4),  194,  0,
+            (127, 4),  1), ((168, 0),  194,  0, (168, 0),  1), ((195, 0),  
194,  0, (195, 0),  1)));
+            Table.States (273).Minimal_Complete_Actions := To_Vector (((Shift, 
(120, 4),  74, 452), (Reduce, (127, 4),
+            1), (Reduce, (168, 0),  1), (Reduce, (195, 0),  1)));
+            Table.States (274).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (274), 74, (120, 2), 453);
+            Table.States (274).Kernel := To_Vector ((((120, 2),  195,  4, 
(2147483647, 0),  0), ((120, 3),  195,  2,
+            (2147483647, 0),  0)));
+            Table.States (274).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (120, 2),  74, 453)));
+            Table.States (275).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (275), (1 =>  78), (156, 0),  1, null, 
null);
+            Table.States (275).Kernel := To_Vector ((0 => ((156, 0),  224,  0, 
(156, 0),  1)));
+            Table.States (275).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (156, 0),  1)));
+            Table.States (276).Action_List.Set_Capacity (39);
+            Add_Action (Table.States (276), 10, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 20, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 21, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 22, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 23, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 33, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 35, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 37, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 38, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 40, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 43, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 53, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 55, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 68, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 74, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 75, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 76, (118, 0), 237);
+            Add_Action (Table.States (276), 78, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 79, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 80, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 82, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 86, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 87, (296, 0), 239);
+            Add_Action (Table.States (276), 88, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 89, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 90, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 91, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 92, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 94, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 95, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 97, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 98, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 99, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 100, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 101, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 102, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 103, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (276), 104, (325, 0), 241);
+            Add_Action (Table.States (276), 105, (325, 1), 242);
+            Table.States (276).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (276), 118, 243);
+            Add_Goto (Table.States (276), 325, 454);
+            Table.States (276).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((261, 3),  242,  0, (261, 3),  1), ((275,
+            0),  242,  3, (2147483647, 0),  0), ((280, 0),  242,  4, 
(2147483647, 0),  0), ((280, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 0),  242,  2, (2147483647, 0),  0), 
((296, 1),  242,  2, (2147483647, 0),  0),
+            ((296, 2),  242,  2, (2147483647, 0),  0), ((296, 3),  242,  2, 
(2147483647, 0),  0)));
+            Table.States (276).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (261, 3),  1)));
+            Table.States (277).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (277), (1 =>  78), (156, 2),  1, null, 
null);
+            Table.States (277).Kernel := To_Vector ((0 => ((156, 2),  276,  0, 
(156, 2),  1)));
+            Table.States (277).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (156, 2),  1)));
+            Table.States (278).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (278), (82, 90), (168, 2),  1, null, 
null);
+            Table.States (278).Kernel := To_Vector ((0 => ((168, 2),  280,  0, 
(168, 2),  1)));
+            Table.States (278).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (168, 2),  1)));
+            Table.States (279).Action_List.Set_Capacity (20);
+            Add_Action (Table.States (279), 10, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (279), 33, (290, 1), 291);
+            Add_Action (Table.States (279), 35, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (279), 40, (290, 0), 292);
+            Add_Action (Table.States (279), 43, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (279), 74, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (279), 75, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (279), 78, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (279), 79, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (279), 82, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (279), 86, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (279), 88, (280, 2), 455);
+            Add_Action (Table.States (279), 89, (291, 0), 293);
+            Add_Action (Table.States (279), 90, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (279), 91, (291, 4), 294);
+            Add_Action (Table.States (279), 92, (291, 5), 295);
+            Add_Action (Table.States (279), 94, (291, 2), 296);
+            Add_Action (Table.States (279), 95, (291, 3), 297);
+            Add_Action (Table.States (279), 99, Reduce, (290, 3),  1, null, 
null);
+            Add_Action (Table.States (279), 101, (291, 1), 298);
+            Table.States (279).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (279), 291, 299);
+            Table.States (279).Kernel := To_Vector ((((280, 2),  304,  2, 
(2147483647, 0),  0), ((290, 0),  304,  3,
+            (2147483647, 0),  0), ((290, 1),  304,  2, (2147483647, 0),  0), 
((290, 2),  304,  2, (2147483647, 0),  0),
+            ((290, 3),  304,  0, (290, 3),  1)));
+            Table.States (279).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (290, 3),  1)));
+            Table.States (280).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (280), 74, (120, 5), 456);
+            Table.States (280).Kernel := To_Vector ((0 => ((120, 5),  194,  3, 
(2147483647, 0),  0)));
+            Table.States (280).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (120, 5),  74, 456)));
+            Table.States (281).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (281), 72, (143, 0), 457);
+            Table.States (281).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (281), 143, 458);
+            Add_Goto (Table.States (281), 144, 459);
+            Table.States (281).Kernel := To_Vector ((0 => ((142, 0),  35,  5, 
(2147483647, 0),  0)));
+            Table.States (281).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (143, 0),  72, 457)));
+            Table.States (282).Action_List.Set_Capacity (9);
+            Add_Action (Table.States (282), 39, (261, 4), 123);
+            Add_Action (Table.States (282), 41, (261, 1), 125);
+            Add_Action (Table.States (282), 76, (120, 0), 127);
+            Add_Action (Table.States (282), 77, (120, 5), 128);
+            Add_Action (Table.States (282), 81, (242, 8), 31);
+            Add_Action (Table.States (282), 106, (261, 0), 131);
+            Add_Action (Table.States (282), 107, (242, 5), 120);
+            Add_Action (Table.States (282), 108, (242, 7), 34);
+            Add_Action (Table.States (282), 109, (242, 6), 35);
+            Table.States (282).Goto_List.Set_Capacity (6);
+            Add_Goto (Table.States (282), 120, 132);
+            Add_Goto (Table.States (282), 131, 42);
+            Add_Goto (Table.States (282), 242, 136);
+            Add_Goto (Table.States (282), 261, 460);
+            Add_Goto (Table.States (282), 275, 93);
+            Add_Goto (Table.States (282), 296, 98);
+            Table.States (282).Kernel := To_Vector ((0 => ((200, 0),  103,  1, 
(2147483647, 0),  0)));
+            Table.States (282).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (283).Action_List.Set_Capacity (14);
+            Add_Action (Table.States (283), 3, (200, 2), 122);
+            Add_Action (Table.States (283), 39, (261, 4), 123);
+            Add_Action (Table.States (283), 40, (200, 3), 124);
+            Add_Action (Table.States (283), 41, (261, 1), 125);
+            Add_Action (Table.States (283), 52, (278, 0), 126);
+            Add_Action (Table.States (283), 76, (120, 0), 127);
+            Add_Action (Table.States (283), 77, (120, 5), 128);
+            Add_Action (Table.States (283), 81, (242, 8), 31);
+            Add_Action (Table.States (283), 97, (333, 1), 129);
+            Add_Action (Table.States (283), 98, (333, 0), 130);
+            Add_Action (Table.States (283), 106, (261, 0), 131);
+            Add_Action (Table.States (283), 107, (242, 5), 120);
+            Add_Action (Table.States (283), 108, (242, 7), 34);
+            Add_Action (Table.States (283), 109, (242, 6), 35);
             Table.States (283).Goto_List.Set_Capacity (13);
-            Add_Goto (Table.States (283), 118, 131);
-            Add_Goto (Table.States (283), 129, 42);
-            Add_Goto (Table.States (283), 198, 134);
-            Add_Goto (Table.States (283), 240, 135);
-            Add_Goto (Table.States (283), 259, 136);
-            Add_Goto (Table.States (283), 273, 93);
-            Add_Goto (Table.States (283), 276, 137);
-            Add_Goto (Table.States (283), 288, 459);
-            Add_Goto (Table.States (283), 294, 98);
-            Add_Goto (Table.States (283), 302, 144);
-            Add_Goto (Table.States (283), 321, 145);
-            Add_Goto (Table.States (283), 322, 146);
-            Add_Goto (Table.States (283), 331, 147);
-            Table.States (283).Kernel := To_Vector ((0 => (285, 43, 1, True)));
-            Table.States (283).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (283).Minimal_Complete_Actions_Recursive := True;
+            Add_Goto (Table.States (283), 120, 132);
+            Add_Goto (Table.States (283), 131, 42);
+            Add_Goto (Table.States (283), 200, 135);
+            Add_Goto (Table.States (283), 242, 136);
+            Add_Goto (Table.States (283), 261, 137);
+            Add_Goto (Table.States (283), 275, 93);
+            Add_Goto (Table.States (283), 278, 138);
+            Add_Goto (Table.States (283), 290, 461);
+            Add_Goto (Table.States (283), 296, 98);
+            Add_Goto (Table.States (283), 304, 145);
+            Add_Goto (Table.States (283), 323, 146);
+            Add_Goto (Table.States (283), 324, 147);
+            Add_Goto (Table.States (283), 333, 148);
+            Table.States (283).Kernel := To_Vector ((0 => ((285, 0),  10,  1, 
(2147483647, 0),  0)));
+            Table.States (283).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
             Table.States (284).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (284), 22, 460);
-            Table.States (284).Kernel := To_Vector ((0 => (286, 43, 2, True)));
-            Table.States (284).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 22, 460)));
-            Table.States (284).Minimal_Complete_Actions_Recursive := True;
-            Table.States (285).Action_List.Set_Capacity (13);
-            Add_Action (Table.States (285), 3, 122);
-            Add_Action (Table.States (285), 39, 123);
-            Add_Action (Table.States (285), 40, 124);
-            Add_Action (Table.States (285), 41, 125);
-            Add_Action (Table.States (285), 52, 126);
-            Add_Action (Table.States (285), 76, 127);
-            Add_Action (Table.States (285), 79, 31);
-            Add_Action (Table.States (285), 95, 128);
-            Add_Action (Table.States (285), 96, 129);
-            Add_Action (Table.States (285), 104, 130);
-            Add_Action (Table.States (285), 105, 120);
-            Add_Action (Table.States (285), 106, 34);
-            Add_Action (Table.States (285), 107, 35);
+            Add_Action (Table.States (284), 68, (286, 0), 462);
+            Table.States (284).Kernel := To_Vector ((0 => ((286, 0),  10,  2, 
(2147483647, 0),  0)));
+            Table.States (284).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (286, 0),  68, 462)));
+            Table.States (285).Action_List.Set_Capacity (14);
+            Add_Action (Table.States (285), 3, (200, 2), 122);
+            Add_Action (Table.States (285), 39, (261, 4), 123);
+            Add_Action (Table.States (285), 40, (200, 3), 124);
+            Add_Action (Table.States (285), 41, (261, 1), 125);
+            Add_Action (Table.States (285), 52, (278, 0), 126);
+            Add_Action (Table.States (285), 76, (120, 0), 127);
+            Add_Action (Table.States (285), 77, (120, 5), 128);
+            Add_Action (Table.States (285), 81, (242, 8), 31);
+            Add_Action (Table.States (285), 97, (333, 1), 129);
+            Add_Action (Table.States (285), 98, (333, 0), 130);
+            Add_Action (Table.States (285), 106, (261, 0), 131);
+            Add_Action (Table.States (285), 107, (242, 5), 120);
+            Add_Action (Table.States (285), 108, (242, 7), 34);
+            Add_Action (Table.States (285), 109, (242, 6), 35);
             Table.States (285).Goto_List.Set_Capacity (13);
-            Add_Goto (Table.States (285), 118, 131);
-            Add_Goto (Table.States (285), 129, 42);
-            Add_Goto (Table.States (285), 198, 134);
-            Add_Goto (Table.States (285), 240, 135);
-            Add_Goto (Table.States (285), 259, 136);
-            Add_Goto (Table.States (285), 273, 93);
-            Add_Goto (Table.States (285), 276, 137);
-            Add_Goto (Table.States (285), 288, 461);
-            Add_Goto (Table.States (285), 294, 98);
-            Add_Goto (Table.States (285), 302, 144);
-            Add_Goto (Table.States (285), 321, 145);
-            Add_Goto (Table.States (285), 322, 146);
-            Add_Goto (Table.States (285), 331, 147);
-            Table.States (285).Kernel := To_Vector ((0 => (287, 75, 1, True)));
-            Table.States (285).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (285).Minimal_Complete_Actions_Recursive := True;
-            Table.States (286).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (286), 3, 122);
-            Add_Action (Table.States (286), 39, 123);
-            Add_Action (Table.States (286), 40, 124);
-            Add_Action (Table.States (286), 41, 125);
-            Add_Action (Table.States (286), 52, 126);
-            Add_Action (Table.States (286), 68, 462);
-            Add_Action (Table.States (286), 76, 127);
-            Add_Action (Table.States (286), 79, 31);
-            Add_Action (Table.States (286), 95, 128);
-            Add_Action (Table.States (286), 96, 129);
-            Add_Action (Table.States (286), 104, 130);
-            Add_Action (Table.States (286), 105, 120);
-            Add_Action (Table.States (286), 106, 34);
-            Add_Action (Table.States (286), 107, 35);
-            Table.States (286).Goto_List.Set_Capacity (13);
-            Add_Goto (Table.States (286), 118, 131);
-            Add_Goto (Table.States (286), 129, 42);
-            Add_Goto (Table.States (286), 198, 134);
-            Add_Goto (Table.States (286), 240, 135);
-            Add_Goto (Table.States (286), 259, 136);
-            Add_Goto (Table.States (286), 273, 93);
-            Add_Goto (Table.States (286), 276, 137);
-            Add_Goto (Table.States (286), 288, 463);
-            Add_Goto (Table.States (286), 294, 98);
-            Add_Goto (Table.States (286), 302, 144);
-            Add_Goto (Table.States (286), 321, 145);
-            Add_Goto (Table.States (286), 322, 146);
-            Add_Goto (Table.States (286), 331, 147);
-            Table.States (286).Kernel := To_Vector (((283, 10, 1, True), (284, 
10, 2, True)));
-            Table.States (286).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (286).Minimal_Complete_Actions_Recursive := True;
+            Add_Goto (Table.States (285), 120, 132);
+            Add_Goto (Table.States (285), 131, 42);
+            Add_Goto (Table.States (285), 200, 135);
+            Add_Goto (Table.States (285), 242, 136);
+            Add_Goto (Table.States (285), 261, 137);
+            Add_Goto (Table.States (285), 275, 93);
+            Add_Goto (Table.States (285), 278, 138);
+            Add_Goto (Table.States (285), 290, 463);
+            Add_Goto (Table.States (285), 296, 98);
+            Add_Goto (Table.States (285), 304, 145);
+            Add_Goto (Table.States (285), 323, 146);
+            Add_Goto (Table.States (285), 324, 147);
+            Add_Goto (Table.States (285), 333, 148);
+            Table.States (285).Kernel := To_Vector ((0 => ((287, 0),  43,  1, 
(2147483647, 0),  0)));
+            Table.States (285).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (286).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (286), 22, (288, 0), 464);
+            Table.States (286).Kernel := To_Vector ((0 => ((288, 0),  43,  2, 
(2147483647, 0),  0)));
+            Table.States (286).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (288, 0),  22, 464)));
             Table.States (287).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (287), 3, 122);
-            Add_Action (Table.States (287), 22, 464);
-            Add_Action (Table.States (287), 39, 123);
-            Add_Action (Table.States (287), 40, 124);
-            Add_Action (Table.States (287), 41, 125);
-            Add_Action (Table.States (287), 52, 126);
-            Add_Action (Table.States (287), 76, 127);
-            Add_Action (Table.States (287), 79, 31);
-            Add_Action (Table.States (287), 95, 128);
-            Add_Action (Table.States (287), 96, 129);
-            Add_Action (Table.States (287), 104, 130);
-            Add_Action (Table.States (287), 105, 120);
-            Add_Action (Table.States (287), 106, 34);
-            Add_Action (Table.States (287), 107, 35);
+            Add_Action (Table.States (287), 3, (200, 2), 122);
+            Add_Action (Table.States (287), 39, (261, 4), 123);
+            Add_Action (Table.States (287), 40, (200, 3), 124);
+            Add_Action (Table.States (287), 41, (261, 1), 125);
+            Add_Action (Table.States (287), 52, (278, 0), 126);
+            Add_Action (Table.States (287), 76, (120, 0), 127);
+            Add_Action (Table.States (287), 77, (120, 5), 128);
+            Add_Action (Table.States (287), 81, (242, 8), 31);
+            Add_Action (Table.States (287), 97, (333, 1), 129);
+            Add_Action (Table.States (287), 98, (333, 0), 130);
+            Add_Action (Table.States (287), 106, (261, 0), 131);
+            Add_Action (Table.States (287), 107, (242, 5), 120);
+            Add_Action (Table.States (287), 108, (242, 7), 34);
+            Add_Action (Table.States (287), 109, (242, 6), 35);
             Table.States (287).Goto_List.Set_Capacity (13);
-            Add_Goto (Table.States (287), 118, 131);
-            Add_Goto (Table.States (287), 129, 42);
-            Add_Goto (Table.States (287), 198, 134);
-            Add_Goto (Table.States (287), 240, 135);
-            Add_Goto (Table.States (287), 259, 136);
-            Add_Goto (Table.States (287), 273, 93);
-            Add_Goto (Table.States (287), 276, 137);
-            Add_Goto (Table.States (287), 288, 465);
-            Add_Goto (Table.States (287), 294, 98);
-            Add_Goto (Table.States (287), 302, 144);
-            Add_Goto (Table.States (287), 321, 145);
-            Add_Goto (Table.States (287), 322, 146);
-            Add_Goto (Table.States (287), 331, 147);
-            Table.States (287).Kernel := To_Vector (((285, 43, 1, True), (286, 
43, 2, True)));
-            Table.States (287).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (287).Minimal_Complete_Actions_Recursive := True;
-            Table.States (288).Action_List.Set_Capacity (13);
-            Add_Action (Table.States (288), 3, 122);
-            Add_Action (Table.States (288), 39, 123);
-            Add_Action (Table.States (288), 40, 124);
-            Add_Action (Table.States (288), 41, 125);
-            Add_Action (Table.States (288), 52, 126);
-            Add_Action (Table.States (288), 76, 127);
-            Add_Action (Table.States (288), 79, 31);
-            Add_Action (Table.States (288), 95, 128);
-            Add_Action (Table.States (288), 96, 129);
-            Add_Action (Table.States (288), 104, 130);
-            Add_Action (Table.States (288), 105, 120);
-            Add_Action (Table.States (288), 106, 34);
-            Add_Action (Table.States (288), 107, 35);
+            Add_Goto (Table.States (287), 120, 132);
+            Add_Goto (Table.States (287), 131, 42);
+            Add_Goto (Table.States (287), 200, 135);
+            Add_Goto (Table.States (287), 242, 136);
+            Add_Goto (Table.States (287), 261, 137);
+            Add_Goto (Table.States (287), 275, 93);
+            Add_Goto (Table.States (287), 278, 138);
+            Add_Goto (Table.States (287), 290, 465);
+            Add_Goto (Table.States (287), 296, 98);
+            Add_Goto (Table.States (287), 304, 145);
+            Add_Goto (Table.States (287), 323, 146);
+            Add_Goto (Table.States (287), 324, 147);
+            Add_Goto (Table.States (287), 333, 148);
+            Table.States (287).Kernel := To_Vector ((0 => ((289, 0),  75,  1, 
(2147483647, 0),  0)));
+            Table.States (287).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (288).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (288), 3, (200, 2), 122);
+            Add_Action (Table.States (288), 39, (261, 4), 123);
+            Add_Action (Table.States (288), 40, (200, 3), 124);
+            Add_Action (Table.States (288), 41, (261, 1), 125);
+            Add_Action (Table.States (288), 52, (278, 0), 126);
+            Add_Action (Table.States (288), 68, (286, 1), 466);
+            Add_Action (Table.States (288), 76, (120, 0), 127);
+            Add_Action (Table.States (288), 77, (120, 5), 128);
+            Add_Action (Table.States (288), 81, (242, 8), 31);
+            Add_Action (Table.States (288), 97, (333, 1), 129);
+            Add_Action (Table.States (288), 98, (333, 0), 130);
+            Add_Action (Table.States (288), 106, (261, 0), 131);
+            Add_Action (Table.States (288), 107, (242, 5), 120);
+            Add_Action (Table.States (288), 108, (242, 7), 34);
+            Add_Action (Table.States (288), 109, (242, 6), 35);
             Table.States (288).Goto_List.Set_Capacity (13);
-            Add_Goto (Table.States (288), 118, 131);
-            Add_Goto (Table.States (288), 129, 42);
-            Add_Goto (Table.States (288), 198, 134);
-            Add_Goto (Table.States (288), 240, 135);
-            Add_Goto (Table.States (288), 259, 136);
-            Add_Goto (Table.States (288), 273, 93);
-            Add_Goto (Table.States (288), 276, 137);
-            Add_Goto (Table.States (288), 288, 466);
-            Add_Goto (Table.States (288), 294, 98);
-            Add_Goto (Table.States (288), 302, 144);
-            Add_Goto (Table.States (288), 321, 145);
-            Add_Goto (Table.States (288), 322, 146);
-            Add_Goto (Table.States (288), 331, 147);
-            Table.States (288).Kernel := To_Vector ((0 => (287, 75, 1, True)));
-            Table.States (288).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (288).Minimal_Complete_Actions_Recursive := True;
-            Table.States (289).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (289), 3, 122);
-            Add_Action (Table.States (289), 39, 123);
-            Add_Action (Table.States (289), 40, 124);
-            Add_Action (Table.States (289), 41, 125);
-            Add_Action (Table.States (289), 76, 127);
-            Add_Action (Table.States (289), 79, 31);
-            Add_Action (Table.States (289), 95, 128);
-            Add_Action (Table.States (289), 96, 129);
-            Add_Action (Table.States (289), 104, 130);
-            Add_Action (Table.States (289), 105, 120);
-            Add_Action (Table.States (289), 106, 34);
-            Add_Action (Table.States (289), 107, 35);
-            Table.States (289).Goto_List.Set_Capacity (14);
-            Add_Goto (Table.States (289), 118, 131);
-            Add_Goto (Table.States (289), 129, 42);
-            Add_Goto (Table.States (289), 198, 134);
-            Add_Goto (Table.States (289), 234, 467);
-            Add_Goto (Table.States (289), 235, 468);
-            Add_Goto (Table.States (289), 240, 275);
-            Add_Goto (Table.States (289), 259, 136);
-            Add_Goto (Table.States (289), 273, 93);
-            Add_Goto (Table.States (289), 278, 469);
-            Add_Goto (Table.States (289), 294, 98);
-            Add_Goto (Table.States (289), 302, 470);
-            Add_Goto (Table.States (289), 321, 145);
-            Add_Goto (Table.States (289), 322, 146);
-            Add_Goto (Table.States (289), 331, 147);
-            Table.States (289).Kernel := To_Vector ((0 => (288, 33, 1, 
False)));
-            Table.States (289).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (290).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (290), 33, 471);
-            Table.States (290).Kernel := To_Vector ((0 => (288, 40, 2, 
False)));
-            Table.States (290).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 33, 471)));
-            Table.States (291).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (291), (3, 39, 40, 41, 76, 79, 95, 96, 
104, 105, 106, 107), (289, 0), 1, null,
-            null);
-            Table.States (291).Kernel := To_Vector ((0 => (289, 87, 0, 
False)));
-            Table.States (291).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 289, 1)));
-            Table.States (292).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (292), (3, 39, 40, 41, 76, 79, 95, 96, 
104, 105, 106, 107), (289, 4), 1, null,
-            null);
-            Table.States (292).Kernel := To_Vector ((0 => (289, 89, 0, 
False)));
-            Table.States (292).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 289, 1)));
-            Table.States (293).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (293), (3, 39, 40, 41, 76, 79, 95, 96, 
104, 105, 106, 107), (289, 5), 1, null,
-            null);
-            Table.States (293).Kernel := To_Vector ((0 => (289, 90, 0, 
False)));
-            Table.States (293).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 289, 1)));
-            Table.States (294).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (294), (3, 39, 40, 41, 76, 79, 95, 96, 
104, 105, 106, 107), (289, 2), 1, null,
-            null);
-            Table.States (294).Kernel := To_Vector ((0 => (289, 92, 0, 
False)));
-            Table.States (294).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 289, 1)));
-            Table.States (295).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (295), (3, 39, 40, 41, 76, 79, 95, 96, 
104, 105, 106, 107), (289, 3), 1, null,
-            null);
-            Table.States (295).Kernel := To_Vector ((0 => (289, 93, 0, 
False)));
-            Table.States (295).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 289, 1)));
-            Table.States (296).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (296), (3, 39, 40, 41, 76, 79, 95, 96, 
104, 105, 106, 107), (289, 1), 1, null,
-            null);
-            Table.States (296).Kernel := To_Vector ((0 => (289, 99, 0, 
False)));
-            Table.States (296).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 289, 1)));
-            Table.States (297).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (297), 3, 122);
-            Add_Action (Table.States (297), 39, 123);
-            Add_Action (Table.States (297), 40, 124);
-            Add_Action (Table.States (297), 41, 125);
-            Add_Action (Table.States (297), 76, 127);
-            Add_Action (Table.States (297), 79, 31);
-            Add_Action (Table.States (297), 95, 128);
-            Add_Action (Table.States (297), 96, 129);
-            Add_Action (Table.States (297), 104, 130);
-            Add_Action (Table.States (297), 105, 120);
-            Add_Action (Table.States (297), 106, 34);
-            Add_Action (Table.States (297), 107, 35);
-            Table.States (297).Goto_List.Set_Capacity (11);
-            Add_Goto (Table.States (297), 118, 131);
-            Add_Goto (Table.States (297), 129, 42);
-            Add_Goto (Table.States (297), 198, 134);
-            Add_Goto (Table.States (297), 240, 135);
-            Add_Goto (Table.States (297), 259, 136);
-            Add_Goto (Table.States (297), 273, 93);
-            Add_Goto (Table.States (297), 294, 98);
-            Add_Goto (Table.States (297), 302, 472);
-            Add_Goto (Table.States (297), 321, 145);
-            Add_Goto (Table.States (297), 322, 146);
-            Add_Goto (Table.States (297), 331, 147);
-            Table.States (297).Kernel := To_Vector ((0 => (288, 289, 1, 
False)));
-            Table.States (297).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (298).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (298), (3, 39, 40, 41, 76, 79, 104, 105, 
106, 107), (238, 2), 1, null, null);
-            Table.States (298).Kernel := To_Vector ((0 => (238, 38, 0, 
False)));
-            Table.States (298).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 238, 1)));
-            Table.States (299).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (299), (3, 39, 40, 41, 76, 79, 104, 105, 
106, 107), (238, 3), 1, null, null);
-            Table.States (299).Kernel := To_Vector ((0 => (238, 55, 0, 
False)));
-            Table.States (299).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 238, 1)));
-            Table.States (300).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (300), (3, 39, 40, 41, 76, 79, 104, 105, 
106, 107), (238, 1), 1, null, null);
-            Table.States (300).Kernel := To_Vector ((0 => (238, 98, 0, 
False)));
-            Table.States (300).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 238, 1)));
-            Table.States (301).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (301), (3, 39, 40, 41, 76, 79, 104, 105, 
106, 107), (238, 0), 1, null, null);
-            Table.States (301).Kernel := To_Vector ((0 => (238, 100, 0, 
False)));
-            Table.States (301).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 238, 1)));
-            Table.States (302).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (302), 3, 122);
-            Add_Action (Table.States (302), 39, 123);
-            Add_Action (Table.States (302), 40, 124);
-            Add_Action (Table.States (302), 41, 125);
-            Add_Action (Table.States (302), 76, 127);
-            Add_Action (Table.States (302), 79, 31);
-            Add_Action (Table.States (302), 104, 130);
-            Add_Action (Table.States (302), 105, 120);
-            Add_Action (Table.States (302), 106, 34);
-            Add_Action (Table.States (302), 107, 35);
-            Table.States (302).Goto_List.Set_Capacity (7);
-            Add_Goto (Table.States (302), 118, 131);
-            Add_Goto (Table.States (302), 129, 42);
-            Add_Goto (Table.States (302), 198, 473);
-            Add_Goto (Table.States (302), 240, 135);
-            Add_Goto (Table.States (302), 259, 136);
-            Add_Goto (Table.States (302), 273, 93);
-            Add_Goto (Table.States (302), 294, 98);
-            Table.States (302).Kernel := To_Vector ((0 => (321, 238, 1, 
True)));
-            Table.States (302).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (302).Minimal_Complete_Actions_Recursive := True;
-            Table.States (303).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (303), (3, 39, 40, 41, 76, 79, 104, 105, 
106, 107), (131, 2), 1, null, null);
-            Table.States (303).Kernel := To_Vector ((0 => (131, 78, 0, 
False)));
-            Table.States (303).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 131, 1)));
-            Table.States (304).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (304), (3, 39, 40, 41, 76, 79, 104, 105, 
106, 107), (131, 1), 1, null, null);
-            Table.States (304).Kernel := To_Vector ((0 => (131, 95, 0, 
False)));
-            Table.States (304).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 131, 1)));
-            Table.States (305).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (305), (3, 39, 40, 41, 76, 79, 104, 105, 
106, 107), (131, 0), 1, null, null);
-            Table.States (305).Kernel := To_Vector ((0 => (131, 96, 0, 
False)));
-            Table.States (305).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 131, 1)));
-            Table.States (306).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (306), 3, 122);
-            Add_Action (Table.States (306), 39, 123);
-            Add_Action (Table.States (306), 40, 124);
-            Add_Action (Table.States (306), 41, 125);
-            Add_Action (Table.States (306), 76, 127);
-            Add_Action (Table.States (306), 79, 31);
-            Add_Action (Table.States (306), 104, 130);
-            Add_Action (Table.States (306), 105, 120);
-            Add_Action (Table.States (306), 106, 34);
-            Add_Action (Table.States (306), 107, 35);
-            Table.States (306).Goto_List.Set_Capacity (8);
-            Add_Goto (Table.States (306), 118, 131);
-            Add_Goto (Table.States (306), 129, 42);
-            Add_Goto (Table.States (306), 198, 134);
-            Add_Goto (Table.States (306), 240, 135);
-            Add_Goto (Table.States (306), 259, 136);
-            Add_Goto (Table.States (306), 273, 93);
-            Add_Goto (Table.States (306), 294, 98);
-            Add_Goto (Table.States (306), 321, 474);
-            Table.States (306).Kernel := To_Vector ((0 => (322, 131, 1, 
True)));
-            Table.States (306).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (306).Minimal_Complete_Actions_Recursive := True;
-            Table.States (307).Action_List.Set_Capacity (31);
-            Add_Action (Table.States (307), 10, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 20, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 21, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 22, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 23, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 33, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 35, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 37, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 40, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 42, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 43, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 53, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 68, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 74, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 75, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 77, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 78, 303);
-            Add_Action (Table.States (307), 80, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 83, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 84, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 86, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 87, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 88, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 89, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 90, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 92, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 93, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 95, 304);
-            Add_Action (Table.States (307), 96, 305);
-            Add_Action (Table.States (307), 97, Reduce, (302, 0), 2, null, 
null);
-            Add_Action (Table.States (307), 99, Reduce, (302, 0), 2, null, 
null);
-            Table.States (307).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (307), 131, 306);
-            Table.States (307).Kernel := To_Vector (((302, 322, 0, False), 
(322, 322, 2, True)));
-            Table.States (307).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 302, 2)));
-            Table.States (308).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (308), 97, 475);
-            Table.States (308).Kernel := To_Vector ((0 => (162, 193, 1, 
False)));
-            Table.States (308).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 475)));
-            Table.States (309).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (309), (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, 79, 94, 105, 106,
-            107, 108), (162, 1), 3, delay_statement_1'Access, null);
-            Table.States (309).Kernel := To_Vector ((0 => (162, 97, 0, 
False)));
-            Table.States (309).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 162, 3)));
-            Table.States (310).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (310), 3, 122);
-            Add_Action (Table.States (310), 39, 123);
-            Add_Action (Table.States (310), 40, 124);
-            Add_Action (Table.States (310), 41, 125);
-            Add_Action (Table.States (310), 52, 126);
-            Add_Action (Table.States (310), 76, 127);
-            Add_Action (Table.States (310), 79, 31);
-            Add_Action (Table.States (310), 95, 128);
-            Add_Action (Table.States (310), 96, 129);
-            Add_Action (Table.States (310), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (310), 104, 130);
-            Add_Action (Table.States (310), 105, 120);
-            Add_Action (Table.States (310), 106, 34);
-            Add_Action (Table.States (310), 107, 35);
-            Table.States (310).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (310), 118, 131);
-            Add_Goto (Table.States (310), 129, 42);
-            Add_Goto (Table.States (310), 192, 132);
-            Add_Goto (Table.States (310), 193, 476);
-            Add_Goto (Table.States (310), 198, 134);
-            Add_Goto (Table.States (310), 240, 135);
-            Add_Goto (Table.States (310), 259, 136);
-            Add_Goto (Table.States (310), 273, 93);
-            Add_Goto (Table.States (310), 276, 137);
-            Add_Goto (Table.States (310), 283, 138);
-            Add_Goto (Table.States (310), 284, 139);
-            Add_Goto (Table.States (310), 285, 140);
-            Add_Goto (Table.States (310), 286, 141);
-            Add_Goto (Table.States (310), 287, 142);
-            Add_Goto (Table.States (310), 288, 143);
-            Add_Goto (Table.States (310), 294, 98);
-            Add_Goto (Table.States (310), 302, 144);
-            Add_Goto (Table.States (310), 321, 145);
-            Add_Goto (Table.States (310), 322, 146);
-            Add_Goto (Table.States (310), 331, 147);
-            Table.States (310).Kernel := To_Vector ((0 => (191, 72, 1, 
False)));
-            Table.States (310).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
+            Add_Goto (Table.States (288), 120, 132);
+            Add_Goto (Table.States (288), 131, 42);
+            Add_Goto (Table.States (288), 200, 135);
+            Add_Goto (Table.States (288), 242, 136);
+            Add_Goto (Table.States (288), 261, 137);
+            Add_Goto (Table.States (288), 275, 93);
+            Add_Goto (Table.States (288), 278, 138);
+            Add_Goto (Table.States (288), 290, 467);
+            Add_Goto (Table.States (288), 296, 98);
+            Add_Goto (Table.States (288), 304, 145);
+            Add_Goto (Table.States (288), 323, 146);
+            Add_Goto (Table.States (288), 324, 147);
+            Add_Goto (Table.States (288), 333, 148);
+            Table.States (288).Kernel := To_Vector ((((285, 1),  10,  1, 
(2147483647, 0),  0), ((286, 1),  10,  2,
+            (2147483647, 0),  0)));
+            Table.States (289).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (289), 3, (200, 2), 122);
+            Add_Action (Table.States (289), 22, (288, 1), 468);
+            Add_Action (Table.States (289), 39, (261, 4), 123);
+            Add_Action (Table.States (289), 40, (200, 3), 124);
+            Add_Action (Table.States (289), 41, (261, 1), 125);
+            Add_Action (Table.States (289), 52, (278, 0), 126);
+            Add_Action (Table.States (289), 76, (120, 0), 127);
+            Add_Action (Table.States (289), 77, (120, 5), 128);
+            Add_Action (Table.States (289), 81, (242, 8), 31);
+            Add_Action (Table.States (289), 97, (333, 1), 129);
+            Add_Action (Table.States (289), 98, (333, 0), 130);
+            Add_Action (Table.States (289), 106, (261, 0), 131);
+            Add_Action (Table.States (289), 107, (242, 5), 120);
+            Add_Action (Table.States (289), 108, (242, 7), 34);
+            Add_Action (Table.States (289), 109, (242, 6), 35);
+            Table.States (289).Goto_List.Set_Capacity (13);
+            Add_Goto (Table.States (289), 120, 132);
+            Add_Goto (Table.States (289), 131, 42);
+            Add_Goto (Table.States (289), 200, 135);
+            Add_Goto (Table.States (289), 242, 136);
+            Add_Goto (Table.States (289), 261, 137);
+            Add_Goto (Table.States (289), 275, 93);
+            Add_Goto (Table.States (289), 278, 138);
+            Add_Goto (Table.States (289), 290, 469);
+            Add_Goto (Table.States (289), 296, 98);
+            Add_Goto (Table.States (289), 304, 145);
+            Add_Goto (Table.States (289), 323, 146);
+            Add_Goto (Table.States (289), 324, 147);
+            Add_Goto (Table.States (289), 333, 148);
+            Table.States (289).Kernel := To_Vector ((((287, 1),  43,  1, 
(2147483647, 0),  0), ((288, 1),  43,  2,
+            (2147483647, 0),  0)));
+            Table.States (290).Action_List.Set_Capacity (14);
+            Add_Action (Table.States (290), 3, (200, 2), 122);
+            Add_Action (Table.States (290), 39, (261, 4), 123);
+            Add_Action (Table.States (290), 40, (200, 3), 124);
+            Add_Action (Table.States (290), 41, (261, 1), 125);
+            Add_Action (Table.States (290), 52, (278, 0), 126);
+            Add_Action (Table.States (290), 76, (120, 0), 127);
+            Add_Action (Table.States (290), 77, (120, 5), 128);
+            Add_Action (Table.States (290), 81, (242, 8), 31);
+            Add_Action (Table.States (290), 97, (333, 1), 129);
+            Add_Action (Table.States (290), 98, (333, 0), 130);
+            Add_Action (Table.States (290), 106, (261, 0), 131);
+            Add_Action (Table.States (290), 107, (242, 5), 120);
+            Add_Action (Table.States (290), 108, (242, 7), 34);
+            Add_Action (Table.States (290), 109, (242, 6), 35);
+            Table.States (290).Goto_List.Set_Capacity (13);
+            Add_Goto (Table.States (290), 120, 132);
+            Add_Goto (Table.States (290), 131, 42);
+            Add_Goto (Table.States (290), 200, 135);
+            Add_Goto (Table.States (290), 242, 136);
+            Add_Goto (Table.States (290), 261, 137);
+            Add_Goto (Table.States (290), 275, 93);
+            Add_Goto (Table.States (290), 278, 138);
+            Add_Goto (Table.States (290), 290, 470);
+            Add_Goto (Table.States (290), 296, 98);
+            Add_Goto (Table.States (290), 304, 145);
+            Add_Goto (Table.States (290), 323, 146);
+            Add_Goto (Table.States (290), 324, 147);
+            Add_Goto (Table.States (290), 333, 148);
+            Table.States (290).Kernel := To_Vector ((0 => ((289, 1),  75,  1, 
(2147483647, 0),  0)));
+            Table.States (290).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (291).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (291), 3, (200, 2), 122);
+            Add_Action (Table.States (291), 39, (261, 4), 123);
+            Add_Action (Table.States (291), 40, (200, 3), 124);
+            Add_Action (Table.States (291), 41, (261, 1), 125);
+            Add_Action (Table.States (291), 76, (120, 0), 127);
+            Add_Action (Table.States (291), 77, (120, 5), 128);
+            Add_Action (Table.States (291), 81, (242, 8), 31);
+            Add_Action (Table.States (291), 97, (333, 1), 129);
+            Add_Action (Table.States (291), 98, (333, 0), 130);
+            Add_Action (Table.States (291), 106, (261, 0), 131);
+            Add_Action (Table.States (291), 107, (242, 5), 120);
+            Add_Action (Table.States (291), 108, (242, 7), 34);
+            Add_Action (Table.States (291), 109, (242, 6), 35);
+            Table.States (291).Goto_List.Set_Capacity (14);
+            Add_Goto (Table.States (291), 120, 132);
+            Add_Goto (Table.States (291), 131, 42);
+            Add_Goto (Table.States (291), 200, 135);
+            Add_Goto (Table.States (291), 236, 471);
+            Add_Goto (Table.States (291), 237, 472);
+            Add_Goto (Table.States (291), 242, 276);
+            Add_Goto (Table.States (291), 261, 137);
+            Add_Goto (Table.States (291), 275, 93);
+            Add_Goto (Table.States (291), 280, 473);
+            Add_Goto (Table.States (291), 296, 98);
+            Add_Goto (Table.States (291), 304, 474);
+            Add_Goto (Table.States (291), 323, 146);
+            Add_Goto (Table.States (291), 324, 147);
+            Add_Goto (Table.States (291), 333, 148);
+            Table.States (291).Kernel := To_Vector ((0 => ((290, 1),  33,  1, 
(2147483647, 0),  0)));
+            Table.States (291).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (292).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (292), 33, (290, 0), 475);
+            Table.States (292).Kernel := To_Vector ((0 => ((290, 0),  40,  2, 
(2147483647, 0),  0)));
+            Table.States (292).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (290, 0),  33, 475)));
+            Table.States (293).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (293), (3, 39, 40, 41, 76, 77, 81, 97, 
98, 106, 107, 108, 109), (291, 0),  1,
+            null, null);
+            Table.States (293).Kernel := To_Vector ((0 => ((291, 0),  89,  0, 
(291, 0),  1)));
+            Table.States (293).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (291, 0),  1)));
+            Table.States (294).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (294), (3, 39, 40, 41, 76, 77, 81, 97, 
98, 106, 107, 108, 109), (291, 4),  1,
+            null, null);
+            Table.States (294).Kernel := To_Vector ((0 => ((291, 4),  91,  0, 
(291, 4),  1)));
+            Table.States (294).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (291, 4),  1)));
+            Table.States (295).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (295), (3, 39, 40, 41, 76, 77, 81, 97, 
98, 106, 107, 108, 109), (291, 5),  1,
+            null, null);
+            Table.States (295).Kernel := To_Vector ((0 => ((291, 5),  92,  0, 
(291, 5),  1)));
+            Table.States (295).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (291, 5),  1)));
+            Table.States (296).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (296), (3, 39, 40, 41, 76, 77, 81, 97, 
98, 106, 107, 108, 109), (291, 2),  1,
+            null, null);
+            Table.States (296).Kernel := To_Vector ((0 => ((291, 2),  94,  0, 
(291, 2),  1)));
+            Table.States (296).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (291, 2),  1)));
+            Table.States (297).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (297), (3, 39, 40, 41, 76, 77, 81, 97, 
98, 106, 107, 108, 109), (291, 3),  1,
+            null, null);
+            Table.States (297).Kernel := To_Vector ((0 => ((291, 3),  95,  0, 
(291, 3),  1)));
+            Table.States (297).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (291, 3),  1)));
+            Table.States (298).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (298), (3, 39, 40, 41, 76, 77, 81, 97, 
98, 106, 107, 108, 109), (291, 1),  1,
+            null, null);
+            Table.States (298).Kernel := To_Vector ((0 => ((291, 1),  101,  0, 
(291, 1),  1)));
+            Table.States (298).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (291, 1),  1)));
+            Table.States (299).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (299), 3, (200, 2), 122);
+            Add_Action (Table.States (299), 39, (261, 4), 123);
+            Add_Action (Table.States (299), 40, (200, 3), 124);
+            Add_Action (Table.States (299), 41, (261, 1), 125);
+            Add_Action (Table.States (299), 76, (120, 0), 127);
+            Add_Action (Table.States (299), 77, (120, 5), 128);
+            Add_Action (Table.States (299), 81, (242, 8), 31);
+            Add_Action (Table.States (299), 97, (333, 1), 129);
+            Add_Action (Table.States (299), 98, (333, 0), 130);
+            Add_Action (Table.States (299), 106, (261, 0), 131);
+            Add_Action (Table.States (299), 107, (242, 5), 120);
+            Add_Action (Table.States (299), 108, (242, 7), 34);
+            Add_Action (Table.States (299), 109, (242, 6), 35);
+            Table.States (299).Goto_List.Set_Capacity (11);
+            Add_Goto (Table.States (299), 120, 132);
+            Add_Goto (Table.States (299), 131, 42);
+            Add_Goto (Table.States (299), 200, 135);
+            Add_Goto (Table.States (299), 242, 136);
+            Add_Goto (Table.States (299), 261, 137);
+            Add_Goto (Table.States (299), 275, 93);
+            Add_Goto (Table.States (299), 296, 98);
+            Add_Goto (Table.States (299), 304, 476);
+            Add_Goto (Table.States (299), 323, 146);
+            Add_Goto (Table.States (299), 324, 147);
+            Add_Goto (Table.States (299), 333, 148);
+            Table.States (299).Kernel := To_Vector ((0 => ((290, 2),  291,  1, 
(2147483647, 0),  0)));
+            Table.States (299).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (300).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (300), (3, 39, 40, 41, 76, 77, 81, 106, 
107, 108, 109), (240, 2),  1, null, null);
+            Table.States (300).Kernel := To_Vector ((0 => ((240, 2),  38,  0, 
(240, 2),  1)));
+            Table.States (300).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (240, 2),  1)));
+            Table.States (301).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (301), (3, 39, 40, 41, 76, 77, 81, 106, 
107, 108, 109), (240, 3),  1, null, null);
+            Table.States (301).Kernel := To_Vector ((0 => ((240, 3),  55,  0, 
(240, 3),  1)));
+            Table.States (301).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (240, 3),  1)));
+            Table.States (302).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (302), (3, 39, 40, 41, 76, 77, 81, 106, 
107, 108, 109), (240, 1),  1, null, null);
+            Table.States (302).Kernel := To_Vector ((0 => ((240, 1),  100,  0, 
(240, 1),  1)));
+            Table.States (302).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (240, 1),  1)));
+            Table.States (303).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (303), (3, 39, 40, 41, 76, 77, 81, 106, 
107, 108, 109), (240, 0),  1, null, null);
+            Table.States (303).Kernel := To_Vector ((0 => ((240, 0),  102,  0, 
(240, 0),  1)));
+            Table.States (303).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (240, 0),  1)));
+            Table.States (304).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (304), 3, (200, 2), 122);
+            Add_Action (Table.States (304), 39, (261, 4), 123);
+            Add_Action (Table.States (304), 40, (200, 3), 124);
+            Add_Action (Table.States (304), 41, (261, 1), 125);
+            Add_Action (Table.States (304), 76, (120, 0), 127);
+            Add_Action (Table.States (304), 77, (120, 5), 128);
+            Add_Action (Table.States (304), 81, (242, 8), 31);
+            Add_Action (Table.States (304), 106, (261, 0), 131);
+            Add_Action (Table.States (304), 107, (242, 5), 120);
+            Add_Action (Table.States (304), 108, (242, 7), 34);
+            Add_Action (Table.States (304), 109, (242, 6), 35);
+            Table.States (304).Goto_List.Set_Capacity (7);
+            Add_Goto (Table.States (304), 120, 132);
+            Add_Goto (Table.States (304), 131, 42);
+            Add_Goto (Table.States (304), 200, 477);
+            Add_Goto (Table.States (304), 242, 136);
+            Add_Goto (Table.States (304), 261, 137);
+            Add_Goto (Table.States (304), 275, 93);
+            Add_Goto (Table.States (304), 296, 98);
+            Table.States (304).Kernel := To_Vector ((0 => ((323, 0),  240,  1, 
(2147483647, 0),  0)));
+            Table.States (304).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (305).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (305), (3, 39, 40, 41, 76, 77, 81, 106, 
107, 108, 109), (133, 2),  1, null, null);
+            Table.States (305).Kernel := To_Vector ((0 => ((133, 2),  80,  0, 
(133, 2),  1)));
+            Table.States (305).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (133, 2),  1)));
+            Table.States (306).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (306), (3, 39, 40, 41, 76, 77, 81, 106, 
107, 108, 109), (133, 1),  1, null, null);
+            Table.States (306).Kernel := To_Vector ((0 => ((133, 1),  97,  0, 
(133, 1),  1)));
+            Table.States (306).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (133, 1),  1)));
+            Table.States (307).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (307), (3, 39, 40, 41, 76, 77, 81, 106, 
107, 108, 109), (133, 0),  1, null, null);
+            Table.States (307).Kernel := To_Vector ((0 => ((133, 0),  98,  0, 
(133, 0),  1)));
+            Table.States (307).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (133, 0),  1)));
+            Table.States (308).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (308), 3, (200, 2), 122);
+            Add_Action (Table.States (308), 39, (261, 4), 123);
+            Add_Action (Table.States (308), 40, (200, 3), 124);
+            Add_Action (Table.States (308), 41, (261, 1), 125);
+            Add_Action (Table.States (308), 76, (120, 0), 127);
+            Add_Action (Table.States (308), 77, (120, 5), 128);
+            Add_Action (Table.States (308), 81, (242, 8), 31);
+            Add_Action (Table.States (308), 106, (261, 0), 131);
+            Add_Action (Table.States (308), 107, (242, 5), 120);
+            Add_Action (Table.States (308), 108, (242, 7), 34);
+            Add_Action (Table.States (308), 109, (242, 6), 35);
+            Table.States (308).Goto_List.Set_Capacity (8);
+            Add_Goto (Table.States (308), 120, 132);
+            Add_Goto (Table.States (308), 131, 42);
+            Add_Goto (Table.States (308), 200, 135);
+            Add_Goto (Table.States (308), 242, 136);
+            Add_Goto (Table.States (308), 261, 137);
+            Add_Goto (Table.States (308), 275, 93);
+            Add_Goto (Table.States (308), 296, 98);
+            Add_Goto (Table.States (308), 323, 478);
+            Table.States (308).Kernel := To_Vector ((0 => ((324, 0),  133,  1, 
(2147483647, 0),  0)));
+            Table.States (308).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (309).Action_List.Set_Capacity (32);
+            Add_Action (Table.States (309), 10, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 20, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 21, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 22, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 23, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 33, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 35, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 37, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 40, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 42, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 43, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 53, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 68, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 74, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 75, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 78, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 79, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 80, (133, 2), 305);
+            Add_Action (Table.States (309), 82, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 85, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 86, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 88, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 89, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 90, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 91, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 92, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 94, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 95, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 97, (133, 1), 306);
+            Add_Action (Table.States (309), 98, (133, 0), 307);
+            Add_Action (Table.States (309), 99, Reduce, (304, 0),  2, null, 
null);
+            Add_Action (Table.States (309), 101, Reduce, (304, 0),  2, null, 
null);
+            Table.States (309).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (309), 133, 308);
+            Table.States (309).Kernel := To_Vector ((((304, 0),  324,  0, 
(304, 0),  2), ((324, 0),  324,  2,
+            (2147483647, 0),  0)));
+            Table.States (309).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (304, 0),  2)));
+            Table.States (310).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (310), 99, (164, 0), 479);
+            Table.States (310).Kernel := To_Vector ((0 => ((164, 0),  195,  1, 
(2147483647, 0),  0)));
+            Table.States (310).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (164, 0),  99, 479)));
             Table.States (311).Action_List.Set_Capacity (47);
             Add_Action (Table.States (311), (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, 79, 94, 105, 106,
-            107, 108), (191, 1), 3, exit_statement_1'Access, null);
-            Table.States (311).Kernel := To_Vector ((0 => (191, 97, 0, 
False)));
-            Table.States (311).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 191, 3)));
-            Table.States (312).Action_List.Set_Capacity (13);
-            Add_Action (Table.States (312), 3, 122);
-            Add_Action (Table.States (312), 39, 123);
-            Add_Action (Table.States (312), 40, 477);
-            Add_Action (Table.States (312), 41, 125);
-            Add_Action (Table.States (312), 59, 478);
-            Add_Action (Table.States (312), 76, 127);
-            Add_Action (Table.States (312), 79, 31);
-            Add_Action (Table.States (312), 95, 128);
-            Add_Action (Table.States (312), 96, 129);
-            Add_Action (Table.States (312), 104, 130);
-            Add_Action (Table.States (312), 105, 120);
-            Add_Action (Table.States (312), 106, 34);
-            Add_Action (Table.States (312), 107, 35);
-            Table.States (312).Goto_List.Set_Capacity (14);
-            Add_Goto (Table.States (312), 118, 131);
-            Add_Goto (Table.States (312), 129, 42);
-            Add_Goto (Table.States (312), 168, 479);
-            Add_Goto (Table.States (312), 198, 134);
-            Add_Goto (Table.States (312), 240, 480);
-            Add_Goto (Table.States (312), 259, 136);
-            Add_Goto (Table.States (312), 273, 93);
-            Add_Goto (Table.States (312), 278, 481);
-            Add_Goto (Table.States (312), 294, 98);
-            Add_Goto (Table.States (312), 302, 482);
-            Add_Goto (Table.States (312), 315, 483);
-            Add_Goto (Table.States (312), 321, 145);
-            Add_Goto (Table.States (312), 322, 146);
-            Add_Goto (Table.States (312), 331, 147);
-            Table.States (312).Kernel := To_Vector (((231, 33, 2, False), 
(231, 33, 1, False)));
-            Table.States (312).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (313).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (313), 59, 484);
-            Add_Action (Table.States (313), 79, 31);
-            Add_Action (Table.States (313), 105, 120);
-            Add_Action (Table.States (313), 106, 34);
-            Add_Action (Table.States (313), 107, 35);
-            Table.States (313).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (313), 129, 42);
-            Add_Goto (Table.States (313), 240, 485);
-            Add_Goto (Table.States (313), 273, 93);
-            Add_Goto (Table.States (313), 294, 98);
-            Table.States (313).Kernel := To_Vector (((231, 42, 2, False), 
(231, 42, 1, False)));
-            Table.States (313).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (314).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (314), 40, 486);
-            Add_Action (Table.States (314), 79, 31);
-            Add_Action (Table.States (314), 105, 120);
-            Add_Action (Table.States (314), 106, 34);
-            Add_Action (Table.States (314), 107, 35);
-            Table.States (314).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (314), 129, 42);
-            Add_Goto (Table.States (314), 240, 487);
-            Add_Goto (Table.States (314), 273, 93);
-            Add_Goto (Table.States (314), 294, 98);
-            Add_Goto (Table.States (314), 315, 488);
-            Table.States (314).Kernel := To_Vector (((231, 82, 4, False), 
(231, 82, 3, False)));
-            Table.States (314).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (315).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (315), 3, 122);
-            Add_Action (Table.States (315), 39, 123);
-            Add_Action (Table.States (315), 40, 124);
-            Add_Action (Table.States (315), 41, 125);
-            Add_Action (Table.States (315), 52, 126);
-            Add_Action (Table.States (315), 76, 127);
-            Add_Action (Table.States (315), 79, 31);
-            Add_Action (Table.States (315), 95, 128);
-            Add_Action (Table.States (315), 96, 129);
-            Add_Action (Table.States (315), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (315), 104, 130);
-            Add_Action (Table.States (315), 105, 120);
-            Add_Action (Table.States (315), 106, 34);
-            Add_Action (Table.States (315), 107, 35);
-            Table.States (315).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (315), 118, 131);
-            Add_Goto (Table.States (315), 129, 42);
-            Add_Goto (Table.States (315), 192, 132);
-            Add_Goto (Table.States (315), 193, 489);
-            Add_Goto (Table.States (315), 198, 134);
-            Add_Goto (Table.States (315), 240, 135);
-            Add_Goto (Table.States (315), 259, 136);
-            Add_Goto (Table.States (315), 273, 93);
-            Add_Goto (Table.States (315), 276, 137);
-            Add_Goto (Table.States (315), 283, 138);
-            Add_Goto (Table.States (315), 284, 139);
-            Add_Goto (Table.States (315), 285, 140);
-            Add_Goto (Table.States (315), 286, 141);
-            Add_Goto (Table.States (315), 287, 142);
-            Add_Goto (Table.States (315), 288, 143);
-            Add_Goto (Table.States (315), 294, 98);
-            Add_Goto (Table.States (315), 302, 144);
-            Add_Goto (Table.States (315), 321, 145);
-            Add_Goto (Table.States (315), 322, 146);
-            Add_Goto (Table.States (315), 331, 147);
-            Table.States (315).Kernel := To_Vector ((0 => (122, 71, 1, 
False)));
-            Table.States (315).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (316).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (316), 12, 490);
-            Table.States (316).Kernel := To_Vector ((0 => (128, 71, 2, 
False)));
-            Table.States (316).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 12, 490)));
-            Table.States (317).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (317), 54, 491);
-            Add_Action (Table.States (317), 76, 127);
-            Table.States (317).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (317), 118, 492);
-            Table.States (317).Kernel := To_Vector (((183, 71, 3, False), 
(282, 71, 12, False)));
-            Table.States (317).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 76, 127)));
-            Table.States (318).Action_List.Set_Capacity (13);
-            Add_Action (Table.States (318), 7, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (318), 21, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (318), 35, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (318), 40, 387);
-            Add_Action (Table.States (318), 56, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (318), 74, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (318), 77, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (318), 79, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (318), 83, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (318), 97, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (318), 105, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (318), 106, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (318), 107, Reduce, (242, 1), 0, null, 
null);
-            Table.States (318).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (318), 115, 493);
-            Add_Goto (Table.States (318), 242, 494);
-            Table.States (318).Kernel := To_Vector (((292, 58, 0, False), 
(292, 58, 2, True)));
-            Table.States (318).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 242, 0)));
-            Table.States (319).Action_List.Set_Capacity (22);
-            Add_Action (Table.States (319), 3, 122);
-            Add_Action (Table.States (319), 15, 259);
-            Add_Action (Table.States (319), 28, 260);
-            Add_Action (Table.States (319), 32, 261);
-            Add_Action (Table.States (319), 39, 123);
-            Add_Action (Table.States (319), 40, 262);
-            Add_Action (Table.States (319), 41, 125);
-            Add_Action (Table.States (319), 44, 264);
-            Add_Action (Table.States (319), 52, 126);
-            Add_Action (Table.States (319), 76, 127);
-            Add_Action (Table.States (319), 77, Reduce, (125, 6), 0, null, 
null);
-            Add_Conflict (Table.States (319), 77, (255, 4), 0, null, null);
-            Add_Action (Table.States (319), 79, 31);
-            Add_Action (Table.States (319), 80, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (319), 84, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (319), 88, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (319), 95, 128);
-            Add_Action (Table.States (319), 96, 129);
-            Add_Action (Table.States (319), 97, Reduce, (255, 4), 0, null, 
null);
-            Add_Action (Table.States (319), 104, 130);
-            Add_Action (Table.States (319), 105, 495);
-            Add_Action (Table.States (319), 106, 34);
-            Add_Action (Table.States (319), 107, 265);
-            Table.States (319).Goto_List.Set_Capacity (32);
-            Add_Goto (Table.States (319), 118, 131);
-            Add_Goto (Table.States (319), 125, 266);
-            Add_Goto (Table.States (319), 126, 407);
-            Add_Goto (Table.States (319), 129, 42);
-            Add_Goto (Table.States (319), 137, 268);
-            Add_Goto (Table.States (319), 154, 408);
-            Add_Goto (Table.States (319), 166, 270);
-            Add_Goto (Table.States (319), 167, 271);
-            Add_Goto (Table.States (319), 192, 409);
-            Add_Goto (Table.States (319), 198, 134);
-            Add_Goto (Table.States (319), 220, 496);
-            Add_Goto (Table.States (319), 222, 274);
-            Add_Goto (Table.States (319), 240, 275);
-            Add_Goto (Table.States (319), 255, 497);
-            Add_Goto (Table.States (319), 256, 498);
-            Add_Goto (Table.States (319), 259, 136);
-            Add_Goto (Table.States (319), 273, 93);
-            Add_Goto (Table.States (319), 274, 276);
-            Add_Goto (Table.States (319), 276, 137);
-            Add_Goto (Table.States (319), 278, 410);
-            Add_Goto (Table.States (319), 279, 411);
-            Add_Goto (Table.States (319), 283, 138);
-            Add_Goto (Table.States (319), 284, 139);
-            Add_Goto (Table.States (319), 285, 140);
-            Add_Goto (Table.States (319), 286, 141);
-            Add_Goto (Table.States (319), 287, 142);
-            Add_Goto (Table.States (319), 288, 143);
-            Add_Goto (Table.States (319), 294, 98);
-            Add_Goto (Table.States (319), 302, 278);
-            Add_Goto (Table.States (319), 321, 145);
-            Add_Goto (Table.States (319), 322, 146);
-            Add_Goto (Table.States (319), 331, 147);
-            Table.States (319).Kernel := To_Vector (((116, 76, 1, False), 
(116, 76, 3, False), (200, 76, 1, False),
-            (240, 76, 4, True)));
-            Table.States (319).Minimal_Complete_Actions := To_Vector 
(((Reduce, 126, 0), (Reduce, 256, 0)));
-            Table.States (319).Minimal_Complete_Actions_Recursive := True;
-            Table.States (320).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (320), 58, 318);
-            Table.States (320).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (320), 292, 499);
-            Table.States (320).Kernel := To_Vector ((0 => (253, 200, 1, 
True)));
-            Table.States (320).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 58, 318)));
-            Table.States (320).Minimal_Complete_Actions_Recursive := True;
-            Table.States (321).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (321), (35, 56, 74, 97), (208, 0), 3, 
function_specification_0'Access,
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (164, 1),  3, delay_statement_1'Access, null);
+            Table.States (311).Kernel := To_Vector ((0 => ((164, 1),  99,  0, 
(164, 1),  3)));
+            Table.States (311).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (164, 1),  3)));
+            Table.States (312).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (312), 3, (200, 2), 122);
+            Add_Action (Table.States (312), 39, (261, 4), 123);
+            Add_Action (Table.States (312), 40, (200, 3), 124);
+            Add_Action (Table.States (312), 41, (261, 1), 125);
+            Add_Action (Table.States (312), 52, (278, 0), 126);
+            Add_Action (Table.States (312), 76, (120, 0), 127);
+            Add_Action (Table.States (312), 77, (120, 5), 128);
+            Add_Action (Table.States (312), 81, (242, 8), 31);
+            Add_Action (Table.States (312), 97, (333, 1), 129);
+            Add_Action (Table.States (312), 98, (333, 0), 130);
+            Add_Action (Table.States (312), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (312), 106, (261, 0), 131);
+            Add_Action (Table.States (312), 107, (242, 5), 120);
+            Add_Action (Table.States (312), 108, (242, 7), 34);
+            Add_Action (Table.States (312), 109, (242, 6), 35);
+            Table.States (312).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (312), 120, 132);
+            Add_Goto (Table.States (312), 131, 42);
+            Add_Goto (Table.States (312), 194, 133);
+            Add_Goto (Table.States (312), 195, 480);
+            Add_Goto (Table.States (312), 200, 135);
+            Add_Goto (Table.States (312), 242, 136);
+            Add_Goto (Table.States (312), 261, 137);
+            Add_Goto (Table.States (312), 275, 93);
+            Add_Goto (Table.States (312), 278, 138);
+            Add_Goto (Table.States (312), 285, 139);
+            Add_Goto (Table.States (312), 286, 140);
+            Add_Goto (Table.States (312), 287, 141);
+            Add_Goto (Table.States (312), 288, 142);
+            Add_Goto (Table.States (312), 289, 143);
+            Add_Goto (Table.States (312), 290, 144);
+            Add_Goto (Table.States (312), 296, 98);
+            Add_Goto (Table.States (312), 304, 145);
+            Add_Goto (Table.States (312), 323, 146);
+            Add_Goto (Table.States (312), 324, 147);
+            Add_Goto (Table.States (312), 333, 148);
+            Table.States (312).Kernel := To_Vector ((0 => ((193, 0),  72,  1, 
(2147483647, 0),  0)));
+            Table.States (312).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (313).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (313), (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, 81, 96, 107, 108,
+            109, 110), (193, 1),  3, exit_statement_1'Access, null);
+            Table.States (313).Kernel := To_Vector ((0 => ((193, 1),  99,  0, 
(193, 1),  3)));
+            Table.States (313).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (193, 1),  3)));
+            Table.States (314).Action_List.Set_Capacity (14);
+            Add_Action (Table.States (314), 3, (200, 2), 122);
+            Add_Action (Table.States (314), 39, (261, 4), 123);
+            Add_Action (Table.States (314), 40, (200, 3), 481);
+            Add_Action (Table.States (314), 41, (261, 1), 125);
+            Add_Action (Table.States (314), 59, (233, 2), 482);
+            Add_Action (Table.States (314), 76, (120, 0), 127);
+            Add_Action (Table.States (314), 77, (120, 5), 128);
+            Add_Action (Table.States (314), 81, (242, 8), 31);
+            Add_Action (Table.States (314), 97, (333, 1), 129);
+            Add_Action (Table.States (314), 98, (333, 0), 130);
+            Add_Action (Table.States (314), 106, (261, 0), 131);
+            Add_Action (Table.States (314), 107, (242, 5), 120);
+            Add_Action (Table.States (314), 108, (242, 7), 34);
+            Add_Action (Table.States (314), 109, (242, 6), 35);
+            Table.States (314).Goto_List.Set_Capacity (14);
+            Add_Goto (Table.States (314), 120, 132);
+            Add_Goto (Table.States (314), 131, 42);
+            Add_Goto (Table.States (314), 170, 483);
+            Add_Goto (Table.States (314), 200, 135);
+            Add_Goto (Table.States (314), 242, 484);
+            Add_Goto (Table.States (314), 261, 137);
+            Add_Goto (Table.States (314), 275, 93);
+            Add_Goto (Table.States (314), 280, 485);
+            Add_Goto (Table.States (314), 296, 98);
+            Add_Goto (Table.States (314), 304, 486);
+            Add_Goto (Table.States (314), 317, 487);
+            Add_Goto (Table.States (314), 323, 146);
+            Add_Goto (Table.States (314), 324, 147);
+            Add_Goto (Table.States (314), 333, 148);
+            Table.States (314).Kernel := To_Vector ((((233, 2),  33,  2, 
(2147483647, 0),  0), ((233, 5),  33,  1,
+            (2147483647, 0),  0)));
+            Table.States (314).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+         end Subr_6;
+         procedure Subr_7
+         is begin
+            Table.States (315).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (315), 59, (233, 3), 488);
+            Add_Action (Table.States (315), 81, (242, 8), 31);
+            Add_Action (Table.States (315), 107, (242, 5), 120);
+            Add_Action (Table.States (315), 108, (242, 7), 34);
+            Add_Action (Table.States (315), 109, (242, 6), 35);
+            Table.States (315).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (315), 131, 42);
+            Add_Goto (Table.States (315), 242, 489);
+            Add_Goto (Table.States (315), 275, 93);
+            Add_Goto (Table.States (315), 296, 98);
+            Table.States (315).Kernel := To_Vector ((((233, 3),  42,  2, 
(2147483647, 0),  0), ((233, 4),  42,  1,
+            (2147483647, 0),  0)));
+            Table.States (315).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (316).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (316), 40, (317, 0), 490);
+            Add_Action (Table.States (316), 81, (242, 8), 31);
+            Add_Action (Table.States (316), 107, (242, 5), 120);
+            Add_Action (Table.States (316), 108, (242, 7), 34);
+            Add_Action (Table.States (316), 109, (242, 6), 35);
+            Table.States (316).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (316), 131, 42);
+            Add_Goto (Table.States (316), 242, 491);
+            Add_Goto (Table.States (316), 275, 93);
+            Add_Goto (Table.States (316), 296, 98);
+            Add_Goto (Table.States (316), 317, 492);
+            Table.States (316).Kernel := To_Vector ((((233, 0),  84,  4, 
(2147483647, 0),  0), ((233, 1),  84,  3,
+            (2147483647, 0),  0)));
+            Table.States (316).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (317).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (317), 3, (200, 2), 122);
+            Add_Action (Table.States (317), 39, (261, 4), 123);
+            Add_Action (Table.States (317), 40, (200, 3), 124);
+            Add_Action (Table.States (317), 41, (261, 1), 125);
+            Add_Action (Table.States (317), 52, (278, 0), 126);
+            Add_Action (Table.States (317), 76, (120, 0), 127);
+            Add_Action (Table.States (317), 77, (120, 5), 128);
+            Add_Action (Table.States (317), 81, (242, 8), 31);
+            Add_Action (Table.States (317), 97, (333, 1), 129);
+            Add_Action (Table.States (317), 98, (333, 0), 130);
+            Add_Action (Table.States (317), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (317), 106, (261, 0), 131);
+            Add_Action (Table.States (317), 107, (242, 5), 120);
+            Add_Action (Table.States (317), 108, (242, 7), 34);
+            Add_Action (Table.States (317), 109, (242, 6), 35);
+            Table.States (317).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (317), 120, 132);
+            Add_Goto (Table.States (317), 131, 42);
+            Add_Goto (Table.States (317), 194, 133);
+            Add_Goto (Table.States (317), 195, 493);
+            Add_Goto (Table.States (317), 200, 135);
+            Add_Goto (Table.States (317), 242, 136);
+            Add_Goto (Table.States (317), 261, 137);
+            Add_Goto (Table.States (317), 275, 93);
+            Add_Goto (Table.States (317), 278, 138);
+            Add_Goto (Table.States (317), 285, 139);
+            Add_Goto (Table.States (317), 286, 140);
+            Add_Goto (Table.States (317), 287, 141);
+            Add_Goto (Table.States (317), 288, 142);
+            Add_Goto (Table.States (317), 289, 143);
+            Add_Goto (Table.States (317), 290, 144);
+            Add_Goto (Table.States (317), 296, 98);
+            Add_Goto (Table.States (317), 304, 145);
+            Add_Goto (Table.States (317), 323, 146);
+            Add_Goto (Table.States (317), 324, 147);
+            Add_Goto (Table.States (317), 333, 148);
+            Table.States (317).Kernel := To_Vector ((0 => ((124, 0),  71,  1, 
(2147483647, 0),  0)));
+            Table.States (317).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (318).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (318), 12, (130, 0), 494);
+            Table.States (318).Kernel := To_Vector ((0 => ((130, 0),  71,  2, 
(2147483647, 0),  0)));
+            Table.States (318).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (130, 0),  12, 494)));
+            Table.States (319).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (319), 54, (284, 0), 495);
+            Add_Action (Table.States (319), 76, (120, 0), 127);
+            Add_Action (Table.States (319), 77, (120, 5), 128);
+            Table.States (319).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (319), 120, 496);
+            Table.States (319).Kernel := To_Vector ((((185, 0),  71,  3, 
(2147483647, 0),  0), ((284, 0),  71,  12,
+            (2147483647, 0),  0)));
+            Table.States (319).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (120, 0),  76, 127)));
+            Table.States (320).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (320), 7, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (320), 21, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (320), 35, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (320), 40, (244, 0), 389);
+            Add_Action (Table.States (320), 56, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (320), 74, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (320), 78, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (320), 81, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (320), 85, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (320), 99, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (320), 107, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (320), 108, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (320), 109, Reduce, (244, 1),  0, null, 
null);
+            Table.States (320).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (320), 117, 497);
+            Add_Goto (Table.States (320), 244, 498);
+            Table.States (320).Kernel := To_Vector ((((294, 0),  58,  0, (244, 
1),  0), ((294, 1),  58,  2,
+            (2147483647, 0),  0)));
+            Table.States (320).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (244, 1),  0)));
+            Table.States (321).Action_List.Set_Capacity (23);
+            Add_Action (Table.States (321), 3, (200, 2), 122);
+            Add_Action (Table.States (321), 15, (139, 0), 260);
+            Add_Action (Table.States (321), 28, (127, 6), 261);
+            Add_Action (Table.States (321), 32, (224, 0), 262);
+            Add_Action (Table.States (321), 39, (261, 4), 123);
+            Add_Action (Table.States (321), 40, (168, 1), 263);
+            Add_Action (Table.States (321), 41, (261, 1), 125);
+            Add_Action (Table.States (321), 44, (168, 3), 265);
+            Add_Action (Table.States (321), 52, (278, 0), 126);
+            Add_Action (Table.States (321), 76, (120, 0), 127);
+            Add_Action (Table.States (321), 77, (120, 5), 128);
+            Add_Action (Table.States (321), 78, Reduce, (127, 5),  0, null, 
null);
+            Add_Conflict (Table.States (321), 78, (257, 4),  0, null, null);
+            Add_Action (Table.States (321), 81, (242, 8), 31);
+            Add_Action (Table.States (321), 82, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (321), 86, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (321), 90, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (321), 97, (333, 1), 129);
+            Add_Action (Table.States (321), 98, (333, 0), 130);
+            Add_Action (Table.States (321), 99, Reduce, (257, 4),  0, null, 
null);
+            Add_Action (Table.States (321), 106, (261, 0), 131);
+            Add_Action (Table.States (321), 107, (222, 1), 499);
+            Add_Action (Table.States (321), 108, (242, 7), 34);
+            Add_Action (Table.States (321), 109, (127, 0), 266);
+            Table.States (321).Goto_List.Set_Capacity (32);
+            Add_Goto (Table.States (321), 120, 132);
+            Add_Goto (Table.States (321), 127, 267);
+            Add_Goto (Table.States (321), 128, 409);
+            Add_Goto (Table.States (321), 131, 42);
+            Add_Goto (Table.States (321), 139, 269);
+            Add_Goto (Table.States (321), 156, 410);
+            Add_Goto (Table.States (321), 168, 271);
+            Add_Goto (Table.States (321), 169, 272);
+            Add_Goto (Table.States (321), 194, 411);
+            Add_Goto (Table.States (321), 200, 135);
+            Add_Goto (Table.States (321), 222, 500);
+            Add_Goto (Table.States (321), 224, 275);
+            Add_Goto (Table.States (321), 242, 276);
+            Add_Goto (Table.States (321), 257, 501);
+            Add_Goto (Table.States (321), 258, 502);
+            Add_Goto (Table.States (321), 261, 137);
+            Add_Goto (Table.States (321), 275, 93);
+            Add_Goto (Table.States (321), 276, 277);
+            Add_Goto (Table.States (321), 278, 138);
+            Add_Goto (Table.States (321), 280, 412);
+            Add_Goto (Table.States (321), 281, 413);
+            Add_Goto (Table.States (321), 285, 139);
+            Add_Goto (Table.States (321), 286, 140);
+            Add_Goto (Table.States (321), 287, 141);
+            Add_Goto (Table.States (321), 288, 142);
+            Add_Goto (Table.States (321), 289, 143);
+            Add_Goto (Table.States (321), 290, 144);
+            Add_Goto (Table.States (321), 296, 98);
+            Add_Goto (Table.States (321), 304, 279);
+            Add_Goto (Table.States (321), 323, 146);
+            Add_Goto (Table.States (321), 324, 147);
+            Add_Goto (Table.States (321), 333, 148);
+            Table.States (321).Kernel := To_Vector ((((118, 0),  76,  1, 
(2147483647, 0),  0), ((118, 1),  76,  3,
+            (2147483647, 0),  0), ((202, 0),  76,  1, (2147483647, 0),  0), 
((242, 0),  76,  4, (2147483647, 0),  0)));
+            Table.States (321).Minimal_Complete_Actions := To_Vector 
(((Reduce, (128, 1),  0), (Reduce, (258, 1),
+            0)));
+            Table.States (322).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (322), 58, (294, 0), 320);
+            Table.States (322).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (322), 294, 503);
+            Table.States (322).Kernel := To_Vector ((0 => ((255, 0),  202,  1, 
(2147483647, 0),  0)));
+            Table.States (322).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (294, 0),  58, 320)));
+            Table.States (323).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (323), (35, 56, 74, 99), (210, 0),  3, 
function_specification_0'Access,
             function_specification_0_check'Access);
-            Table.States (321).Kernel := To_Vector ((0 => (208, 253, 0, 
False)));
-            Table.States (321).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 208, 3)));
-            Table.States (322).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (322), (21, 35, 56, 74, 77, 83, 97), 
(253, 1), 1, null, null);
-            Table.States (322).Kernel := To_Vector ((0 => (253, 292, 0, 
True)));
-            Table.States (322).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 253, 1)));
-            Table.States (322).Minimal_Complete_Actions_Recursive := True;
-            Table.States (323).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (323), 56, 500);
-            Add_Action (Table.States (323), 76, 236);
-            Add_Action (Table.States (323), 85, 238);
-            Add_Action (Table.States (323), 102, 240);
-            Add_Action (Table.States (323), 103, 241);
-            Table.States (323).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (323), 116, 242);
-            Add_Goto (Table.States (323), 323, 243);
-            Table.States (323).Kernel := To_Vector (((129, 240, 2, True), 
(216, 240, 3, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (323).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 56, 500)));
-            Table.States (324).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (324), 56, 501);
-            Add_Action (Table.States (324), 76, 236);
-            Add_Action (Table.States (324), 85, 238);
-            Add_Action (Table.States (324), 102, 240);
-            Add_Action (Table.States (324), 103, 241);
-            Table.States (324).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (324), 116, 242);
-            Add_Goto (Table.States (324), 323, 243);
-            Table.States (324).Kernel := To_Vector (((129, 240, 2, True), 
(216, 240, 3, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (324).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 56, 501)));
+            Table.States (323).Kernel := To_Vector ((0 => ((210, 0),  255,  0, 
(210, 0),  3)));
+            Table.States (323).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (210, 0),  3)));
+            Table.States (324).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (324), (21, 35, 56, 74, 78, 85, 99), 
(255, 1),  1, null, null);
+            Table.States (324).Kernel := To_Vector ((0 => ((255, 1),  294,  0, 
(255, 1),  1)));
+            Table.States (324).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (255, 1),  1)));
             Table.States (325).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (325), 56, 502);
-            Add_Action (Table.States (325), 76, 236);
-            Add_Action (Table.States (325), 85, 238);
-            Add_Action (Table.States (325), 102, 240);
-            Add_Action (Table.States (325), 103, 241);
+            Add_Action (Table.States (325), 56, (218, 2), 504);
+            Add_Action (Table.States (325), 76, (118, 0), 237);
+            Add_Action (Table.States (325), 87, (296, 0), 239);
+            Add_Action (Table.States (325), 104, (325, 0), 241);
+            Add_Action (Table.States (325), 105, (325, 1), 242);
             Table.States (325).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (325), 116, 242);
-            Add_Goto (Table.States (325), 323, 243);
-            Table.States (325).Kernel := To_Vector (((129, 240, 2, True), 
(216, 240, 3, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (325).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 56, 502)));
-            Table.States (326).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (326), 35, Reduce, (170, 2), 0, null, 
null);
-            Add_Action (Table.States (326), 74, Reduce, (170, 2), 0, null, 
null);
-            Add_Action (Table.States (326), 76, 378);
-            Add_Action (Table.States (326), 97, Reduce, (170, 2), 0, null, 
null);
-            Table.States (326).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (326), 170, 503);
-            Table.States (326).Kernel := To_Vector (((202, 105, 3, False), 
(202, 105, 3, False), (202, 105, 1,
-            False)));
-            Table.States (326).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 170, 0)));
-            Table.States (327).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (327), 79, 31);
-            Add_Action (Table.States (327), 105, 120);
-            Add_Action (Table.States (327), 106, 34);
-            Add_Action (Table.States (327), 107, 35);
-            Table.States (327).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (327), 129, 42);
-            Add_Goto (Table.States (327), 240, 504);
-            Add_Goto (Table.States (327), 273, 93);
-            Add_Goto (Table.States (327), 294, 98);
-            Table.States (327).Kernel := To_Vector ((0 => (205, 47, 5, 
False)));
-            Table.States (327).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (328).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (328), 35, 505);
-            Add_Action (Table.States (328), 74, 338);
-            Add_Action (Table.States (328), 97, Reduce, (123, 1), 0, null, 
null);
+            Add_Goto (Table.States (325), 118, 243);
+            Add_Goto (Table.States (325), 325, 244);
+            Table.States (325).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((218, 2),  242,  3,
+            (2147483647, 0),  0), ((242, 0),  242,  5, (2147483647, 0),  0), 
((242, 1),  242,  2, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (325).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (218, 2),  56, 504)));
+            Table.States (326).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (326), 56, (218, 0), 505);
+            Add_Action (Table.States (326), 76, (118, 0), 237);
+            Add_Action (Table.States (326), 87, (296, 0), 239);
+            Add_Action (Table.States (326), 104, (325, 0), 241);
+            Add_Action (Table.States (326), 105, (325, 1), 242);
+            Table.States (326).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (326), 118, 243);
+            Add_Goto (Table.States (326), 325, 244);
+            Table.States (326).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((218, 0),  242,  3,
+            (2147483647, 0),  0), ((242, 0),  242,  5, (2147483647, 0),  0), 
((242, 1),  242,  2, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (326).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (218, 0),  56, 505)));
+            Table.States (327).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (327), 56, (218, 1), 506);
+            Add_Action (Table.States (327), 76, (118, 0), 237);
+            Add_Action (Table.States (327), 87, (296, 0), 239);
+            Add_Action (Table.States (327), 104, (325, 0), 241);
+            Add_Action (Table.States (327), 105, (325, 1), 242);
+            Table.States (327).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (327), 118, 243);
+            Add_Goto (Table.States (327), 325, 244);
+            Table.States (327).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((218, 1),  242,  3,
+            (2147483647, 0),  0), ((242, 0),  242,  5, (2147483647, 0),  0), 
((242, 1),  242,  2, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (327).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (218, 1),  56, 506)));
+            Table.States (328).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (328), 35, Reduce, (172, 2),  0, null, 
null);
+            Add_Action (Table.States (328), 74, Reduce, (172, 2),  0, null, 
null);
+            Add_Action (Table.States (328), 76, (172, 0), 380);
+            Add_Action (Table.States (328), 99, Reduce, (172, 2),  0, null, 
null);
             Table.States (328).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (328), 123, 506);
-            Table.States (328).Kernel := To_Vector (((201, 313, 4, False), 
(201, 313, 3, False), (201, 313, 3, False),
-            (201, 313, 1, False)));
-            Table.States (328).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (329).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (329), (29, 47, 48, 50, 69, 71, 74, 105), 
(212, 0), 2, null, null);
-            Table.States (329).Kernel := To_Vector ((0 => (212, 213, 0, 
True)));
-            Table.States (329).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 212, 2)));
-            Table.States (329).Minimal_Complete_Actions_Recursive := True;
-            Table.States (330).Action_List.Set_Capacity (11);
-            Add_Action (Table.States (330), 7, Reduce, (237, 3), 0, null, 
null);
-            Add_Action (Table.States (330), 33, 507);
-            Add_Action (Table.States (330), 40, Reduce, (237, 3), 0, null, 
null);
-            Add_Action (Table.States (330), 45, 508);
-            Add_Action (Table.States (330), 74, Reduce, (237, 3), 0, null, 
null);
-            Add_Action (Table.States (330), 79, Reduce, (237, 3), 0, null, 
null);
-            Add_Action (Table.States (330), 83, Reduce, (237, 3), 0, null, 
null);
-            Add_Action (Table.States (330), 97, Reduce, (237, 3), 0, null, 
null);
-            Add_Action (Table.States (330), 105, Reduce, (237, 3), 0, null, 
null);
-            Add_Action (Table.States (330), 106, Reduce, (237, 3), 0, null, 
null);
-            Add_Action (Table.States (330), 107, Reduce, (237, 3), 0, null, 
null);
+            Add_Goto (Table.States (328), 172, 507);
+            Table.States (328).Kernel := To_Vector ((((204, 0),  107,  3, 
(2147483647, 0),  0), ((204, 1),  107,  3,
+            (2147483647, 0),  0), ((204, 2),  107,  1, (2147483647, 0),  0)));
+            Table.States (328).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (172, 2),  0)));
+            Table.States (329).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (329), 81, (242, 8), 31);
+            Add_Action (Table.States (329), 107, (242, 5), 120);
+            Add_Action (Table.States (329), 108, (242, 7), 34);
+            Add_Action (Table.States (329), 109, (242, 6), 35);
+            Table.States (329).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (329), 131, 42);
+            Add_Goto (Table.States (329), 242, 508);
+            Add_Goto (Table.States (329), 275, 93);
+            Add_Goto (Table.States (329), 296, 98);
+            Table.States (329).Kernel := To_Vector ((0 => ((207, 0),  47,  5, 
(2147483647, 0),  0)));
+            Table.States (329).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (330).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (330), 35, (203, 0), 509);
+            Add_Action (Table.States (330), 74, (125, 0), 340);
+            Add_Action (Table.States (330), 99, Reduce, (125, 1),  0, null, 
null);
             Table.States (330).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (330), 237, 509);
-            Table.States (330).Kernel := To_Vector (((199, 82, 3, False), 
(199, 82, 4, False), (199, 82, 2, False),
-            (199, 82, 3, False)));
-            Table.States (330).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 237, 0)));
-         end Subr_6;
-         procedure Subr_7
-         is begin
-            Table.States (331).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (331), (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, 79, 94, 105, 106,
-            107, 108), (304, 3), 3, simple_statement_3'Access, null);
-            Table.States (331).Kernel := To_Vector ((0 => (304, 97, 0, 
False)));
-            Table.States (331).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 304, 3)));
-            Table.States (332).Action_List.Set_Capacity (26);
-            Add_Action (Table.States (332), 4, 1);
-            Add_Action (Table.States (332), 5, 2);
-            Add_Action (Table.States (332), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (332), 15, 3);
-            Add_Action (Table.States (332), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (332), 18, 4);
-            Add_Action (Table.States (332), 22, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (332), 23, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (332), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (332), 27, 5);
-            Add_Action (Table.States (332), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (332), 31, 9);
-            Add_Action (Table.States (332), 32, 10);
-            Add_Action (Table.States (332), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (332), 41, 13);
-            Add_Action (Table.States (332), 48, 16);
-            Add_Action (Table.States (332), 52, 20);
-            Add_Action (Table.States (332), 57, 21);
-            Add_Action (Table.States (332), 58, 22);
-            Add_Action (Table.States (332), 61, 24);
-            Add_Action (Table.States (332), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (332), 79, 31);
-            Add_Action (Table.States (332), 94, 32);
-            Add_Action (Table.States (332), 105, 361);
-            Add_Action (Table.States (332), 106, 34);
-            Add_Action (Table.States (332), 107, 35);
-            Table.States (332).Goto_List.Set_Capacity (31);
-            Add_Goto (Table.States (332), 114, 37);
-            Add_Goto (Table.States (332), 124, 39);
-            Add_Goto (Table.States (332), 127, 40);
-            Add_Goto (Table.States (332), 129, 42);
-            Add_Goto (Table.States (332), 132, 43);
-            Add_Goto (Table.States (332), 133, 44);
-            Add_Goto (Table.States (332), 134, 45);
-            Add_Goto (Table.States (332), 140, 48);
-            Add_Goto (Table.States (332), 152, 51);
-            Add_Goto (Table.States (332), 153, 52);
-            Add_Goto (Table.States (332), 162, 54);
-            Add_Goto (Table.States (332), 191, 58);
-            Add_Goto (Table.States (332), 197, 60);
-            Add_Goto (Table.States (332), 218, 69);
-            Add_Goto (Table.States (332), 223, 71);
-            Add_Goto (Table.States (332), 233, 73);
-            Add_Goto (Table.States (332), 240, 74);
-            Add_Goto (Table.States (332), 258, 84);
-            Add_Goto (Table.States (332), 262, 87);
-            Add_Goto (Table.States (332), 273, 93);
-            Add_Goto (Table.States (332), 277, 94);
-            Add_Goto (Table.States (332), 291, 97);
-            Add_Goto (Table.States (332), 294, 98);
-            Add_Goto (Table.States (332), 295, 99);
-            Add_Goto (Table.States (332), 299, 100);
-            Add_Goto (Table.States (332), 300, 362);
-            Add_Goto (Table.States (332), 301, 510);
-            Add_Goto (Table.States (332), 303, 101);
-            Add_Goto (Table.States (332), 304, 102);
-            Add_Goto (Table.States (332), 307, 364);
-            Add_Goto (Table.States (332), 324, 115);
-            Table.States (332).Kernel := To_Vector (((223, 68, 6, False), 
(223, 68, 4, False), (223, 68, 5, False),
-            (223, 68, 3, False)));
-            Table.States (332).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 0)));
-            Table.States (333).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (333), 79, 31);
-            Add_Action (Table.States (333), 105, 120);
-            Add_Action (Table.States (333), 106, 34);
-            Add_Action (Table.States (333), 107, 35);
-            Table.States (333).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (333), 129, 42);
-            Add_Goto (Table.States (333), 239, 511);
-            Add_Goto (Table.States (333), 240, 220);
-            Add_Goto (Table.States (333), 273, 93);
-            Add_Goto (Table.States (333), 294, 98);
-            Table.States (333).Kernel := To_Vector ((0 => (333, 74, 2, 
False)));
-            Table.States (333).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (334).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (334), 84, 382);
-            Add_Action (Table.States (334), 97, 512);
-            Table.States (334).Kernel := To_Vector (((239, 239, 2, True), 
(333, 239, 1, False)));
-            Table.States (334).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 512)));
-            Table.States (335).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (335), 35, 513);
-            Add_Conflict (Table.States (335), 35, (123, 1), 0, null, null);
-            Add_Action (Table.States (335), 74, 338);
-            Add_Action (Table.States (335), 76, 236);
-            Add_Action (Table.States (335), 85, 238);
-            Add_Action (Table.States (335), 102, 240);
-            Add_Action (Table.States (335), 103, 241);
-            Table.States (335).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (335), 116, 242);
-            Add_Goto (Table.States (335), 123, 514);
-            Add_Goto (Table.States (335), 323, 243);
-            Table.States (335).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (248, 240, 4, False), (248, 240, 3, False), (249, 240, 3, False), 
(273, 240, 3, True), (294, 240, 2, True),
-            (294, 240, 2, True), (294, 240, 2, True), (294, 240, 2, True)));
-            Table.States (335).Minimal_Complete_Actions := To_Vector 
(((Reduce, 123, 0), (Shift, 35, 513)));
-            Table.States (336).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (336), 39, 515);
-            Table.States (336).Kernel := To_Vector ((0 => (214, 35, 3, 
False)));
-            Table.States (336).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 515)));
-            Table.States (337).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (337), 79, 31);
-            Add_Action (Table.States (337), 105, 120);
-            Add_Action (Table.States (337), 106, 34);
-            Add_Action (Table.States (337), 107, 35);
-            Table.States (337).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (337), 129, 42);
-            Add_Goto (Table.States (337), 240, 516);
-            Add_Goto (Table.States (337), 273, 93);
-            Add_Goto (Table.States (337), 294, 98);
-            Table.States (337).Kernel := To_Vector ((0 => (251, 56, 2, 
False)));
-            Table.States (337).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (338).Action_List.Set_Capacity (20);
-            Add_Action (Table.States (338), 3, 122);
-            Add_Action (Table.States (338), 28, 517);
-            Add_Action (Table.States (338), 35, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (338), 39, 123);
-            Add_Action (Table.States (338), 40, 262);
-            Add_Action (Table.States (338), 41, 125);
-            Add_Action (Table.States (338), 44, 264);
-            Add_Action (Table.States (338), 52, 126);
-            Add_Action (Table.States (338), 76, 127);
-            Add_Action (Table.States (338), 79, 31);
-            Add_Action (Table.States (338), 80, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (338), 84, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (338), 88, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (338), 95, 128);
-            Add_Action (Table.States (338), 96, 129);
-            Add_Action (Table.States (338), 97, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (338), 104, 130);
-            Add_Action (Table.States (338), 105, 120);
-            Add_Action (Table.States (338), 106, 34);
-            Add_Action (Table.States (338), 107, 265);
-            Table.States (338).Goto_List.Set_Capacity (24);
-            Add_Goto (Table.States (338), 118, 131);
-            Add_Goto (Table.States (338), 125, 266);
-            Add_Goto (Table.States (338), 126, 518);
-            Add_Goto (Table.States (338), 129, 42);
-            Add_Goto (Table.States (338), 166, 270);
-            Add_Goto (Table.States (338), 167, 271);
-            Add_Goto (Table.States (338), 192, 409);
-            Add_Goto (Table.States (338), 198, 134);
-            Add_Goto (Table.States (338), 240, 275);
-            Add_Goto (Table.States (338), 259, 136);
-            Add_Goto (Table.States (338), 273, 93);
-            Add_Goto (Table.States (338), 276, 137);
-            Add_Goto (Table.States (338), 278, 277);
-            Add_Goto (Table.States (338), 283, 138);
-            Add_Goto (Table.States (338), 284, 139);
-            Add_Goto (Table.States (338), 285, 140);
-            Add_Goto (Table.States (338), 286, 141);
-            Add_Goto (Table.States (338), 287, 142);
-            Add_Goto (Table.States (338), 288, 143);
-            Add_Goto (Table.States (338), 294, 98);
-            Add_Goto (Table.States (338), 302, 278);
-            Add_Goto (Table.States (338), 321, 145);
-            Add_Goto (Table.States (338), 322, 146);
-            Add_Goto (Table.States (338), 331, 147);
-            Table.States (338).Kernel := To_Vector ((0 => (123, 74, 0, 
False)));
-            Table.States (338).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 126, 0)));
-            Table.States (339).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (339), 35, 519);
-            Table.States (339).Kernel := To_Vector (((252, 123, 3, False), 
(252, 123, 2, False)));
-            Table.States (339).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 519)));
+            Add_Goto (Table.States (330), 125, 510);
+            Table.States (330).Kernel := To_Vector ((((203, 0),  315,  4, 
(2147483647, 0),  0), ((203, 1),  315,  3,
+            (2147483647, 0),  0), ((203, 2),  315,  3, (2147483647, 0),  0), 
((203, 3),  315,  1, (2147483647, 0),
+            0)));
+            Table.States (330).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (331).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (331), (29, 47, 48, 50, 69, 71, 74, 107), 
(214, 0),  2, null, null);
+            Table.States (331).Kernel := To_Vector ((0 => ((214, 0),  215,  0, 
(214, 0),  2)));
+            Table.States (331).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (214, 0),  2)));
+            Table.States (332).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (332), 7, Reduce, (239, 3),  0, null, 
null);
+            Add_Action (Table.States (332), 33, (239, 0), 511);
+            Add_Action (Table.States (332), 40, Reduce, (239, 3),  0, null, 
null);
+            Add_Action (Table.States (332), 45, (239, 2), 512);
+            Add_Action (Table.States (332), 74, Reduce, (239, 3),  0, null, 
null);
+            Add_Action (Table.States (332), 81, Reduce, (239, 3),  0, null, 
null);
+            Add_Action (Table.States (332), 85, Reduce, (239, 3),  0, null, 
null);
+            Add_Action (Table.States (332), 99, Reduce, (239, 3),  0, null, 
null);
+            Add_Action (Table.States (332), 107, Reduce, (239, 3),  0, null, 
null);
+            Add_Action (Table.States (332), 108, Reduce, (239, 3),  0, null, 
null);
+            Add_Action (Table.States (332), 109, Reduce, (239, 3),  0, null, 
null);
+            Table.States (332).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (332), 239, 513);
+            Table.States (332).Kernel := To_Vector ((((201, 0),  84,  3, 
(2147483647, 0),  0), ((201, 1),  84,  4,
+            (2147483647, 0),  0), ((201, 2),  84,  2, (2147483647, 0),  0), 
((201, 3),  84,  3, (2147483647, 0),  0)));
+            Table.States (332).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (239, 3),  0)));
+            Table.States (333).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (333), (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, 81, 96, 107, 108,
+            109, 110), (306, 3),  3, simple_statement_3'Access, null);
+            Table.States (333).Kernel := To_Vector ((0 => ((306, 3),  99,  0, 
(306, 3),  3)));
+            Table.States (333).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (306, 3),  3)));
+            Table.States (334).Action_List.Set_Capacity (26);
+            Add_Action (Table.States (334), 4, (116, 0), 1);
+            Add_Action (Table.States (334), 5, (306, 8), 2);
+            Add_Action (Table.States (334), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (334), 15, (142, 0), 3);
+            Add_Action (Table.States (334), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (334), 18, (164, 0), 4);
+            Add_Action (Table.States (334), 22, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (334), 23, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (334), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (334), 27, (193, 0), 5);
+            Add_Action (Table.States (334), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (334), 31, (306, 3), 9);
+            Add_Action (Table.States (334), 32, (225, 0), 10);
+            Add_Action (Table.States (334), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (334), 41, (306, 0), 13);
+            Add_Action (Table.States (334), 48, (260, 0), 16);
+            Add_Action (Table.States (334), 52, (279, 0), 20);
+            Add_Action (Table.States (334), 57, (293, 0), 21);
+            Add_Action (Table.States (334), 58, (199, 0), 22);
+            Add_Action (Table.States (334), 61, (129, 0), 24);
+            Add_Action (Table.States (334), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (334), 81, (242, 8), 31);
+            Add_Action (Table.States (334), 96, (220, 0), 32);
+            Add_Action (Table.States (334), 107, (134, 0), 363);
+            Add_Action (Table.States (334), 108, (242, 7), 34);
+            Add_Action (Table.States (334), 109, (242, 6), 35);
+            Table.States (334).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (334), 116, 37);
+            Add_Goto (Table.States (334), 126, 39);
+            Add_Goto (Table.States (334), 129, 40);
+            Add_Goto (Table.States (334), 131, 42);
+            Add_Goto (Table.States (334), 134, 43);
+            Add_Goto (Table.States (334), 135, 44);
+            Add_Goto (Table.States (334), 136, 45);
+            Add_Goto (Table.States (334), 142, 48);
+            Add_Goto (Table.States (334), 154, 51);
+            Add_Goto (Table.States (334), 155, 52);
+            Add_Goto (Table.States (334), 164, 54);
+            Add_Goto (Table.States (334), 193, 58);
+            Add_Goto (Table.States (334), 199, 60);
+            Add_Goto (Table.States (334), 220, 69);
+            Add_Goto (Table.States (334), 225, 71);
+            Add_Goto (Table.States (334), 235, 73);
+            Add_Goto (Table.States (334), 242, 74);
+            Add_Goto (Table.States (334), 260, 84);
+            Add_Goto (Table.States (334), 264, 87);
+            Add_Goto (Table.States (334), 275, 93);
+            Add_Goto (Table.States (334), 279, 94);
+            Add_Goto (Table.States (334), 293, 97);
+            Add_Goto (Table.States (334), 296, 98);
+            Add_Goto (Table.States (334), 297, 99);
+            Add_Goto (Table.States (334), 301, 100);
+            Add_Goto (Table.States (334), 302, 364);
+            Add_Goto (Table.States (334), 303, 514);
+            Add_Goto (Table.States (334), 305, 101);
+            Add_Goto (Table.States (334), 306, 102);
+            Add_Goto (Table.States (334), 309, 366);
+            Add_Goto (Table.States (334), 326, 115);
+            Table.States (334).Kernel := To_Vector ((((225, 0),  68,  6, 
(2147483647, 0),  0), ((225, 1),  68,  4,
+            (2147483647, 0),  0), ((225, 2),  68,  5, (2147483647, 0),  0), 
((225, 3),  68,  3, (2147483647, 0),  0)));
+            Table.States (334).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (303, 1),  0)));
+            Table.States (335).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (335), 81, (242, 8), 31);
+            Add_Action (Table.States (335), 107, (242, 5), 120);
+            Add_Action (Table.States (335), 108, (242, 7), 34);
+            Add_Action (Table.States (335), 109, (242, 6), 35);
+            Table.States (335).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (335), 131, 42);
+            Add_Goto (Table.States (335), 241, 515);
+            Add_Goto (Table.States (335), 242, 221);
+            Add_Goto (Table.States (335), 275, 93);
+            Add_Goto (Table.States (335), 296, 98);
+            Table.States (335).Kernel := To_Vector ((0 => ((335, 0),  74,  2, 
(2147483647, 0),  0)));
+            Table.States (335).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (336).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (336), 86, (241, 0), 384);
+            Add_Action (Table.States (336), 99, (335, 1), 516);
+            Table.States (336).Kernel := To_Vector ((((241, 0),  241,  2, 
(2147483647, 0),  0), ((335, 1),  241,  1,
+            (2147483647, 0),  0)));
+            Table.States (336).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (335, 1),  99, 516)));
+            Table.States (337).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (337), 35, (251, 0), 517);
+            Add_Conflict (Table.States (337), 35, (125, 1),  0, null, null);
+            Add_Action (Table.States (337), 74, (125, 0), 340);
+            Add_Action (Table.States (337), 76, (118, 0), 237);
+            Add_Action (Table.States (337), 87, (296, 0), 239);
+            Add_Action (Table.States (337), 104, (325, 0), 241);
+            Add_Action (Table.States (337), 105, (325, 1), 242);
+            Table.States (337).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (337), 118, 243);
+            Add_Goto (Table.States (337), 125, 518);
+            Add_Goto (Table.States (337), 325, 244);
+            Table.States (337).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((250, 0),  242,  4, (2147483647, 0),  0),
+            ((250, 1),  242,  3, (2147483647, 0),  0), ((251, 0),  242,  3, 
(2147483647, 0),  0), ((275, 0),  242,  3,
+            (2147483647, 0),  0), ((296, 0),  242,  2, (2147483647, 0),  0), 
((296, 1),  242,  2, (2147483647, 0),  0),
+            ((296, 2),  242,  2, (2147483647, 0),  0), ((296, 3),  242,  2, 
(2147483647, 0),  0)));
+            Table.States (337).Minimal_Complete_Actions := To_Vector 
(((Reduce, (125, 1),  0), (Shift, (251, 0),  35,
+            517)));
+            Table.States (338).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (338), 39, (216, 0), 519);
+            Table.States (338).Kernel := To_Vector ((0 => ((216, 0),  35,  3, 
(2147483647, 0),  0)));
+            Table.States (338).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (216, 0),  39, 519)));
+            Table.States (339).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (339), 81, (242, 8), 31);
+            Add_Action (Table.States (339), 107, (242, 5), 120);
+            Add_Action (Table.States (339), 108, (242, 7), 34);
+            Add_Action (Table.States (339), 109, (242, 6), 35);
+            Table.States (339).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (339), 131, 42);
+            Add_Goto (Table.States (339), 242, 520);
+            Add_Goto (Table.States (339), 275, 93);
+            Add_Goto (Table.States (339), 296, 98);
+            Table.States (339).Kernel := To_Vector ((0 => ((253, 0),  56,  2, 
(2147483647, 0),  0)));
+            Table.States (339).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
             Table.States (340).Action_List.Set_Capacity (21);
-            Add_Action (Table.States (340), 3, 122);
-            Add_Action (Table.States (340), 15, 259);
-            Add_Action (Table.States (340), 28, 260);
-            Add_Action (Table.States (340), 32, 261);
-            Add_Action (Table.States (340), 39, 123);
-            Add_Action (Table.States (340), 40, 262);
-            Add_Action (Table.States (340), 41, 125);
-            Add_Action (Table.States (340), 44, 264);
-            Add_Action (Table.States (340), 52, 126);
-            Add_Action (Table.States (340), 76, 127);
-            Add_Action (Table.States (340), 77, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (340), 79, 31);
-            Add_Action (Table.States (340), 80, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (340), 84, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (340), 88, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (340), 95, 128);
-            Add_Action (Table.States (340), 96, 129);
-            Add_Action (Table.States (340), 104, 130);
-            Add_Action (Table.States (340), 105, 120);
-            Add_Action (Table.States (340), 106, 34);
-            Add_Action (Table.States (340), 107, 265);
-            Table.States (340).Goto_List.Set_Capacity (28);
-            Add_Goto (Table.States (340), 118, 131);
-            Add_Goto (Table.States (340), 125, 266);
-            Add_Goto (Table.States (340), 126, 520);
-            Add_Goto (Table.States (340), 129, 42);
-            Add_Goto (Table.States (340), 137, 268);
-            Add_Goto (Table.States (340), 154, 521);
-            Add_Goto (Table.States (340), 166, 270);
-            Add_Goto (Table.States (340), 167, 271);
-            Add_Goto (Table.States (340), 192, 409);
-            Add_Goto (Table.States (340), 198, 134);
-            Add_Goto (Table.States (340), 222, 274);
-            Add_Goto (Table.States (340), 240, 275);
-            Add_Goto (Table.States (340), 259, 136);
-            Add_Goto (Table.States (340), 273, 93);
-            Add_Goto (Table.States (340), 274, 276);
-            Add_Goto (Table.States (340), 276, 137);
-            Add_Goto (Table.States (340), 278, 277);
-            Add_Goto (Table.States (340), 283, 138);
-            Add_Goto (Table.States (340), 284, 139);
-            Add_Goto (Table.States (340), 285, 140);
-            Add_Goto (Table.States (340), 286, 141);
-            Add_Goto (Table.States (340), 287, 142);
-            Add_Goto (Table.States (340), 288, 143);
-            Add_Goto (Table.States (340), 294, 98);
-            Add_Goto (Table.States (340), 302, 278);
-            Add_Goto (Table.States (340), 321, 145);
-            Add_Goto (Table.States (340), 322, 146);
-            Add_Goto (Table.States (340), 331, 147);
-            Table.States (340).Kernel := To_Vector (((258, 76, 2, False), 
(258, 76, 4, False)));
-            Table.States (340).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 126, 0)));
-            Table.States (341).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (341), (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, 79, 94, 105, 106,
-            107, 108), (258, 2), 3, pragma_g_2'Access, null);
-            Table.States (341).Kernel := To_Vector ((0 => (258, 97, 0, 
False)));
-            Table.States (341).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 258, 3)));
-            Table.States (342).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (342), 71, Reduce, (164, 0), 1, null, 
null);
-            Add_Conflict (Table.States (342), 71, (240, 5), 1, name_5'Access, 
name_5_check'Access);
-            Add_Action (Table.States (342), 76, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (342), 85, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (342), 102, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (342), 103, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Table.States (342).Kernel := To_Vector (((164, 105, 0, False), 
(240, 105, 0, False)));
-            Table.States (342).Minimal_Complete_Actions := To_Vector 
(((Reduce, 164, 1), (Reduce, 240, 1)));
-            Table.States (343).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (343), 84, 382);
-            Add_Action (Table.States (343), 97, 522);
-            Table.States (343).Kernel := To_Vector (((239, 239, 2, True), 
(333, 239, 1, False)));
-            Table.States (343).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 522)));
-            Table.States (344).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (344), 7, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (344), 26, 386);
-            Add_Action (Table.States (344), 40, 387);
-            Add_Action (Table.States (344), 79, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (344), 105, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (344), 106, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (344), 107, Reduce, (242, 1), 0, null, 
null);
-            Table.States (344).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (344), 115, 388);
-            Add_Goto (Table.States (344), 242, 389);
-            Table.States (344).Kernel := To_Vector (((246, 82, 4, False), 
(246, 82, 5, False), (246, 82, 4, False)));
-            Table.States (344).Minimal_Complete_Actions := To_Vector 
(((Reduce, 242, 0), (Shift, 26, 386)));
-            Table.States (345).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (345), (21, 35, 56, 72, 74, 77, 83, 97), 
(254, 0), 1, null, null);
-            Table.States (345).Kernel := To_Vector ((0 => (254, 200, 0, 
False)));
-            Table.States (345).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 254, 1)));
-            Table.States (346).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (346), (35, 56, 74, 97), (263, 0), 3, 
procedure_specification_0'Access,
+            Add_Action (Table.States (340), 3, (200, 2), 122);
+            Add_Action (Table.States (340), 28, (127, 6), 521);
+            Add_Action (Table.States (340), 35, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (340), 39, (261, 4), 123);
+            Add_Action (Table.States (340), 40, (168, 1), 263);
+            Add_Action (Table.States (340), 41, (261, 1), 125);
+            Add_Action (Table.States (340), 44, (168, 3), 265);
+            Add_Action (Table.States (340), 52, (278, 0), 126);
+            Add_Action (Table.States (340), 76, (120, 0), 127);
+            Add_Action (Table.States (340), 77, (120, 5), 128);
+            Add_Action (Table.States (340), 81, (242, 8), 31);
+            Add_Action (Table.States (340), 82, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (340), 86, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (340), 90, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (340), 97, (333, 1), 129);
+            Add_Action (Table.States (340), 98, (333, 0), 130);
+            Add_Action (Table.States (340), 99, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (340), 106, (261, 0), 131);
+            Add_Action (Table.States (340), 107, (242, 5), 120);
+            Add_Action (Table.States (340), 108, (242, 7), 34);
+            Add_Action (Table.States (340), 109, (127, 0), 266);
+            Table.States (340).Goto_List.Set_Capacity (24);
+            Add_Goto (Table.States (340), 120, 132);
+            Add_Goto (Table.States (340), 127, 267);
+            Add_Goto (Table.States (340), 128, 522);
+            Add_Goto (Table.States (340), 131, 42);
+            Add_Goto (Table.States (340), 168, 271);
+            Add_Goto (Table.States (340), 169, 272);
+            Add_Goto (Table.States (340), 194, 411);
+            Add_Goto (Table.States (340), 200, 135);
+            Add_Goto (Table.States (340), 242, 276);
+            Add_Goto (Table.States (340), 261, 137);
+            Add_Goto (Table.States (340), 275, 93);
+            Add_Goto (Table.States (340), 278, 138);
+            Add_Goto (Table.States (340), 280, 278);
+            Add_Goto (Table.States (340), 285, 139);
+            Add_Goto (Table.States (340), 286, 140);
+            Add_Goto (Table.States (340), 287, 141);
+            Add_Goto (Table.States (340), 288, 142);
+            Add_Goto (Table.States (340), 289, 143);
+            Add_Goto (Table.States (340), 290, 144);
+            Add_Goto (Table.States (340), 296, 98);
+            Add_Goto (Table.States (340), 304, 279);
+            Add_Goto (Table.States (340), 323, 146);
+            Add_Goto (Table.States (340), 324, 147);
+            Add_Goto (Table.States (340), 333, 148);
+            Table.States (340).Kernel := To_Vector ((0 => ((125, 0),  74,  0, 
(128, 1),  1)));
+            Table.States (340).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (128, 1),  1)));
+            Table.States (341).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (341), 35, (254, 0), 523);
+            Table.States (341).Kernel := To_Vector ((((254, 0),  125,  3, 
(2147483647, 0),  0), ((254, 1),  125,  2,
+            (2147483647, 0),  0)));
+            Table.States (341).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (254, 0),  35, 523)));
+            Table.States (342).Action_List.Set_Capacity (22);
+            Add_Action (Table.States (342), 3, (200, 2), 122);
+            Add_Action (Table.States (342), 15, (139, 0), 260);
+            Add_Action (Table.States (342), 28, (127, 6), 261);
+            Add_Action (Table.States (342), 32, (224, 0), 262);
+            Add_Action (Table.States (342), 39, (261, 4), 123);
+            Add_Action (Table.States (342), 40, (168, 1), 263);
+            Add_Action (Table.States (342), 41, (261, 1), 125);
+            Add_Action (Table.States (342), 44, (168, 3), 265);
+            Add_Action (Table.States (342), 52, (278, 0), 126);
+            Add_Action (Table.States (342), 76, (120, 0), 127);
+            Add_Action (Table.States (342), 77, (120, 5), 128);
+            Add_Action (Table.States (342), 78, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (342), 81, (242, 8), 31);
+            Add_Action (Table.States (342), 82, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (342), 86, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (342), 90, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (342), 97, (333, 1), 129);
+            Add_Action (Table.States (342), 98, (333, 0), 130);
+            Add_Action (Table.States (342), 106, (261, 0), 131);
+            Add_Action (Table.States (342), 107, (242, 5), 120);
+            Add_Action (Table.States (342), 108, (242, 7), 34);
+            Add_Action (Table.States (342), 109, (127, 0), 266);
+            Table.States (342).Goto_List.Set_Capacity (28);
+            Add_Goto (Table.States (342), 120, 132);
+            Add_Goto (Table.States (342), 127, 267);
+            Add_Goto (Table.States (342), 128, 524);
+            Add_Goto (Table.States (342), 131, 42);
+            Add_Goto (Table.States (342), 139, 269);
+            Add_Goto (Table.States (342), 156, 525);
+            Add_Goto (Table.States (342), 168, 271);
+            Add_Goto (Table.States (342), 169, 272);
+            Add_Goto (Table.States (342), 194, 411);
+            Add_Goto (Table.States (342), 200, 135);
+            Add_Goto (Table.States (342), 224, 275);
+            Add_Goto (Table.States (342), 242, 276);
+            Add_Goto (Table.States (342), 261, 137);
+            Add_Goto (Table.States (342), 275, 93);
+            Add_Goto (Table.States (342), 276, 277);
+            Add_Goto (Table.States (342), 278, 138);
+            Add_Goto (Table.States (342), 280, 278);
+            Add_Goto (Table.States (342), 285, 139);
+            Add_Goto (Table.States (342), 286, 140);
+            Add_Goto (Table.States (342), 287, 141);
+            Add_Goto (Table.States (342), 288, 142);
+            Add_Goto (Table.States (342), 289, 143);
+            Add_Goto (Table.States (342), 290, 144);
+            Add_Goto (Table.States (342), 296, 98);
+            Add_Goto (Table.States (342), 304, 279);
+            Add_Goto (Table.States (342), 323, 146);
+            Add_Goto (Table.States (342), 324, 147);
+            Add_Goto (Table.States (342), 333, 148);
+            Table.States (342).Kernel := To_Vector ((((260, 0),  76,  2, 
(2147483647, 0),  0), ((260, 1),  76,  4,
+            (2147483647, 0),  0)));
+            Table.States (342).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (128, 1),  0)));
+            Table.States (343).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (343), (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, 81, 96, 107, 108,
+            109, 110), (260, 2),  3, pragma_g_2'Access, null);
+            Table.States (343).Kernel := To_Vector ((0 => ((260, 2),  99,  0, 
(260, 2),  3)));
+            Table.States (343).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (260, 2),  3)));
+            Table.States (344).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (344), 71, Reduce, (166, 0),  1, null, 
null);
+            Add_Conflict (Table.States (344), 71, (242, 5),  1, name_5'Access, 
name_5_check'Access);
+            Add_Action (Table.States (344), 76, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (344), 87, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (344), 104, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (344), 105, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Table.States (344).Kernel := To_Vector ((((166, 0),  107,  0, 
(166, 0),  1), ((242, 5),  107,  0, (242, 5),
+             1)));
+            Table.States (344).Minimal_Complete_Actions := To_Vector 
(((Reduce, (166, 0),  1), (Reduce, (242, 5),
+            1)));
+            Table.States (345).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (345), 86, (241, 0), 384);
+            Add_Action (Table.States (345), 99, (335, 2), 526);
+            Table.States (345).Kernel := To_Vector ((((241, 0),  241,  2, 
(2147483647, 0),  0), ((335, 2),  241,  1,
+            (2147483647, 0),  0)));
+            Table.States (345).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (335, 2),  99, 526)));
+            Table.States (346).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (346), 7, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (346), 26, (248, 2), 388);
+            Add_Action (Table.States (346), 40, (244, 0), 389);
+            Add_Action (Table.States (346), 81, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (346), 107, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (346), 108, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (346), 109, Reduce, (244, 1),  0, null, 
null);
+            Table.States (346).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (346), 117, 390);
+            Add_Goto (Table.States (346), 244, 391);
+            Table.States (346).Kernel := To_Vector ((((248, 0),  84,  4, 
(2147483647, 0),  0), ((248, 1),  84,  5,
+            (2147483647, 0),  0), ((248, 2),  84,  4, (2147483647, 0),  0)));
+            Table.States (346).Minimal_Complete_Actions := To_Vector 
(((Reduce, (244, 1),  0), (Shift, (248, 2),  26,
+            388)));
+            Table.States (347).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (347), (21, 35, 56, 72, 74, 78, 85, 99), 
(256, 0),  1, null, null);
+            Table.States (347).Kernel := To_Vector ((0 => ((256, 0),  202,  0, 
(256, 0),  1)));
+            Table.States (347).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (256, 0),  1)));
+            Table.States (348).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (348), (35, 56, 74, 99), (265, 0),  3, 
procedure_specification_0'Access,
             procedure_specification_0_check'Access);
-            Table.States (346).Kernel := To_Vector ((0 => (263, 254, 0, 
False)));
-            Table.States (346).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 263, 3)));
-            Table.States (347).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (347), 35, 523);
-            Add_Conflict (Table.States (347), 35, (123, 1), 0, null, null);
-            Add_Action (Table.States (347), 74, 338);
-            Table.States (347).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (347), 123, 524);
-            Table.States (347).Kernel := To_Vector (((265, 105, 3, False), 
(266, 105, 3, False)));
-            Table.States (347).Minimal_Complete_Actions := To_Vector 
(((Reduce, 123, 0), (Shift, 35, 523)));
-            Table.States (348).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (348), 35, Reduce, (170, 2), 0, null, 
null);
-            Add_Action (Table.States (348), 74, Reduce, (170, 2), 0, null, 
null);
-            Add_Action (Table.States (348), 76, 378);
-            Table.States (348).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (348), 170, 525);
-            Table.States (348).Kernel := To_Vector (((272, 105, 6, False), 
(272, 105, 3, False)));
-            Table.States (348).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 170, 0)));
-            Table.States (349).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (349), 35, 526);
-            Table.States (349).Kernel := To_Vector (((305, 123, 6, False), 
(305, 123, 3, False)));
-            Table.States (349).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 526)));
-            Table.States (350).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (350), 3, 122);
-            Add_Action (Table.States (350), 39, 123);
-            Add_Action (Table.States (350), 40, 124);
-            Add_Action (Table.States (350), 41, 125);
-            Add_Action (Table.States (350), 52, 126);
-            Add_Action (Table.States (350), 76, 127);
-            Add_Action (Table.States (350), 79, 31);
-            Add_Action (Table.States (350), 95, 128);
-            Add_Action (Table.States (350), 96, 129);
-            Add_Action (Table.States (350), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (350), 104, 130);
-            Add_Action (Table.States (350), 105, 120);
-            Add_Action (Table.States (350), 106, 34);
-            Add_Action (Table.States (350), 107, 35);
-            Table.States (350).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (350), 118, 131);
-            Add_Goto (Table.States (350), 129, 42);
-            Add_Goto (Table.States (350), 192, 132);
-            Add_Goto (Table.States (350), 193, 527);
-            Add_Goto (Table.States (350), 198, 134);
-            Add_Goto (Table.States (350), 240, 135);
-            Add_Goto (Table.States (350), 259, 136);
-            Add_Goto (Table.States (350), 273, 93);
-            Add_Goto (Table.States (350), 276, 137);
-            Add_Goto (Table.States (350), 283, 138);
-            Add_Goto (Table.States (350), 284, 139);
-            Add_Goto (Table.States (350), 285, 140);
-            Add_Goto (Table.States (350), 286, 141);
-            Add_Goto (Table.States (350), 287, 142);
-            Add_Goto (Table.States (350), 288, 143);
-            Add_Goto (Table.States (350), 294, 98);
-            Add_Goto (Table.States (350), 302, 144);
-            Add_Goto (Table.States (350), 321, 145);
-            Add_Goto (Table.States (350), 322, 146);
-            Add_Goto (Table.States (350), 331, 147);
-            Table.States (350).Kernel := To_Vector ((0 => (277, 74, 1, 
False)));
-            Table.States (350).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (351).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (351), (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, 79, 94, 105, 106,
-            107, 108), (277, 1), 3, raise_statement_1'Access, null);
-            Table.States (351).Kernel := To_Vector ((0 => (277, 97, 0, 
False)));
-            Table.States (351).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 277, 3)));
-            Table.States (352).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (352), 5, 528);
-            Table.States (352).Kernel := To_Vector ((0 => (291, 74, 2, 
False)));
-            Table.States (352).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 5, 528)));
+            Table.States (348).Kernel := To_Vector ((0 => ((265, 0),  256,  0, 
(265, 0),  3)));
+            Table.States (348).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (265, 0),  3)));
+            Table.States (349).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (349), 35, (268, 0), 527);
+            Add_Conflict (Table.States (349), 35, (125, 1),  0, null, null);
+            Add_Action (Table.States (349), 74, (125, 0), 340);
+            Table.States (349).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (349), 125, 528);
+            Table.States (349).Kernel := To_Vector ((((267, 0),  107,  3, 
(2147483647, 0),  0), ((268, 0),  107,  3,
+            (2147483647, 0),  0)));
+            Table.States (349).Minimal_Complete_Actions := To_Vector 
(((Reduce, (125, 1),  0), (Shift, (268, 0),  35,
+            527)));
+            Table.States (350).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (350), 35, Reduce, (172, 2),  0, null, 
null);
+            Add_Action (Table.States (350), 74, Reduce, (172, 2),  0, null, 
null);
+            Add_Action (Table.States (350), 76, (172, 0), 380);
+            Table.States (350).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (350), 172, 529);
+            Table.States (350).Kernel := To_Vector ((((274, 0),  107,  6, 
(2147483647, 0),  0), ((274, 1),  107,  3,
+            (2147483647, 0),  0)));
+            Table.States (350).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (172, 2),  0)));
+            Table.States (351).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (351), 35, (307, 0), 530);
+            Table.States (351).Kernel := To_Vector ((((307, 0),  125,  6, 
(2147483647, 0),  0), ((307, 1),  125,  3,
+            (2147483647, 0),  0)));
+            Table.States (351).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (307, 0),  35, 530)));
+            Table.States (352).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (352), 3, (200, 2), 122);
+            Add_Action (Table.States (352), 39, (261, 4), 123);
+            Add_Action (Table.States (352), 40, (200, 3), 124);
+            Add_Action (Table.States (352), 41, (261, 1), 125);
+            Add_Action (Table.States (352), 52, (278, 0), 126);
+            Add_Action (Table.States (352), 76, (120, 0), 127);
+            Add_Action (Table.States (352), 77, (120, 5), 128);
+            Add_Action (Table.States (352), 81, (242, 8), 31);
+            Add_Action (Table.States (352), 97, (333, 1), 129);
+            Add_Action (Table.States (352), 98, (333, 0), 130);
+            Add_Action (Table.States (352), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (352), 106, (261, 0), 131);
+            Add_Action (Table.States (352), 107, (242, 5), 120);
+            Add_Action (Table.States (352), 108, (242, 7), 34);
+            Add_Action (Table.States (352), 109, (242, 6), 35);
+            Table.States (352).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (352), 120, 132);
+            Add_Goto (Table.States (352), 131, 42);
+            Add_Goto (Table.States (352), 194, 133);
+            Add_Goto (Table.States (352), 195, 531);
+            Add_Goto (Table.States (352), 200, 135);
+            Add_Goto (Table.States (352), 242, 136);
+            Add_Goto (Table.States (352), 261, 137);
+            Add_Goto (Table.States (352), 275, 93);
+            Add_Goto (Table.States (352), 278, 138);
+            Add_Goto (Table.States (352), 285, 139);
+            Add_Goto (Table.States (352), 286, 140);
+            Add_Goto (Table.States (352), 287, 141);
+            Add_Goto (Table.States (352), 288, 142);
+            Add_Goto (Table.States (352), 289, 143);
+            Add_Goto (Table.States (352), 290, 144);
+            Add_Goto (Table.States (352), 296, 98);
+            Add_Goto (Table.States (352), 304, 145);
+            Add_Goto (Table.States (352), 323, 146);
+            Add_Goto (Table.States (352), 324, 147);
+            Add_Goto (Table.States (352), 333, 148);
+            Table.States (352).Kernel := To_Vector ((0 => ((279, 0),  74,  1, 
(2147483647, 0),  0)));
+            Table.States (352).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
             Table.States (353).Action_List.Set_Capacity (47);
             Add_Action (Table.States (353), (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, 79, 94, 105, 106,
-            107, 108), (291, 1), 3, requeue_statement_1'Access, null);
-            Table.States (353).Kernel := To_Vector ((0 => (291, 97, 0, 
False)));
-            Table.States (353).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 291, 3)));
-            Table.States (354).Action_List.Set_Capacity (11);
-            Add_Action (Table.States (354), 7, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (354), 8, 402);
-            Add_Action (Table.States (354), 16, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (354), 21, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (354), 40, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (354), 79, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (354), 83, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (354), 97, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (354), 105, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (354), 106, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (354), 107, Reduce, (119, 1), 0, null, 
null);
-            Table.States (354).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (354), 119, 529);
-            Table.States (354).Kernel := To_Vector (((195, 82, 2, False), 
(195, 82, 1, False)));
-            Table.States (354).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 119, 0)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (279, 1),  3, raise_statement_1'Access, null);
+            Table.States (353).Kernel := To_Vector ((0 => ((279, 1),  99,  0, 
(279, 1),  3)));
+            Table.States (353).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (279, 1),  3)));
+            Table.States (354).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (354), 5, (293, 0), 532);
+            Table.States (354).Kernel := To_Vector ((0 => ((293, 0),  74,  2, 
(2147483647, 0),  0)));
+            Table.States (354).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (293, 0),  5, 532)));
             Table.States (355).Action_List.Set_Capacity (47);
             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, 79, 94, 105, 106,
-            107, 108), (303, 0), 3, simple_return_statement_0'Access, null);
-            Table.States (355).Kernel := To_Vector ((0 => (303, 97, 0, 
False)));
-            Table.States (355).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 303, 3)));
-            Table.States (356).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (356), (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, 79, 94, 105, 106,
-            107, 108), (197, 1), 3, extended_return_statement_1'Access, null);
-            Table.States (356).Kernel := To_Vector ((0 => (197, 97, 0, 
False)));
-            Table.States (356).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 197, 3)));
-            Table.States (357).Action_List.Set_Capacity (25);
-            Add_Action (Table.States (357), 4, 1);
-            Add_Action (Table.States (357), 5, 2);
-            Add_Action (Table.States (357), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (357), 15, 3);
-            Add_Action (Table.States (357), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (357), 18, 4);
-            Add_Action (Table.States (357), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (357), 26, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (357), 27, 5);
-            Add_Action (Table.States (357), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (357), 31, 9);
-            Add_Action (Table.States (357), 32, 10);
-            Add_Action (Table.States (357), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (357), 41, 13);
-            Add_Action (Table.States (357), 48, 16);
-            Add_Action (Table.States (357), 52, 20);
-            Add_Action (Table.States (357), 57, 21);
-            Add_Action (Table.States (357), 58, 22);
-            Add_Action (Table.States (357), 61, 24);
-            Add_Action (Table.States (357), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (357), 79, 31);
-            Add_Action (Table.States (357), 94, 32);
-            Add_Action (Table.States (357), 105, 361);
-            Add_Action (Table.States (357), 106, 34);
-            Add_Action (Table.States (357), 107, 35);
-            Table.States (357).Goto_List.Set_Capacity (32);
-            Add_Goto (Table.States (357), 114, 37);
-            Add_Goto (Table.States (357), 124, 39);
-            Add_Goto (Table.States (357), 127, 40);
-            Add_Goto (Table.States (357), 129, 42);
-            Add_Goto (Table.States (357), 132, 43);
-            Add_Goto (Table.States (357), 133, 44);
-            Add_Goto (Table.States (357), 134, 45);
-            Add_Goto (Table.States (357), 140, 48);
-            Add_Goto (Table.States (357), 152, 51);
-            Add_Goto (Table.States (357), 153, 52);
-            Add_Goto (Table.States (357), 162, 54);
-            Add_Goto (Table.States (357), 191, 58);
-            Add_Goto (Table.States (357), 197, 60);
-            Add_Goto (Table.States (357), 218, 69);
-            Add_Goto (Table.States (357), 219, 530);
-            Add_Goto (Table.States (357), 223, 71);
-            Add_Goto (Table.States (357), 233, 73);
-            Add_Goto (Table.States (357), 240, 74);
-            Add_Goto (Table.States (357), 258, 84);
-            Add_Goto (Table.States (357), 262, 87);
-            Add_Goto (Table.States (357), 273, 93);
-            Add_Goto (Table.States (357), 277, 94);
-            Add_Goto (Table.States (357), 291, 97);
-            Add_Goto (Table.States (357), 294, 98);
-            Add_Goto (Table.States (357), 295, 99);
-            Add_Goto (Table.States (357), 299, 100);
-            Add_Goto (Table.States (357), 300, 362);
-            Add_Goto (Table.States (357), 301, 391);
-            Add_Goto (Table.States (357), 303, 101);
-            Add_Goto (Table.States (357), 304, 102);
-            Add_Goto (Table.States (357), 307, 364);
-            Add_Goto (Table.States (357), 324, 115);
-            Table.States (357).Kernel := To_Vector ((0 => (197, 21, 3, 
False)));
-            Table.States (357).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 219, 0)));
-            Table.States (358).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (358), 76, 236);
-            Add_Action (Table.States (358), 77, 531);
-            Add_Action (Table.States (358), 85, 238);
-            Add_Action (Table.States (358), 102, 240);
-            Add_Action (Table.States (358), 103, 241);
-            Table.States (358).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (358), 116, 242);
-            Add_Goto (Table.States (358), 323, 243);
-            Table.States (358).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (273, 240, 3, True), (294, 240, 2, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (316, 240, 7, False)));
-            Table.States (358).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 531)));
-            Table.States (359).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (359), (22, 24, 43), (296, 4), 2, 
select_alternative_4'Access, null);
-            Table.States (359).Kernel := To_Vector ((0 => (296, 97, 0, 
False)));
-            Table.States (359).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 296, 2)));
-            Table.States (360).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (360), 88, 532);
-            Table.States (360).Kernel := To_Vector (((296, 193, 4, False), 
(296, 193, 3, False), (296, 193, 3,
-            False)));
-            Table.States (360).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 88, 532)));
-            Table.States (361).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (361), 76, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (361), 82, 533);
-            Add_Action (Table.States (361), 83, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (361), 85, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (361), 97, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (361), 102, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (361), 103, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Table.States (361).Kernel := To_Vector (((132, 105, 1, False), 
(240, 105, 0, False)));
-            Table.States (361).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 1)));
-            Table.States (362).Action_List.Set_Capacity (30);
-            Add_Action (Table.States (362), 4, 1);
-            Add_Action (Table.States (362), 5, 2);
-            Add_Action (Table.States (362), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (362), 15, 3);
-            Add_Action (Table.States (362), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (362), 18, 4);
-            Add_Action (Table.States (362), 22, Reduce, (301, 0), 1, null, 
null);
-            Add_Action (Table.States (362), 23, Reduce, (301, 0), 1, null, 
null);
-            Add_Action (Table.States (362), 24, Reduce, (301, 0), 1, null, 
null);
-            Add_Action (Table.States (362), 26, Reduce, (301, 0), 1, null, 
null);
-            Add_Action (Table.States (362), 27, 5);
-            Add_Action (Table.States (362), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (362), 31, 9);
-            Add_Action (Table.States (362), 32, 10);
-            Add_Action (Table.States (362), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (362), 41, 13);
-            Add_Action (Table.States (362), 43, Reduce, (301, 0), 1, null, 
null);
-            Add_Action (Table.States (362), 48, 16);
-            Add_Action (Table.States (362), 52, 20);
-            Add_Action (Table.States (362), 57, 21);
-            Add_Action (Table.States (362), 58, 22);
-            Add_Action (Table.States (362), 61, 24);
-            Add_Action (Table.States (362), 68, Reduce, (301, 0), 1, null, 
null);
-            Add_Action (Table.States (362), 72, Reduce, (301, 0), 1, null, 
null);
-            Add_Action (Table.States (362), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (362), 79, 31);
-            Add_Action (Table.States (362), 94, 32);
-            Add_Action (Table.States (362), 105, 361);
-            Add_Action (Table.States (362), 106, 34);
-            Add_Action (Table.States (362), 107, 35);
-            Table.States (362).Goto_List.Set_Capacity (29);
-            Add_Goto (Table.States (362), 114, 37);
-            Add_Goto (Table.States (362), 124, 39);
-            Add_Goto (Table.States (362), 127, 40);
-            Add_Goto (Table.States (362), 129, 42);
-            Add_Goto (Table.States (362), 132, 43);
-            Add_Goto (Table.States (362), 133, 44);
-            Add_Goto (Table.States (362), 134, 45);
-            Add_Goto (Table.States (362), 140, 48);
-            Add_Goto (Table.States (362), 152, 51);
-            Add_Goto (Table.States (362), 153, 52);
-            Add_Goto (Table.States (362), 162, 54);
-            Add_Goto (Table.States (362), 191, 58);
-            Add_Goto (Table.States (362), 197, 60);
-            Add_Goto (Table.States (362), 218, 69);
-            Add_Goto (Table.States (362), 223, 71);
-            Add_Goto (Table.States (362), 233, 73);
-            Add_Goto (Table.States (362), 240, 74);
-            Add_Goto (Table.States (362), 258, 84);
-            Add_Goto (Table.States (362), 262, 87);
-            Add_Goto (Table.States (362), 273, 93);
-            Add_Goto (Table.States (362), 277, 94);
-            Add_Goto (Table.States (362), 291, 97);
-            Add_Goto (Table.States (362), 294, 98);
-            Add_Goto (Table.States (362), 295, 99);
-            Add_Goto (Table.States (362), 299, 100);
-            Add_Goto (Table.States (362), 303, 101);
-            Add_Goto (Table.States (362), 304, 102);
-            Add_Goto (Table.States (362), 307, 534);
-            Add_Goto (Table.States (362), 324, 115);
-            Table.States (362).Kernel := To_Vector (((300, 300, 2, True), 
(301, 300, 0, False)));
-            Table.States (362).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 1)));
-            Table.States (363).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (363), (22, 24, 43), (296, 3), 2, null, 
null);
-            Table.States (363).Kernel := To_Vector ((0 => (296, 301, 0, 
False)));
-            Table.States (363).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 296, 2)));
-            Table.States (364).Action_List.Set_Capacity (30);
-            Add_Action (Table.States (364), (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, 79, 94, 105, 106, 107), (300, 1), 1, null, 
null);
-            Table.States (364).Kernel := To_Vector ((0 => (300, 307, 0, 
False)));
-            Table.States (364).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 1)));
-            Table.States (365).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (365), 22, Reduce, (161, 0), 2, null, 
null);
-            Add_Action (Table.States (365), 24, Reduce, (161, 0), 2, null, 
null);
-            Add_Action (Table.States (365), 43, Reduce, (161, 0), 2, null, 
null);
-            Add_Action (Table.States (365), 68, Reduce, (325, 2), 2, null, 
null);
-            Table.States (365).Kernel := To_Vector (((161, 301, 0, False), 
(325, 301, 0, False)));
-            Table.States (365).Minimal_Complete_Actions := To_Vector 
(((Reduce, 161, 2), (Reduce, 325, 2)));
-            Table.States (366).Action_List.Set_Capacity (24);
-            Add_Action (Table.States (366), 4, 1);
-            Add_Action (Table.States (366), 5, 2);
-            Add_Action (Table.States (366), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (366), 15, 3);
-            Add_Action (Table.States (366), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (366), 18, 4);
-            Add_Action (Table.States (366), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (366), 27, 5);
-            Add_Action (Table.States (366), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (366), 31, 9);
-            Add_Action (Table.States (366), 32, 10);
-            Add_Action (Table.States (366), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (366), 41, 13);
-            Add_Action (Table.States (366), 48, 16);
-            Add_Action (Table.States (366), 52, 20);
-            Add_Action (Table.States (366), 57, 21);
-            Add_Action (Table.States (366), 58, 22);
-            Add_Action (Table.States (366), 61, 24);
-            Add_Action (Table.States (366), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (366), 79, 31);
-            Add_Action (Table.States (366), 94, 32);
-            Add_Action (Table.States (366), 105, 361);
-            Add_Action (Table.States (366), 106, 34);
-            Add_Action (Table.States (366), 107, 35);
-            Table.States (366).Goto_List.Set_Capacity (31);
-            Add_Goto (Table.States (366), 114, 37);
-            Add_Goto (Table.States (366), 124, 39);
-            Add_Goto (Table.States (366), 127, 40);
-            Add_Goto (Table.States (366), 129, 42);
-            Add_Goto (Table.States (366), 132, 43);
-            Add_Goto (Table.States (366), 133, 44);
-            Add_Goto (Table.States (366), 134, 45);
-            Add_Goto (Table.States (366), 140, 48);
-            Add_Goto (Table.States (366), 152, 51);
-            Add_Goto (Table.States (366), 153, 52);
-            Add_Goto (Table.States (366), 162, 54);
-            Add_Goto (Table.States (366), 191, 58);
-            Add_Goto (Table.States (366), 197, 60);
-            Add_Goto (Table.States (366), 218, 69);
-            Add_Goto (Table.States (366), 223, 71);
-            Add_Goto (Table.States (366), 233, 73);
-            Add_Goto (Table.States (366), 240, 74);
-            Add_Goto (Table.States (366), 258, 84);
-            Add_Goto (Table.States (366), 262, 87);
-            Add_Goto (Table.States (366), 273, 93);
-            Add_Goto (Table.States (366), 277, 94);
-            Add_Goto (Table.States (366), 291, 97);
-            Add_Goto (Table.States (366), 294, 98);
-            Add_Goto (Table.States (366), 295, 99);
-            Add_Goto (Table.States (366), 299, 100);
-            Add_Goto (Table.States (366), 300, 362);
-            Add_Goto (Table.States (366), 301, 535);
-            Add_Goto (Table.States (366), 303, 101);
-            Add_Goto (Table.States (366), 304, 102);
-            Add_Goto (Table.States (366), 307, 364);
-            Add_Goto (Table.States (366), 324, 115);
-            Table.States (366).Kernel := To_Vector ((0 => (153, 22, 3, 
False)));
-            Table.States (366).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 0)));
-            Table.States (367).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (367), 18, 4);
-            Table.States (367).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (367), 161, 536);
-            Add_Goto (Table.States (367), 162, 537);
-            Table.States (367).Kernel := To_Vector ((0 => (324, 43, 5, 
False)));
-            Table.States (367).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 18, 4)));
-            Table.States (368).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (368), 22, Reduce, (179, 1), 2, null, 
null);
-            Add_Action (Table.States (368), 43, Reduce, (179, 1), 2, null, 
null);
-            Add_Action (Table.States (368), 68, Reduce, (325, 1), 2, null, 
null);
-            Table.States (368).Kernel := To_Vector (((179, 301, 0, False), 
(325, 301, 0, False)));
-            Table.States (368).Minimal_Complete_Actions := To_Vector 
(((Reduce, 179, 2), (Reduce, 325, 2)));
-            Table.States (369).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (369), 22, Reduce, (179, 0), 2, null, 
null);
-            Add_Action (Table.States (369), 43, Reduce, (179, 0), 2, null, 
null);
-            Add_Action (Table.States (369), 68, Reduce, (325, 0), 2, null, 
null);
-            Table.States (369).Kernel := To_Vector (((179, 301, 0, False), 
(325, 301, 0, False)));
-            Table.States (369).Minimal_Complete_Actions := To_Vector 
(((Reduce, 179, 2), (Reduce, 325, 2)));
-            Table.States (370).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (370), 4, 1);
-            Add_Action (Table.States (370), 18, 4);
-            Add_Action (Table.States (370), 67, 200);
-            Add_Action (Table.States (370), 72, 201);
-            Table.States (370).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (370), 114, 202);
-            Add_Goto (Table.States (370), 161, 203);
-            Add_Goto (Table.States (370), 162, 537);
-            Add_Goto (Table.States (370), 296, 538);
-            Table.States (370).Kernel := To_Vector ((0 => (297, 43, 2, True)));
-            Table.States (370).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 67, 200)));
-            Table.States (370).Minimal_Complete_Actions_Recursive := True;
-            Table.States (371).Action_List.Set_Capacity (24);
-            Add_Action (Table.States (371), 4, 1);
-            Add_Action (Table.States (371), 5, 2);
-            Add_Action (Table.States (371), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (371), 15, 3);
-            Add_Action (Table.States (371), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (371), 18, 4);
-            Add_Action (Table.States (371), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (371), 27, 5);
-            Add_Action (Table.States (371), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (371), 31, 9);
-            Add_Action (Table.States (371), 32, 10);
-            Add_Action (Table.States (371), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (371), 41, 13);
-            Add_Action (Table.States (371), 48, 16);
-            Add_Action (Table.States (371), 52, 20);
-            Add_Action (Table.States (371), 57, 21);
-            Add_Action (Table.States (371), 58, 22);
-            Add_Action (Table.States (371), 61, 24);
-            Add_Action (Table.States (371), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (371), 79, 31);
-            Add_Action (Table.States (371), 94, 32);
-            Add_Action (Table.States (371), 105, 361);
-            Add_Action (Table.States (371), 106, 34);
-            Add_Action (Table.States (371), 107, 35);
-            Table.States (371).Goto_List.Set_Capacity (31);
-            Add_Goto (Table.States (371), 114, 37);
-            Add_Goto (Table.States (371), 124, 39);
-            Add_Goto (Table.States (371), 127, 40);
-            Add_Goto (Table.States (371), 129, 42);
-            Add_Goto (Table.States (371), 132, 43);
-            Add_Goto (Table.States (371), 133, 44);
-            Add_Goto (Table.States (371), 134, 45);
-            Add_Goto (Table.States (371), 140, 48);
-            Add_Goto (Table.States (371), 152, 51);
-            Add_Goto (Table.States (371), 153, 52);
-            Add_Goto (Table.States (371), 162, 54);
-            Add_Goto (Table.States (371), 191, 58);
-            Add_Goto (Table.States (371), 197, 60);
-            Add_Goto (Table.States (371), 218, 69);
-            Add_Goto (Table.States (371), 223, 71);
-            Add_Goto (Table.States (371), 233, 73);
-            Add_Goto (Table.States (371), 240, 74);
-            Add_Goto (Table.States (371), 258, 84);
-            Add_Goto (Table.States (371), 262, 87);
-            Add_Goto (Table.States (371), 273, 93);
-            Add_Goto (Table.States (371), 277, 94);
-            Add_Goto (Table.States (371), 291, 97);
-            Add_Goto (Table.States (371), 294, 98);
-            Add_Goto (Table.States (371), 295, 99);
-            Add_Goto (Table.States (371), 299, 100);
-            Add_Goto (Table.States (371), 300, 362);
-            Add_Goto (Table.States (371), 301, 539);
-            Add_Goto (Table.States (371), 303, 101);
-            Add_Goto (Table.States (371), 304, 102);
-            Add_Goto (Table.States (371), 307, 364);
-            Add_Goto (Table.States (371), 324, 115);
-            Table.States (371).Kernel := To_Vector ((0 => (295, 22, 3, 
False)));
-            Table.States (371).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 0)));
-            Table.States (372).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (372), 61, 540);
-            Table.States (372).Kernel := To_Vector ((0 => (295, 24, 2, 
False)));
-            Table.States (372).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 61, 540)));
-            Table.States (373).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (373), 5, 541);
-            Table.States (373).Kernel := To_Vector ((0 => (127, 68, 4, 
False)));
-            Table.States (373).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 5, 541)));
-            Table.States (374).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (374), 40, 486);
-            Add_Action (Table.States (374), 79, 31);
-            Add_Action (Table.States (374), 105, 120);
-            Add_Action (Table.States (374), 106, 34);
-            Add_Action (Table.States (374), 107, 35);
-            Table.States (374).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (374), 129, 42);
-            Add_Goto (Table.States (374), 240, 487);
-            Add_Goto (Table.States (374), 273, 93);
-            Add_Goto (Table.States (374), 294, 98);
-            Add_Goto (Table.States (374), 315, 542);
-            Table.States (374).Kernel := To_Vector ((0 => (314, 35, 2, 
False)));
-            Table.States (374).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (375).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (375), 35, 543);
-            Add_Conflict (Table.States (375), 35, (123, 1), 0, null, null);
-            Add_Action (Table.States (375), 74, 338);
-            Table.States (375).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (375), 123, 544);
-            Table.States (375).Kernel := To_Vector (((317, 105, 4, False), 
(318, 105, 3, False)));
-            Table.States (375).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 543)));
+            40, 41, 43, 46, 47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 
68, 69, 71, 72, 73, 74, 81, 96, 107, 108,
+            109, 110), (293, 1),  3, requeue_statement_1'Access, null);
+            Table.States (355).Kernel := To_Vector ((0 => ((293, 1),  99,  0, 
(293, 1),  3)));
+            Table.States (355).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (293, 1),  3)));
+            Table.States (356).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (356), 7, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (356), 8, (121, 0), 404);
+            Add_Action (Table.States (356), 16, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (356), 21, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (356), 40, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (356), 81, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (356), 85, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (356), 99, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (356), 107, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (356), 108, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (356), 109, Reduce, (121, 1),  0, null, 
null);
+            Table.States (356).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (356), 121, 533);
+            Table.States (356).Kernel := To_Vector ((((197, 0),  84,  2, 
(2147483647, 0),  0), ((197, 1),  84,  1,
+            (2147483647, 0),  0)));
+            Table.States (356).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (121, 1),  0)));
+            Table.States (357).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (357), (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, 81, 96, 107, 108,
+            109, 110), (305, 0),  3, simple_return_statement_0'Access, null);
+            Table.States (357).Kernel := To_Vector ((0 => ((305, 0),  99,  0, 
(305, 0),  3)));
+            Table.States (357).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (305, 0),  3)));
+            Table.States (358).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (358), (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, 81, 96, 107, 108,
+            109, 110), (199, 1),  3, extended_return_statement_1'Access, null);
+            Table.States (358).Kernel := To_Vector ((0 => ((199, 1),  99,  0, 
(199, 1),  3)));
+            Table.States (358).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (199, 1),  3)));
+            Table.States (359).Action_List.Set_Capacity (25);
+            Add_Action (Table.States (359), 4, (116, 0), 1);
+            Add_Action (Table.States (359), 5, (306, 8), 2);
+            Add_Action (Table.States (359), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (359), 15, (142, 0), 3);
+            Add_Action (Table.States (359), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (359), 18, (164, 0), 4);
+            Add_Action (Table.States (359), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (359), 26, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (359), 27, (193, 0), 5);
+            Add_Action (Table.States (359), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (359), 31, (306, 3), 9);
+            Add_Action (Table.States (359), 32, (225, 0), 10);
+            Add_Action (Table.States (359), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (359), 41, (306, 0), 13);
+            Add_Action (Table.States (359), 48, (260, 0), 16);
+            Add_Action (Table.States (359), 52, (279, 0), 20);
+            Add_Action (Table.States (359), 57, (293, 0), 21);
+            Add_Action (Table.States (359), 58, (199, 0), 22);
+            Add_Action (Table.States (359), 61, (129, 0), 24);
+            Add_Action (Table.States (359), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (359), 81, (242, 8), 31);
+            Add_Action (Table.States (359), 96, (220, 0), 32);
+            Add_Action (Table.States (359), 107, (134, 0), 363);
+            Add_Action (Table.States (359), 108, (242, 7), 34);
+            Add_Action (Table.States (359), 109, (242, 6), 35);
+            Table.States (359).Goto_List.Set_Capacity (32);
+            Add_Goto (Table.States (359), 116, 37);
+            Add_Goto (Table.States (359), 126, 39);
+            Add_Goto (Table.States (359), 129, 40);
+            Add_Goto (Table.States (359), 131, 42);
+            Add_Goto (Table.States (359), 134, 43);
+            Add_Goto (Table.States (359), 135, 44);
+            Add_Goto (Table.States (359), 136, 45);
+            Add_Goto (Table.States (359), 142, 48);
+            Add_Goto (Table.States (359), 154, 51);
+            Add_Goto (Table.States (359), 155, 52);
+            Add_Goto (Table.States (359), 164, 54);
+            Add_Goto (Table.States (359), 193, 58);
+            Add_Goto (Table.States (359), 199, 60);
+            Add_Goto (Table.States (359), 220, 69);
+            Add_Goto (Table.States (359), 221, 534);
+            Add_Goto (Table.States (359), 225, 71);
+            Add_Goto (Table.States (359), 235, 73);
+            Add_Goto (Table.States (359), 242, 74);
+            Add_Goto (Table.States (359), 260, 84);
+            Add_Goto (Table.States (359), 264, 87);
+            Add_Goto (Table.States (359), 275, 93);
+            Add_Goto (Table.States (359), 279, 94);
+            Add_Goto (Table.States (359), 293, 97);
+            Add_Goto (Table.States (359), 296, 98);
+            Add_Goto (Table.States (359), 297, 99);
+            Add_Goto (Table.States (359), 301, 100);
+            Add_Goto (Table.States (359), 302, 364);
+            Add_Goto (Table.States (359), 303, 393);
+            Add_Goto (Table.States (359), 305, 101);
+            Add_Goto (Table.States (359), 306, 102);
+            Add_Goto (Table.States (359), 309, 366);
+            Add_Goto (Table.States (359), 326, 115);
+            Table.States (359).Kernel := To_Vector ((0 => ((199, 0),  21,  3, 
(2147483647, 0),  0)));
+            Table.States (359).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (221, 1),  0)));
          end Subr_7;
          procedure Subr_8
          is begin
-            Table.States (376).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (376), 35, Reduce, (170, 2), 0, null, 
null);
-            Add_Action (Table.States (376), 74, Reduce, (170, 2), 0, null, 
null);
-            Add_Action (Table.States (376), 76, 378);
-            Add_Action (Table.States (376), 97, Reduce, (170, 2), 0, null, 
null);
-            Table.States (376).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (376), 170, 545);
-            Table.States (376).Kernel := To_Vector (((320, 105, 6, False), 
(320, 105, 3, False), (320, 105, 1,
-            False)));
-            Table.States (376).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 170, 0)));
+            Table.States (360).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (360), 76, (118, 0), 237);
+            Add_Action (Table.States (360), 78, (318, 0), 535);
+            Add_Action (Table.States (360), 87, (296, 0), 239);
+            Add_Action (Table.States (360), 104, (325, 0), 241);
+            Add_Action (Table.States (360), 105, (325, 1), 242);
+            Table.States (360).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (360), 118, 243);
+            Add_Goto (Table.States (360), 325, 244);
+            Table.States (360).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((275, 0),  242,  3, (2147483647, 0),  0),
+            ((296, 0),  242,  2, (2147483647, 0),  0), ((296, 1),  242,  2, 
(2147483647, 0),  0), ((296, 2),  242,  2,
+            (2147483647, 0),  0), ((296, 3),  242,  2, (2147483647, 0),  0), 
((318, 0),  242,  7, (2147483647, 0),
+            0)));
+            Table.States (360).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (318, 0),  78, 535)));
+            Table.States (361).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (361), (22, 24, 43), (298, 4),  2, 
select_alternative_4'Access, null);
+            Table.States (361).Kernel := To_Vector ((0 => ((298, 4),  99,  0, 
(298, 4),  2)));
+            Table.States (361).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (298, 4),  2)));
+            Table.States (362).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (362), 90, (298, 0), 536);
+            Table.States (362).Kernel := To_Vector ((((298, 0),  195,  4, 
(2147483647, 0),  0), ((298, 1),  195,  3,
+            (2147483647, 0),  0), ((298, 2),  195,  3, (2147483647, 0),  0)));
+            Table.States (362).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (298, 0),  90, 536)));
+            Table.States (363).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (363), 76, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (363), 84, (134, 0), 537);
+            Add_Action (Table.States (363), 85, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (363), 87, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (363), 99, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (363), 104, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (363), 105, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Table.States (363).Kernel := To_Vector ((((134, 0),  107,  1, 
(2147483647, 0),  0), ((242, 5),  107,  0,
+            (242, 5),  1)));
+            Table.States (363).Minimal_Complete_Actions := To_Vector (((Shift, 
(134, 0),  84, 537), (Reduce, (242, 5),
+            1)));
+            Table.States (364).Action_List.Set_Capacity (30);
+            Add_Action (Table.States (364), 4, (116, 0), 1);
+            Add_Action (Table.States (364), 5, (306, 8), 2);
+            Add_Action (Table.States (364), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (364), 15, (142, 0), 3);
+            Add_Action (Table.States (364), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (364), 18, (164, 0), 4);
+            Add_Action (Table.States (364), 22, Reduce, (303, 0),  1, null, 
null);
+            Add_Action (Table.States (364), 23, Reduce, (303, 0),  1, null, 
null);
+            Add_Action (Table.States (364), 24, Reduce, (303, 0),  1, null, 
null);
+            Add_Action (Table.States (364), 26, Reduce, (303, 0),  1, null, 
null);
+            Add_Action (Table.States (364), 27, (193, 0), 5);
+            Add_Action (Table.States (364), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (364), 31, (306, 3), 9);
+            Add_Action (Table.States (364), 32, (225, 0), 10);
+            Add_Action (Table.States (364), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (364), 41, (306, 0), 13);
+            Add_Action (Table.States (364), 43, Reduce, (303, 0),  1, null, 
null);
+            Add_Action (Table.States (364), 48, (260, 0), 16);
+            Add_Action (Table.States (364), 52, (279, 0), 20);
+            Add_Action (Table.States (364), 57, (293, 0), 21);
+            Add_Action (Table.States (364), 58, (199, 0), 22);
+            Add_Action (Table.States (364), 61, (129, 0), 24);
+            Add_Action (Table.States (364), 68, Reduce, (303, 0),  1, null, 
null);
+            Add_Action (Table.States (364), 72, Reduce, (303, 0),  1, null, 
null);
+            Add_Action (Table.States (364), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (364), 81, (242, 8), 31);
+            Add_Action (Table.States (364), 96, (220, 0), 32);
+            Add_Action (Table.States (364), 107, (134, 0), 363);
+            Add_Action (Table.States (364), 108, (242, 7), 34);
+            Add_Action (Table.States (364), 109, (242, 6), 35);
+            Table.States (364).Goto_List.Set_Capacity (29);
+            Add_Goto (Table.States (364), 116, 37);
+            Add_Goto (Table.States (364), 126, 39);
+            Add_Goto (Table.States (364), 129, 40);
+            Add_Goto (Table.States (364), 131, 42);
+            Add_Goto (Table.States (364), 134, 43);
+            Add_Goto (Table.States (364), 135, 44);
+            Add_Goto (Table.States (364), 136, 45);
+            Add_Goto (Table.States (364), 142, 48);
+            Add_Goto (Table.States (364), 154, 51);
+            Add_Goto (Table.States (364), 155, 52);
+            Add_Goto (Table.States (364), 164, 54);
+            Add_Goto (Table.States (364), 193, 58);
+            Add_Goto (Table.States (364), 199, 60);
+            Add_Goto (Table.States (364), 220, 69);
+            Add_Goto (Table.States (364), 225, 71);
+            Add_Goto (Table.States (364), 235, 73);
+            Add_Goto (Table.States (364), 242, 74);
+            Add_Goto (Table.States (364), 260, 84);
+            Add_Goto (Table.States (364), 264, 87);
+            Add_Goto (Table.States (364), 275, 93);
+            Add_Goto (Table.States (364), 279, 94);
+            Add_Goto (Table.States (364), 293, 97);
+            Add_Goto (Table.States (364), 296, 98);
+            Add_Goto (Table.States (364), 297, 99);
+            Add_Goto (Table.States (364), 301, 100);
+            Add_Goto (Table.States (364), 305, 101);
+            Add_Goto (Table.States (364), 306, 102);
+            Add_Goto (Table.States (364), 309, 538);
+            Add_Goto (Table.States (364), 326, 115);
+            Table.States (364).Kernel := To_Vector ((((302, 0),  302,  2, 
(2147483647, 0),  0), ((303, 0),  302,  0,
+            (303, 0),  1)));
+            Table.States (364).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (303, 0),  1)));
+            Table.States (365).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (365), (22, 24, 43), (298, 3),  2, null, 
null);
+            Table.States (365).Kernel := To_Vector ((0 => ((298, 3),  303,  0, 
(298, 3),  2)));
+            Table.States (365).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (298, 3),  2)));
+            Table.States (366).Action_List.Set_Capacity (30);
+            Add_Action (Table.States (366), (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, 81, 96, 107, 108, 109), (302, 1),  1, 
null, null);
+            Table.States (366).Kernel := To_Vector ((0 => ((302, 1),  309,  0, 
(302, 1),  1)));
+            Table.States (366).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (302, 1),  1)));
+            Table.States (367).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (367), 22, Reduce, (163, 0),  2, null, 
null);
+            Add_Action (Table.States (367), 24, Reduce, (163, 0),  2, null, 
null);
+            Add_Action (Table.States (367), 43, Reduce, (163, 0),  2, null, 
null);
+            Add_Action (Table.States (367), 68, Reduce, (327, 2),  2, null, 
null);
+            Table.States (367).Kernel := To_Vector ((((163, 0),  303,  0, 
(163, 0),  2), ((327, 2),  303,  0, (327, 2),
+             2)));
+            Table.States (367).Minimal_Complete_Actions := To_Vector 
(((Reduce, (163, 0),  2), (Reduce, (327, 2),
+            2)));
+            Table.States (368).Action_List.Set_Capacity (24);
+            Add_Action (Table.States (368), 4, (116, 0), 1);
+            Add_Action (Table.States (368), 5, (306, 8), 2);
+            Add_Action (Table.States (368), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (368), 15, (142, 0), 3);
+            Add_Action (Table.States (368), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (368), 18, (164, 0), 4);
+            Add_Action (Table.States (368), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (368), 27, (193, 0), 5);
+            Add_Action (Table.States (368), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (368), 31, (306, 3), 9);
+            Add_Action (Table.States (368), 32, (225, 0), 10);
+            Add_Action (Table.States (368), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (368), 41, (306, 0), 13);
+            Add_Action (Table.States (368), 48, (260, 0), 16);
+            Add_Action (Table.States (368), 52, (279, 0), 20);
+            Add_Action (Table.States (368), 57, (293, 0), 21);
+            Add_Action (Table.States (368), 58, (199, 0), 22);
+            Add_Action (Table.States (368), 61, (129, 0), 24);
+            Add_Action (Table.States (368), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (368), 81, (242, 8), 31);
+            Add_Action (Table.States (368), 96, (220, 0), 32);
+            Add_Action (Table.States (368), 107, (134, 0), 363);
+            Add_Action (Table.States (368), 108, (242, 7), 34);
+            Add_Action (Table.States (368), 109, (242, 6), 35);
+            Table.States (368).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (368), 116, 37);
+            Add_Goto (Table.States (368), 126, 39);
+            Add_Goto (Table.States (368), 129, 40);
+            Add_Goto (Table.States (368), 131, 42);
+            Add_Goto (Table.States (368), 134, 43);
+            Add_Goto (Table.States (368), 135, 44);
+            Add_Goto (Table.States (368), 136, 45);
+            Add_Goto (Table.States (368), 142, 48);
+            Add_Goto (Table.States (368), 154, 51);
+            Add_Goto (Table.States (368), 155, 52);
+            Add_Goto (Table.States (368), 164, 54);
+            Add_Goto (Table.States (368), 193, 58);
+            Add_Goto (Table.States (368), 199, 60);
+            Add_Goto (Table.States (368), 220, 69);
+            Add_Goto (Table.States (368), 225, 71);
+            Add_Goto (Table.States (368), 235, 73);
+            Add_Goto (Table.States (368), 242, 74);
+            Add_Goto (Table.States (368), 260, 84);
+            Add_Goto (Table.States (368), 264, 87);
+            Add_Goto (Table.States (368), 275, 93);
+            Add_Goto (Table.States (368), 279, 94);
+            Add_Goto (Table.States (368), 293, 97);
+            Add_Goto (Table.States (368), 296, 98);
+            Add_Goto (Table.States (368), 297, 99);
+            Add_Goto (Table.States (368), 301, 100);
+            Add_Goto (Table.States (368), 302, 364);
+            Add_Goto (Table.States (368), 303, 539);
+            Add_Goto (Table.States (368), 305, 101);
+            Add_Goto (Table.States (368), 306, 102);
+            Add_Goto (Table.States (368), 309, 366);
+            Add_Goto (Table.States (368), 326, 115);
+            Table.States (368).Kernel := To_Vector ((0 => ((155, 0),  22,  3, 
(2147483647, 0),  0)));
+            Table.States (368).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (303, 1),  0)));
+            Table.States (369).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (369), 18, (164, 0), 4);
+            Table.States (369).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (369), 163, 540);
+            Add_Goto (Table.States (369), 164, 541);
+            Table.States (369).Kernel := To_Vector ((0 => ((326, 0),  43,  5, 
(2147483647, 0),  0)));
+            Table.States (369).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (164, 0),  18, 4)));
+            Table.States (370).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (370), 22, Reduce, (181, 1),  2, null, 
null);
+            Add_Action (Table.States (370), 43, Reduce, (181, 1),  2, null, 
null);
+            Add_Action (Table.States (370), 68, Reduce, (327, 1),  2, null, 
null);
+            Table.States (370).Kernel := To_Vector ((((181, 1),  303,  0, 
(181, 1),  2), ((327, 1),  303,  0, (327, 1),
+             2)));
+            Table.States (370).Minimal_Complete_Actions := To_Vector 
(((Reduce, (181, 1),  2), (Reduce, (327, 1),
+            2)));
+            Table.States (371).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (371), 22, Reduce, (181, 0),  2, null, 
null);
+            Add_Action (Table.States (371), 43, Reduce, (181, 0),  2, null, 
null);
+            Add_Action (Table.States (371), 68, Reduce, (327, 0),  2, null, 
null);
+            Table.States (371).Kernel := To_Vector ((((181, 0),  303,  0, 
(181, 0),  2), ((327, 0),  303,  0, (327, 0),
+             2)));
+            Table.States (371).Minimal_Complete_Actions := To_Vector 
(((Reduce, (181, 0),  2), (Reduce, (327, 0),
+            2)));
+            Table.States (372).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (372), 4, (116, 0), 1);
+            Add_Action (Table.States (372), 18, (164, 0), 4);
+            Add_Action (Table.States (372), 67, (298, 4), 201);
+            Add_Action (Table.States (372), 72, (298, 0), 202);
+            Table.States (372).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (372), 116, 203);
+            Add_Goto (Table.States (372), 163, 204);
+            Add_Goto (Table.States (372), 164, 541);
+            Add_Goto (Table.States (372), 298, 542);
+            Table.States (372).Kernel := To_Vector ((0 => ((299, 0),  43,  2, 
(2147483647, 0),  0)));
+            Table.States (372).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (298, 4),  67, 201)));
+            Table.States (373).Action_List.Set_Capacity (24);
+            Add_Action (Table.States (373), 4, (116, 0), 1);
+            Add_Action (Table.States (373), 5, (306, 8), 2);
+            Add_Action (Table.States (373), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (373), 15, (142, 0), 3);
+            Add_Action (Table.States (373), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (373), 18, (164, 0), 4);
+            Add_Action (Table.States (373), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (373), 27, (193, 0), 5);
+            Add_Action (Table.States (373), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (373), 31, (306, 3), 9);
+            Add_Action (Table.States (373), 32, (225, 0), 10);
+            Add_Action (Table.States (373), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (373), 41, (306, 0), 13);
+            Add_Action (Table.States (373), 48, (260, 0), 16);
+            Add_Action (Table.States (373), 52, (279, 0), 20);
+            Add_Action (Table.States (373), 57, (293, 0), 21);
+            Add_Action (Table.States (373), 58, (199, 0), 22);
+            Add_Action (Table.States (373), 61, (129, 0), 24);
+            Add_Action (Table.States (373), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (373), 81, (242, 8), 31);
+            Add_Action (Table.States (373), 96, (220, 0), 32);
+            Add_Action (Table.States (373), 107, (134, 0), 363);
+            Add_Action (Table.States (373), 108, (242, 7), 34);
+            Add_Action (Table.States (373), 109, (242, 6), 35);
+            Table.States (373).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (373), 116, 37);
+            Add_Goto (Table.States (373), 126, 39);
+            Add_Goto (Table.States (373), 129, 40);
+            Add_Goto (Table.States (373), 131, 42);
+            Add_Goto (Table.States (373), 134, 43);
+            Add_Goto (Table.States (373), 135, 44);
+            Add_Goto (Table.States (373), 136, 45);
+            Add_Goto (Table.States (373), 142, 48);
+            Add_Goto (Table.States (373), 154, 51);
+            Add_Goto (Table.States (373), 155, 52);
+            Add_Goto (Table.States (373), 164, 54);
+            Add_Goto (Table.States (373), 193, 58);
+            Add_Goto (Table.States (373), 199, 60);
+            Add_Goto (Table.States (373), 220, 69);
+            Add_Goto (Table.States (373), 225, 71);
+            Add_Goto (Table.States (373), 235, 73);
+            Add_Goto (Table.States (373), 242, 74);
+            Add_Goto (Table.States (373), 260, 84);
+            Add_Goto (Table.States (373), 264, 87);
+            Add_Goto (Table.States (373), 275, 93);
+            Add_Goto (Table.States (373), 279, 94);
+            Add_Goto (Table.States (373), 293, 97);
+            Add_Goto (Table.States (373), 296, 98);
+            Add_Goto (Table.States (373), 297, 99);
+            Add_Goto (Table.States (373), 301, 100);
+            Add_Goto (Table.States (373), 302, 364);
+            Add_Goto (Table.States (373), 303, 543);
+            Add_Goto (Table.States (373), 305, 101);
+            Add_Goto (Table.States (373), 306, 102);
+            Add_Goto (Table.States (373), 309, 366);
+            Add_Goto (Table.States (373), 326, 115);
+            Table.States (373).Kernel := To_Vector ((0 => ((297, 0),  22,  3, 
(2147483647, 0),  0)));
+            Table.States (373).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (303, 1),  0)));
+            Table.States (374).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (374), 61, (297, 1), 544);
+            Table.States (374).Kernel := To_Vector ((0 => ((297, 1),  24,  2, 
(2147483647, 0),  0)));
+            Table.States (374).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (297, 1),  61, 544)));
+            Table.States (375).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (375), 5, (129, 0), 545);
+            Table.States (375).Kernel := To_Vector ((0 => ((129, 0),  68,  4, 
(2147483647, 0),  0)));
+            Table.States (375).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (129, 0),  5, 545)));
+            Table.States (376).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (376), 40, (317, 0), 490);
+            Add_Action (Table.States (376), 81, (242, 8), 31);
+            Add_Action (Table.States (376), 107, (242, 5), 120);
+            Add_Action (Table.States (376), 108, (242, 7), 34);
+            Add_Action (Table.States (376), 109, (242, 6), 35);
+            Table.States (376).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (376), 131, 42);
+            Add_Goto (Table.States (376), 242, 491);
+            Add_Goto (Table.States (376), 275, 93);
+            Add_Goto (Table.States (376), 296, 98);
+            Add_Goto (Table.States (376), 317, 546);
+            Table.States (376).Kernel := To_Vector ((0 => ((316, 0),  35,  2, 
(2147483647, 0),  0)));
+            Table.States (376).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
             Table.States (377).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (377), 35, 546);
-            Add_Action (Table.States (377), 97, 547);
-            Table.States (377).Kernel := To_Vector (((306, 123, 6, False), 
(306, 123, 3, False), (306, 123, 1,
-            False)));
-            Table.States (377).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 547)));
+            Add_Action (Table.States (377), 35, (320, 0), 547);
+            Add_Conflict (Table.States (377), 35, (125, 1),  0, null, null);
+            Add_Action (Table.States (377), 74, (125, 0), 340);
+            Table.States (377).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (377), 125, 548);
+            Table.States (377).Kernel := To_Vector ((((319, 0),  107,  4, 
(2147483647, 0),  0), ((320, 0),  107,  3,
+            (2147483647, 0),  0)));
+            Table.States (377).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (320, 0),  35, 547)));
             Table.States (378).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (378), 77, Reduce, (171, 4), 0, null, 
null);
-            Add_Action (Table.States (378), 81, 548);
-            Add_Action (Table.States (378), 97, Reduce, (171, 4), 0, null, 
null);
-            Add_Action (Table.States (378), 105, 165);
-            Table.States (378).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (378), 171, 549);
-            Add_Goto (Table.States (378), 172, 550);
-            Add_Goto (Table.States (378), 220, 551);
-            Table.States (378).Kernel := To_Vector (((170, 76, 2, False), 
(170, 76, 1, False)));
-            Table.States (378).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 172, 0)));
+            Add_Action (Table.States (378), 35, Reduce, (172, 2),  0, null, 
null);
+            Add_Action (Table.States (378), 74, Reduce, (172, 2),  0, null, 
null);
+            Add_Action (Table.States (378), 76, (172, 0), 380);
+            Add_Action (Table.States (378), 99, Reduce, (172, 2),  0, null, 
null);
+            Table.States (378).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (378), 172, 549);
+            Table.States (378).Kernel := To_Vector ((((322, 0),  107,  6, 
(2147483647, 0),  0), ((322, 1),  107,  3,
+            (2147483647, 0),  0), ((322, 2),  107,  1, (2147483647, 0),  0)));
+            Table.States (378).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (172, 2),  0)));
             Table.States (379).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (379), 35, 552);
-            Add_Action (Table.States (379), 97, 553);
-            Table.States (379).Kernel := To_Vector (((207, 170, 3, False), 
(224, 170, 3, False), (224, 170, 1, False),
-            (260, 170, 6, False), (261, 170, 3, False)));
-            Table.States (379).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 553)));
+            Add_Action (Table.States (379), 35, (308, 0), 550);
+            Add_Action (Table.States (379), 99, (308, 2), 551);
+            Table.States (379).Kernel := To_Vector ((((308, 0),  125,  6, 
(2147483647, 0),  0), ((308, 1),  125,  3,
+            (2147483647, 0),  0), ((308, 2),  125,  1, (2147483647, 0),  0)));
+            Table.States (379).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (308, 2),  99, 551)));
             Table.States (380).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (380), 79, 31);
-            Add_Action (Table.States (380), 105, 120);
-            Add_Action (Table.States (380), 106, 34);
-            Add_Action (Table.States (380), 107, 35);
-            Table.States (380).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (380), 129, 42);
-            Add_Goto (Table.States (380), 239, 554);
-            Add_Goto (Table.States (380), 240, 220);
-            Add_Goto (Table.States (380), 273, 93);
-            Add_Goto (Table.States (380), 294, 98);
-            Table.States (380).Kernel := To_Vector ((0 => (332, 69, 2, 
False)));
-            Table.States (380).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
+            Add_Action (Table.States (380), 78, Reduce, (173, 4),  0, null, 
null);
+            Add_Action (Table.States (380), 83, (172, 0), 552);
+            Add_Action (Table.States (380), 99, Reduce, (173, 4),  0, null, 
null);
+            Add_Action (Table.States (380), 107, (222, 1), 166);
+            Table.States (380).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (380), 173, 553);
+            Add_Goto (Table.States (380), 174, 554);
+            Add_Goto (Table.States (380), 222, 555);
+            Table.States (380).Kernel := To_Vector ((((172, 0),  76,  2, 
(2147483647, 0),  0), ((172, 1),  76,  1,
+            (2147483647, 0),  0)));
+            Table.States (380).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (174, 1),  0)));
             Table.States (381).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (381), 84, 382);
-            Add_Action (Table.States (381), 97, 555);
-            Table.States (381).Kernel := To_Vector (((239, 239, 2, True), 
(332, 239, 1, False)));
-            Table.States (381).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 555)));
+            Add_Action (Table.States (381), 35, (209, 0), 556);
+            Add_Action (Table.States (381), 99, (226, 1), 557);
+            Table.States (381).Kernel := To_Vector ((((209, 0),  172,  3, 
(2147483647, 0),  0), ((226, 0),  172,  3,
+            (2147483647, 0),  0), ((226, 1),  172,  1, (2147483647, 0),  0), 
((262, 0),  172,  6, (2147483647, 0),  0),
+            ((263, 0),  172,  3, (2147483647, 0),  0)));
+            Table.States (381).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (226, 1),  99, 557)));
             Table.States (382).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (382), 79, 31);
-            Add_Action (Table.States (382), 105, 120);
-            Add_Action (Table.States (382), 106, 34);
-            Add_Action (Table.States (382), 107, 35);
-            Table.States (382).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (382), 129, 42);
-            Add_Goto (Table.States (382), 240, 556);
-            Add_Goto (Table.States (382), 273, 93);
-            Add_Goto (Table.States (382), 294, 98);
-            Table.States (382).Kernel := To_Vector ((0 => (239, 84, 1, True)));
-            Table.States (382).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (382).Minimal_Complete_Actions_Recursive := True;
-            Table.States (383).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (383), (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, 
79, 94, 105, 106, 107, 108), (332, 2), 3,
+            Add_Action (Table.States (382), 81, (242, 8), 31);
+            Add_Action (Table.States (382), 107, (242, 5), 120);
+            Add_Action (Table.States (382), 108, (242, 7), 34);
+            Add_Action (Table.States (382), 109, (242, 6), 35);
+            Table.States (382).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (382), 131, 42);
+            Add_Goto (Table.States (382), 241, 558);
+            Add_Goto (Table.States (382), 242, 221);
+            Add_Goto (Table.States (382), 275, 93);
+            Add_Goto (Table.States (382), 296, 98);
+            Table.States (382).Kernel := To_Vector ((0 => ((334, 0),  69,  2, 
(2147483647, 0),  0)));
+            Table.States (382).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (383).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (383), 86, (241, 0), 384);
+            Add_Action (Table.States (383), 99, (334, 1), 559);
+            Table.States (383).Kernel := To_Vector ((((241, 0),  241,  2, 
(2147483647, 0),  0), ((334, 1),  241,  1,
+            (2147483647, 0),  0)));
+            Table.States (383).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (334, 1),  99, 559)));
+            Table.States (384).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (384), 81, (242, 8), 31);
+            Add_Action (Table.States (384), 107, (242, 5), 120);
+            Add_Action (Table.States (384), 108, (242, 7), 34);
+            Add_Action (Table.States (384), 109, (242, 6), 35);
+            Table.States (384).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (384), 131, 42);
+            Add_Goto (Table.States (384), 242, 560);
+            Add_Goto (Table.States (384), 275, 93);
+            Add_Goto (Table.States (384), 296, 98);
+            Table.States (384).Kernel := To_Vector ((0 => ((241, 0),  86,  1, 
(2147483647, 0),  0)));
+            Table.States (384).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (385).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (385), (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, 
81, 96, 107, 108, 109, 110), (334, 2),  3,
             use_clause_2'Access, null);
-            Table.States (383).Kernel := To_Vector ((0 => (332, 97, 0, 
False)));
-            Table.States (383).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 332, 3)));
-            Table.States (384).Action_List.Set_Capacity (40);
-            Add_Action (Table.States (384), (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, 79, 
94, 105, 106, 107, 108), (333, 3), 3,
+            Table.States (385).Kernel := To_Vector ((0 => ((334, 2),  99,  0, 
(334, 2),  3)));
+            Table.States (385).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (334, 2),  3)));
+            Table.States (386).Action_List.Set_Capacity (40);
+            Add_Action (Table.States (386), (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, 81, 
96, 107, 108, 109, 110), (335, 3),  3,
             with_clause_3'Access, null);
-            Table.States (384).Kernel := To_Vector ((0 => (333, 97, 0, 
False)));
-            Table.States (384).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 333, 3)));
-            Table.States (385).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (385), (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, 79, 94, 105, 106,
-            107, 108), (218, 0), 3, goto_label_0'Access, null);
-            Table.States (385).Kernel := To_Vector ((0 => (218, 91, 0, 
False)));
-            Table.States (385).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 218, 3)));
-            Table.States (386).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (386), 56, 557);
-            Table.States (386).Kernel := To_Vector ((0 => (246, 26, 3, 
False)));
-            Table.States (386).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 56, 557)));
-            Table.States (387).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (387), 41, 558);
-            Table.States (387).Kernel := To_Vector ((0 => (242, 40, 1, 
False)));
-            Table.States (387).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 41, 558)));
+            Table.States (386).Kernel := To_Vector ((0 => ((335, 3),  99,  0, 
(335, 3),  3)));
+            Table.States (386).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (335, 3),  3)));
+            Table.States (387).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (387), (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, 81, 96, 107, 108,
+            109, 110), (220, 0),  3, goto_label_0'Access, null);
+            Table.States (387).Kernel := To_Vector ((0 => ((220, 0),  93,  0, 
(220, 0),  3)));
+            Table.States (387).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (220, 0),  3)));
             Table.States (388).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (388), 56, 559);
-            Table.States (388).Kernel := To_Vector ((0 => (246, 115, 3, 
False)));
-            Table.States (388).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 56, 559)));
-            Table.States (389).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (389), 7, 560);
-            Add_Action (Table.States (389), 79, 31);
-            Add_Action (Table.States (389), 105, 120);
-            Add_Action (Table.States (389), 106, 34);
-            Add_Action (Table.States (389), 107, 35);
-            Table.States (389).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (389), 129, 42);
-            Add_Goto (Table.States (389), 240, 561);
-            Add_Goto (Table.States (389), 273, 93);
-            Add_Goto (Table.States (389), 294, 98);
-            Table.States (389).Kernel := To_Vector (((115, 242, 2, False), 
(115, 242, 3, True), (115, 242, 2, False),
-            (246, 242, 4, False)));
-            Table.States (389).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 7, 560)));
+            Add_Action (Table.States (388), 56, (248, 2), 561);
+            Table.States (388).Kernel := To_Vector ((0 => ((248, 2),  26,  3, 
(2147483647, 0),  0)));
+            Table.States (388).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (248, 2),  56, 561)));
+            Table.States (389).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (389), 41, (244, 0), 562);
+            Table.States (389).Kernel := To_Vector ((0 => ((244, 0),  40,  1, 
(2147483647, 0),  0)));
+            Table.States (389).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (244, 0),  41, 562)));
             Table.States (390).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (390), 24, 562);
-            Table.States (390).Kernel := To_Vector ((0 => (134, 219, 2, 
False)));
-            Table.States (390).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 562)));
-            Table.States (391).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (391), 24, Reduce, (219, 1), 1, null, 
null);
-            Add_Action (Table.States (391), 26, 563);
-            Table.States (391).Kernel := To_Vector (((219, 301, 1, False), 
(219, 301, 0, False)));
-            Table.States (391).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 219, 1)));
-            Table.States (392).Action_List.Set_Capacity (18);
-            Add_Action (Table.States (392), (13, 24, 25, 28, 29, 30, 40, 46, 
47, 48, 49, 50, 51, 63, 66, 69, 71, 105),
-            (159, 2), 1, null, null);
-            Table.States (392).Kernel := To_Vector ((0 => (159, 158, 0, 
False)));
-            Table.States (392).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 1)));
-            Table.States (393).Action_List.Set_Capacity (18);
-            Add_Action (Table.States (393), 13, Reduce, (160, 0), 1, null, 
null);
-            Add_Action (Table.States (393), 24, Reduce, (160, 0), 1, null, 
null);
-            Add_Action (Table.States (393), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (393), 28, 184);
-            Add_Action (Table.States (393), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (393), 30, 8);
-            Add_Action (Table.States (393), 40, 12);
-            Add_Action (Table.States (393), 46, 14);
-            Add_Action (Table.States (393), 47, 15);
-            Add_Action (Table.States (393), 48, 16);
-            Add_Action (Table.States (393), 49, Reduce, (160, 0), 1, null, 
null);
-            Add_Action (Table.States (393), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (393), 51, 19);
-            Add_Action (Table.States (393), 63, 25);
-            Add_Action (Table.States (393), 66, 26);
-            Add_Action (Table.States (393), 69, 27);
-            Add_Action (Table.States (393), 71, 28);
-            Add_Action (Table.States (393), 105, 186);
-            Table.States (393).Goto_List.Set_Capacity (51);
-            Add_Goto (Table.States (393), 113, 36);
-            Add_Goto (Table.States (393), 122, 38);
-            Add_Goto (Table.States (393), 128, 41);
-            Add_Goto (Table.States (393), 135, 46);
-            Add_Goto (Table.States (393), 136, 47);
-            Add_Goto (Table.States (393), 158, 564);
-            Add_Goto (Table.States (393), 180, 55);
-            Add_Goto (Table.States (393), 183, 56);
-            Add_Goto (Table.States (393), 187, 57);
-            Add_Goto (Table.States (393), 194, 59);
-            Add_Goto (Table.States (393), 207, 61);
-            Add_Goto (Table.States (393), 208, 62);
-            Add_Goto (Table.States (393), 210, 63);
-            Add_Goto (Table.States (393), 211, 64);
-            Add_Goto (Table.States (393), 214, 65);
-            Add_Goto (Table.States (393), 215, 66);
-            Add_Goto (Table.States (393), 216, 67);
-            Add_Goto (Table.States (393), 217, 68);
-            Add_Goto (Table.States (393), 220, 70);
-            Add_Goto (Table.States (393), 224, 72);
-            Add_Goto (Table.States (393), 244, 75);
-            Add_Goto (Table.States (393), 245, 76);
-            Add_Goto (Table.States (393), 246, 77);
-            Add_Goto (Table.States (393), 247, 78);
-            Add_Goto (Table.States (393), 248, 79);
-            Add_Goto (Table.States (393), 249, 80);
-            Add_Goto (Table.States (393), 250, 81);
-            Add_Goto (Table.States (393), 251, 82);
-            Add_Goto (Table.States (393), 252, 83);
-            Add_Goto (Table.States (393), 258, 565);
-            Add_Goto (Table.States (393), 260, 85);
-            Add_Goto (Table.States (393), 261, 86);
-            Add_Goto (Table.States (393), 263, 88);
-            Add_Goto (Table.States (393), 264, 89);
-            Add_Goto (Table.States (393), 265, 90);
-            Add_Goto (Table.States (393), 266, 91);
-            Add_Goto (Table.States (393), 272, 92);
-            Add_Goto (Table.States (393), 282, 95);
-            Add_Goto (Table.States (393), 290, 96);
-            Add_Goto (Table.States (393), 305, 103);
-            Add_Goto (Table.States (393), 306, 104);
-            Add_Goto (Table.States (393), 308, 106);
-            Add_Goto (Table.States (393), 309, 107);
-            Add_Goto (Table.States (393), 310, 108);
-            Add_Goto (Table.States (393), 312, 109);
-            Add_Goto (Table.States (393), 314, 110);
-            Add_Goto (Table.States (393), 317, 112);
-            Add_Goto (Table.States (393), 318, 113);
-            Add_Goto (Table.States (393), 320, 114);
-            Add_Goto (Table.States (393), 326, 116);
-            Add_Goto (Table.States (393), 332, 117);
-            Table.States (393).Kernel := To_Vector (((159, 159, 3, True), 
(159, 159, 3, True), (160, 159, 0, False)));
-            Table.States (393).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 160, 1)));
-            Table.States (394).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (394), 13, 566);
-            Table.States (394).Kernel := To_Vector ((0 => (134, 160, 3, 
False)));
-            Table.States (394).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 566)));
+            Add_Action (Table.States (390), 56, (248, 1), 563);
+            Table.States (390).Kernel := To_Vector ((0 => ((248, 1),  117,  3, 
(2147483647, 0),  0)));
+            Table.States (390).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (248, 1),  56, 563)));
+            Table.States (391).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (391), 7, (117, 0), 564);
+            Add_Action (Table.States (391), 81, (242, 8), 31);
+            Add_Action (Table.States (391), 107, (242, 5), 120);
+            Add_Action (Table.States (391), 108, (242, 7), 34);
+            Add_Action (Table.States (391), 109, (242, 6), 35);
+            Table.States (391).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (391), 131, 42);
+            Add_Goto (Table.States (391), 242, 565);
+            Add_Goto (Table.States (391), 275, 93);
+            Add_Goto (Table.States (391), 296, 98);
+            Table.States (391).Kernel := To_Vector ((((117, 0),  244,  2, 
(2147483647, 0),  0), ((117, 1),  244,  3,
+            (2147483647, 0),  0), ((117, 2),  244,  2, (2147483647, 0),  0), 
((248, 0),  244,  4, (2147483647, 0),
+            0)));
+            Table.States (391).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (117, 0),  7, 564)));
+            Table.States (392).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (392), 24, (136, 1), 566);
+            Table.States (392).Kernel := To_Vector ((0 => ((136, 1),  221,  2, 
(2147483647, 0),  0)));
+            Table.States (392).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (136, 1),  24, 566)));
+            Table.States (393).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (393), 24, Reduce, (221, 1),  1, null, 
null);
+            Add_Action (Table.States (393), 26, (221, 0), 567);
+            Table.States (393).Kernel := To_Vector ((((221, 0),  303,  1, 
(2147483647, 0),  0), ((221, 1),  303,  0,
+            (221, 1),  1)));
+            Table.States (393).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (221, 1),  1)));
+            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, 107),
+            (161, 2),  1, null, null);
+            Table.States (394).Kernel := To_Vector ((0 => ((161, 2),  160,  0, 
(161, 2),  1)));
+            Table.States (394).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (161, 2),  1)));
             Table.States (395).Action_List.Set_Capacity (18);
-            Add_Action (Table.States (395), (13, 24, 25, 28, 29, 30, 40, 46, 
47, 48, 49, 50, 51, 63, 66, 69, 71, 105),
-            (159, 3), 1, null, null);
-            Table.States (395).Kernel := To_Vector ((0 => (159, 258, 0, 
False)));
-            Table.States (395).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 1)));
-            Table.States (396).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (396), 33, 312);
-            Add_Action (Table.States (396), 42, 313);
-            Add_Action (Table.States (396), 82, 314);
-            Table.States (396).Kernel := To_Vector (((231, 105, 5, False), 
(231, 105, 4, False), (231, 105, 3, False),
-            (231, 105, 3, False), (231, 105, 2, False), (231, 105, 2, False)));
-            Table.States (396).Minimal_Complete_Actions := To_Vector (((Shift, 
42, 313), (Shift, 33, 312)));
-            Table.States (397).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (397), 24, 567);
-            Table.States (397).Kernel := To_Vector ((0 => (233, 301, 3, 
False)));
-            Table.States (397).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 567)));
-            Table.States (398).Action_List.Set_Capacity (24);
-            Add_Action (Table.States (398), 4, 1);
-            Add_Action (Table.States (398), 5, 2);
-            Add_Action (Table.States (398), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (398), 15, 3);
-            Add_Action (Table.States (398), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (398), 18, 4);
-            Add_Action (Table.States (398), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (398), 27, 5);
-            Add_Action (Table.States (398), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (398), 31, 9);
-            Add_Action (Table.States (398), 32, 10);
-            Add_Action (Table.States (398), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (398), 41, 13);
-            Add_Action (Table.States (398), 48, 16);
-            Add_Action (Table.States (398), 52, 20);
-            Add_Action (Table.States (398), 57, 21);
-            Add_Action (Table.States (398), 58, 22);
-            Add_Action (Table.States (398), 61, 24);
-            Add_Action (Table.States (398), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (398), 79, 31);
-            Add_Action (Table.States (398), 94, 32);
-            Add_Action (Table.States (398), 105, 361);
-            Add_Action (Table.States (398), 106, 34);
-            Add_Action (Table.States (398), 107, 35);
-            Table.States (398).Goto_List.Set_Capacity (31);
-            Add_Goto (Table.States (398), 114, 37);
-            Add_Goto (Table.States (398), 124, 39);
-            Add_Goto (Table.States (398), 127, 40);
-            Add_Goto (Table.States (398), 129, 42);
-            Add_Goto (Table.States (398), 132, 43);
-            Add_Goto (Table.States (398), 133, 44);
-            Add_Goto (Table.States (398), 134, 45);
-            Add_Goto (Table.States (398), 140, 48);
-            Add_Goto (Table.States (398), 152, 51);
-            Add_Goto (Table.States (398), 153, 52);
-            Add_Goto (Table.States (398), 162, 54);
-            Add_Goto (Table.States (398), 191, 58);
-            Add_Goto (Table.States (398), 197, 60);
-            Add_Goto (Table.States (398), 218, 69);
-            Add_Goto (Table.States (398), 223, 71);
-            Add_Goto (Table.States (398), 233, 73);
-            Add_Goto (Table.States (398), 240, 74);
-            Add_Goto (Table.States (398), 258, 84);
-            Add_Goto (Table.States (398), 262, 87);
-            Add_Goto (Table.States (398), 273, 93);
-            Add_Goto (Table.States (398), 277, 94);
-            Add_Goto (Table.States (398), 291, 97);
-            Add_Goto (Table.States (398), 294, 98);
-            Add_Goto (Table.States (398), 295, 99);
-            Add_Goto (Table.States (398), 299, 100);
-            Add_Goto (Table.States (398), 300, 362);
-            Add_Goto (Table.States (398), 301, 568);
-            Add_Goto (Table.States (398), 303, 101);
-            Add_Goto (Table.States (398), 304, 102);
-            Add_Goto (Table.States (398), 307, 364);
-            Add_Goto (Table.States (398), 324, 115);
-            Table.States (398).Kernel := To_Vector ((0 => (233, 37, 3, 
False)));
-            Table.States (398).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 0)));
-            Table.States (399).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (399), 35, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (399), 74, 338);
-            Add_Action (Table.States (399), 76, 236);
-            Add_Action (Table.States (399), 85, 238);
-            Add_Action (Table.States (399), 102, 240);
-            Add_Action (Table.States (399), 103, 241);
-            Table.States (399).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (399), 116, 242);
-            Add_Goto (Table.States (399), 123, 339);
-            Add_Goto (Table.States (399), 323, 243);
-            Table.States (399).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (252, 240, 3, False), (252, 240, 2, False), (273, 240, 3, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True), (294, 240, 2, True)));
-            Table.States (399).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (400).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (400), (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, 
79, 94, 105, 106, 107, 108), (215, 0), 3,
+            Add_Action (Table.States (395), 13, Reduce, (162, 0),  1, null, 
null);
+            Add_Action (Table.States (395), 24, Reduce, (162, 0),  1, null, 
null);
+            Add_Action (Table.States (395), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (395), 28, (124, 0), 185);
+            Add_Action (Table.States (395), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (395), 30, (213, 0), 8);
+            Add_Action (Table.States (395), 40, (249, 0), 12);
+            Add_Action (Table.States (395), 46, (249, 1), 14);
+            Add_Action (Table.States (395), 47, (216, 0), 15);
+            Add_Action (Table.States (395), 48, (260, 0), 16);
+            Add_Action (Table.States (395), 49, Reduce, (162, 0),  1, null, 
null);
+            Add_Action (Table.States (395), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (395), 51, (267, 0), 19);
+            Add_Action (Table.States (395), 63, (316, 0), 25);
+            Add_Action (Table.States (395), 66, (308, 0), 26);
+            Add_Action (Table.States (395), 69, (209, 0), 27);
+            Add_Action (Table.States (395), 71, (334, 0), 28);
+            Add_Action (Table.States (395), 107, (222, 1), 187);
+            Table.States (395).Goto_List.Set_Capacity (51);
+            Add_Goto (Table.States (395), 115, 36);
+            Add_Goto (Table.States (395), 124, 38);
+            Add_Goto (Table.States (395), 130, 41);
+            Add_Goto (Table.States (395), 137, 46);
+            Add_Goto (Table.States (395), 138, 47);
+            Add_Goto (Table.States (395), 160, 568);
+            Add_Goto (Table.States (395), 182, 55);
+            Add_Goto (Table.States (395), 185, 56);
+            Add_Goto (Table.States (395), 189, 57);
+            Add_Goto (Table.States (395), 196, 59);
+            Add_Goto (Table.States (395), 209, 61);
+            Add_Goto (Table.States (395), 210, 62);
+            Add_Goto (Table.States (395), 212, 63);
+            Add_Goto (Table.States (395), 213, 64);
+            Add_Goto (Table.States (395), 216, 65);
+            Add_Goto (Table.States (395), 217, 66);
+            Add_Goto (Table.States (395), 218, 67);
+            Add_Goto (Table.States (395), 219, 68);
+            Add_Goto (Table.States (395), 222, 70);
+            Add_Goto (Table.States (395), 226, 72);
+            Add_Goto (Table.States (395), 246, 75);
+            Add_Goto (Table.States (395), 247, 76);
+            Add_Goto (Table.States (395), 248, 77);
+            Add_Goto (Table.States (395), 249, 78);
+            Add_Goto (Table.States (395), 250, 79);
+            Add_Goto (Table.States (395), 251, 80);
+            Add_Goto (Table.States (395), 252, 81);
+            Add_Goto (Table.States (395), 253, 82);
+            Add_Goto (Table.States (395), 254, 83);
+            Add_Goto (Table.States (395), 260, 569);
+            Add_Goto (Table.States (395), 262, 85);
+            Add_Goto (Table.States (395), 263, 86);
+            Add_Goto (Table.States (395), 265, 88);
+            Add_Goto (Table.States (395), 266, 89);
+            Add_Goto (Table.States (395), 267, 90);
+            Add_Goto (Table.States (395), 268, 91);
+            Add_Goto (Table.States (395), 274, 92);
+            Add_Goto (Table.States (395), 284, 95);
+            Add_Goto (Table.States (395), 292, 96);
+            Add_Goto (Table.States (395), 307, 103);
+            Add_Goto (Table.States (395), 308, 104);
+            Add_Goto (Table.States (395), 310, 106);
+            Add_Goto (Table.States (395), 311, 107);
+            Add_Goto (Table.States (395), 312, 108);
+            Add_Goto (Table.States (395), 314, 109);
+            Add_Goto (Table.States (395), 316, 110);
+            Add_Goto (Table.States (395), 319, 112);
+            Add_Goto (Table.States (395), 320, 113);
+            Add_Goto (Table.States (395), 322, 114);
+            Add_Goto (Table.States (395), 328, 116);
+            Add_Goto (Table.States (395), 334, 117);
+            Table.States (395).Kernel := To_Vector ((((161, 0),  161,  3, 
(2147483647, 0),  0), ((161, 1),  161,  3,
+            (2147483647, 0),  0), ((162, 0),  161,  0, (162, 0),  1)));
+            Table.States (395).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (162, 0),  1)));
+            Table.States (396).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (396), 13, (136, 0), 570);
+            Table.States (396).Kernel := To_Vector ((0 => ((136, 0),  162,  3, 
(2147483647, 0),  0)));
+            Table.States (396).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (136, 0),  13, 570)));
+            Table.States (397).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (397), (13, 24, 25, 28, 29, 30, 40, 46, 
47, 48, 49, 50, 51, 63, 66, 69, 71, 107),
+            (161, 3),  1, null, null);
+            Table.States (397).Kernel := To_Vector ((0 => ((161, 3),  260,  0, 
(161, 3),  1)));
+            Table.States (397).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (161, 3),  1)));
+            Table.States (398).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (398), 33, (233, 2), 314);
+            Add_Action (Table.States (398), 42, (233, 3), 315);
+            Add_Action (Table.States (398), 84, (233, 0), 316);
+            Table.States (398).Kernel := To_Vector ((((233, 0),  107,  5, 
(2147483647, 0),  0), ((233, 1),  107,  4,
+            (2147483647, 0),  0), ((233, 2),  107,  3, (2147483647, 0),  0), 
((233, 3),  107,  3, (2147483647, 0),  0),
+            ((233, 4),  107,  2, (2147483647, 0),  0), ((233, 5),  107,  2, 
(2147483647, 0),  0)));
+            Table.States (398).Minimal_Complete_Actions := To_Vector (((Shift, 
(233, 3),  42, 315), (Shift, (233, 2),
+            33, 314)));
+            Table.States (399).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (399), 24, (235, 1), 571);
+            Table.States (399).Kernel := To_Vector ((0 => ((235, 1),  303,  3, 
(2147483647, 0),  0)));
+            Table.States (399).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (235, 1),  24, 571)));
+            Table.States (400).Action_List.Set_Capacity (24);
+            Add_Action (Table.States (400), 4, (116, 0), 1);
+            Add_Action (Table.States (400), 5, (306, 8), 2);
+            Add_Action (Table.States (400), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (400), 15, (142, 0), 3);
+            Add_Action (Table.States (400), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (400), 18, (164, 0), 4);
+            Add_Action (Table.States (400), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (400), 27, (193, 0), 5);
+            Add_Action (Table.States (400), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (400), 31, (306, 3), 9);
+            Add_Action (Table.States (400), 32, (225, 0), 10);
+            Add_Action (Table.States (400), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (400), 41, (306, 0), 13);
+            Add_Action (Table.States (400), 48, (260, 0), 16);
+            Add_Action (Table.States (400), 52, (279, 0), 20);
+            Add_Action (Table.States (400), 57, (293, 0), 21);
+            Add_Action (Table.States (400), 58, (199, 0), 22);
+            Add_Action (Table.States (400), 61, (129, 0), 24);
+            Add_Action (Table.States (400), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (400), 81, (242, 8), 31);
+            Add_Action (Table.States (400), 96, (220, 0), 32);
+            Add_Action (Table.States (400), 107, (134, 0), 363);
+            Add_Action (Table.States (400), 108, (242, 7), 34);
+            Add_Action (Table.States (400), 109, (242, 6), 35);
+            Table.States (400).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (400), 116, 37);
+            Add_Goto (Table.States (400), 126, 39);
+            Add_Goto (Table.States (400), 129, 40);
+            Add_Goto (Table.States (400), 131, 42);
+            Add_Goto (Table.States (400), 134, 43);
+            Add_Goto (Table.States (400), 135, 44);
+            Add_Goto (Table.States (400), 136, 45);
+            Add_Goto (Table.States (400), 142, 48);
+            Add_Goto (Table.States (400), 154, 51);
+            Add_Goto (Table.States (400), 155, 52);
+            Add_Goto (Table.States (400), 164, 54);
+            Add_Goto (Table.States (400), 193, 58);
+            Add_Goto (Table.States (400), 199, 60);
+            Add_Goto (Table.States (400), 220, 69);
+            Add_Goto (Table.States (400), 225, 71);
+            Add_Goto (Table.States (400), 235, 73);
+            Add_Goto (Table.States (400), 242, 74);
+            Add_Goto (Table.States (400), 260, 84);
+            Add_Goto (Table.States (400), 264, 87);
+            Add_Goto (Table.States (400), 275, 93);
+            Add_Goto (Table.States (400), 279, 94);
+            Add_Goto (Table.States (400), 293, 97);
+            Add_Goto (Table.States (400), 296, 98);
+            Add_Goto (Table.States (400), 297, 99);
+            Add_Goto (Table.States (400), 301, 100);
+            Add_Goto (Table.States (400), 302, 364);
+            Add_Goto (Table.States (400), 303, 572);
+            Add_Goto (Table.States (400), 305, 101);
+            Add_Goto (Table.States (400), 306, 102);
+            Add_Goto (Table.States (400), 309, 366);
+            Add_Goto (Table.States (400), 326, 115);
+            Table.States (400).Kernel := To_Vector ((0 => ((235, 0),  37,  3, 
(2147483647, 0),  0)));
+            Table.States (400).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (303, 1),  0)));
+            Table.States (401).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (401), 35, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (401), 74, (125, 0), 340);
+            Add_Action (Table.States (401), 76, (118, 0), 237);
+            Add_Action (Table.States (401), 87, (296, 0), 239);
+            Add_Action (Table.States (401), 104, (325, 0), 241);
+            Add_Action (Table.States (401), 105, (325, 1), 242);
+            Table.States (401).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (401), 118, 243);
+            Add_Goto (Table.States (401), 125, 341);
+            Add_Goto (Table.States (401), 325, 244);
+            Table.States (401).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((254, 0),  242,  3, (2147483647, 0),  0),
+            ((254, 1),  242,  2, (2147483647, 0),  0), ((275, 0),  242,  3, 
(2147483647, 0),  0), ((296, 0),  242,  2,
+            (2147483647, 0),  0), ((296, 1),  242,  2, (2147483647, 0),  0), 
((296, 2),  242,  2, (2147483647, 0),  0),
+            ((296, 3),  242,  2, (2147483647, 0),  0)));
+            Table.States (401).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (402).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (402), (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, 
81, 96, 107, 108, 109, 110), (217, 0),  3,
             generic_package_declaration_0'Access, null);
-            Table.States (400).Kernel := To_Vector ((0 => (215, 97, 0, 
False)));
-            Table.States (400).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 215, 3)));
-            Table.States (401).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (401), 97, 569);
-            Table.States (401).Kernel := To_Vector ((0 => (217, 123, 1, 
False)));
-            Table.States (401).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 569)));
-            Table.States (402).Action_List.Set_Capacity (15);
-            Add_Action (Table.States (402), (7, 11, 16, 21, 33, 40, 45, 74, 
77, 79, 83, 97, 105, 106, 107), (119, 0),
-            1, null, null);
-            Table.States (402).Kernel := To_Vector ((0 => (119, 8, 0, False)));
-            Table.States (402).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 119, 1)));
+            Table.States (402).Kernel := To_Vector ((0 => ((217, 0),  99,  0, 
(217, 0),  3)));
+            Table.States (402).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (217, 0),  3)));
             Table.States (403).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (403), 83, 570);
-            Table.States (403).Kernel := To_Vector ((0 => (158, 16, 2, 
False)));
-            Table.States (403).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 83, 570)));
-            Table.States (404).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (404), 97, 571);
-            Table.States (404).Kernel := To_Vector ((0 => (187, 26, 1, 
False)));
-            Table.States (404).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 571)));
-            Table.States (405).Action_List.Set_Capacity (11);
-            Add_Action (Table.States (405), 7, Reduce, (155, 1), 0, null, 
null);
-            Add_Action (Table.States (405), 11, Reduce, (155, 1), 0, null, 
null);
-            Add_Action (Table.States (405), 16, 572);
-            Add_Action (Table.States (405), 40, Reduce, (155, 1), 0, null, 
null);
-            Add_Action (Table.States (405), 74, Reduce, (155, 1), 0, null, 
null);
-            Add_Action (Table.States (405), 79, Reduce, (155, 1), 0, null, 
null);
-            Add_Action (Table.States (405), 83, Reduce, (155, 1), 0, null, 
null);
-            Add_Action (Table.States (405), 97, Reduce, (155, 1), 0, null, 
null);
-            Add_Action (Table.States (405), 105, Reduce, (155, 1), 0, null, 
null);
-            Add_Action (Table.States (405), 106, Reduce, (155, 1), 0, null, 
null);
-            Add_Action (Table.States (405), 107, Reduce, (155, 1), 0, null, 
null);
-            Table.States (405).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (405), 155, 573);
-            Table.States (405).Kernel := To_Vector (((245, 119, 3, False), 
(245, 119, 4, False), (245, 119, 10, False),
-            (245, 119, 2, False), (245, 119, 3, False), (245, 119, 9, False)));
-            Table.States (405).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 155, 0)));
-            Table.States (406).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (406), (82, 84), (220, 0), 3, 
identifier_list_0'Access, null);
-            Table.States (406).Kernel := To_Vector ((0 => (220, 105, 0, 
True)));
-            Table.States (406).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 220, 3)));
-            Table.States (406).Minimal_Complete_Actions_Recursive := True;
-            Table.States (407).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (407), 77, 574);
-            Add_Action (Table.States (407), 84, 445);
-            Table.States (407).Kernel := To_Vector (((116, 126, 1, False), 
(126, 126, 1, True)));
-            Table.States (407).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 574)));
-            Table.States (408).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (408), 77, 575);
-            Table.States (408).Kernel := To_Vector ((0 => (116, 154, 1, 
False)));
-            Table.States (408).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 575)));
-            Table.States (409).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (409), 35, Reduce, (125, 5), 1, 
association_opt_5'Access, null);
-            Add_Action (Table.States (409), 77, Reduce, (125, 5), 1, 
association_opt_5'Access, null);
-            Add_Action (Table.States (409), 80, Reduce, (166, 0), 1, null, 
null);
-            Add_Action (Table.States (409), 84, Reduce, (125, 5), 1, 
association_opt_5'Access, null);
-            Add_Action (Table.States (409), 88, Reduce, (166, 0), 1, null, 
null);
-            Add_Action (Table.States (409), 97, Reduce, (125, 5), 1, 
association_opt_5'Access, null);
-            Table.States (409).Kernel := To_Vector (((125, 192, 0, False), 
(166, 192, 0, False)));
-            Table.States (409).Minimal_Complete_Actions := To_Vector 
(((Reduce, 125, 1), (Reduce, 166, 1)));
-            Table.States (410).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (410), 77, Reduce, (279, 1), 1, null, 
null);
-            Add_Action (Table.States (410), 80, Reduce, (166, 2), 1, null, 
null);
-            Add_Action (Table.States (410), 84, Reduce, (279, 1), 1, null, 
null);
-            Add_Action (Table.States (410), 88, Reduce, (166, 2), 1, null, 
null);
-            Table.States (410).Kernel := To_Vector (((166, 278, 0, False), 
(279, 278, 0, False)));
-            Table.States (410).Minimal_Complete_Actions := To_Vector 
(((Reduce, 166, 1), (Reduce, 279, 1)));
-            Table.States (411).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (411), 77, 576);
-            Add_Action (Table.States (411), 84, 577);
-            Table.States (411).Kernel := To_Vector (((240, 279, 1, True), 
(279, 279, 4, True)));
-            Table.States (411).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 576)));
-            Table.States (411).Minimal_Complete_Actions_Recursive := True;
-            Table.States (412).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (412), 97, 578);
-            Table.States (412).Kernel := To_Vector ((0 => (124, 193, 1, 
False)));
-            Table.States (412).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 578)));
-            Table.States (413).Action_List.Set_Capacity (64);
-            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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (294, 3), 3,
-            selected_component_3'Access, null);
-            Table.States (413).Kernel := To_Vector ((0 => (294, 9, 0, True)));
-            Table.States (413).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 294, 3)));
-            Table.States (413).Minimal_Complete_Actions_Recursive := True;
-            Table.States (414).Action_List.Set_Capacity (64);
-            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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (294, 0), 3,
-            selected_component_0'Access, selected_component_0_check'Access);
-            Table.States (414).Kernel := To_Vector ((0 => (294, 105, 0, 
True)));
-            Table.States (414).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 294, 3)));
-            Table.States (414).Minimal_Complete_Actions_Recursive := True;
-            Table.States (415).Action_List.Set_Capacity (64);
+            Add_Action (Table.States (403), 99, (219, 0), 573);
+            Table.States (403).Kernel := To_Vector ((0 => ((219, 0),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (403).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (219, 0),  99, 573)));
+            Table.States (404).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (404), (7, 11, 16, 21, 33, 40, 45, 74, 
78, 81, 85, 99, 107, 108, 109), (121, 0),
+            1, null, null);
+            Table.States (404).Kernel := To_Vector ((0 => ((121, 0),  8,  0, 
(121, 0),  1)));
+            Table.States (404).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (121, 0),  1)));
+            Table.States (405).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (405), 85, (160, 9), 574);
+            Table.States (405).Kernel := To_Vector ((0 => ((160, 9),  16,  2, 
(2147483647, 0),  0)));
+            Table.States (405).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (160, 9),  85, 574)));
+            Table.States (406).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (406), 99, (189, 0), 575);
+            Table.States (406).Kernel := To_Vector ((0 => ((189, 0),  26,  1, 
(2147483647, 0),  0)));
+            Table.States (406).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (189, 0),  99, 575)));
+            Table.States (407).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (407), 7, Reduce, (157, 1),  0, null, 
null);
+            Add_Action (Table.States (407), 11, Reduce, (157, 1),  0, null, 
null);
+            Add_Action (Table.States (407), 16, (157, 0), 576);
+            Add_Action (Table.States (407), 40, Reduce, (157, 1),  0, null, 
null);
+            Add_Action (Table.States (407), 74, Reduce, (157, 1),  0, null, 
null);
+            Add_Action (Table.States (407), 81, Reduce, (157, 1),  0, null, 
null);
+            Add_Action (Table.States (407), 85, Reduce, (157, 1),  0, null, 
null);
+            Add_Action (Table.States (407), 99, Reduce, (157, 1),  0, null, 
null);
+            Add_Action (Table.States (407), 107, Reduce, (157, 1),  0, null, 
null);
+            Add_Action (Table.States (407), 108, Reduce, (157, 1),  0, null, 
null);
+            Add_Action (Table.States (407), 109, Reduce, (157, 1),  0, null, 
null);
+            Table.States (407).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (407), 157, 577);
+            Table.States (407).Kernel := To_Vector ((((247, 0),  121,  3, 
(2147483647, 0),  0), ((247, 1),  121,  4,
+            (2147483647, 0),  0), ((247, 2),  121,  10, (2147483647, 0),  0), 
((247, 3),  121,  2, (2147483647, 0),
+            0), ((247, 4),  121,  3, (2147483647, 0),  0), ((247, 5),  121,  
9, (2147483647, 0),  0)));
+            Table.States (407).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (157, 1),  0)));
+            Table.States (408).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (408), (84, 86), (222, 0),  3, 
identifier_list_0'Access, null);
+            Table.States (408).Kernel := To_Vector ((0 => ((222, 0),  107,  0, 
(222, 0),  3)));
+            Table.States (408).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (222, 0),  3)));
+            Table.States (409).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (409), 78, (118, 0), 578);
+            Add_Action (Table.States (409), 86, (128, 0), 448);
+            Table.States (409).Kernel := To_Vector ((((118, 0),  128,  1, 
(2147483647, 0),  0), ((128, 0),  128,  1,
+            (2147483647, 0),  0)));
+            Table.States (409).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (118, 0),  78, 578)));
+            Table.States (410).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (410), 78, (118, 1), 579);
+            Table.States (410).Kernel := To_Vector ((0 => ((118, 1),  156,  1, 
(2147483647, 0),  0)));
+            Table.States (410).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (118, 1),  78, 579)));
+            Table.States (411).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (411), 35, Reduce, (127, 4),  1, 
association_opt_4'Access, null);
+            Add_Action (Table.States (411), 78, Reduce, (127, 4),  1, 
association_opt_4'Access, null);
+            Add_Action (Table.States (411), 79, Reduce, (127, 4),  1, 
association_opt_4'Access, null);
+            Add_Action (Table.States (411), 82, Reduce, (168, 0),  1, null, 
null);
+            Add_Action (Table.States (411), 86, Reduce, (127, 4),  1, 
association_opt_4'Access, null);
+            Add_Action (Table.States (411), 90, Reduce, (168, 0),  1, null, 
null);
+            Add_Action (Table.States (411), 99, Reduce, (127, 4),  1, 
association_opt_4'Access, null);
+            Table.States (411).Kernel := To_Vector ((((127, 4),  194,  0, 
(127, 4),  1), ((168, 0),  194,  0, (168, 0),
+             1)));
+            Table.States (411).Minimal_Complete_Actions := To_Vector 
(((Reduce, (127, 4),  1), (Reduce, (168, 0),
+            1)));
+            Table.States (412).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (412), 78, Reduce, (281, 1),  1, null, 
null);
+            Add_Action (Table.States (412), 82, Reduce, (168, 2),  1, null, 
null);
+            Add_Action (Table.States (412), 86, Reduce, (281, 1),  1, null, 
null);
+            Add_Action (Table.States (412), 90, Reduce, (168, 2),  1, null, 
null);
+            Table.States (412).Kernel := To_Vector ((((168, 2),  280,  0, 
(168, 2),  1), ((281, 1),  280,  0, (281, 1),
+             1)));
+            Table.States (412).Minimal_Complete_Actions := To_Vector 
(((Reduce, (168, 2),  1), (Reduce, (281, 1),
+            1)));
+            Table.States (413).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (413), 78, (242, 0), 580);
+            Add_Action (Table.States (413), 86, (281, 0), 581);
+            Table.States (413).Kernel := To_Vector ((((242, 0),  281,  1, 
(2147483647, 0),  0), ((281, 0),  281,  4,
+            (2147483647, 0),  0)));
+            Table.States (414).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (414), 99, (126, 0), 582);
+            Table.States (414).Kernel := To_Vector ((0 => ((126, 0),  195,  1, 
(2147483647, 0),  0)));
+            Table.States (414).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (126, 0),  99, 582)));
+            Table.States (415).Action_List.Set_Capacity (65);
             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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (294, 2), 3,
-            selected_component_2'Access, selected_component_2_check'Access);
-            Table.States (415).Kernel := To_Vector ((0 => (294, 106, 0, 
True)));
-            Table.States (415).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 294, 3)));
-            Table.States (415).Minimal_Complete_Actions_Recursive := True;
-            Table.States (416).Action_List.Set_Capacity (64);
+            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (296, 3),  3,
+            selected_component_3'Access, null);
+            Table.States (415).Kernel := To_Vector ((0 => ((296, 3),  9,  0, 
(296, 3),  3)));
+            Table.States (415).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (296, 3),  3)));
+            Table.States (416).Action_List.Set_Capacity (65);
             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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (294, 1), 3,
-            selected_component_1'Access, null);
-            Table.States (416).Kernel := To_Vector ((0 => (294, 107, 0, 
True)));
-            Table.States (416).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 294, 3)));
-            Table.States (416).Minimal_Complete_Actions_Recursive := True;
-            Table.States (417).Action_List.Set_Capacity (64);
+            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (296, 0),  3,
+            selected_component_0'Access, selected_component_0_check'Access);
+            Table.States (416).Kernel := To_Vector ((0 => ((296, 0),  107,  0, 
(296, 0),  3)));
+            Table.States (416).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (296, 0),  3)));
+            Table.States (417).Action_List.Set_Capacity (65);
             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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (130, 2), 1, null, null);
-            Table.States (417).Kernel := To_Vector ((0 => (130, 7, 0, False)));
-            Table.States (417).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 130, 1)));
-            Table.States (418).Action_List.Set_Capacity (64);
+            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (296, 2),  3,
+            selected_component_2'Access, selected_component_2_check'Access);
+            Table.States (417).Kernel := To_Vector ((0 => ((296, 2),  108,  0, 
(296, 2),  3)));
+            Table.States (417).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (296, 2),  3)));
+            Table.States (418).Action_List.Set_Capacity (65);
             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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (130, 3), 1, null, null);
-            Table.States (418).Kernel := To_Vector ((0 => (130, 19, 0, 
False)));
-            Table.States (418).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 130, 1)));
-            Table.States (419).Action_List.Set_Capacity (64);
+            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (296, 1),  3,
+            selected_component_1'Access, null);
+            Table.States (418).Kernel := To_Vector ((0 => ((296, 1),  109,  0, 
(296, 1),  3)));
+            Table.States (418).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (296, 1),  3)));
+            Table.States (419).Action_List.Set_Capacity (65);
             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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (130, 4), 1, null, null);
-            Table.States (419).Kernel := To_Vector ((0 => (130, 20, 0, 
False)));
-            Table.States (419).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 130, 1)));
-            Table.States (420).Action_List.Set_Capacity (64);
+            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (132, 2),  1, null,
+            null);
+            Table.States (419).Kernel := To_Vector ((0 => ((132, 2),  7,  0, 
(132, 2),  1)));
+            Table.States (419).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (132, 2),  1)));
+            Table.States (420).Action_List.Set_Capacity (65);
             Add_Action (Table.States (420), (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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (130, 5), 1, null, null);
-            Table.States (420).Kernel := To_Vector ((0 => (130, 38, 0, 
False)));
-            Table.States (420).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 130, 1)));
-            Table.States (421).Action_List.Set_Capacity (64);
-            Add_Action (Table.States (421), 4, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 5, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 10, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 13, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 15, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 17, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 18, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 20, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 21, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 22, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 23, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 27, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 28, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 31, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 32, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 33, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 35, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 37, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 38, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 40, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 41, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 42, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 43, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 48, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 52, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 53, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 55, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 56, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 57, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 58, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 61, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 68, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 71, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 73, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 74, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 75, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 76, 579);
-            Add_Conflict (Table.States (421), 76, (130, 1), 1, null, null);
-            Add_Action (Table.States (421), 77, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 78, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 79, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 80, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 83, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 84, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 85, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 86, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 87, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 88, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 89, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 90, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 92, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 93, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 94, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 95, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 96, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 97, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 98, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 99, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 100, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 101, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 102, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 103, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 105, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 106, Reduce, (130, 1), 1, null, 
null);
-            Add_Action (Table.States (421), 107, Reduce, (130, 1), 1, null, 
null);
-            Table.States (421).Kernel := To_Vector (((130, 105, 3, False), 
(130, 105, 0, False)));
-            Table.States (421).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 130, 1)));
-            Table.States (422).Action_List.Set_Capacity (64);
+            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (132, 3),  1, null,
+            null);
+            Table.States (420).Kernel := To_Vector ((0 => ((132, 3),  19,  0, 
(132, 3),  1)));
+            Table.States (420).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (132, 3),  1)));
+            Table.States (421).Action_List.Set_Capacity (65);
+            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, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (132, 4),  1, null,
+            null);
+            Table.States (421).Kernel := To_Vector ((0 => ((132, 4),  20,  0, 
(132, 4),  1)));
+            Table.States (421).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (132, 4),  1)));
+            Table.States (422).Action_List.Set_Capacity (65);
             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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (273, 0), 3,
+            40, 41, 42, 43, 48, 52, 53, 55, 56, 57, 58, 61, 68, 71, 73, 74, 
75, 76, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (132, 5),  1, null,
+            null);
+            Table.States (422).Kernel := To_Vector ((0 => ((132, 5),  38,  0, 
(132, 5),  1)));
+            Table.States (422).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (132, 5),  1)));
+            Table.States (423).Action_List.Set_Capacity (65);
+            Add_Action (Table.States (423), 4, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 5, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 10, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 13, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 15, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 17, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 18, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 20, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 21, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 22, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 23, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 27, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 28, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 31, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 32, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 33, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 35, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 37, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 38, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 40, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 41, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 42, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 43, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 48, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 52, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 53, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 55, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 56, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 57, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 58, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 61, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 68, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 71, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 73, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 74, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 75, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 76, (132, 0), 583);
+            Add_Conflict (Table.States (423), 76, (132, 1),  1, null, null);
+            Add_Action (Table.States (423), 78, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 79, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 80, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 81, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 82, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 85, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 86, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 87, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 88, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 89, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 90, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 91, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 92, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 94, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 95, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 96, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 97, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 98, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 99, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 100, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 101, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 102, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 103, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 104, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 105, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 107, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 108, Reduce, (132, 1),  1, null, 
null);
+            Add_Action (Table.States (423), 109, Reduce, (132, 1),  1, null, 
null);
+            Table.States (423).Kernel := To_Vector ((((132, 0),  107,  3, 
(2147483647, 0),  0), ((132, 1),  107,  0,
+            (132, 1),  1)));
+            Table.States (423).Minimal_Complete_Actions := To_Vector (((Shift, 
(132, 0),  76, 583), (Reduce, (132, 1),
+            1)));
+         end Subr_8;
+         procedure Subr_9
+         is begin
+            Table.States (424).Action_List.Set_Capacity (65);
+            Add_Action (Table.States (424), (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, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (275, 0),  3,
             qualified_expression_0'Access, null);
-            Table.States (422).Kernel := To_Vector ((0 => (273, 118, 0, 
True)));
-            Table.States (422).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 273, 3)));
-            Table.States (422).Minimal_Complete_Actions_Recursive := True;
-            Table.States (423).Action_List.Set_Capacity (64);
-            Add_Action (Table.States (423), (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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (129, 0), 3, null, null);
-            Table.States (423).Kernel := To_Vector ((0 => (129, 130, 0, 
True)));
-            Table.States (423).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 129, 3)));
-            Table.States (423).Minimal_Complete_Actions_Recursive := True;
-            Table.States (424).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (424), 74, Reduce, (254, 1), 0, null, 
null);
-            Add_Action (Table.States (424), 76, 580);
-            Add_Action (Table.States (424), 97, Reduce, (254, 1), 0, null, 
null);
-            Table.States (424).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (424), 200, 345);
-            Add_Goto (Table.States (424), 254, 581);
-            Table.States (424).Kernel := To_Vector (((180, 105, 4, False), 
(180, 105, 1, False)));
-            Table.States (424).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 254, 0)));
-            Table.States (425).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (425), 35, 582);
-            Add_Action (Table.States (425), 58, 318);
-            Add_Action (Table.States (425), 76, 319);
-            Add_Action (Table.States (425), 85, 238);
-            Add_Action (Table.States (425), 102, 240);
-            Add_Action (Table.States (425), 103, 241);
-            Table.States (425).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (425), 116, 242);
-            Add_Goto (Table.States (425), 200, 320);
-            Add_Goto (Table.States (425), 253, 321);
-            Add_Goto (Table.States (425), 292, 322);
-            Add_Goto (Table.States (425), 323, 243);
-            Table.States (425).Kernel := To_Vector (((129, 240, 2, True), 
(208, 240, 1, False), (214, 240, 4, False),
-            (240, 240, 5, True), (240, 240, 2, True), (273, 240, 3, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True), (294, 240, 2, True)));
-            Table.States (425).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 58, 318)));
-            Table.States (426).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (426), 35, 583);
-            Add_Conflict (Table.States (426), 35, (254, 1), 0, null, null);
-            Add_Action (Table.States (426), 56, Reduce, (254, 1), 0, null, 
null);
-            Add_Action (Table.States (426), 74, Reduce, (254, 1), 0, null, 
null);
-            Add_Action (Table.States (426), 76, 319);
-            Add_Action (Table.States (426), 85, 238);
-            Add_Action (Table.States (426), 97, Reduce, (254, 1), 0, null, 
null);
-            Add_Action (Table.States (426), 102, 240);
-            Add_Action (Table.States (426), 103, 241);
-            Table.States (426).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (426), 116, 242);
-            Add_Goto (Table.States (426), 200, 345);
-            Add_Goto (Table.States (426), 254, 346);
-            Add_Goto (Table.States (426), 323, 243);
-            Table.States (426).Kernel := To_Vector (((129, 240, 2, True), 
(214, 240, 4, False), (240, 240, 5, True),
-            (240, 240, 2, True), (263, 240, 0, False), (273, 240, 3, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True), (294, 240, 2, True)));
-            Table.States (426).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 254, 0)));
-            Table.States (427).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (427), 76, 584);
-            Table.States (427).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (427), 118, 585);
-            Add_Goto (Table.States (427), 257, 586);
-            Table.States (427).Kernel := To_Vector ((0 => (194, 35, 3, 
False)));
-            Table.States (427).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 76, 584)));
-            Table.States (428).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (428), 41, 587);
-            Table.States (428).Kernel := To_Vector ((0 => (244, 35, 2, 
False)));
-            Table.States (428).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 41, 587)));
+            Table.States (424).Kernel := To_Vector ((0 => ((275, 0),  120,  0, 
(275, 0),  3)));
+            Table.States (424).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (275, 0),  3)));
+            Table.States (425).Action_List.Set_Capacity (65);
+            Add_Action (Table.States (425), (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, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (131, 0),  3, null,
+            null);
+            Table.States (425).Kernel := To_Vector ((0 => ((131, 0),  132,  0, 
(131, 0),  3)));
+            Table.States (425).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (131, 0),  3)));
+            Table.States (426).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (426), 74, Reduce, (256, 1),  0, null, 
null);
+            Add_Action (Table.States (426), 76, (182, 0), 584);
+            Add_Action (Table.States (426), 99, Reduce, (256, 1),  0, null, 
null);
+            Table.States (426).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (426), 202, 347);
+            Add_Goto (Table.States (426), 256, 585);
+            Table.States (426).Kernel := To_Vector ((((182, 0),  107,  4, 
(2147483647, 0),  0), ((182, 1),  107,  1,
+            (2147483647, 0),  0)));
+            Table.States (426).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (256, 1),  0)));
+            Table.States (427).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (427), 35, (216, 2), 586);
+            Add_Action (Table.States (427), 58, (294, 0), 320);
+            Add_Action (Table.States (427), 76, (118, 0), 321);
+            Add_Action (Table.States (427), 87, (296, 0), 239);
+            Add_Action (Table.States (427), 104, (325, 0), 241);
+            Add_Action (Table.States (427), 105, (325, 1), 242);
+            Table.States (427).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (427), 118, 243);
+            Add_Goto (Table.States (427), 202, 322);
+            Add_Goto (Table.States (427), 255, 323);
+            Add_Goto (Table.States (427), 294, 324);
+            Add_Goto (Table.States (427), 325, 244);
+            Table.States (427).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((210, 0),  242,  1,
+            (2147483647, 0),  0), ((216, 2),  242,  4, (2147483647, 0),  0), 
((242, 0),  242,  5, (2147483647, 0),  0),
+            ((242, 1),  242,  2, (2147483647, 0),  0), ((275, 0),  242,  3, 
(2147483647, 0),  0), ((296, 0),  242,  2,
+            (2147483647, 0),  0), ((296, 1),  242,  2, (2147483647, 0),  0), 
((296, 2),  242,  2, (2147483647, 0),  0),
+            ((296, 3),  242,  2, (2147483647, 0),  0)));
+            Table.States (427).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (294, 0),  58, 320)));
+            Table.States (428).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (428), 35, (216, 1), 587);
+            Add_Conflict (Table.States (428), 35, (256, 1),  0, null, null);
+            Add_Action (Table.States (428), 56, Reduce, (256, 1),  0, null, 
null);
+            Add_Action (Table.States (428), 74, Reduce, (256, 1),  0, null, 
null);
+            Add_Action (Table.States (428), 76, (118, 0), 321);
+            Add_Action (Table.States (428), 87, (296, 0), 239);
+            Add_Action (Table.States (428), 99, Reduce, (256, 1),  0, null, 
null);
+            Add_Action (Table.States (428), 104, (325, 0), 241);
+            Add_Action (Table.States (428), 105, (325, 1), 242);
+            Table.States (428).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (428), 118, 243);
+            Add_Goto (Table.States (428), 202, 347);
+            Add_Goto (Table.States (428), 256, 348);
+            Add_Goto (Table.States (428), 325, 244);
+            Table.States (428).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((216, 1),  242,  4,
+            (2147483647, 0),  0), ((242, 0),  242,  5, (2147483647, 0),  0), 
((242, 1),  242,  2, (2147483647, 0),  0),
+            ((265, 0),  242,  0, (256, 1),  0), ((275, 0),  242,  3, 
(2147483647, 0),  0), ((296, 0),  242,  2,
+            (2147483647, 0),  0), ((296, 1),  242,  2, (2147483647, 0),  0), 
((296, 2),  242,  2, (2147483647, 0),  0),
+            ((296, 3),  242,  2, (2147483647, 0),  0)));
+            Table.States (428).Minimal_Complete_Actions := To_Vector (((Shift, 
(216, 1),  35, 587), (Reduce, (256, 1),
+            0)));
             Table.States (429).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (429), 6, 588);
-            Add_Action (Table.States (429), 60, 589);
-            Table.States (429).Kernel := To_Vector (((113, 35, 2, False), 
(309, 35, 2, False)));
-            Table.States (429).Minimal_Complete_Actions := To_Vector (((Shift, 
6, 588), (Shift, 60, 589)));
-            Table.States (430).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (430), 79, 31);
-            Add_Action (Table.States (430), 105, 120);
-            Add_Action (Table.States (430), 106, 34);
-            Add_Action (Table.States (430), 107, 35);
-            Table.States (430).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (430), 129, 42);
-            Add_Goto (Table.States (430), 240, 590);
-            Add_Goto (Table.States (430), 273, 93);
-            Add_Goto (Table.States (430), 294, 98);
-            Table.States (430).Kernel := To_Vector ((0 => (312, 56, 2, 
False)));
-            Table.States (430).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
+            Add_Action (Table.States (429), 76, (120, 0), 588);
+            Add_Action (Table.States (429), 77, (120, 5), 128);
+            Table.States (429).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (429), 120, 589);
+            Add_Goto (Table.States (429), 259, 590);
+            Table.States (429).Kernel := To_Vector ((0 => ((196, 0),  35,  3, 
(2147483647, 0),  0)));
+            Table.States (429).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (120, 0),  76, 588)));
+            Table.States (430).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (430), 41, (246, 0), 591);
+            Table.States (430).Kernel := To_Vector ((0 => ((246, 0),  35,  2, 
(2147483647, 0),  0)));
+            Table.States (430).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (246, 0),  41, 591)));
             Table.States (431).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (431), 35, 591);
-            Add_Action (Table.States (431), 97, 592);
-            Table.States (431).Kernel := To_Vector (((308, 123, 4, False), 
(310, 123, 1, False)));
-            Table.States (431).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 592)));
-            Table.States (432).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (432), 77, Reduce, (255, 4), 0, null, 
null);
-            Add_Action (Table.States (432), 97, Reduce, (255, 4), 0, null, 
null);
-            Add_Action (Table.States (432), 105, 165);
-            Table.States (432).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (432), 220, 496);
-            Add_Goto (Table.States (432), 255, 497);
-            Add_Goto (Table.States (432), 256, 498);
-            Table.States (432).Kernel := To_Vector ((0 => (200, 76, 1, 
False)));
-            Table.States (432).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 256, 0)));
+            Add_Action (Table.States (431), 6, (115, 0), 592);
+            Add_Action (Table.States (431), 60, (311, 0), 593);
+            Table.States (431).Kernel := To_Vector ((((115, 0),  35,  2, 
(2147483647, 0),  0), ((311, 0),  35,  2,
+            (2147483647, 0),  0)));
+            Table.States (431).Minimal_Complete_Actions := To_Vector (((Shift, 
(115, 0),  6, 592), (Shift, (311, 0),
+            60, 593)));
+            Table.States (432).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (432), 81, (242, 8), 31);
+            Add_Action (Table.States (432), 107, (242, 5), 120);
+            Add_Action (Table.States (432), 108, (242, 7), 34);
+            Add_Action (Table.States (432), 109, (242, 6), 35);
+            Table.States (432).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (432), 131, 42);
+            Add_Goto (Table.States (432), 242, 594);
+            Add_Goto (Table.States (432), 275, 93);
+            Add_Goto (Table.States (432), 296, 98);
+            Table.States (432).Kernel := To_Vector ((0 => ((314, 0),  56,  2, 
(2147483647, 0),  0)));
+            Table.States (432).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
             Table.States (433).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (433), 21, 593);
-            Add_Action (Table.States (433), 97, 594);
-            Table.States (433).Kernel := To_Vector (((114, 254, 3, False), 
(114, 254, 1, False)));
-            Table.States (433).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 594)));
-            Table.States (434).Action_List.Set_Capacity (30);
-            Add_Action (Table.States (434), 3, 122);
-            Add_Action (Table.States (434), 10, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (434), 20, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (434), 21, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (434), 22, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (434), 23, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (434), 35, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (434), 37, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (434), 39, 123);
-            Add_Action (Table.States (434), 40, 124);
-            Add_Action (Table.States (434), 41, 125);
-            Add_Action (Table.States (434), 43, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (434), 52, 126);
-            Add_Action (Table.States (434), 53, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (434), 68, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (434), 74, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (434), 75, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (434), 76, 127);
-            Add_Action (Table.States (434), 77, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (434), 79, 31);
-            Add_Action (Table.States (434), 80, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (434), 84, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (434), 88, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (434), 95, 128);
-            Add_Action (Table.States (434), 96, 129);
-            Add_Action (Table.States (434), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (434), 104, 130);
-            Add_Action (Table.States (434), 105, 120);
-            Add_Action (Table.States (434), 106, 34);
-            Add_Action (Table.States (434), 107, 35);
-            Table.States (434).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (434), 118, 131);
-            Add_Goto (Table.States (434), 129, 42);
-            Add_Goto (Table.States (434), 192, 132);
-            Add_Goto (Table.States (434), 193, 595);
-            Add_Goto (Table.States (434), 198, 134);
-            Add_Goto (Table.States (434), 240, 135);
-            Add_Goto (Table.States (434), 259, 136);
-            Add_Goto (Table.States (434), 273, 93);
-            Add_Goto (Table.States (434), 276, 137);
-            Add_Goto (Table.States (434), 283, 138);
-            Add_Goto (Table.States (434), 284, 139);
-            Add_Goto (Table.States (434), 285, 140);
-            Add_Goto (Table.States (434), 286, 141);
-            Add_Goto (Table.States (434), 287, 142);
-            Add_Goto (Table.States (434), 288, 143);
-            Add_Goto (Table.States (434), 294, 98);
-            Add_Goto (Table.States (434), 302, 144);
-            Add_Goto (Table.States (434), 321, 145);
-            Add_Goto (Table.States (434), 322, 146);
-            Add_Goto (Table.States (434), 331, 147);
-            Table.States (434).Kernel := To_Vector ((0 => (276, 74, 0, True)));
-            Table.States (434).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (434).Minimal_Complete_Actions_Recursive := True;
-            Table.States (435).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (435), 35, 596);
-            Table.States (435).Kernel := To_Vector ((0 => (137, 193, 3, 
False)));
-            Table.States (435).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 596)));
-            Table.States (436).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (436), (1 =>  105), (275, 0), 1, null, 
null);
-            Table.States (436).Kernel := To_Vector ((0 => (275, 9, 0, False)));
-            Table.States (436).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 275, 1)));
+            Add_Action (Table.States (433), 35, (310, 0), 595);
+            Add_Action (Table.States (433), 99, (312, 0), 596);
+            Table.States (433).Kernel := To_Vector ((((310, 0),  125,  4, 
(2147483647, 0),  0), ((312, 0),  125,  1,
+            (2147483647, 0),  0)));
+            Table.States (433).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (312, 0),  99, 596)));
+            Table.States (434).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (434), 78, Reduce, (257, 4),  0, null, 
null);
+            Add_Action (Table.States (434), 99, Reduce, (257, 4),  0, null, 
null);
+            Add_Action (Table.States (434), 107, (222, 1), 166);
+            Table.States (434).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (434), 222, 500);
+            Add_Goto (Table.States (434), 257, 501);
+            Add_Goto (Table.States (434), 258, 502);
+            Table.States (434).Kernel := To_Vector ((0 => ((202, 0),  76,  1, 
(2147483647, 0),  0)));
+            Table.States (434).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (258, 1),  0)));
+            Table.States (435).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (435), 21, (116, 0), 597);
+            Add_Action (Table.States (435), 99, (116, 1), 598);
+            Table.States (435).Kernel := To_Vector ((((116, 0),  256,  3, 
(2147483647, 0),  0), ((116, 1),  256,  1,
+            (2147483647, 0),  0)));
+            Table.States (435).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (116, 1),  99, 598)));
+            Table.States (436).Action_List.Set_Capacity (32);
+            Add_Action (Table.States (436), 3, (200, 2), 122);
+            Add_Action (Table.States (436), 10, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (436), 20, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (436), 21, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (436), 22, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (436), 23, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (436), 35, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (436), 37, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (436), 39, (261, 4), 123);
+            Add_Action (Table.States (436), 40, (200, 3), 124);
+            Add_Action (Table.States (436), 41, (261, 1), 125);
+            Add_Action (Table.States (436), 43, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (436), 52, (278, 0), 126);
+            Add_Action (Table.States (436), 53, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (436), 68, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (436), 74, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (436), 75, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (436), 76, (120, 0), 127);
+            Add_Action (Table.States (436), 77, (120, 5), 128);
+            Add_Action (Table.States (436), 78, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (436), 79, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (436), 81, (242, 8), 31);
+            Add_Action (Table.States (436), 82, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (436), 86, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (436), 90, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (436), 97, (333, 1), 129);
+            Add_Action (Table.States (436), 98, (333, 0), 130);
+            Add_Action (Table.States (436), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (436), 106, (261, 0), 131);
+            Add_Action (Table.States (436), 107, (242, 5), 120);
+            Add_Action (Table.States (436), 108, (242, 7), 34);
+            Add_Action (Table.States (436), 109, (242, 6), 35);
+            Table.States (436).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (436), 120, 132);
+            Add_Goto (Table.States (436), 131, 42);
+            Add_Goto (Table.States (436), 194, 133);
+            Add_Goto (Table.States (436), 195, 599);
+            Add_Goto (Table.States (436), 200, 135);
+            Add_Goto (Table.States (436), 242, 136);
+            Add_Goto (Table.States (436), 261, 137);
+            Add_Goto (Table.States (436), 275, 93);
+            Add_Goto (Table.States (436), 278, 138);
+            Add_Goto (Table.States (436), 285, 139);
+            Add_Goto (Table.States (436), 286, 140);
+            Add_Goto (Table.States (436), 287, 141);
+            Add_Goto (Table.States (436), 288, 142);
+            Add_Goto (Table.States (436), 289, 143);
+            Add_Goto (Table.States (436), 290, 144);
+            Add_Goto (Table.States (436), 296, 98);
+            Add_Goto (Table.States (436), 304, 145);
+            Add_Goto (Table.States (436), 323, 146);
+            Add_Goto (Table.States (436), 324, 147);
+            Add_Goto (Table.States (436), 333, 148);
+            Table.States (436).Kernel := To_Vector ((0 => ((278, 0),  74,  0, 
(195, 1),  0)));
+            Table.States (436).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
             Table.States (437).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (437), (1 =>  105), (275, 1), 1, null, 
null);
-            Table.States (437).Kernel := To_Vector ((0 => (275, 62, 0, 
False)));
-            Table.States (437).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 275, 1)));
+            Add_Action (Table.States (437), 35, (139, 0), 600);
+            Table.States (437).Kernel := To_Vector ((0 => ((139, 0),  195,  3, 
(2147483647, 0),  0)));
+            Table.States (437).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (139, 0),  35, 600)));
             Table.States (438).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (438), 33, 597);
-            Table.States (438).Kernel := To_Vector ((0 => (125, 105, 3, 
False)));
-            Table.States (438).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 33, 597)));
+            Add_Action (Table.States (438), (1 =>  107), (277, 0),  1, null, 
null);
+            Table.States (438).Kernel := To_Vector ((0 => ((277, 0),  9,  0, 
(277, 0),  1)));
+            Table.States (438).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (277, 0),  1)));
             Table.States (439).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (439), 105, 396);
-            Table.States (439).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (439), 231, 598);
-            Table.States (439).Kernel := To_Vector ((0 => (274, 275, 4, 
False)));
-            Table.States (439).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 396)));
-            Table.States (440).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (440), 68, 599);
-            Table.States (440).Kernel := To_Vector (((222, 193, 4, False), 
(222, 193, 2, False), (222, 193, 3, False),
-            (222, 193, 1, False)));
-            Table.States (440).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 68, 599)));
-            Table.States (441).Action_List.Set_Capacity (30);
-            Add_Action (Table.States (441), 10, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 33, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 35, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 38, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 40, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 43, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 55, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 74, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 75, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 77, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 78, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 79, 31);
-            Add_Action (Table.States (441), 80, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 84, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 86, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 87, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 88, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 89, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 90, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 92, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 93, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 95, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 96, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 97, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 98, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 99, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 100, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (441), 105, 120);
-            Add_Action (Table.States (441), 106, 34);
-            Add_Action (Table.States (441), 107, 35);
-            Table.States (441).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (441), 129, 42);
-            Add_Goto (Table.States (441), 240, 600);
-            Add_Goto (Table.States (441), 273, 93);
-            Add_Goto (Table.States (441), 294, 98);
-            Table.States (441).Kernel := To_Vector (((166, 41, 1, False), 
(259, 41, 0, False)));
-            Table.States (441).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 259, 1)));
-         end Subr_8;
-         procedure Subr_9
-         is begin
+            Add_Action (Table.States (439), (1 =>  107), (277, 1),  1, null, 
null);
+            Table.States (439).Kernel := To_Vector ((0 => ((277, 1),  62,  0, 
(277, 1),  1)));
+            Table.States (439).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (277, 1),  1)));
+            Table.States (440).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (440), 33, (127, 6), 601);
+            Add_Action (Table.States (440), 42, (233, 3), 315);
+            Add_Action (Table.States (440), 84, (233, 0), 316);
+            Table.States (440).Kernel := To_Vector ((((127, 6),  107,  3, 
(2147483647, 0),  0), ((233, 0),  107,  5,
+            (2147483647, 0),  0), ((233, 1),  107,  4, (2147483647, 0),  0), 
((233, 2),  107,  3, (2147483647, 0),  0),
+            ((233, 3),  107,  3, (2147483647, 0),  0), ((233, 4),  107,  2, 
(2147483647, 0),  0), ((233, 5),  107,  2,
+            (2147483647, 0),  0)));
+            Table.States (440).Minimal_Complete_Actions := To_Vector (((Shift, 
(233, 3),  42, 315), (Shift, (127, 6),
+            33, 601)));
+            Table.States (441).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (441), 90, (127, 7), 602);
+            Table.States (441).Kernel := To_Vector ((0 => ((127, 7),  233,  2, 
(2147483647, 0),  0)));
+            Table.States (441).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (127, 7),  90, 602)));
             Table.States (442).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (442), 77, 601);
-            Table.States (442).Kernel := To_Vector ((0 => (118, 54, 1, 
False)));
-            Table.States (442).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 601)));
-            Table.States (443).Action_List.Set_Capacity (18);
-            Add_Action (Table.States (443), 3, 122);
-            Add_Action (Table.States (443), 35, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (443), 39, 123);
-            Add_Action (Table.States (443), 40, 124);
-            Add_Action (Table.States (443), 41, 125);
-            Add_Action (Table.States (443), 52, 126);
-            Add_Action (Table.States (443), 76, 127);
-            Add_Action (Table.States (443), 77, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (443), 79, 31);
-            Add_Action (Table.States (443), 81, 602);
-            Add_Action (Table.States (443), 84, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (443), 95, 128);
-            Add_Action (Table.States (443), 96, 129);
-            Add_Action (Table.States (443), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (443), 104, 130);
-            Add_Action (Table.States (443), 105, 120);
-            Add_Action (Table.States (443), 106, 34);
-            Add_Action (Table.States (443), 107, 35);
-            Table.States (443).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (443), 118, 131);
-            Add_Goto (Table.States (443), 129, 42);
-            Add_Goto (Table.States (443), 192, 132);
-            Add_Goto (Table.States (443), 193, 603);
-            Add_Goto (Table.States (443), 198, 134);
-            Add_Goto (Table.States (443), 240, 135);
-            Add_Goto (Table.States (443), 259, 136);
-            Add_Goto (Table.States (443), 273, 93);
-            Add_Goto (Table.States (443), 276, 137);
-            Add_Goto (Table.States (443), 283, 138);
-            Add_Goto (Table.States (443), 284, 139);
-            Add_Goto (Table.States (443), 285, 140);
-            Add_Goto (Table.States (443), 286, 141);
-            Add_Goto (Table.States (443), 287, 142);
-            Add_Goto (Table.States (443), 288, 143);
-            Add_Goto (Table.States (443), 294, 98);
-            Add_Goto (Table.States (443), 302, 144);
-            Add_Goto (Table.States (443), 321, 145);
-            Add_Goto (Table.States (443), 322, 146);
-            Add_Goto (Table.States (443), 331, 147);
-            Table.States (443).Kernel := To_Vector (((125, 88, 0, False), 
(125, 88, 1, False)));
-            Table.States (443).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (444).Action_List.Set_Capacity (64);
-            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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (118, 5), 3,
-            aggregate_5'Access, null);
-            Table.States (444).Kernel := To_Vector ((0 => (118, 77, 0, 
False)));
-            Table.States (444).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 118, 3)));
-            Table.States (445).Action_List.Set_Capacity (21);
-            Add_Action (Table.States (445), 3, 122);
-            Add_Action (Table.States (445), 28, 517);
-            Add_Action (Table.States (445), 35, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (445), 39, 123);
-            Add_Action (Table.States (445), 40, 262);
-            Add_Action (Table.States (445), 41, 125);
-            Add_Action (Table.States (445), 44, 264);
-            Add_Action (Table.States (445), 52, 126);
-            Add_Action (Table.States (445), 76, 127);
-            Add_Action (Table.States (445), 77, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (445), 79, 31);
-            Add_Action (Table.States (445), 80, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (445), 84, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (445), 88, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (445), 95, 128);
-            Add_Action (Table.States (445), 96, 129);
-            Add_Action (Table.States (445), 97, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (445), 104, 130);
-            Add_Action (Table.States (445), 105, 120);
-            Add_Action (Table.States (445), 106, 34);
-            Add_Action (Table.States (445), 107, 265);
-            Table.States (445).Goto_List.Set_Capacity (23);
-            Add_Goto (Table.States (445), 118, 131);
-            Add_Goto (Table.States (445), 125, 604);
-            Add_Goto (Table.States (445), 129, 42);
-            Add_Goto (Table.States (445), 166, 270);
-            Add_Goto (Table.States (445), 167, 271);
-            Add_Goto (Table.States (445), 192, 409);
-            Add_Goto (Table.States (445), 198, 134);
-            Add_Goto (Table.States (445), 240, 275);
-            Add_Goto (Table.States (445), 259, 136);
-            Add_Goto (Table.States (445), 273, 93);
-            Add_Goto (Table.States (445), 276, 137);
-            Add_Goto (Table.States (445), 278, 277);
-            Add_Goto (Table.States (445), 283, 138);
-            Add_Goto (Table.States (445), 284, 139);
-            Add_Goto (Table.States (445), 285, 140);
-            Add_Goto (Table.States (445), 286, 141);
-            Add_Goto (Table.States (445), 287, 142);
-            Add_Goto (Table.States (445), 288, 143);
-            Add_Goto (Table.States (445), 294, 98);
-            Add_Goto (Table.States (445), 302, 278);
-            Add_Goto (Table.States (445), 321, 145);
-            Add_Goto (Table.States (445), 322, 146);
-            Add_Goto (Table.States (445), 331, 147);
-            Table.States (445).Kernel := To_Vector ((0 => (126, 84, 0, True)));
-            Table.States (445).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 125, 0)));
-            Table.States (445).Minimal_Complete_Actions_Recursive := True;
-            Table.States (446).Action_List.Set_Capacity (64);
-            Add_Action (Table.States (446), (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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (118, 4), 3,
-            aggregate_4'Access, null);
-            Table.States (446).Kernel := To_Vector ((0 => (118, 77, 0, 
False)));
-            Table.States (446).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 118, 3)));
-            Table.States (447).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (447), 3, 122);
-            Add_Action (Table.States (447), 39, 123);
-            Add_Action (Table.States (447), 40, 262);
-            Add_Action (Table.States (447), 41, 125);
-            Add_Action (Table.States (447), 44, 264);
-            Add_Action (Table.States (447), 52, 126);
-            Add_Action (Table.States (447), 76, 127);
-            Add_Action (Table.States (447), 79, 31);
-            Add_Action (Table.States (447), 95, 128);
-            Add_Action (Table.States (447), 96, 129);
-            Add_Action (Table.States (447), 104, 130);
-            Add_Action (Table.States (447), 105, 120);
-            Add_Action (Table.States (447), 106, 34);
-            Add_Action (Table.States (447), 107, 35);
-            Table.States (447).Goto_List.Set_Capacity (21);
-            Add_Goto (Table.States (447), 118, 131);
-            Add_Goto (Table.States (447), 129, 42);
-            Add_Goto (Table.States (447), 166, 605);
-            Add_Goto (Table.States (447), 192, 606);
-            Add_Goto (Table.States (447), 198, 134);
-            Add_Goto (Table.States (447), 240, 275);
-            Add_Goto (Table.States (447), 259, 136);
-            Add_Goto (Table.States (447), 273, 93);
-            Add_Goto (Table.States (447), 276, 137);
-            Add_Goto (Table.States (447), 278, 277);
-            Add_Goto (Table.States (447), 283, 138);
-            Add_Goto (Table.States (447), 284, 139);
-            Add_Goto (Table.States (447), 285, 140);
-            Add_Goto (Table.States (447), 286, 141);
-            Add_Goto (Table.States (447), 287, 142);
-            Add_Goto (Table.States (447), 288, 143);
-            Add_Goto (Table.States (447), 294, 98);
-            Add_Goto (Table.States (447), 302, 278);
-            Add_Goto (Table.States (447), 321, 145);
-            Add_Goto (Table.States (447), 322, 146);
-            Add_Goto (Table.States (447), 331, 147);
-            Table.States (447).Kernel := To_Vector ((0 => (167, 80, 1, True)));
-            Table.States (447).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (447).Minimal_Complete_Actions_Recursive := True;
-            Table.States (448).Action_List.Set_Capacity (18);
-            Add_Action (Table.States (448), 3, 122);
-            Add_Action (Table.States (448), 35, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (448), 39, 123);
-            Add_Action (Table.States (448), 40, 124);
-            Add_Action (Table.States (448), 41, 125);
-            Add_Action (Table.States (448), 52, 126);
-            Add_Action (Table.States (448), 76, 127);
-            Add_Action (Table.States (448), 77, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (448), 79, 31);
-            Add_Action (Table.States (448), 81, 607);
-            Add_Action (Table.States (448), 84, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (448), 95, 128);
-            Add_Action (Table.States (448), 96, 129);
-            Add_Action (Table.States (448), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (448), 104, 130);
-            Add_Action (Table.States (448), 105, 120);
-            Add_Action (Table.States (448), 106, 34);
-            Add_Action (Table.States (448), 107, 35);
-            Table.States (448).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (448), 118, 131);
-            Add_Goto (Table.States (448), 129, 42);
-            Add_Goto (Table.States (448), 192, 132);
-            Add_Goto (Table.States (448), 193, 608);
-            Add_Goto (Table.States (448), 198, 134);
-            Add_Goto (Table.States (448), 240, 135);
-            Add_Goto (Table.States (448), 259, 136);
-            Add_Goto (Table.States (448), 273, 93);
-            Add_Goto (Table.States (448), 276, 137);
-            Add_Goto (Table.States (448), 283, 138);
-            Add_Goto (Table.States (448), 284, 139);
-            Add_Goto (Table.States (448), 285, 140);
-            Add_Goto (Table.States (448), 286, 141);
-            Add_Goto (Table.States (448), 287, 142);
-            Add_Goto (Table.States (448), 288, 143);
-            Add_Goto (Table.States (448), 294, 98);
-            Add_Goto (Table.States (448), 302, 144);
-            Add_Goto (Table.States (448), 321, 145);
-            Add_Goto (Table.States (448), 322, 146);
-            Add_Goto (Table.States (448), 331, 147);
-            Table.States (448).Kernel := To_Vector (((125, 88, 0, False), 
(125, 88, 1, False)));
-            Table.States (448).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (449).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (449), 19, 609);
-            Table.States (449).Kernel := To_Vector ((0 => (118, 74, 2, 
False)));
-            Table.States (449).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 19, 609)));
-            Table.States (450).Action_List.Set_Capacity (19);
-            Add_Action (Table.States (450), 3, 122);
-            Add_Action (Table.States (450), 28, 517);
-            Add_Action (Table.States (450), 39, 123);
-            Add_Action (Table.States (450), 40, 262);
-            Add_Action (Table.States (450), 41, 610);
-            Add_Action (Table.States (450), 44, 264);
-            Add_Action (Table.States (450), 52, 126);
-            Add_Action (Table.States (450), 76, 127);
-            Add_Action (Table.States (450), 77, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (450), 79, 31);
-            Add_Action (Table.States (450), 80, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (450), 84, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (450), 88, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (450), 95, 128);
-            Add_Action (Table.States (450), 96, 129);
-            Add_Action (Table.States (450), 104, 130);
-            Add_Action (Table.States (450), 105, 120);
-            Add_Action (Table.States (450), 106, 34);
-            Add_Action (Table.States (450), 107, 265);
-            Table.States (450).Goto_List.Set_Capacity (24);
-            Add_Goto (Table.States (450), 118, 131);
-            Add_Goto (Table.States (450), 125, 266);
-            Add_Goto (Table.States (450), 126, 611);
-            Add_Goto (Table.States (450), 129, 42);
-            Add_Goto (Table.States (450), 166, 270);
-            Add_Goto (Table.States (450), 167, 271);
-            Add_Goto (Table.States (450), 192, 409);
-            Add_Goto (Table.States (450), 198, 134);
-            Add_Goto (Table.States (450), 240, 275);
-            Add_Goto (Table.States (450), 259, 136);
-            Add_Goto (Table.States (450), 273, 93);
-            Add_Goto (Table.States (450), 276, 137);
-            Add_Goto (Table.States (450), 278, 277);
-            Add_Goto (Table.States (450), 283, 138);
-            Add_Goto (Table.States (450), 284, 139);
-            Add_Goto (Table.States (450), 285, 140);
-            Add_Goto (Table.States (450), 286, 141);
-            Add_Goto (Table.States (450), 287, 142);
-            Add_Goto (Table.States (450), 288, 143);
-            Add_Goto (Table.States (450), 294, 98);
-            Add_Goto (Table.States (450), 302, 278);
-            Add_Goto (Table.States (450), 321, 145);
-            Add_Goto (Table.States (450), 322, 146);
-            Add_Goto (Table.States (450), 331, 147);
-            Table.States (450).Kernel := To_Vector (((118, 74, 3, False), 
(118, 74, 1, False)));
-            Table.States (450).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 126, 0)));
-            Table.States (451).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (451), 7, 417);
-            Add_Action (Table.States (451), 19, 418);
-            Add_Action (Table.States (451), 20, 419);
-            Add_Action (Table.States (451), 38, 420);
-            Add_Action (Table.States (451), 53, 612);
-            Add_Action (Table.States (451), 76, 127);
-            Add_Action (Table.States (451), 105, 421);
-            Table.States (451).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (451), 118, 422);
-            Add_Goto (Table.States (451), 130, 423);
-            Table.States (451).Kernel := To_Vector (((129, 323, 1, True), 
(273, 323, 2, True), (278, 323, 3, False),
-            (278, 323, 1, False)));
-            Table.States (451).Minimal_Complete_Actions := To_Vector (((Shift, 
105, 421), (Shift, 53, 612)));
-            Table.States (451).Minimal_Complete_Actions_Recursive := True;
-            Table.States (452).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (452), 3, 122);
-            Add_Action (Table.States (452), 39, 123);
-            Add_Action (Table.States (452), 40, 124);
-            Add_Action (Table.States (452), 41, 125);
-            Add_Action (Table.States (452), 76, 127);
-            Add_Action (Table.States (452), 79, 31);
-            Add_Action (Table.States (452), 95, 128);
-            Add_Action (Table.States (452), 96, 129);
-            Add_Action (Table.States (452), 104, 130);
-            Add_Action (Table.States (452), 105, 120);
-            Add_Action (Table.States (452), 106, 34);
-            Add_Action (Table.States (452), 107, 35);
-            Table.States (452).Goto_List.Set_Capacity (11);
-            Add_Goto (Table.States (452), 118, 131);
-            Add_Goto (Table.States (452), 129, 42);
-            Add_Goto (Table.States (452), 198, 134);
-            Add_Goto (Table.States (452), 240, 135);
-            Add_Goto (Table.States (452), 259, 136);
-            Add_Goto (Table.States (452), 273, 93);
-            Add_Goto (Table.States (452), 294, 98);
-            Add_Goto (Table.States (452), 302, 613);
-            Add_Goto (Table.States (452), 321, 145);
-            Add_Goto (Table.States (452), 322, 146);
-            Add_Goto (Table.States (452), 331, 147);
-            Table.States (452).Kernel := To_Vector ((0 => (278, 86, 1, 
False)));
-            Table.States (452).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (453).Action_List.Set_Capacity (16);
-            Add_Action (Table.States (453), 3, 122);
-            Add_Action (Table.States (453), 39, 123);
-            Add_Action (Table.States (453), 40, 262);
-            Add_Action (Table.States (453), 41, 125);
-            Add_Action (Table.States (453), 44, 264);
-            Add_Action (Table.States (453), 52, 126);
-            Add_Action (Table.States (453), 76, 127);
-            Add_Action (Table.States (453), 79, 31);
-            Add_Action (Table.States (453), 80, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (453), 88, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (453), 95, 128);
-            Add_Action (Table.States (453), 96, 129);
-            Add_Action (Table.States (453), 104, 130);
-            Add_Action (Table.States (453), 105, 120);
-            Add_Action (Table.States (453), 106, 34);
-            Add_Action (Table.States (453), 107, 35);
-            Table.States (453).Goto_List.Set_Capacity (22);
-            Add_Goto (Table.States (453), 118, 131);
-            Add_Goto (Table.States (453), 129, 42);
-            Add_Goto (Table.States (453), 166, 270);
-            Add_Goto (Table.States (453), 167, 614);
-            Add_Goto (Table.States (453), 192, 606);
-            Add_Goto (Table.States (453), 198, 134);
-            Add_Goto (Table.States (453), 240, 275);
-            Add_Goto (Table.States (453), 259, 136);
-            Add_Goto (Table.States (453), 273, 93);
-            Add_Goto (Table.States (453), 276, 137);
-            Add_Goto (Table.States (453), 278, 277);
-            Add_Goto (Table.States (453), 283, 138);
-            Add_Goto (Table.States (453), 284, 139);
-            Add_Goto (Table.States (453), 285, 140);
-            Add_Goto (Table.States (453), 286, 141);
-            Add_Goto (Table.States (453), 287, 142);
-            Add_Goto (Table.States (453), 288, 143);
-            Add_Goto (Table.States (453), 294, 98);
-            Add_Goto (Table.States (453), 302, 278);
-            Add_Goto (Table.States (453), 321, 145);
-            Add_Goto (Table.States (453), 322, 146);
-            Add_Goto (Table.States (453), 331, 147);
-            Table.States (453).Kernel := To_Vector ((0 => (141, 72, 1, 
False)));
-            Table.States (453).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 167, 0)));
-            Table.States (454).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (454), (24, 72), (142, 1), 1, null, null);
-            Table.States (454).Kernel := To_Vector ((0 => (142, 141, 0, 
False)));
-            Table.States (454).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 142, 1)));
-            Table.States (455).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (455), 24, 615);
-            Add_Action (Table.States (455), 72, 453);
-            Table.States (455).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (455), 141, 616);
-            Table.States (455).Kernel := To_Vector (((140, 142, 3, False), 
(142, 142, 2, True)));
-            Table.States (455).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 615)));
-            Table.States (456).Action_List.Set_Capacity (35);
-            Add_Action (Table.States (456), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 77,
-            78, 80, 83, 84, 86, 87, 88, 89, 90, 92, 93, 95, 96, 97, 98, 99, 
100), (198, 0), 3, null, null);
-            Table.States (456).Kernel := To_Vector ((0 => (198, 259, 0, 
False)));
-            Table.States (456).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 198, 3)));
+            Add_Action (Table.States (442), 107, (233, 0), 398);
+            Table.States (442).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (442), 233, 603);
+            Table.States (442).Kernel := To_Vector ((0 => ((276, 0),  277,  4, 
(2147483647, 0),  0)));
+            Table.States (442).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (233, 0),  107, 398)));
+            Table.States (443).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (443), 68, (224, 0), 604);
+            Table.States (443).Kernel := To_Vector ((((224, 0),  195,  4, 
(2147483647, 0),  0), ((224, 1),  195,  2,
+            (2147483647, 0),  0), ((224, 2),  195,  3, (2147483647, 0),  0), 
((224, 3),  195,  1, (2147483647, 0),
+            0)));
+            Table.States (443).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (224, 0),  68, 604)));
+            Table.States (444).Action_List.Set_Capacity (31);
+            Add_Action (Table.States (444), 10, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 33, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 35, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 38, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 40, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 43, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 55, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 74, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 75, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 78, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 79, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 80, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 81, (242, 8), 31);
+            Add_Action (Table.States (444), 82, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 86, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 88, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 89, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 90, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 91, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 92, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 94, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 95, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 97, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 98, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 99, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 100, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 101, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 102, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (444), 107, (242, 5), 120);
+            Add_Action (Table.States (444), 108, (242, 7), 34);
+            Add_Action (Table.States (444), 109, (242, 6), 35);
+            Table.States (444).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (444), 131, 42);
+            Add_Goto (Table.States (444), 242, 605);
+            Add_Goto (Table.States (444), 275, 93);
+            Add_Goto (Table.States (444), 296, 98);
+            Table.States (444).Kernel := To_Vector ((((168, 1),  41,  1, 
(2147483647, 0),  0), ((261, 1),  41,  0,
+            (261, 1),  1)));
+            Table.States (444).Minimal_Complete_Actions := To_Vector (((Shift, 
(242, 5),  107, 120), (Reduce, (261, 1),
+             1)));
+            Table.States (445).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (445), 78, (120, 1), 606);
+            Table.States (445).Kernel := To_Vector ((0 => ((120, 1),  54,  1, 
(2147483647, 0),  0)));
+            Table.States (445).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (120, 1),  78, 606)));
+            Table.States (446).Action_List.Set_Capacity (20);
+            Add_Action (Table.States (446), 3, (200, 2), 122);
+            Add_Action (Table.States (446), 35, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (446), 39, (261, 4), 123);
+            Add_Action (Table.States (446), 40, (200, 3), 124);
+            Add_Action (Table.States (446), 41, (261, 1), 125);
+            Add_Action (Table.States (446), 52, (278, 0), 126);
+            Add_Action (Table.States (446), 76, (120, 0), 127);
+            Add_Action (Table.States (446), 77, (120, 5), 128);
+            Add_Action (Table.States (446), 78, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (446), 79, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (446), 81, (242, 8), 31);
+            Add_Action (Table.States (446), 83, (127, 1), 607);
+            Add_Action (Table.States (446), 86, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (446), 97, (333, 1), 129);
+            Add_Action (Table.States (446), 98, (333, 0), 130);
+            Add_Action (Table.States (446), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (446), 106, (261, 0), 131);
+            Add_Action (Table.States (446), 107, (242, 5), 120);
+            Add_Action (Table.States (446), 108, (242, 7), 34);
+            Add_Action (Table.States (446), 109, (242, 6), 35);
+            Table.States (446).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (446), 120, 132);
+            Add_Goto (Table.States (446), 131, 42);
+            Add_Goto (Table.States (446), 194, 133);
+            Add_Goto (Table.States (446), 195, 608);
+            Add_Goto (Table.States (446), 200, 135);
+            Add_Goto (Table.States (446), 242, 136);
+            Add_Goto (Table.States (446), 261, 137);
+            Add_Goto (Table.States (446), 275, 93);
+            Add_Goto (Table.States (446), 278, 138);
+            Add_Goto (Table.States (446), 285, 139);
+            Add_Goto (Table.States (446), 286, 140);
+            Add_Goto (Table.States (446), 287, 141);
+            Add_Goto (Table.States (446), 288, 142);
+            Add_Goto (Table.States (446), 289, 143);
+            Add_Goto (Table.States (446), 290, 144);
+            Add_Goto (Table.States (446), 296, 98);
+            Add_Goto (Table.States (446), 304, 145);
+            Add_Goto (Table.States (446), 323, 146);
+            Add_Goto (Table.States (446), 324, 147);
+            Add_Goto (Table.States (446), 333, 148);
+            Table.States (446).Kernel := To_Vector ((((127, 0),  90,  0, (195, 
1),  0), ((127, 1),  90,  1,
+            (2147483647, 0),  0)));
+            Table.States (446).Minimal_Complete_Actions := To_Vector 
(((Reduce, (195, 1),  0), (Shift, (127, 1),  83,
+            607)));
+            Table.States (447).Action_List.Set_Capacity (65);
+            Add_Action (Table.States (447), (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, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (120, 0),  3,
+            aggregate_0'Access, null);
+            Table.States (447).Kernel := To_Vector ((0 => ((120, 0),  78,  0, 
(120, 0),  3)));
+            Table.States (447).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (120, 0),  3)));
+            Table.States (448).Action_List.Set_Capacity (23);
+            Add_Action (Table.States (448), 3, (200, 2), 122);
+            Add_Action (Table.States (448), 28, (127, 6), 521);
+            Add_Action (Table.States (448), 35, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (448), 39, (261, 4), 123);
+            Add_Action (Table.States (448), 40, (168, 1), 263);
+            Add_Action (Table.States (448), 41, (261, 1), 125);
+            Add_Action (Table.States (448), 44, (168, 3), 265);
+            Add_Action (Table.States (448), 52, (278, 0), 126);
+            Add_Action (Table.States (448), 76, (120, 0), 127);
+            Add_Action (Table.States (448), 77, (120, 5), 128);
+            Add_Action (Table.States (448), 78, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (448), 79, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (448), 81, (242, 8), 31);
+            Add_Action (Table.States (448), 82, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (448), 86, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (448), 90, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (448), 97, (333, 1), 129);
+            Add_Action (Table.States (448), 98, (333, 0), 130);
+            Add_Action (Table.States (448), 99, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (448), 106, (261, 0), 131);
+            Add_Action (Table.States (448), 107, (242, 5), 120);
+            Add_Action (Table.States (448), 108, (242, 7), 34);
+            Add_Action (Table.States (448), 109, (127, 0), 266);
+            Table.States (448).Goto_List.Set_Capacity (23);
+            Add_Goto (Table.States (448), 120, 132);
+            Add_Goto (Table.States (448), 127, 609);
+            Add_Goto (Table.States (448), 131, 42);
+            Add_Goto (Table.States (448), 168, 271);
+            Add_Goto (Table.States (448), 169, 272);
+            Add_Goto (Table.States (448), 194, 411);
+            Add_Goto (Table.States (448), 200, 135);
+            Add_Goto (Table.States (448), 242, 276);
+            Add_Goto (Table.States (448), 261, 137);
+            Add_Goto (Table.States (448), 275, 93);
+            Add_Goto (Table.States (448), 278, 138);
+            Add_Goto (Table.States (448), 280, 278);
+            Add_Goto (Table.States (448), 285, 139);
+            Add_Goto (Table.States (448), 286, 140);
+            Add_Goto (Table.States (448), 287, 141);
+            Add_Goto (Table.States (448), 288, 142);
+            Add_Goto (Table.States (448), 289, 143);
+            Add_Goto (Table.States (448), 290, 144);
+            Add_Goto (Table.States (448), 296, 98);
+            Add_Goto (Table.States (448), 304, 279);
+            Add_Goto (Table.States (448), 323, 146);
+            Add_Goto (Table.States (448), 324, 147);
+            Add_Goto (Table.States (448), 333, 148);
+            Table.States (448).Kernel := To_Vector ((0 => ((128, 0),  86,  0, 
(127, 5),  0)));
+            Table.States (448).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (127, 5),  0)));
+            Table.States (449).Action_List.Set_Capacity (65);
+            Add_Action (Table.States (449), (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, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (120, 6),  3,
+            aggregate_6'Access, null);
+            Table.States (449).Kernel := To_Vector ((0 => ((120, 6),  78,  0, 
(120, 6),  3)));
+            Table.States (449).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (120, 6),  3)));
+            Table.States (450).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (450), 3, (200, 2), 122);
+            Add_Action (Table.States (450), 39, (261, 4), 123);
+            Add_Action (Table.States (450), 40, (168, 1), 263);
+            Add_Action (Table.States (450), 41, (261, 1), 125);
+            Add_Action (Table.States (450), 44, (168, 3), 265);
+            Add_Action (Table.States (450), 52, (278, 0), 126);
+            Add_Action (Table.States (450), 76, (120, 0), 127);
+            Add_Action (Table.States (450), 77, (120, 5), 128);
+            Add_Action (Table.States (450), 81, (242, 8), 31);
+            Add_Action (Table.States (450), 97, (333, 1), 129);
+            Add_Action (Table.States (450), 98, (333, 0), 130);
+            Add_Action (Table.States (450), 106, (261, 0), 131);
+            Add_Action (Table.States (450), 107, (242, 5), 120);
+            Add_Action (Table.States (450), 108, (242, 7), 34);
+            Add_Action (Table.States (450), 109, (242, 6), 35);
+            Table.States (450).Goto_List.Set_Capacity (21);
+            Add_Goto (Table.States (450), 120, 132);
+            Add_Goto (Table.States (450), 131, 42);
+            Add_Goto (Table.States (450), 168, 610);
+            Add_Goto (Table.States (450), 194, 611);
+            Add_Goto (Table.States (450), 200, 135);
+            Add_Goto (Table.States (450), 242, 276);
+            Add_Goto (Table.States (450), 261, 137);
+            Add_Goto (Table.States (450), 275, 93);
+            Add_Goto (Table.States (450), 278, 138);
+            Add_Goto (Table.States (450), 280, 278);
+            Add_Goto (Table.States (450), 285, 139);
+            Add_Goto (Table.States (450), 286, 140);
+            Add_Goto (Table.States (450), 287, 141);
+            Add_Goto (Table.States (450), 288, 142);
+            Add_Goto (Table.States (450), 289, 143);
+            Add_Goto (Table.States (450), 290, 144);
+            Add_Goto (Table.States (450), 296, 98);
+            Add_Goto (Table.States (450), 304, 279);
+            Add_Goto (Table.States (450), 323, 146);
+            Add_Goto (Table.States (450), 324, 147);
+            Add_Goto (Table.States (450), 333, 148);
+            Table.States (450).Kernel := To_Vector ((0 => ((169, 0),  82,  1, 
(2147483647, 0),  0)));
+            Table.States (450).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (451).Action_List.Set_Capacity (20);
+            Add_Action (Table.States (451), 3, (200, 2), 122);
+            Add_Action (Table.States (451), 35, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (451), 39, (261, 4), 123);
+            Add_Action (Table.States (451), 40, (200, 3), 124);
+            Add_Action (Table.States (451), 41, (261, 1), 125);
+            Add_Action (Table.States (451), 52, (278, 0), 126);
+            Add_Action (Table.States (451), 76, (120, 0), 127);
+            Add_Action (Table.States (451), 77, (120, 5), 128);
+            Add_Action (Table.States (451), 78, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (451), 79, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (451), 81, (242, 8), 31);
+            Add_Action (Table.States (451), 83, (127, 3), 612);
+            Add_Action (Table.States (451), 86, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (451), 97, (333, 1), 129);
+            Add_Action (Table.States (451), 98, (333, 0), 130);
+            Add_Action (Table.States (451), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (451), 106, (261, 0), 131);
+            Add_Action (Table.States (451), 107, (242, 5), 120);
+            Add_Action (Table.States (451), 108, (242, 7), 34);
+            Add_Action (Table.States (451), 109, (242, 6), 35);
+            Table.States (451).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (451), 120, 132);
+            Add_Goto (Table.States (451), 131, 42);
+            Add_Goto (Table.States (451), 194, 133);
+            Add_Goto (Table.States (451), 195, 613);
+            Add_Goto (Table.States (451), 200, 135);
+            Add_Goto (Table.States (451), 242, 136);
+            Add_Goto (Table.States (451), 261, 137);
+            Add_Goto (Table.States (451), 275, 93);
+            Add_Goto (Table.States (451), 278, 138);
+            Add_Goto (Table.States (451), 285, 139);
+            Add_Goto (Table.States (451), 286, 140);
+            Add_Goto (Table.States (451), 287, 141);
+            Add_Goto (Table.States (451), 288, 142);
+            Add_Goto (Table.States (451), 289, 143);
+            Add_Goto (Table.States (451), 290, 144);
+            Add_Goto (Table.States (451), 296, 98);
+            Add_Goto (Table.States (451), 304, 145);
+            Add_Goto (Table.States (451), 323, 146);
+            Add_Goto (Table.States (451), 324, 147);
+            Add_Goto (Table.States (451), 333, 148);
+            Table.States (451).Kernel := To_Vector ((((127, 2),  90,  0, (195, 
1),  0), ((127, 3),  90,  1,
+            (2147483647, 0),  0)));
+            Table.States (452).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (452), 19, (120, 4), 614);
+            Table.States (452).Kernel := To_Vector ((0 => ((120, 4),  74,  2, 
(2147483647, 0),  0)));
+            Table.States (452).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (120, 4),  19, 614)));
+            Table.States (453).Action_List.Set_Capacity (20);
+            Add_Action (Table.States (453), 3, (200, 2), 122);
+            Add_Action (Table.States (453), 28, (127, 6), 521);
+            Add_Action (Table.States (453), 39, (261, 4), 123);
+            Add_Action (Table.States (453), 40, (168, 1), 263);
+            Add_Action (Table.States (453), 41, (120, 2), 615);
+            Add_Action (Table.States (453), 44, (168, 3), 265);
+            Add_Action (Table.States (453), 52, (278, 0), 126);
+            Add_Action (Table.States (453), 76, (120, 0), 127);
+            Add_Action (Table.States (453), 77, (120, 5), 128);
+            Add_Action (Table.States (453), 78, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (453), 81, (242, 8), 31);
+            Add_Action (Table.States (453), 82, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (453), 86, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (453), 90, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (453), 97, (333, 1), 129);
+            Add_Action (Table.States (453), 98, (333, 0), 130);
+            Add_Action (Table.States (453), 106, (261, 0), 131);
+            Add_Action (Table.States (453), 107, (242, 5), 120);
+            Add_Action (Table.States (453), 108, (242, 7), 34);
+            Add_Action (Table.States (453), 109, (127, 0), 266);
+            Table.States (453).Goto_List.Set_Capacity (24);
+            Add_Goto (Table.States (453), 120, 132);
+            Add_Goto (Table.States (453), 127, 267);
+            Add_Goto (Table.States (453), 128, 616);
+            Add_Goto (Table.States (453), 131, 42);
+            Add_Goto (Table.States (453), 168, 271);
+            Add_Goto (Table.States (453), 169, 272);
+            Add_Goto (Table.States (453), 194, 411);
+            Add_Goto (Table.States (453), 200, 135);
+            Add_Goto (Table.States (453), 242, 276);
+            Add_Goto (Table.States (453), 261, 137);
+            Add_Goto (Table.States (453), 275, 93);
+            Add_Goto (Table.States (453), 278, 138);
+            Add_Goto (Table.States (453), 280, 278);
+            Add_Goto (Table.States (453), 285, 139);
+            Add_Goto (Table.States (453), 286, 140);
+            Add_Goto (Table.States (453), 287, 141);
+            Add_Goto (Table.States (453), 288, 142);
+            Add_Goto (Table.States (453), 289, 143);
+            Add_Goto (Table.States (453), 290, 144);
+            Add_Goto (Table.States (453), 296, 98);
+            Add_Goto (Table.States (453), 304, 279);
+            Add_Goto (Table.States (453), 323, 146);
+            Add_Goto (Table.States (453), 324, 147);
+            Add_Goto (Table.States (453), 333, 148);
+            Table.States (453).Kernel := To_Vector ((((120, 2),  74,  3, 
(2147483647, 0),  0), ((120, 3),  74,  1,
+            (2147483647, 0),  0)));
+            Table.States (453).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (128, 1),  0)));
+            Table.States (454).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (454), 7, (132, 2), 419);
+            Add_Action (Table.States (454), 19, (132, 3), 420);
+            Add_Action (Table.States (454), 20, (132, 4), 421);
+            Add_Action (Table.States (454), 38, (132, 5), 422);
+            Add_Action (Table.States (454), 53, (280, 0), 617);
+            Add_Action (Table.States (454), 76, (120, 0), 127);
+            Add_Action (Table.States (454), 77, (120, 5), 128);
+            Add_Action (Table.States (454), 107, (132, 0), 423);
+            Table.States (454).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (454), 120, 424);
+            Add_Goto (Table.States (454), 132, 425);
+            Table.States (454).Kernel := To_Vector ((((131, 0),  325,  1, 
(2147483647, 0),  0), ((275, 0),  325,  2,
+            (2147483647, 0),  0), ((280, 0),  325,  3, (2147483647, 0),  0), 
((280, 1),  325,  1, (2147483647, 0),
+            0)));
+            Table.States (455).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (455), 3, (200, 2), 122);
+            Add_Action (Table.States (455), 39, (261, 4), 123);
+            Add_Action (Table.States (455), 40, (200, 3), 124);
+            Add_Action (Table.States (455), 41, (261, 1), 125);
+            Add_Action (Table.States (455), 76, (120, 0), 127);
+            Add_Action (Table.States (455), 77, (120, 5), 128);
+            Add_Action (Table.States (455), 81, (242, 8), 31);
+            Add_Action (Table.States (455), 97, (333, 1), 129);
+            Add_Action (Table.States (455), 98, (333, 0), 130);
+            Add_Action (Table.States (455), 106, (261, 0), 131);
+            Add_Action (Table.States (455), 107, (242, 5), 120);
+            Add_Action (Table.States (455), 108, (242, 7), 34);
+            Add_Action (Table.States (455), 109, (242, 6), 35);
+            Table.States (455).Goto_List.Set_Capacity (11);
+            Add_Goto (Table.States (455), 120, 132);
+            Add_Goto (Table.States (455), 131, 42);
+            Add_Goto (Table.States (455), 200, 135);
+            Add_Goto (Table.States (455), 242, 136);
+            Add_Goto (Table.States (455), 261, 137);
+            Add_Goto (Table.States (455), 275, 93);
+            Add_Goto (Table.States (455), 296, 98);
+            Add_Goto (Table.States (455), 304, 618);
+            Add_Goto (Table.States (455), 323, 146);
+            Add_Goto (Table.States (455), 324, 147);
+            Add_Goto (Table.States (455), 333, 148);
+            Table.States (455).Kernel := To_Vector ((0 => ((280, 2),  88,  1, 
(2147483647, 0),  0)));
+            Table.States (455).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (456).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (456), 19, (120, 5), 619);
+            Table.States (456).Kernel := To_Vector ((0 => ((120, 5),  74,  2, 
(2147483647, 0),  0)));
+            Table.States (456).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (120, 5),  19, 619)));
             Table.States (457).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (457), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 80, 84, 88, 97), (283,
-            0), 3, null, null);
-            Table.States (457).Kernel := To_Vector ((0 => (283, 288, 0, 
True)));
-            Table.States (457).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 283, 3)));
-            Table.States (457).Minimal_Complete_Actions_Recursive := True;
-            Table.States (458).Action_List.Set_Capacity (13);
-            Add_Action (Table.States (458), 3, 122);
-            Add_Action (Table.States (458), 39, 123);
-            Add_Action (Table.States (458), 40, 124);
-            Add_Action (Table.States (458), 41, 125);
-            Add_Action (Table.States (458), 52, 126);
-            Add_Action (Table.States (458), 76, 127);
-            Add_Action (Table.States (458), 79, 31);
-            Add_Action (Table.States (458), 95, 128);
-            Add_Action (Table.States (458), 96, 129);
-            Add_Action (Table.States (458), 104, 130);
-            Add_Action (Table.States (458), 105, 120);
-            Add_Action (Table.States (458), 106, 34);
-            Add_Action (Table.States (458), 107, 35);
-            Table.States (458).Goto_List.Set_Capacity (13);
-            Add_Goto (Table.States (458), 118, 131);
-            Add_Goto (Table.States (458), 129, 42);
-            Add_Goto (Table.States (458), 198, 134);
-            Add_Goto (Table.States (458), 240, 135);
-            Add_Goto (Table.States (458), 259, 136);
-            Add_Goto (Table.States (458), 273, 93);
-            Add_Goto (Table.States (458), 276, 137);
-            Add_Goto (Table.States (458), 288, 617);
-            Add_Goto (Table.States (458), 294, 98);
-            Add_Goto (Table.States (458), 302, 144);
-            Add_Goto (Table.States (458), 321, 145);
-            Add_Goto (Table.States (458), 322, 146);
-            Add_Goto (Table.States (458), 331, 147);
-            Table.States (458).Kernel := To_Vector ((0 => (284, 68, 1, True)));
-            Table.States (458).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (458).Minimal_Complete_Actions_Recursive := True;
-            Table.States (459).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (459), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 80, 84, 88, 97), (285,
-            0), 3, null, null);
-            Table.States (459).Kernel := To_Vector ((0 => (285, 288, 0, 
True)));
-            Table.States (459).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 285, 3)));
-            Table.States (459).Minimal_Complete_Actions_Recursive := True;
-            Table.States (460).Action_List.Set_Capacity (13);
-            Add_Action (Table.States (460), 3, 122);
-            Add_Action (Table.States (460), 39, 123);
-            Add_Action (Table.States (460), 40, 124);
-            Add_Action (Table.States (460), 41, 125);
-            Add_Action (Table.States (460), 52, 126);
-            Add_Action (Table.States (460), 76, 127);
-            Add_Action (Table.States (460), 79, 31);
-            Add_Action (Table.States (460), 95, 128);
-            Add_Action (Table.States (460), 96, 129);
-            Add_Action (Table.States (460), 104, 130);
-            Add_Action (Table.States (460), 105, 120);
-            Add_Action (Table.States (460), 106, 34);
-            Add_Action (Table.States (460), 107, 35);
-            Table.States (460).Goto_List.Set_Capacity (13);
-            Add_Goto (Table.States (460), 118, 131);
-            Add_Goto (Table.States (460), 129, 42);
-            Add_Goto (Table.States (460), 198, 134);
-            Add_Goto (Table.States (460), 240, 135);
-            Add_Goto (Table.States (460), 259, 136);
-            Add_Goto (Table.States (460), 273, 93);
-            Add_Goto (Table.States (460), 276, 137);
-            Add_Goto (Table.States (460), 288, 618);
-            Add_Goto (Table.States (460), 294, 98);
-            Add_Goto (Table.States (460), 302, 144);
-            Add_Goto (Table.States (460), 321, 145);
-            Add_Goto (Table.States (460), 322, 146);
-            Add_Goto (Table.States (460), 331, 147);
-            Table.States (460).Kernel := To_Vector ((0 => (286, 22, 1, True)));
-            Table.States (460).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (460).Minimal_Complete_Actions_Recursive := True;
-            Table.States (461).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (461), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 80, 84, 88, 97), (287,
-            0), 3, null, null);
-            Table.States (461).Kernel := To_Vector ((0 => (287, 288, 0, 
True)));
-            Table.States (461).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 287, 3)));
-            Table.States (461).Minimal_Complete_Actions_Recursive := True;
-            Table.States (462).Action_List.Set_Capacity (13);
-            Add_Action (Table.States (462), 3, 122);
-            Add_Action (Table.States (462), 39, 123);
-            Add_Action (Table.States (462), 40, 124);
-            Add_Action (Table.States (462), 41, 125);
-            Add_Action (Table.States (462), 52, 126);
-            Add_Action (Table.States (462), 76, 127);
-            Add_Action (Table.States (462), 79, 31);
-            Add_Action (Table.States (462), 95, 128);
-            Add_Action (Table.States (462), 96, 129);
-            Add_Action (Table.States (462), 104, 130);
-            Add_Action (Table.States (462), 105, 120);
-            Add_Action (Table.States (462), 106, 34);
-            Add_Action (Table.States (462), 107, 35);
+            Add_Action (Table.States (457), 3, (200, 2), 122);
+            Add_Action (Table.States (457), 39, (261, 4), 123);
+            Add_Action (Table.States (457), 40, (168, 1), 263);
+            Add_Action (Table.States (457), 41, (261, 1), 125);
+            Add_Action (Table.States (457), 44, (168, 3), 265);
+            Add_Action (Table.States (457), 52, (278, 0), 126);
+            Add_Action (Table.States (457), 76, (120, 0), 127);
+            Add_Action (Table.States (457), 77, (120, 5), 128);
+            Add_Action (Table.States (457), 81, (242, 8), 31);
+            Add_Action (Table.States (457), 82, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (457), 90, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (457), 97, (333, 1), 129);
+            Add_Action (Table.States (457), 98, (333, 0), 130);
+            Add_Action (Table.States (457), 106, (261, 0), 131);
+            Add_Action (Table.States (457), 107, (242, 5), 120);
+            Add_Action (Table.States (457), 108, (242, 7), 34);
+            Add_Action (Table.States (457), 109, (242, 6), 35);
+            Table.States (457).Goto_List.Set_Capacity (22);
+            Add_Goto (Table.States (457), 120, 132);
+            Add_Goto (Table.States (457), 131, 42);
+            Add_Goto (Table.States (457), 168, 271);
+            Add_Goto (Table.States (457), 169, 620);
+            Add_Goto (Table.States (457), 194, 611);
+            Add_Goto (Table.States (457), 200, 135);
+            Add_Goto (Table.States (457), 242, 276);
+            Add_Goto (Table.States (457), 261, 137);
+            Add_Goto (Table.States (457), 275, 93);
+            Add_Goto (Table.States (457), 278, 138);
+            Add_Goto (Table.States (457), 280, 278);
+            Add_Goto (Table.States (457), 285, 139);
+            Add_Goto (Table.States (457), 286, 140);
+            Add_Goto (Table.States (457), 287, 141);
+            Add_Goto (Table.States (457), 288, 142);
+            Add_Goto (Table.States (457), 289, 143);
+            Add_Goto (Table.States (457), 290, 144);
+            Add_Goto (Table.States (457), 296, 98);
+            Add_Goto (Table.States (457), 304, 279);
+            Add_Goto (Table.States (457), 323, 146);
+            Add_Goto (Table.States (457), 324, 147);
+            Add_Goto (Table.States (457), 333, 148);
+            Table.States (457).Kernel := To_Vector ((0 => ((143, 0),  72,  1, 
(2147483647, 0),  0)));
+            Table.States (457).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (169, 2),  0)));
+            Table.States (458).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (458), (24, 72), (144, 1),  1, null, 
null);
+            Table.States (458).Kernel := To_Vector ((0 => ((144, 1),  143,  0, 
(144, 1),  1)));
+            Table.States (458).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (144, 1),  1)));
+            Table.States (459).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (459), 24, (142, 0), 621);
+            Add_Action (Table.States (459), 72, (143, 0), 457);
+            Table.States (459).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (459), 143, 622);
+            Table.States (459).Kernel := To_Vector ((((142, 0),  144,  3, 
(2147483647, 0),  0), ((144, 0),  144,  2,
+            (2147483647, 0),  0)));
+            Table.States (459).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (142, 0),  24, 621)));
+            Table.States (460).Action_List.Set_Capacity (36);
+            Add_Action (Table.States (460), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 78,
+            79, 80, 82, 85, 86, 88, 89, 90, 91, 92, 94, 95, 97, 98, 99, 100, 
101, 102), (200, 0),  3, null, null);
+            Table.States (460).Kernel := To_Vector ((0 => ((200, 0),  261,  0, 
(200, 0),  3)));
+            Table.States (460).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (200, 0),  3)));
+            Table.States (461).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (461), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 78, 79, 82, 86, 90, 99),
+            (285, 0),  3, null, null);
+            Table.States (461).Kernel := To_Vector ((0 => ((285, 0),  290,  0, 
(285, 0),  3)));
+            Table.States (461).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (285, 0),  3)));
+            Table.States (462).Action_List.Set_Capacity (14);
+            Add_Action (Table.States (462), 3, (200, 2), 122);
+            Add_Action (Table.States (462), 39, (261, 4), 123);
+            Add_Action (Table.States (462), 40, (200, 3), 124);
+            Add_Action (Table.States (462), 41, (261, 1), 125);
+            Add_Action (Table.States (462), 52, (278, 0), 126);
+            Add_Action (Table.States (462), 76, (120, 0), 127);
+            Add_Action (Table.States (462), 77, (120, 5), 128);
+            Add_Action (Table.States (462), 81, (242, 8), 31);
+            Add_Action (Table.States (462), 97, (333, 1), 129);
+            Add_Action (Table.States (462), 98, (333, 0), 130);
+            Add_Action (Table.States (462), 106, (261, 0), 131);
+            Add_Action (Table.States (462), 107, (242, 5), 120);
+            Add_Action (Table.States (462), 108, (242, 7), 34);
+            Add_Action (Table.States (462), 109, (242, 6), 35);
             Table.States (462).Goto_List.Set_Capacity (13);
-            Add_Goto (Table.States (462), 118, 131);
-            Add_Goto (Table.States (462), 129, 42);
-            Add_Goto (Table.States (462), 198, 134);
-            Add_Goto (Table.States (462), 240, 135);
-            Add_Goto (Table.States (462), 259, 136);
-            Add_Goto (Table.States (462), 273, 93);
-            Add_Goto (Table.States (462), 276, 137);
-            Add_Goto (Table.States (462), 288, 619);
-            Add_Goto (Table.States (462), 294, 98);
-            Add_Goto (Table.States (462), 302, 144);
-            Add_Goto (Table.States (462), 321, 145);
-            Add_Goto (Table.States (462), 322, 146);
-            Add_Goto (Table.States (462), 331, 147);
-            Table.States (462).Kernel := To_Vector ((0 => (284, 68, 1, True)));
-            Table.States (462).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            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, 80, 84, 88, 97), (283,
-            1), 3, null, null);
-            Table.States (463).Kernel := To_Vector ((0 => (283, 288, 0, 
True)));
-            Table.States (463).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 283, 3)));
-            Table.States (463).Minimal_Complete_Actions_Recursive := True;
-            Table.States (464).Action_List.Set_Capacity (13);
-            Add_Action (Table.States (464), 3, 122);
-            Add_Action (Table.States (464), 39, 123);
-            Add_Action (Table.States (464), 40, 124);
-            Add_Action (Table.States (464), 41, 125);
-            Add_Action (Table.States (464), 52, 126);
-            Add_Action (Table.States (464), 76, 127);
-            Add_Action (Table.States (464), 79, 31);
-            Add_Action (Table.States (464), 95, 128);
-            Add_Action (Table.States (464), 96, 129);
-            Add_Action (Table.States (464), 104, 130);
-            Add_Action (Table.States (464), 105, 120);
-            Add_Action (Table.States (464), 106, 34);
-            Add_Action (Table.States (464), 107, 35);
+            Add_Goto (Table.States (462), 120, 132);
+            Add_Goto (Table.States (462), 131, 42);
+            Add_Goto (Table.States (462), 200, 135);
+            Add_Goto (Table.States (462), 242, 136);
+            Add_Goto (Table.States (462), 261, 137);
+            Add_Goto (Table.States (462), 275, 93);
+            Add_Goto (Table.States (462), 278, 138);
+            Add_Goto (Table.States (462), 290, 623);
+            Add_Goto (Table.States (462), 296, 98);
+            Add_Goto (Table.States (462), 304, 145);
+            Add_Goto (Table.States (462), 323, 146);
+            Add_Goto (Table.States (462), 324, 147);
+            Add_Goto (Table.States (462), 333, 148);
+            Table.States (462).Kernel := To_Vector ((0 => ((286, 0),  68,  1, 
(2147483647, 0),  0)));
+            Table.States (462).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (463).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (463), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 78, 79, 82, 86, 90, 99),
+            (287, 0),  3, null, null);
+            Table.States (463).Kernel := To_Vector ((0 => ((287, 0),  290,  0, 
(287, 0),  3)));
+            Table.States (463).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (287, 0),  3)));
+            Table.States (464).Action_List.Set_Capacity (14);
+            Add_Action (Table.States (464), 3, (200, 2), 122);
+            Add_Action (Table.States (464), 39, (261, 4), 123);
+            Add_Action (Table.States (464), 40, (200, 3), 124);
+            Add_Action (Table.States (464), 41, (261, 1), 125);
+            Add_Action (Table.States (464), 52, (278, 0), 126);
+            Add_Action (Table.States (464), 76, (120, 0), 127);
+            Add_Action (Table.States (464), 77, (120, 5), 128);
+            Add_Action (Table.States (464), 81, (242, 8), 31);
+            Add_Action (Table.States (464), 97, (333, 1), 129);
+            Add_Action (Table.States (464), 98, (333, 0), 130);
+            Add_Action (Table.States (464), 106, (261, 0), 131);
+            Add_Action (Table.States (464), 107, (242, 5), 120);
+            Add_Action (Table.States (464), 108, (242, 7), 34);
+            Add_Action (Table.States (464), 109, (242, 6), 35);
             Table.States (464).Goto_List.Set_Capacity (13);
-            Add_Goto (Table.States (464), 118, 131);
-            Add_Goto (Table.States (464), 129, 42);
-            Add_Goto (Table.States (464), 198, 134);
-            Add_Goto (Table.States (464), 240, 135);
-            Add_Goto (Table.States (464), 259, 136);
-            Add_Goto (Table.States (464), 273, 93);
-            Add_Goto (Table.States (464), 276, 137);
-            Add_Goto (Table.States (464), 288, 620);
-            Add_Goto (Table.States (464), 294, 98);
-            Add_Goto (Table.States (464), 302, 144);
-            Add_Goto (Table.States (464), 321, 145);
-            Add_Goto (Table.States (464), 322, 146);
-            Add_Goto (Table.States (464), 331, 147);
-            Table.States (464).Kernel := To_Vector ((0 => (286, 22, 1, True)));
-            Table.States (464).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (464).Minimal_Complete_Actions_Recursive := True;
-            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, 80, 84, 88, 97), (285,
-            1), 3, null, null);
-            Table.States (465).Kernel := To_Vector ((0 => (285, 288, 0, 
True)));
-            Table.States (465).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 285, 3)));
-            Table.States (465).Minimal_Complete_Actions_Recursive := True;
-            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, 80, 84, 88, 97), (287,
-            1), 3, null, null);
-            Table.States (466).Kernel := To_Vector ((0 => (287, 288, 0, 
True)));
-            Table.States (466).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 287, 3)));
-            Table.States (466).Minimal_Complete_Actions_Recursive := True;
-            Table.States (467).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (467), 10, Reduce, (288, 1), 3, null, 
null);
-            Add_Action (Table.States (467), 20, Reduce, (288, 1), 3, null, 
null);
-            Add_Action (Table.States (467), 21, Reduce, (288, 1), 3, null, 
null);
-            Add_Action (Table.States (467), 22, Reduce, (288, 1), 3, null, 
null);
-            Add_Action (Table.States (467), 23, Reduce, (288, 1), 3, null, 
null);
-            Add_Action (Table.States (467), 35, Reduce, (288, 1), 3, null, 
null);
-            Add_Action (Table.States (467), 37, Reduce, (288, 1), 3, null, 
null);
-            Add_Action (Table.States (467), 43, Reduce, (288, 1), 3, null, 
null);
-            Add_Action (Table.States (467), 53, Reduce, (288, 1), 3, null, 
null);
-            Add_Action (Table.States (467), 68, Reduce, (288, 1), 3, null, 
null);
-            Add_Action (Table.States (467), 74, Reduce, (288, 1), 3, null, 
null);
-            Add_Action (Table.States (467), 75, Reduce, (288, 1), 3, null, 
null);
-            Add_Action (Table.States (467), 77, Reduce, (288, 1), 3, null, 
null);
-            Add_Action (Table.States (467), 80, 621);
-            Add_Conflict (Table.States (467), 80, (288, 1), 3, null, null);
-            Add_Action (Table.States (467), 84, Reduce, (288, 1), 3, null, 
null);
-            Add_Action (Table.States (467), 88, Reduce, (288, 1), 3, null, 
null);
-            Add_Action (Table.States (467), 97, Reduce, (288, 1), 3, null, 
null);
-            Table.States (467).Kernel := To_Vector (((234, 234, 2, True), 
(288, 234, 0, False)));
-            Table.States (467).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 288, 3)));
-            Table.States (468).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (468), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 80, 84, 88, 97), (234,
-            1), 1, null, null);
-            Table.States (468).Kernel := To_Vector ((0 => (234, 235, 0, 
False)));
-            Table.States (468).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 234, 1)));
-            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, 80, 84, 88, 97), (235,
-            1), 1, null, null);
-            Table.States (469).Kernel := To_Vector ((0 => (235, 278, 0, 
False)));
-            Table.States (469).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 235, 1)));
-            Table.States (470).Action_List.Set_Capacity (18);
-            Add_Action (Table.States (470), 10, Reduce, (235, 0), 1, null, 
null);
-            Add_Action (Table.States (470), 20, Reduce, (235, 0), 1, null, 
null);
-            Add_Action (Table.States (470), 21, Reduce, (235, 0), 1, null, 
null);
-            Add_Action (Table.States (470), 22, Reduce, (235, 0), 1, null, 
null);
-            Add_Action (Table.States (470), 23, Reduce, (235, 0), 1, null, 
null);
-            Add_Action (Table.States (470), 35, Reduce, (235, 0), 1, null, 
null);
-            Add_Action (Table.States (470), 37, Reduce, (235, 0), 1, null, 
null);
-            Add_Action (Table.States (470), 43, Reduce, (235, 0), 1, null, 
null);
-            Add_Action (Table.States (470), 53, Reduce, (235, 0), 1, null, 
null);
-            Add_Action (Table.States (470), 68, Reduce, (235, 0), 1, null, 
null);
-            Add_Action (Table.States (470), 74, Reduce, (235, 0), 1, null, 
null);
-            Add_Action (Table.States (470), 75, Reduce, (235, 0), 1, null, 
null);
-            Add_Action (Table.States (470), 77, Reduce, (235, 0), 1, null, 
null);
-            Add_Action (Table.States (470), 80, Reduce, (235, 0), 1, null, 
null);
-            Add_Action (Table.States (470), 84, Reduce, (235, 0), 1, null, 
null);
-            Add_Action (Table.States (470), 86, 452);
-            Add_Action (Table.States (470), 88, Reduce, (235, 0), 1, null, 
null);
-            Add_Action (Table.States (470), 97, Reduce, (235, 0), 1, null, 
null);
-            Table.States (470).Kernel := To_Vector (((235, 302, 0, False), 
(278, 302, 2, False)));
-            Table.States (470).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 235, 1)));
-            Table.States (471).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (471), 3, 122);
-            Add_Action (Table.States (471), 39, 123);
-            Add_Action (Table.States (471), 40, 124);
-            Add_Action (Table.States (471), 41, 125);
-            Add_Action (Table.States (471), 76, 127);
-            Add_Action (Table.States (471), 79, 31);
-            Add_Action (Table.States (471), 95, 128);
-            Add_Action (Table.States (471), 96, 129);
-            Add_Action (Table.States (471), 104, 130);
-            Add_Action (Table.States (471), 105, 120);
-            Add_Action (Table.States (471), 106, 34);
-            Add_Action (Table.States (471), 107, 35);
-            Table.States (471).Goto_List.Set_Capacity (14);
-            Add_Goto (Table.States (471), 118, 131);
-            Add_Goto (Table.States (471), 129, 42);
-            Add_Goto (Table.States (471), 198, 134);
-            Add_Goto (Table.States (471), 234, 622);
-            Add_Goto (Table.States (471), 235, 468);
-            Add_Goto (Table.States (471), 240, 275);
-            Add_Goto (Table.States (471), 259, 136);
-            Add_Goto (Table.States (471), 273, 93);
-            Add_Goto (Table.States (471), 278, 469);
-            Add_Goto (Table.States (471), 294, 98);
-            Add_Goto (Table.States (471), 302, 470);
-            Add_Goto (Table.States (471), 321, 145);
-            Add_Goto (Table.States (471), 322, 146);
-            Add_Goto (Table.States (471), 331, 147);
-            Table.States (471).Kernel := To_Vector ((0 => (288, 33, 1, 
False)));
-            Table.States (471).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (472).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (472), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 80, 84, 88, 97), (288,
-            2), 3, null, null);
-            Table.States (472).Kernel := To_Vector ((0 => (288, 302, 0, 
False)));
-            Table.States (472).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 288, 3)));
-            Table.States (473).Action_List.Set_Capacity (35);
-            Add_Action (Table.States (473), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 77,
-            78, 80, 83, 84, 86, 87, 88, 89, 90, 92, 93, 95, 96, 97, 98, 99, 
100), (321, 0), 3, null, null);
-            Table.States (473).Kernel := To_Vector ((0 => (321, 198, 0, 
True)));
-            Table.States (473).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 321, 3)));
-            Table.States (473).Minimal_Complete_Actions_Recursive := True;
-            Table.States (474).Action_List.Set_Capacity (35);
-            Add_Action (Table.States (474), 10, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 20, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 21, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 22, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 23, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 33, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 35, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 37, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 38, 298);
-            Add_Action (Table.States (474), 40, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 42, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 43, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 53, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 55, 299);
-            Add_Action (Table.States (474), 68, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 74, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 75, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 77, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 78, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 80, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 83, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 84, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 86, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 87, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 88, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 89, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 90, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 92, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 93, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 95, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 96, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 97, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 98, 300);
-            Add_Action (Table.States (474), 99, Reduce, (322, 0), 3, null, 
null);
-            Add_Action (Table.States (474), 100, 301);
-            Table.States (474).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (474), 238, 302);
-            Table.States (474).Kernel := To_Vector (((321, 321, 2, True), 
(322, 321, 0, True)));
-            Table.States (474).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 322, 3)));
-            Table.States (474).Minimal_Complete_Actions_Recursive := True;
-            Table.States (475).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (475), (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, 79, 94, 105, 106,
-            107, 108), (162, 0), 4, delay_statement_0'Access, null);
-            Table.States (475).Kernel := To_Vector ((0 => (162, 97, 0, 
False)));
-            Table.States (475).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 162, 4)));
-            Table.States (476).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (476), 97, 623);
-            Table.States (476).Kernel := To_Vector ((0 => (191, 193, 1, 
False)));
-            Table.States (476).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 623)));
-            Table.States (477).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (477), 39, 123);
-            Add_Action (Table.States (477), 41, 624);
-            Add_Action (Table.States (477), 76, 127);
-            Add_Action (Table.States (477), 79, 31);
-            Add_Action (Table.States (477), 104, 130);
-            Add_Action (Table.States (477), 105, 120);
-            Add_Action (Table.States (477), 106, 34);
-            Add_Action (Table.States (477), 107, 35);
-            Table.States (477).Goto_List.Set_Capacity (6);
-            Add_Goto (Table.States (477), 118, 131);
-            Add_Goto (Table.States (477), 129, 42);
-            Add_Goto (Table.States (477), 240, 135);
-            Add_Goto (Table.States (477), 259, 257);
-            Add_Goto (Table.States (477), 273, 93);
-            Add_Goto (Table.States (477), 294, 98);
-            Table.States (477).Kernel := To_Vector (((198, 40, 1, False), 
(315, 40, 6, False), (315, 40, 2, False)));
-            Table.States (477).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (478).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (478), 3, 122);
-            Add_Action (Table.States (478), 39, 123);
-            Add_Action (Table.States (478), 40, 477);
-            Add_Action (Table.States (478), 41, 125);
-            Add_Action (Table.States (478), 76, 127);
-            Add_Action (Table.States (478), 79, 31);
-            Add_Action (Table.States (478), 95, 128);
-            Add_Action (Table.States (478), 96, 129);
-            Add_Action (Table.States (478), 104, 130);
-            Add_Action (Table.States (478), 105, 120);
-            Add_Action (Table.States (478), 106, 34);
-            Add_Action (Table.States (478), 107, 35);
-            Table.States (478).Goto_List.Set_Capacity (14);
-            Add_Goto (Table.States (478), 118, 131);
-            Add_Goto (Table.States (478), 129, 42);
-            Add_Goto (Table.States (478), 168, 625);
-            Add_Goto (Table.States (478), 198, 134);
-            Add_Goto (Table.States (478), 240, 480);
-            Add_Goto (Table.States (478), 259, 136);
-            Add_Goto (Table.States (478), 273, 93);
-            Add_Goto (Table.States (478), 278, 481);
-            Add_Goto (Table.States (478), 294, 98);
-            Add_Goto (Table.States (478), 302, 482);
-            Add_Goto (Table.States (478), 315, 483);
-            Add_Goto (Table.States (478), 321, 145);
-            Add_Goto (Table.States (478), 322, 146);
-            Add_Goto (Table.States (478), 331, 147);
-            Table.States (478).Kernel := To_Vector ((0 => (231, 59, 1, 
False)));
-            Table.States (478).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (479).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (479), (37, 88), (231, 5), 3, 
iterator_specification_5'Access, null);
-            Table.States (479).Kernel := To_Vector ((0 => (231, 168, 0, 
False)));
-            Table.States (479).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 231, 3)));
+            Add_Goto (Table.States (464), 120, 132);
+            Add_Goto (Table.States (464), 131, 42);
+            Add_Goto (Table.States (464), 200, 135);
+            Add_Goto (Table.States (464), 242, 136);
+            Add_Goto (Table.States (464), 261, 137);
+            Add_Goto (Table.States (464), 275, 93);
+            Add_Goto (Table.States (464), 278, 138);
+            Add_Goto (Table.States (464), 290, 624);
+            Add_Goto (Table.States (464), 296, 98);
+            Add_Goto (Table.States (464), 304, 145);
+            Add_Goto (Table.States (464), 323, 146);
+            Add_Goto (Table.States (464), 324, 147);
+            Add_Goto (Table.States (464), 333, 148);
+            Table.States (464).Kernel := To_Vector ((0 => ((288, 0),  22,  1, 
(2147483647, 0),  0)));
+            Table.States (464).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (465).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (465), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 78, 79, 82, 86, 90, 99),
+            (289, 0),  3, null, null);
+            Table.States (465).Kernel := To_Vector ((0 => ((289, 0),  290,  0, 
(289, 0),  3)));
+            Table.States (465).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (289, 0),  3)));
+            Table.States (466).Action_List.Set_Capacity (14);
+            Add_Action (Table.States (466), 3, (200, 2), 122);
+            Add_Action (Table.States (466), 39, (261, 4), 123);
+            Add_Action (Table.States (466), 40, (200, 3), 124);
+            Add_Action (Table.States (466), 41, (261, 1), 125);
+            Add_Action (Table.States (466), 52, (278, 0), 126);
+            Add_Action (Table.States (466), 76, (120, 0), 127);
+            Add_Action (Table.States (466), 77, (120, 5), 128);
+            Add_Action (Table.States (466), 81, (242, 8), 31);
+            Add_Action (Table.States (466), 97, (333, 1), 129);
+            Add_Action (Table.States (466), 98, (333, 0), 130);
+            Add_Action (Table.States (466), 106, (261, 0), 131);
+            Add_Action (Table.States (466), 107, (242, 5), 120);
+            Add_Action (Table.States (466), 108, (242, 7), 34);
+            Add_Action (Table.States (466), 109, (242, 6), 35);
+            Table.States (466).Goto_List.Set_Capacity (13);
+            Add_Goto (Table.States (466), 120, 132);
+            Add_Goto (Table.States (466), 131, 42);
+            Add_Goto (Table.States (466), 200, 135);
+            Add_Goto (Table.States (466), 242, 136);
+            Add_Goto (Table.States (466), 261, 137);
+            Add_Goto (Table.States (466), 275, 93);
+            Add_Goto (Table.States (466), 278, 138);
+            Add_Goto (Table.States (466), 290, 625);
+            Add_Goto (Table.States (466), 296, 98);
+            Add_Goto (Table.States (466), 304, 145);
+            Add_Goto (Table.States (466), 323, 146);
+            Add_Goto (Table.States (466), 324, 147);
+            Add_Goto (Table.States (466), 333, 148);
+            Table.States (466).Kernel := To_Vector ((0 => ((286, 1),  68,  1, 
(2147483647, 0),  0)));
+            Table.States (466).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
          end Subr_9;
          procedure Subr_10
          is begin
-            Table.States (480).Action_List.Set_Capacity (30);
-            Add_Action (Table.States (480), 10, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 33, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 37, Reduce, (315, 3), 1, 
subtype_indication_3'Access, null);
-            Add_Action (Table.States (480), 38, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 40, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 43, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 53, 626);
-            Add_Action (Table.States (480), 55, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 75, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 76, 627);
-            Add_Action (Table.States (480), 77, Reduce, (259, 3), 1, null, 
null);
-            Add_Conflict (Table.States (480), 77, (315, 3), 1, 
subtype_indication_3'Access, null);
-            Add_Action (Table.States (480), 78, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 80, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 84, Reduce, (259, 3), 1, null, 
null);
-            Add_Conflict (Table.States (480), 84, (315, 3), 1, 
subtype_indication_3'Access, null);
-            Add_Action (Table.States (480), 85, 238);
-            Add_Action (Table.States (480), 86, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 87, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 88, Reduce, (259, 3), 1, null, 
null);
-            Add_Conflict (Table.States (480), 88, (315, 3), 1, 
subtype_indication_3'Access, null);
-            Add_Action (Table.States (480), 89, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 90, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 92, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 93, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 95, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 96, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 98, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 99, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 100, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 101, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (480), 102, 240);
-            Add_Action (Table.States (480), 103, 241);
-            Table.States (480).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (480), 116, 242);
-            Add_Goto (Table.States (480), 156, 628);
-            Add_Goto (Table.States (480), 225, 629);
-            Add_Goto (Table.States (480), 323, 451);
-            Table.States (480).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (259, 240, 0, False), (273, 240, 3, True), (278, 240, 4, False), 
(278, 240, 2, False), (294, 240, 2, True),
-            (294, 240, 2, True), (294, 240, 2, True), (294, 240, 2, True), 
(315, 240, 4, False), (315, 240, 0, False)));
-            Table.States (480).Minimal_Complete_Actions := To_Vector 
(((Reduce, 259, 1), (Reduce, 315, 1)));
-            Table.States (481).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (481), (37, 77, 84, 88), (168, 1), 1, 
null, null);
-            Table.States (481).Kernel := To_Vector ((0 => (168, 278, 0, 
False)));
-            Table.States (481).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 168, 1)));
-            Table.States (482).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (482), 86, 452);
-            Table.States (482).Kernel := To_Vector ((0 => (278, 302, 2, 
False)));
-            Table.States (482).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 86, 452)));
-            Table.States (483).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (483), (37, 77, 84, 88), (168, 0), 1, 
null, null);
-            Table.States (483).Kernel := To_Vector ((0 => (168, 315, 0, 
False)));
-            Table.States (483).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 168, 1)));
-            Table.States (484).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (484), 79, 31);
-            Add_Action (Table.States (484), 105, 120);
-            Add_Action (Table.States (484), 106, 34);
-            Add_Action (Table.States (484), 107, 35);
+            Table.States (467).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (467), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 78, 79, 82, 86, 90, 99),
+            (285, 1),  3, null, null);
+            Table.States (467).Kernel := To_Vector ((0 => ((285, 1),  290,  0, 
(285, 1),  3)));
+            Table.States (467).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (285, 1),  3)));
+            Table.States (468).Action_List.Set_Capacity (14);
+            Add_Action (Table.States (468), 3, (200, 2), 122);
+            Add_Action (Table.States (468), 39, (261, 4), 123);
+            Add_Action (Table.States (468), 40, (200, 3), 124);
+            Add_Action (Table.States (468), 41, (261, 1), 125);
+            Add_Action (Table.States (468), 52, (278, 0), 126);
+            Add_Action (Table.States (468), 76, (120, 0), 127);
+            Add_Action (Table.States (468), 77, (120, 5), 128);
+            Add_Action (Table.States (468), 81, (242, 8), 31);
+            Add_Action (Table.States (468), 97, (333, 1), 129);
+            Add_Action (Table.States (468), 98, (333, 0), 130);
+            Add_Action (Table.States (468), 106, (261, 0), 131);
+            Add_Action (Table.States (468), 107, (242, 5), 120);
+            Add_Action (Table.States (468), 108, (242, 7), 34);
+            Add_Action (Table.States (468), 109, (242, 6), 35);
+            Table.States (468).Goto_List.Set_Capacity (13);
+            Add_Goto (Table.States (468), 120, 132);
+            Add_Goto (Table.States (468), 131, 42);
+            Add_Goto (Table.States (468), 200, 135);
+            Add_Goto (Table.States (468), 242, 136);
+            Add_Goto (Table.States (468), 261, 137);
+            Add_Goto (Table.States (468), 275, 93);
+            Add_Goto (Table.States (468), 278, 138);
+            Add_Goto (Table.States (468), 290, 626);
+            Add_Goto (Table.States (468), 296, 98);
+            Add_Goto (Table.States (468), 304, 145);
+            Add_Goto (Table.States (468), 323, 146);
+            Add_Goto (Table.States (468), 324, 147);
+            Add_Goto (Table.States (468), 333, 148);
+            Table.States (468).Kernel := To_Vector ((0 => ((288, 1),  22,  1, 
(2147483647, 0),  0)));
+            Table.States (468).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (469).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (469), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 78, 79, 82, 86, 90, 99),
+            (287, 1),  3, null, null);
+            Table.States (469).Kernel := To_Vector ((0 => ((287, 1),  290,  0, 
(287, 1),  3)));
+            Table.States (469).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (287, 1),  3)));
+            Table.States (470).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (470), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 78, 79, 82, 86, 90, 99),
+            (289, 1),  3, null, null);
+            Table.States (470).Kernel := To_Vector ((0 => ((289, 1),  290,  0, 
(289, 1),  3)));
+            Table.States (470).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (289, 1),  3)));
+            Table.States (471).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (471), 10, Reduce, (290, 1),  3, null, 
null);
+            Add_Action (Table.States (471), 20, Reduce, (290, 1),  3, null, 
null);
+            Add_Action (Table.States (471), 21, Reduce, (290, 1),  3, null, 
null);
+            Add_Action (Table.States (471), 22, Reduce, (290, 1),  3, null, 
null);
+            Add_Action (Table.States (471), 23, Reduce, (290, 1),  3, null, 
null);
+            Add_Action (Table.States (471), 35, Reduce, (290, 1),  3, null, 
null);
+            Add_Action (Table.States (471), 37, Reduce, (290, 1),  3, null, 
null);
+            Add_Action (Table.States (471), 43, Reduce, (290, 1),  3, null, 
null);
+            Add_Action (Table.States (471), 53, Reduce, (290, 1),  3, null, 
null);
+            Add_Action (Table.States (471), 68, Reduce, (290, 1),  3, null, 
null);
+            Add_Action (Table.States (471), 74, Reduce, (290, 1),  3, null, 
null);
+            Add_Action (Table.States (471), 75, Reduce, (290, 1),  3, null, 
null);
+            Add_Action (Table.States (471), 78, Reduce, (290, 1),  3, null, 
null);
+            Add_Action (Table.States (471), 79, Reduce, (290, 1),  3, null, 
null);
+            Add_Action (Table.States (471), 82, (236, 0), 627);
+            Add_Conflict (Table.States (471), 82, (290, 1),  3, null, null);
+            Add_Action (Table.States (471), 86, Reduce, (290, 1),  3, null, 
null);
+            Add_Action (Table.States (471), 90, Reduce, (290, 1),  3, null, 
null);
+            Add_Action (Table.States (471), 99, Reduce, (290, 1),  3, null, 
null);
+            Table.States (471).Kernel := To_Vector ((((236, 0),  236,  2, 
(2147483647, 0),  0), ((290, 1),  236,  0,
+            (290, 1),  3)));
+            Table.States (471).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (290, 1),  3)));
+            Table.States (472).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (472), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 78, 79, 82, 86, 90, 99),
+            (236, 1),  1, null, null);
+            Table.States (472).Kernel := To_Vector ((0 => ((236, 1),  237,  0, 
(236, 1),  1)));
+            Table.States (472).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (236, 1),  1)));
+            Table.States (473).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (473), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 78, 79, 82, 86, 90, 99),
+            (237, 1),  1, null, null);
+            Table.States (473).Kernel := To_Vector ((0 => ((237, 1),  280,  0, 
(237, 1),  1)));
+            Table.States (473).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (237, 1),  1)));
+            Table.States (474).Action_List.Set_Capacity (19);
+            Add_Action (Table.States (474), 10, Reduce, (237, 0),  1, null, 
null);
+            Add_Action (Table.States (474), 20, Reduce, (237, 0),  1, null, 
null);
+            Add_Action (Table.States (474), 21, Reduce, (237, 0),  1, null, 
null);
+            Add_Action (Table.States (474), 22, Reduce, (237, 0),  1, null, 
null);
+            Add_Action (Table.States (474), 23, Reduce, (237, 0),  1, null, 
null);
+            Add_Action (Table.States (474), 35, Reduce, (237, 0),  1, null, 
null);
+            Add_Action (Table.States (474), 37, Reduce, (237, 0),  1, null, 
null);
+            Add_Action (Table.States (474), 43, Reduce, (237, 0),  1, null, 
null);
+            Add_Action (Table.States (474), 53, Reduce, (237, 0),  1, null, 
null);
+            Add_Action (Table.States (474), 68, Reduce, (237, 0),  1, null, 
null);
+            Add_Action (Table.States (474), 74, Reduce, (237, 0),  1, null, 
null);
+            Add_Action (Table.States (474), 75, Reduce, (237, 0),  1, null, 
null);
+            Add_Action (Table.States (474), 78, Reduce, (237, 0),  1, null, 
null);
+            Add_Action (Table.States (474), 79, Reduce, (237, 0),  1, null, 
null);
+            Add_Action (Table.States (474), 82, Reduce, (237, 0),  1, null, 
null);
+            Add_Action (Table.States (474), 86, Reduce, (237, 0),  1, null, 
null);
+            Add_Action (Table.States (474), 88, (280, 2), 455);
+            Add_Action (Table.States (474), 90, Reduce, (237, 0),  1, null, 
null);
+            Add_Action (Table.States (474), 99, Reduce, (237, 0),  1, null, 
null);
+            Table.States (474).Kernel := To_Vector ((((237, 0),  304,  0, 
(237, 0),  1), ((280, 2),  304,  2,
+            (2147483647, 0),  0)));
+            Table.States (474).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (237, 0),  1)));
+            Table.States (475).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (475), 3, (200, 2), 122);
+            Add_Action (Table.States (475), 39, (261, 4), 123);
+            Add_Action (Table.States (475), 40, (200, 3), 124);
+            Add_Action (Table.States (475), 41, (261, 1), 125);
+            Add_Action (Table.States (475), 76, (120, 0), 127);
+            Add_Action (Table.States (475), 77, (120, 5), 128);
+            Add_Action (Table.States (475), 81, (242, 8), 31);
+            Add_Action (Table.States (475), 97, (333, 1), 129);
+            Add_Action (Table.States (475), 98, (333, 0), 130);
+            Add_Action (Table.States (475), 106, (261, 0), 131);
+            Add_Action (Table.States (475), 107, (242, 5), 120);
+            Add_Action (Table.States (475), 108, (242, 7), 34);
+            Add_Action (Table.States (475), 109, (242, 6), 35);
+            Table.States (475).Goto_List.Set_Capacity (14);
+            Add_Goto (Table.States (475), 120, 132);
+            Add_Goto (Table.States (475), 131, 42);
+            Add_Goto (Table.States (475), 200, 135);
+            Add_Goto (Table.States (475), 236, 628);
+            Add_Goto (Table.States (475), 237, 472);
+            Add_Goto (Table.States (475), 242, 276);
+            Add_Goto (Table.States (475), 261, 137);
+            Add_Goto (Table.States (475), 275, 93);
+            Add_Goto (Table.States (475), 280, 473);
+            Add_Goto (Table.States (475), 296, 98);
+            Add_Goto (Table.States (475), 304, 474);
+            Add_Goto (Table.States (475), 323, 146);
+            Add_Goto (Table.States (475), 324, 147);
+            Add_Goto (Table.States (475), 333, 148);
+            Table.States (475).Kernel := To_Vector ((0 => ((290, 0),  33,  1, 
(2147483647, 0),  0)));
+            Table.States (475).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (476).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (476), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 78, 79, 82, 86, 90, 99),
+            (290, 2),  3, null, null);
+            Table.States (476).Kernel := To_Vector ((0 => ((290, 2),  304,  0, 
(290, 2),  3)));
+            Table.States (476).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (290, 2),  3)));
+            Table.States (477).Action_List.Set_Capacity (36);
+            Add_Action (Table.States (477), (10, 20, 21, 22, 23, 33, 35, 37, 
38, 40, 42, 43, 53, 55, 68, 74, 75, 78,
+            79, 80, 82, 85, 86, 88, 89, 90, 91, 92, 94, 95, 97, 98, 99, 100, 
101, 102), (323, 0),  3, null, null);
+            Table.States (477).Kernel := To_Vector ((0 => ((323, 0),  200,  0, 
(323, 0),  3)));
+            Table.States (477).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (323, 0),  3)));
+            Table.States (478).Action_List.Set_Capacity (36);
+            Add_Action (Table.States (478), 10, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 20, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 21, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 22, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 23, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 33, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 35, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 37, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 38, (240, 2), 300);
+            Add_Action (Table.States (478), 40, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 42, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 43, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 53, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 55, (240, 3), 301);
+            Add_Action (Table.States (478), 68, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 74, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 75, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 78, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 79, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 80, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 82, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 85, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 86, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 88, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 89, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 90, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 91, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 92, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 94, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 95, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 97, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 98, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 99, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 100, (240, 1), 302);
+            Add_Action (Table.States (478), 101, Reduce, (324, 0),  3, null, 
null);
+            Add_Action (Table.States (478), 102, (240, 0), 303);
+            Table.States (478).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (478), 240, 304);
+            Table.States (478).Kernel := To_Vector ((((323, 0),  323,  2, 
(2147483647, 0),  0), ((324, 0),  323,  0,
+            (324, 0),  3)));
+            Table.States (478).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (324, 0),  3)));
+            Table.States (479).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (479), (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, 81, 96, 107, 108,
+            109, 110), (164, 0),  4, delay_statement_0'Access, null);
+            Table.States (479).Kernel := To_Vector ((0 => ((164, 0),  99,  0, 
(164, 0),  4)));
+            Table.States (479).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (164, 0),  4)));
+            Table.States (480).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (480), 99, (193, 0), 629);
+            Table.States (480).Kernel := To_Vector ((0 => ((193, 0),  195,  1, 
(2147483647, 0),  0)));
+            Table.States (480).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (193, 0),  99, 629)));
+            Table.States (481).Action_List.Set_Capacity (9);
+            Add_Action (Table.States (481), 39, (261, 4), 123);
+            Add_Action (Table.States (481), 41, (261, 1), 630);
+            Add_Action (Table.States (481), 76, (120, 0), 127);
+            Add_Action (Table.States (481), 77, (120, 5), 128);
+            Add_Action (Table.States (481), 81, (242, 8), 31);
+            Add_Action (Table.States (481), 106, (261, 0), 131);
+            Add_Action (Table.States (481), 107, (242, 5), 120);
+            Add_Action (Table.States (481), 108, (242, 7), 34);
+            Add_Action (Table.States (481), 109, (242, 6), 35);
+            Table.States (481).Goto_List.Set_Capacity (6);
+            Add_Goto (Table.States (481), 120, 132);
+            Add_Goto (Table.States (481), 131, 42);
+            Add_Goto (Table.States (481), 242, 136);
+            Add_Goto (Table.States (481), 261, 258);
+            Add_Goto (Table.States (481), 275, 93);
+            Add_Goto (Table.States (481), 296, 98);
+            Table.States (481).Kernel := To_Vector ((((200, 3),  40,  1, 
(2147483647, 0),  0), ((317, 0),  40,  6,
+            (2147483647, 0),  0), ((317, 1),  40,  2, (2147483647, 0),  0)));
+            Table.States (481).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (482).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (482), 3, (200, 2), 122);
+            Add_Action (Table.States (482), 39, (261, 4), 123);
+            Add_Action (Table.States (482), 40, (200, 3), 481);
+            Add_Action (Table.States (482), 41, (261, 1), 125);
+            Add_Action (Table.States (482), 76, (120, 0), 127);
+            Add_Action (Table.States (482), 77, (120, 5), 128);
+            Add_Action (Table.States (482), 81, (242, 8), 31);
+            Add_Action (Table.States (482), 97, (333, 1), 129);
+            Add_Action (Table.States (482), 98, (333, 0), 130);
+            Add_Action (Table.States (482), 106, (261, 0), 131);
+            Add_Action (Table.States (482), 107, (242, 5), 120);
+            Add_Action (Table.States (482), 108, (242, 7), 34);
+            Add_Action (Table.States (482), 109, (242, 6), 35);
+            Table.States (482).Goto_List.Set_Capacity (14);
+            Add_Goto (Table.States (482), 120, 132);
+            Add_Goto (Table.States (482), 131, 42);
+            Add_Goto (Table.States (482), 170, 631);
+            Add_Goto (Table.States (482), 200, 135);
+            Add_Goto (Table.States (482), 242, 484);
+            Add_Goto (Table.States (482), 261, 137);
+            Add_Goto (Table.States (482), 275, 93);
+            Add_Goto (Table.States (482), 280, 485);
+            Add_Goto (Table.States (482), 296, 98);
+            Add_Goto (Table.States (482), 304, 486);
+            Add_Goto (Table.States (482), 317, 487);
+            Add_Goto (Table.States (482), 323, 146);
+            Add_Goto (Table.States (482), 324, 147);
+            Add_Goto (Table.States (482), 333, 148);
+            Table.States (482).Kernel := To_Vector ((0 => ((233, 2),  59,  1, 
(2147483647, 0),  0)));
+            Table.States (482).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (483).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (483), (37, 90), (233, 5),  3, 
iterator_specification_5'Access, null);
+            Table.States (483).Kernel := To_Vector ((0 => ((233, 5),  170,  0, 
(233, 5),  3)));
+            Table.States (483).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (233, 5),  3)));
+            Table.States (484).Action_List.Set_Capacity (30);
+            Add_Action (Table.States (484), 10, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 33, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 37, Reduce, (317, 3),  1, 
subtype_indication_3'Access, null);
+            Add_Action (Table.States (484), 38, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 40, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 43, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 53, (158, 0), 632);
+            Add_Action (Table.States (484), 55, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 75, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 76, (118, 0), 633);
+            Add_Action (Table.States (484), 78, Reduce, (261, 3),  1, null, 
null);
+            Add_Conflict (Table.States (484), 78, (317, 3),  1, 
subtype_indication_3'Access, null);
+            Add_Action (Table.States (484), 80, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 82, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 86, Reduce, (261, 3),  1, null, 
null);
+            Add_Conflict (Table.States (484), 86, (317, 3),  1, 
subtype_indication_3'Access, null);
+            Add_Action (Table.States (484), 87, (296, 0), 239);
+            Add_Action (Table.States (484), 88, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 89, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 90, Reduce, (261, 3),  1, null, 
null);
+            Add_Conflict (Table.States (484), 90, (317, 3),  1, 
subtype_indication_3'Access, null);
+            Add_Action (Table.States (484), 91, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 92, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 94, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 95, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 97, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 98, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 100, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 101, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 102, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 103, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (484), 104, (325, 0), 241);
+            Add_Action (Table.States (484), 105, (325, 1), 242);
             Table.States (484).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (484), 129, 42);
-            Add_Goto (Table.States (484), 240, 630);
-            Add_Goto (Table.States (484), 273, 93);
-            Add_Goto (Table.States (484), 294, 98);
-            Table.States (484).Kernel := To_Vector ((0 => (231, 59, 1, 
False)));
-            Table.States (484).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (485).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (485), 37, Reduce, (231, 4), 3, null, 
null);
-            Add_Action (Table.States (485), 76, 236);
-            Add_Action (Table.States (485), 85, 238);
-            Add_Action (Table.States (485), 88, Reduce, (231, 4), 3, null, 
null);
-            Add_Action (Table.States (485), 102, 240);
-            Add_Action (Table.States (485), 103, 241);
-            Table.States (485).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (485), 116, 242);
-            Add_Goto (Table.States (485), 323, 243);
-            Table.States (485).Kernel := To_Vector (((129, 240, 2, True), 
(231, 240, 0, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (485).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 231, 3)));
+            Add_Goto (Table.States (484), 118, 243);
+            Add_Goto (Table.States (484), 158, 634);
+            Add_Goto (Table.States (484), 227, 635);
+            Add_Goto (Table.States (484), 325, 454);
+            Table.States (484).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((261, 3),  242,  0, (261, 3),  1), ((275,
+            0),  242,  3, (2147483647, 0),  0), ((280, 0),  242,  4, 
(2147483647, 0),  0), ((280, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 0),  242,  2, (2147483647, 0),  0), 
((296, 1),  242,  2, (2147483647, 0),  0),
+            ((296, 2),  242,  2, (2147483647, 0),  0), ((296, 3),  242,  2, 
(2147483647, 0),  0), ((317, 2),  242,  4,
+            (2147483647, 0),  0), ((317, 3),  242,  0, (317, 3),  1)));
+            Table.States (484).Minimal_Complete_Actions := To_Vector 
(((Reduce, (261, 3),  1), (Reduce, (317, 3),
+            1)));
+            Table.States (485).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (485), (37, 78, 86, 90), (170, 1),  1, 
null, null);
+            Table.States (485).Kernel := To_Vector ((0 => ((170, 1),  280,  0, 
(170, 1),  1)));
+            Table.States (485).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (170, 1),  1)));
             Table.States (486).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (486), 41, 631);
-            Table.States (486).Kernel := To_Vector (((315, 40, 6, False), 
(315, 40, 2, False)));
-            Table.States (486).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 41, 631)));
-            Table.States (487).Action_List.Set_Capacity (11);
-            Add_Action (Table.States (487), 10, Reduce, (315, 3), 1, 
subtype_indication_3'Access, null);
-            Add_Action (Table.States (487), 21, Reduce, (315, 3), 1, 
subtype_indication_3'Access, null);
-            Add_Action (Table.States (487), 42, Reduce, (315, 3), 1, 
subtype_indication_3'Access, null);
-            Add_Action (Table.States (487), 53, 626);
-            Add_Action (Table.States (487), 74, Reduce, (315, 3), 1, 
subtype_indication_3'Access, null);
-            Add_Action (Table.States (487), 76, 627);
-            Add_Action (Table.States (487), 83, Reduce, (315, 3), 1, 
subtype_indication_3'Access, null);
-            Add_Action (Table.States (487), 85, 238);
-            Add_Action (Table.States (487), 97, Reduce, (315, 3), 1, 
subtype_indication_3'Access, null);
-            Add_Action (Table.States (487), 102, 240);
-            Add_Action (Table.States (487), 103, 241);
-            Table.States (487).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (487), 116, 242);
-            Add_Goto (Table.States (487), 156, 628);
-            Add_Goto (Table.States (487), 225, 629);
-            Add_Goto (Table.States (487), 323, 243);
-            Table.States (487).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (273, 240, 3, True), (294, 240, 2, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (315, 240, 4, False), (315, 240, 0, False)));
-            Table.States (487).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 315, 1)));
-            Table.States (488).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (488), 42, 632);
-            Table.States (488).Kernel := To_Vector (((231, 315, 3, False), 
(231, 315, 2, False)));
-            Table.States (488).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 42, 632)));
-            Table.States (489).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (489), 97, 633);
-            Table.States (489).Kernel := To_Vector ((0 => (122, 193, 1, 
False)));
-            Table.States (489).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 633)));
-            Table.States (490).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (490), 3, 122);
-            Add_Action (Table.States (490), 39, 123);
-            Add_Action (Table.States (490), 40, 124);
-            Add_Action (Table.States (490), 41, 125);
-            Add_Action (Table.States (490), 52, 126);
-            Add_Action (Table.States (490), 76, 127);
-            Add_Action (Table.States (490), 79, 31);
-            Add_Action (Table.States (490), 95, 128);
-            Add_Action (Table.States (490), 96, 129);
-            Add_Action (Table.States (490), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (490), 104, 130);
-            Add_Action (Table.States (490), 105, 120);
-            Add_Action (Table.States (490), 106, 34);
-            Add_Action (Table.States (490), 107, 35);
-            Table.States (490).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (490), 118, 131);
-            Add_Goto (Table.States (490), 129, 42);
-            Add_Goto (Table.States (490), 192, 132);
-            Add_Goto (Table.States (490), 193, 634);
-            Add_Goto (Table.States (490), 198, 134);
-            Add_Goto (Table.States (490), 240, 135);
-            Add_Goto (Table.States (490), 259, 136);
-            Add_Goto (Table.States (490), 273, 93);
-            Add_Goto (Table.States (490), 276, 137);
-            Add_Goto (Table.States (490), 283, 138);
-            Add_Goto (Table.States (490), 284, 139);
-            Add_Goto (Table.States (490), 285, 140);
-            Add_Goto (Table.States (490), 286, 141);
-            Add_Goto (Table.States (490), 287, 142);
-            Add_Goto (Table.States (490), 288, 143);
-            Add_Goto (Table.States (490), 294, 98);
-            Add_Goto (Table.States (490), 302, 144);
-            Add_Goto (Table.States (490), 321, 145);
-            Add_Goto (Table.States (490), 322, 146);
-            Add_Goto (Table.States (490), 331, 147);
-            Table.States (490).Kernel := To_Vector ((0 => (128, 12, 1, 
False)));
-            Table.States (490).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (491).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (491), 12, 635);
-            Add_Action (Table.States (491), 105, Reduce, (236, 1), 0, null, 
null);
-            Table.States (491).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (491), 236, 636);
-            Table.States (491).Kernel := To_Vector ((0 => (282, 54, 11, 
False)));
-            Table.States (491).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 236, 0)));
+            Add_Action (Table.States (486), 88, (280, 2), 455);
+            Table.States (486).Kernel := To_Vector ((0 => ((280, 2),  304,  2, 
(2147483647, 0),  0)));
+            Table.States (486).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (280, 2),  88, 455)));
+            Table.States (487).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (487), (37, 78, 86, 90), (170, 0),  1, 
null, null);
+            Table.States (487).Kernel := To_Vector ((0 => ((170, 0),  317,  0, 
(170, 0),  1)));
+            Table.States (487).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (170, 0),  1)));
+            Table.States (488).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (488), 81, (242, 8), 31);
+            Add_Action (Table.States (488), 107, (242, 5), 120);
+            Add_Action (Table.States (488), 108, (242, 7), 34);
+            Add_Action (Table.States (488), 109, (242, 6), 35);
+            Table.States (488).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (488), 131, 42);
+            Add_Goto (Table.States (488), 242, 636);
+            Add_Goto (Table.States (488), 275, 93);
+            Add_Goto (Table.States (488), 296, 98);
+            Table.States (488).Kernel := To_Vector ((0 => ((233, 3),  59,  1, 
(2147483647, 0),  0)));
+            Table.States (488).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (489).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (489), 37, Reduce, (233, 4),  3, null, 
null);
+            Add_Action (Table.States (489), 76, (118, 0), 237);
+            Add_Action (Table.States (489), 87, (296, 0), 239);
+            Add_Action (Table.States (489), 90, Reduce, (233, 4),  3, null, 
null);
+            Add_Action (Table.States (489), 104, (325, 0), 241);
+            Add_Action (Table.States (489), 105, (325, 1), 242);
+            Table.States (489).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (489), 118, 243);
+            Add_Goto (Table.States (489), 325, 244);
+            Table.States (489).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((233, 4),  242,  0,
+            (233, 4),  3), ((242, 0),  242,  5, (2147483647, 0),  0), ((242, 
1),  242,  2, (2147483647, 0),  0), ((275,
+            0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (489).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (233, 4),  3)));
+            Table.States (490).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (490), 41, (317, 0), 637);
+            Table.States (490).Kernel := To_Vector ((((317, 0),  40,  6, 
(2147483647, 0),  0), ((317, 1),  40,  2,
+            (2147483647, 0),  0)));
+            Table.States (490).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (317, 0),  41, 637)));
+            Table.States (491).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (491), 10, Reduce, (317, 3),  1, 
subtype_indication_3'Access, null);
+            Add_Action (Table.States (491), 21, Reduce, (317, 3),  1, 
subtype_indication_3'Access, null);
+            Add_Action (Table.States (491), 42, Reduce, (317, 3),  1, 
subtype_indication_3'Access, null);
+            Add_Action (Table.States (491), 53, (158, 0), 632);
+            Add_Action (Table.States (491), 74, Reduce, (317, 3),  1, 
subtype_indication_3'Access, null);
+            Add_Action (Table.States (491), 76, (118, 0), 633);
+            Add_Action (Table.States (491), 85, Reduce, (317, 3),  1, 
subtype_indication_3'Access, null);
+            Add_Action (Table.States (491), 87, (296, 0), 239);
+            Add_Action (Table.States (491), 99, Reduce, (317, 3),  1, 
subtype_indication_3'Access, null);
+            Add_Action (Table.States (491), 104, (325, 0), 241);
+            Add_Action (Table.States (491), 105, (325, 1), 242);
+            Table.States (491).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (491), 118, 243);
+            Add_Goto (Table.States (491), 158, 634);
+            Add_Goto (Table.States (491), 227, 635);
+            Add_Goto (Table.States (491), 325, 244);
+            Table.States (491).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((275, 0),  242,  3, (2147483647, 0),  0),
+            ((296, 0),  242,  2, (2147483647, 0),  0), ((296, 1),  242,  2, 
(2147483647, 0),  0), ((296, 2),  242,  2,
+            (2147483647, 0),  0), ((296, 3),  242,  2, (2147483647, 0),  0), 
((317, 2),  242,  4, (2147483647, 0),  0),
+            ((317, 3),  242,  0, (317, 3),  1)));
+            Table.States (491).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (317, 3),  1)));
             Table.States (492).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (492), 97, 637);
-            Table.States (492).Kernel := To_Vector ((0 => (183, 118, 1, 
False)));
-            Table.States (492).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 637)));
-            Table.States (493).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (493), (21, 35, 56, 74, 77, 83, 97), 
(292, 1), 2, result_profile_1'Access, null);
-            Table.States (493).Kernel := To_Vector ((0 => (292, 115, 0, 
True)));
-            Table.States (493).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 292, 2)));
-            Table.States (493).Minimal_Complete_Actions_Recursive := True;
-            Table.States (494).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (494), 7, 560);
-            Add_Action (Table.States (494), 21, Reduce, (241, 1), 0, null, 
null);
-            Add_Action (Table.States (494), 35, Reduce, (241, 1), 0, null, 
null);
-            Add_Action (Table.States (494), 56, Reduce, (241, 1), 0, null, 
null);
-            Add_Action (Table.States (494), 74, Reduce, (241, 1), 0, null, 
null);
-            Add_Action (Table.States (494), 77, Reduce, (241, 1), 0, null, 
null);
-            Add_Action (Table.States (494), 79, 31);
-            Add_Action (Table.States (494), 83, Reduce, (241, 1), 0, null, 
null);
-            Add_Action (Table.States (494), 97, Reduce, (241, 1), 0, null, 
null);
-            Add_Action (Table.States (494), 105, 120);
-            Add_Action (Table.States (494), 106, 34);
-            Add_Action (Table.States (494), 107, 35);
-            Table.States (494).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (494), 129, 42);
-            Add_Goto (Table.States (494), 240, 638);
-            Add_Goto (Table.States (494), 241, 639);
-            Add_Goto (Table.States (494), 273, 93);
-            Add_Goto (Table.States (494), 294, 98);
-            Table.States (494).Kernel := To_Vector (((115, 242, 2, False), 
(115, 242, 3, True), (115, 242, 2, False),
-            (292, 242, 0, False)));
-            Table.States (494).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 241, 0)));
-            Table.States (495).Action_List.Set_Capacity (30);
-            Add_Action (Table.States (495), 10, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 33, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 38, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 40, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 43, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 53, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 55, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 75, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 76, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 77, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 78, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 80, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 82, Reduce, (220, 1), 1, 
identifier_list_1'Access, null);
-            Add_Action (Table.States (495), 84, Reduce, (220, 1), 1, 
identifier_list_1'Access, null);
-            Add_Conflict (Table.States (495), 84, (240, 5), 1, name_5'Access, 
name_5_check'Access);
-            Add_Action (Table.States (495), 85, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 86, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 87, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 88, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 89, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 90, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 92, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 93, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 95, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 96, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 98, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 99, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 100, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 101, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 102, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (495), 103, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Table.States (495).Kernel := To_Vector (((220, 105, 0, False), 
(240, 105, 0, False)));
-            Table.States (495).Minimal_Complete_Actions := To_Vector 
(((Reduce, 220, 1), (Reduce, 240, 1)));
-            Table.States (496).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (496), 82, 640);
-            Add_Action (Table.States (496), 84, 235);
-            Table.States (496).Kernel := To_Vector (((220, 220, 2, True), 
(255, 220, 3, False), (255, 220, 2, False),
-            (255, 220, 4, False), (255, 220, 3, False)));
-            Table.States (496).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 82, 640)));
-            Table.States (497).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (497), (77, 97), (256, 1), 1, null, null);
-            Table.States (497).Kernel := To_Vector ((0 => (256, 255, 0, 
False)));
-            Table.States (497).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 256, 1)));
-            Table.States (498).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (498), 77, 641);
-            Add_Action (Table.States (498), 97, 642);
-            Table.States (498).Kernel := To_Vector (((200, 256, 1, False), 
(256, 256, 1, True)));
-            Table.States (498).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 641)));
-            Table.States (499).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (499), (21, 35, 56, 74, 77, 83, 97), 
(253, 0), 2,
+            Add_Action (Table.States (492), 42, (233, 0), 638);
+            Table.States (492).Kernel := To_Vector ((((233, 0),  317,  3, 
(2147483647, 0),  0), ((233, 1),  317,  2,
+            (2147483647, 0),  0)));
+            Table.States (492).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (233, 0),  42, 638)));
+            Table.States (493).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (493), 99, (124, 0), 639);
+            Table.States (493).Kernel := To_Vector ((0 => ((124, 0),  195,  1, 
(2147483647, 0),  0)));
+            Table.States (493).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (124, 0),  99, 639)));
+            Table.States (494).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (494), 3, (200, 2), 122);
+            Add_Action (Table.States (494), 39, (261, 4), 123);
+            Add_Action (Table.States (494), 40, (200, 3), 124);
+            Add_Action (Table.States (494), 41, (261, 1), 125);
+            Add_Action (Table.States (494), 52, (278, 0), 126);
+            Add_Action (Table.States (494), 76, (120, 0), 127);
+            Add_Action (Table.States (494), 77, (120, 5), 128);
+            Add_Action (Table.States (494), 81, (242, 8), 31);
+            Add_Action (Table.States (494), 97, (333, 1), 129);
+            Add_Action (Table.States (494), 98, (333, 0), 130);
+            Add_Action (Table.States (494), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (494), 106, (261, 0), 131);
+            Add_Action (Table.States (494), 107, (242, 5), 120);
+            Add_Action (Table.States (494), 108, (242, 7), 34);
+            Add_Action (Table.States (494), 109, (242, 6), 35);
+            Table.States (494).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (494), 120, 132);
+            Add_Goto (Table.States (494), 131, 42);
+            Add_Goto (Table.States (494), 194, 133);
+            Add_Goto (Table.States (494), 195, 640);
+            Add_Goto (Table.States (494), 200, 135);
+            Add_Goto (Table.States (494), 242, 136);
+            Add_Goto (Table.States (494), 261, 137);
+            Add_Goto (Table.States (494), 275, 93);
+            Add_Goto (Table.States (494), 278, 138);
+            Add_Goto (Table.States (494), 285, 139);
+            Add_Goto (Table.States (494), 286, 140);
+            Add_Goto (Table.States (494), 287, 141);
+            Add_Goto (Table.States (494), 288, 142);
+            Add_Goto (Table.States (494), 289, 143);
+            Add_Goto (Table.States (494), 290, 144);
+            Add_Goto (Table.States (494), 296, 98);
+            Add_Goto (Table.States (494), 304, 145);
+            Add_Goto (Table.States (494), 323, 146);
+            Add_Goto (Table.States (494), 324, 147);
+            Add_Goto (Table.States (494), 333, 148);
+            Table.States (494).Kernel := To_Vector ((0 => ((130, 0),  12,  1, 
(2147483647, 0),  0)));
+            Table.States (494).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (495).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (495), 12, (238, 0), 641);
+            Add_Action (Table.States (495), 107, Reduce, (238, 1),  0, null, 
null);
+            Table.States (495).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (495), 238, 642);
+            Table.States (495).Kernel := To_Vector ((0 => ((284, 0),  54,  11, 
(2147483647, 0),  0)));
+            Table.States (495).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (238, 1),  0)));
+            Table.States (496).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (496), 99, (185, 0), 643);
+            Table.States (496).Kernel := To_Vector ((0 => ((185, 0),  120,  1, 
(2147483647, 0),  0)));
+            Table.States (496).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (185, 0),  99, 643)));
+            Table.States (497).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (497), (21, 35, 56, 74, 78, 85, 99), 
(294, 1),  2, result_profile_1'Access, null);
+            Table.States (497).Kernel := To_Vector ((0 => ((294, 1),  117,  0, 
(294, 1),  2)));
+            Table.States (497).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (294, 1),  2)));
+            Table.States (498).Action_List.Set_Capacity (12);
+            Add_Action (Table.States (498), 7, (117, 0), 564);
+            Add_Action (Table.States (498), 21, Reduce, (243, 1),  0, null, 
null);
+            Add_Action (Table.States (498), 35, Reduce, (243, 1),  0, null, 
null);
+            Add_Action (Table.States (498), 56, Reduce, (243, 1),  0, null, 
null);
+            Add_Action (Table.States (498), 74, Reduce, (243, 1),  0, null, 
null);
+            Add_Action (Table.States (498), 78, Reduce, (243, 1),  0, null, 
null);
+            Add_Action (Table.States (498), 81, (242, 8), 31);
+            Add_Action (Table.States (498), 85, Reduce, (243, 1),  0, null, 
null);
+            Add_Action (Table.States (498), 99, Reduce, (243, 1),  0, null, 
null);
+            Add_Action (Table.States (498), 107, (242, 5), 120);
+            Add_Action (Table.States (498), 108, (242, 7), 34);
+            Add_Action (Table.States (498), 109, (242, 6), 35);
+            Table.States (498).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (498), 131, 42);
+            Add_Goto (Table.States (498), 242, 644);
+            Add_Goto (Table.States (498), 243, 645);
+            Add_Goto (Table.States (498), 275, 93);
+            Add_Goto (Table.States (498), 296, 98);
+            Table.States (498).Kernel := To_Vector ((((117, 0),  244,  2, 
(2147483647, 0),  0), ((117, 1),  244,  3,
+            (2147483647, 0),  0), ((117, 2),  244,  2, (2147483647, 0),  0), 
((294, 0),  244,  0, (243, 1),  0)));
+            Table.States (498).Minimal_Complete_Actions := To_Vector (((Shift, 
(117, 0),  7, 564), (Reduce, (243, 1),
+            0)));
+            Table.States (499).Action_List.Set_Capacity (30);
+            Add_Action (Table.States (499), 10, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 33, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 38, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 40, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 43, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 53, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 55, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 75, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 76, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 78, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 80, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 82, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 84, Reduce, (222, 1),  1, 
identifier_list_1'Access, null);
+            Add_Action (Table.States (499), 86, Reduce, (222, 1),  1, 
identifier_list_1'Access, null);
+            Add_Conflict (Table.States (499), 86, (242, 5),  1, name_5'Access, 
name_5_check'Access);
+            Add_Action (Table.States (499), 87, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 88, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 89, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 90, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 91, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 92, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 94, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 95, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 97, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 98, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 100, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 101, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 102, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 103, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 104, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (499), 105, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Table.States (499).Kernel := To_Vector ((((222, 1),  107,  0, 
(222, 1),  1), ((242, 5),  107,  0, (242, 5),
+             1)));
+            Table.States (499).Minimal_Complete_Actions := To_Vector 
(((Reduce, (222, 1),  1), (Reduce, (242, 5),
+            1)));
+            Table.States (500).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (500), 84, (257, 0), 646);
+            Add_Action (Table.States (500), 86, (222, 0), 236);
+            Table.States (500).Kernel := To_Vector ((((222, 0),  222,  2, 
(2147483647, 0),  0), ((257, 0),  222,  3,
+            (2147483647, 0),  0), ((257, 1),  222,  2, (2147483647, 0),  0), 
((257, 2),  222,  4, (2147483647, 0),  0),
+            ((257, 3),  222,  3, (2147483647, 0),  0)));
+            Table.States (500).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (257, 0),  84, 646)));
+            Table.States (501).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (501), (78, 99), (258, 1),  1, null, 
null);
+            Table.States (501).Kernel := To_Vector ((0 => ((258, 1),  257,  0, 
(258, 1),  1)));
+            Table.States (501).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (258, 1),  1)));
+            Table.States (502).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (502), 78, (202, 0), 647);
+            Add_Action (Table.States (502), 99, (258, 0), 648);
+            Table.States (502).Kernel := To_Vector ((((202, 0),  258,  1, 
(2147483647, 0),  0), ((258, 0),  258,  1,
+            (2147483647, 0),  0)));
+            Table.States (502).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (202, 0),  78, 647)));
+            Table.States (503).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (503), (21, 35, 56, 74, 78, 85, 99), 
(255, 0),  2,
             parameter_and_result_profile_0'Access, null);
-            Table.States (499).Kernel := To_Vector ((0 => (253, 292, 0, 
True)));
-            Table.States (499).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 253, 2)));
-            Table.States (499).Minimal_Complete_Actions_Recursive := True;
-            Table.States (500).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (500), 79, 31);
-            Add_Action (Table.States (500), 105, 120);
-            Add_Action (Table.States (500), 106, 34);
-            Add_Action (Table.States (500), 107, 35);
-            Table.States (500).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (500), 129, 42);
-            Add_Goto (Table.States (500), 240, 643);
-            Add_Goto (Table.States (500), 273, 93);
-            Add_Goto (Table.States (500), 294, 98);
-            Table.States (500).Kernel := To_Vector ((0 => (216, 56, 2, 
False)));
-            Table.States (500).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (501).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (501), 79, 31);
-            Add_Action (Table.States (501), 105, 120);
-            Add_Action (Table.States (501), 106, 34);
-            Add_Action (Table.States (501), 107, 35);
-            Table.States (501).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (501), 129, 42);
-            Add_Goto (Table.States (501), 240, 644);
-            Add_Goto (Table.States (501), 273, 93);
-            Add_Goto (Table.States (501), 294, 98);
-            Table.States (501).Kernel := To_Vector ((0 => (216, 56, 2, 
False)));
-            Table.States (501).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (502).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (502), 79, 31);
-            Add_Action (Table.States (502), 105, 120);
-            Add_Action (Table.States (502), 106, 34);
-            Add_Action (Table.States (502), 107, 35);
-            Table.States (502).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (502), 129, 42);
-            Add_Goto (Table.States (502), 240, 645);
-            Add_Goto (Table.States (502), 273, 93);
-            Add_Goto (Table.States (502), 294, 98);
-            Table.States (502).Kernel := To_Vector ((0 => (216, 56, 2, 
False)));
-            Table.States (502).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (503).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (503), 35, 646);
-            Add_Action (Table.States (503), 74, 338);
-            Add_Action (Table.States (503), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (503).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (503), 123, 647);
-            Table.States (503).Kernel := To_Vector (((202, 170, 3, False), 
(202, 170, 3, False), (202, 170, 1,
-            False)));
-            Table.States (503).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (504).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (504), 35, 648);
-            Add_Action (Table.States (504), 76, 236);
-            Add_Action (Table.States (504), 85, 238);
-            Add_Action (Table.States (504), 102, 240);
-            Add_Action (Table.States (504), 103, 241);
-            Table.States (504).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (504), 116, 242);
-            Add_Goto (Table.States (504), 323, 243);
-            Table.States (504).Kernel := To_Vector (((129, 240, 2, True), 
(205, 240, 4, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (504).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 648)));
-            Table.States (505).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (505), 6, 649);
-            Add_Action (Table.States (505), 41, 650);
-            Add_Action (Table.States (505), 79, 31);
-            Add_Action (Table.States (505), 81, 651);
-            Add_Action (Table.States (505), 105, 120);
-            Add_Action (Table.States (505), 106, 34);
-            Add_Action (Table.States (505), 107, 35);
-            Table.States (505).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (505), 129, 42);
-            Add_Goto (Table.States (505), 240, 652);
-            Add_Goto (Table.States (505), 273, 93);
-            Add_Goto (Table.States (505), 294, 98);
-            Add_Goto (Table.States (505), 311, 653);
-            Table.States (505).Kernel := To_Vector (((201, 35, 3, False), 
(201, 35, 2, False), (201, 35, 2, False)));
-            Table.States (505).Minimal_Complete_Actions := To_Vector (((Shift, 
105, 120), (Shift, 6, 649)));
-            Table.States (506).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (506), 97, 654);
-            Table.States (506).Kernel := To_Vector ((0 => (201, 123, 1, 
False)));
-            Table.States (506).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 654)));
-            Table.States (507).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (507), 7, Reduce, (237, 0), 1, null, 
null);
-            Add_Action (Table.States (507), 40, Reduce, (237, 0), 1, null, 
null);
-            Add_Action (Table.States (507), 45, 655);
-            Add_Action (Table.States (507), 74, Reduce, (237, 0), 1, null, 
null);
-            Add_Action (Table.States (507), 79, Reduce, (237, 0), 1, null, 
null);
-            Add_Action (Table.States (507), 83, Reduce, (237, 0), 1, null, 
null);
-            Add_Action (Table.States (507), 97, Reduce, (237, 0), 1, null, 
null);
-            Add_Action (Table.States (507), 105, Reduce, (237, 0), 1, null, 
null);
-            Add_Action (Table.States (507), 106, Reduce, (237, 0), 1, null, 
null);
-            Add_Action (Table.States (507), 107, Reduce, (237, 0), 1, null, 
null);
-            Table.States (507).Kernel := To_Vector (((237, 33, 0, False), 
(237, 33, 1, False)));
-            Table.States (507).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 237, 1)));
-            Table.States (508).Action_List.Set_Capacity (9);
-            Add_Action (Table.States (508), (7, 40, 74, 79, 83, 97, 105, 106, 
107), (237, 2), 1, null, null);
-            Table.States (508).Kernel := To_Vector ((0 => (237, 45, 0, 
False)));
-            Table.States (508).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 237, 1)));
-            Table.States (509).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (509), 7, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (509), 40, 387);
-            Add_Action (Table.States (509), 79, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (509), 105, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (509), 106, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (509), 107, Reduce, (242, 1), 0, null, 
null);
-            Table.States (509).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (509), 115, 656);
-            Add_Goto (Table.States (509), 242, 657);
-            Table.States (509).Kernel := To_Vector (((199, 237, 3, False), 
(199, 237, 4, False), (199, 237, 2, False),
-            (199, 237, 3, False)));
-            Table.States (509).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 242, 0)));
-            Table.States (510).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (510), 22, 658);
-            Add_Action (Table.States (510), 23, 659);
-            Add_Action (Table.States (510), 24, 660);
-            Table.States (510).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (510), 175, 661);
-            Add_Goto (Table.States (510), 176, 662);
-            Table.States (510).Kernel := To_Vector (((223, 301, 6, False), 
(223, 301, 4, False), (223, 301, 5, False),
-            (223, 301, 3, False)));
-            Table.States (510).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 660)));
-            Table.States (511).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (511), 84, 382);
-            Add_Action (Table.States (511), 97, 663);
-            Table.States (511).Kernel := To_Vector (((239, 239, 2, True), 
(333, 239, 1, False)));
-            Table.States (511).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 663)));
-            Table.States (512).Action_List.Set_Capacity (40);
-            Add_Action (Table.States (512), (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, 79, 
94, 105, 106, 107, 108), (333, 1), 4,
+            Table.States (503).Kernel := To_Vector ((0 => ((255, 0),  294,  0, 
(255, 0),  2)));
+            Table.States (503).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (255, 0),  2)));
+            Table.States (504).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (504), 81, (242, 8), 31);
+            Add_Action (Table.States (504), 107, (242, 5), 120);
+            Add_Action (Table.States (504), 108, (242, 7), 34);
+            Add_Action (Table.States (504), 109, (242, 6), 35);
+            Table.States (504).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (504), 131, 42);
+            Add_Goto (Table.States (504), 242, 649);
+            Add_Goto (Table.States (504), 275, 93);
+            Add_Goto (Table.States (504), 296, 98);
+            Table.States (504).Kernel := To_Vector ((0 => ((218, 2),  56,  2, 
(2147483647, 0),  0)));
+            Table.States (504).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (505).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (505), 81, (242, 8), 31);
+            Add_Action (Table.States (505), 107, (242, 5), 120);
+            Add_Action (Table.States (505), 108, (242, 7), 34);
+            Add_Action (Table.States (505), 109, (242, 6), 35);
+            Table.States (505).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (505), 131, 42);
+            Add_Goto (Table.States (505), 242, 650);
+            Add_Goto (Table.States (505), 275, 93);
+            Add_Goto (Table.States (505), 296, 98);
+            Table.States (505).Kernel := To_Vector ((0 => ((218, 0),  56,  2, 
(2147483647, 0),  0)));
+            Table.States (505).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (506).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (506), 81, (242, 8), 31);
+            Add_Action (Table.States (506), 107, (242, 5), 120);
+            Add_Action (Table.States (506), 108, (242, 7), 34);
+            Add_Action (Table.States (506), 109, (242, 6), 35);
+            Table.States (506).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (506), 131, 42);
+            Add_Goto (Table.States (506), 242, 651);
+            Add_Goto (Table.States (506), 275, 93);
+            Add_Goto (Table.States (506), 296, 98);
+            Table.States (506).Kernel := To_Vector ((0 => ((218, 1),  56,  2, 
(2147483647, 0),  0)));
+            Table.States (506).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (507).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (507), 35, (204, 0), 652);
+            Add_Action (Table.States (507), 74, (125, 0), 340);
+            Add_Action (Table.States (507), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (507).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (507), 125, 653);
+            Table.States (507).Kernel := To_Vector ((((204, 0),  172,  3, 
(2147483647, 0),  0), ((204, 1),  172,  3,
+            (2147483647, 0),  0), ((204, 2),  172,  1, (2147483647, 0),  0)));
+            Table.States (507).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (508).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (508), 35, (207, 0), 654);
+            Add_Action (Table.States (508), 76, (118, 0), 237);
+            Add_Action (Table.States (508), 87, (296, 0), 239);
+            Add_Action (Table.States (508), 104, (325, 0), 241);
+            Add_Action (Table.States (508), 105, (325, 1), 242);
+            Table.States (508).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (508), 118, 243);
+            Add_Goto (Table.States (508), 325, 244);
+            Table.States (508).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((207, 0),  242,  4,
+            (2147483647, 0),  0), ((242, 0),  242,  5, (2147483647, 0),  0), 
((242, 1),  242,  2, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (508).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (207, 0),  35, 654)));
+            Table.States (509).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (509), 6, (203, 0), 655);
+            Add_Action (Table.States (509), 41, (313, 2), 656);
+            Add_Action (Table.States (509), 81, (242, 8), 31);
+            Add_Action (Table.States (509), 83, (313, 1), 657);
+            Add_Action (Table.States (509), 107, (242, 5), 120);
+            Add_Action (Table.States (509), 108, (242, 7), 34);
+            Add_Action (Table.States (509), 109, (242, 6), 35);
+            Table.States (509).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (509), 131, 42);
+            Add_Goto (Table.States (509), 242, 658);
+            Add_Goto (Table.States (509), 275, 93);
+            Add_Goto (Table.States (509), 296, 98);
+            Add_Goto (Table.States (509), 313, 659);
+            Table.States (509).Kernel := To_Vector ((((203, 0),  35,  3, 
(2147483647, 0),  0), ((203, 1),  35,  2,
+            (2147483647, 0),  0), ((203, 2),  35,  2, (2147483647, 0),  0)));
+            Table.States (509).Minimal_Complete_Actions := To_Vector (((Shift, 
(242, 5),  107, 120), (Shift, (203, 0),
+            6, 655)));
+            Table.States (510).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (510), 99, (203, 3), 660);
+            Table.States (510).Kernel := To_Vector ((0 => ((203, 3),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (510).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (203, 3),  99, 660)));
+            Table.States (511).Action_List.Set_Capacity (10);
+            Add_Action (Table.States (511), 7, Reduce, (239, 0),  1, null, 
null);
+            Add_Action (Table.States (511), 40, Reduce, (239, 0),  1, null, 
null);
+            Add_Action (Table.States (511), 45, (239, 1), 661);
+            Add_Action (Table.States (511), 74, Reduce, (239, 0),  1, null, 
null);
+            Add_Action (Table.States (511), 81, Reduce, (239, 0),  1, null, 
null);
+            Add_Action (Table.States (511), 85, Reduce, (239, 0),  1, null, 
null);
+            Add_Action (Table.States (511), 99, Reduce, (239, 0),  1, null, 
null);
+            Add_Action (Table.States (511), 107, Reduce, (239, 0),  1, null, 
null);
+            Add_Action (Table.States (511), 108, Reduce, (239, 0),  1, null, 
null);
+            Add_Action (Table.States (511), 109, Reduce, (239, 0),  1, null, 
null);
+            Table.States (511).Kernel := To_Vector ((((239, 0),  33,  0, (239, 
0),  1), ((239, 1),  33,  1,
+            (2147483647, 0),  0)));
+            Table.States (511).Minimal_Complete_Actions := To_Vector 
(((Reduce, (239, 0),  1), (Shift, (239, 1),  45,
+            661)));
+            Table.States (512).Action_List.Set_Capacity (9);
+            Add_Action (Table.States (512), (7, 40, 74, 81, 85, 99, 107, 108, 
109), (239, 2),  1, null, null);
+            Table.States (512).Kernel := To_Vector ((0 => ((239, 2),  45,  0, 
(239, 2),  1)));
+            Table.States (512).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (239, 2),  1)));
+            Table.States (513).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (513), 7, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (513), 40, (244, 0), 389);
+            Add_Action (Table.States (513), 81, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (513), 107, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (513), 108, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (513), 109, Reduce, (244, 1),  0, null, 
null);
+            Table.States (513).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (513), 117, 662);
+            Add_Goto (Table.States (513), 244, 663);
+            Table.States (513).Kernel := To_Vector ((((201, 0),  239,  3, 
(2147483647, 0),  0), ((201, 1),  239,  4,
+            (2147483647, 0),  0), ((201, 2),  239,  2, (2147483647, 0),  0), 
((201, 3),  239,  3, (2147483647, 0),
+            0)));
+            Table.States (513).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (244, 1),  0)));
+            Table.States (514).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (514), 22, (225, 1), 664);
+            Add_Action (Table.States (514), 23, (177, 0), 665);
+            Add_Action (Table.States (514), 24, (225, 3), 666);
+            Table.States (514).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (514), 177, 667);
+            Add_Goto (Table.States (514), 178, 668);
+            Table.States (514).Kernel := To_Vector ((((225, 0),  303,  6, 
(2147483647, 0),  0), ((225, 1),  303,  4,
+            (2147483647, 0),  0), ((225, 2),  303,  5, (2147483647, 0),  0), 
((225, 3),  303,  3, (2147483647, 0),
+            0)));
+            Table.States (514).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (225, 3),  24, 666)));
+            Table.States (515).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (515), 86, (241, 0), 384);
+            Add_Action (Table.States (515), 99, (335, 0), 669);
+            Table.States (515).Kernel := To_Vector ((((241, 0),  241,  2, 
(2147483647, 0),  0), ((335, 0),  241,  1,
+            (2147483647, 0),  0)));
+            Table.States (515).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (335, 0),  99, 669)));
+            Table.States (516).Action_List.Set_Capacity (40);
+            Add_Action (Table.States (516), (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, 81, 
96, 107, 108, 109, 110), (335, 1),  4,
             with_clause_1'Access, null);
-            Table.States (512).Kernel := To_Vector ((0 => (333, 97, 0, 
False)));
-            Table.States (512).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 333, 4)));
-            Table.States (513).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (513), 60, 664);
-            Table.States (513).Kernel := To_Vector ((0 => (249, 35, 2, 
False)));
-            Table.States (513).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 60, 664)));
-            Table.States (514).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (514), 35, 665);
-            Table.States (514).Kernel := To_Vector (((248, 123, 4, False), 
(248, 123, 3, False)));
-            Table.States (514).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 665)));
-            Table.States (515).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (515), 79, 31);
-            Add_Action (Table.States (515), 105, 120);
-            Add_Action (Table.States (515), 106, 34);
-            Add_Action (Table.States (515), 107, 35);
-            Table.States (515).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (515), 129, 42);
-            Add_Goto (Table.States (515), 240, 666);
-            Add_Goto (Table.States (515), 273, 93);
-            Add_Goto (Table.States (515), 294, 98);
-            Table.States (515).Kernel := To_Vector ((0 => (214, 39, 2, 
False)));
-            Table.States (515).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (516).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (516), 74, 338);
-            Add_Action (Table.States (516), 76, 236);
-            Add_Action (Table.States (516), 85, 238);
-            Add_Action (Table.States (516), 97, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (516), 102, 240);
-            Add_Action (Table.States (516), 103, 241);
-            Table.States (516).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (516), 116, 242);
-            Add_Goto (Table.States (516), 123, 667);
-            Add_Goto (Table.States (516), 323, 243);
-            Table.States (516).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (251, 240, 1, False), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (516).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
+            Table.States (516).Kernel := To_Vector ((0 => ((335, 1),  99,  0, 
(335, 1),  4)));
+            Table.States (516).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (335, 1),  4)));
             Table.States (517).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (517), 105, 438);
-            Table.States (517).Kernel := To_Vector ((0 => (125, 28, 4, 
False)));
-            Table.States (517).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 438)));
-            Table.States (518).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (518), 35, Reduce, (123, 0), 2, 
aspect_specification_opt_0'Access, null);
-            Add_Action (Table.States (518), 84, 445);
-            Add_Action (Table.States (518), 97, Reduce, (123, 0), 2, 
aspect_specification_opt_0'Access, null);
-            Table.States (518).Kernel := To_Vector (((123, 126, 0, False), 
(126, 126, 1, True)));
-            Table.States (518).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 2)));
-            Table.States (519).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (519), 24, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (519), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (519), 28, 184);
-            Add_Action (Table.States (519), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (519), 30, 8);
-            Add_Action (Table.States (519), 40, 12);
-            Add_Action (Table.States (519), 46, 14);
-            Add_Action (Table.States (519), 47, 15);
-            Add_Action (Table.States (519), 48, 16);
-            Add_Action (Table.States (519), 49, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (519), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (519), 51, 19);
-            Add_Action (Table.States (519), 63, 25);
-            Add_Action (Table.States (519), 66, 26);
-            Add_Action (Table.States (519), 69, 27);
-            Add_Action (Table.States (519), 71, 28);
-            Add_Action (Table.States (519), 105, 186);
-            Table.States (519).Goto_List.Set_Capacity (53);
-            Add_Goto (Table.States (519), 113, 36);
-            Add_Goto (Table.States (519), 122, 38);
-            Add_Goto (Table.States (519), 128, 41);
-            Add_Goto (Table.States (519), 135, 46);
-            Add_Goto (Table.States (519), 136, 47);
-            Add_Goto (Table.States (519), 158, 392);
-            Add_Goto (Table.States (519), 159, 393);
-            Add_Goto (Table.States (519), 160, 668);
-            Add_Goto (Table.States (519), 180, 55);
-            Add_Goto (Table.States (519), 183, 56);
-            Add_Goto (Table.States (519), 187, 57);
-            Add_Goto (Table.States (519), 194, 59);
-            Add_Goto (Table.States (519), 207, 61);
-            Add_Goto (Table.States (519), 208, 62);
-            Add_Goto (Table.States (519), 210, 63);
-            Add_Goto (Table.States (519), 211, 64);
-            Add_Goto (Table.States (519), 214, 65);
-            Add_Goto (Table.States (519), 215, 66);
-            Add_Goto (Table.States (519), 216, 67);
-            Add_Goto (Table.States (519), 217, 68);
-            Add_Goto (Table.States (519), 220, 70);
-            Add_Goto (Table.States (519), 224, 72);
-            Add_Goto (Table.States (519), 244, 75);
-            Add_Goto (Table.States (519), 245, 76);
-            Add_Goto (Table.States (519), 246, 77);
-            Add_Goto (Table.States (519), 247, 78);
-            Add_Goto (Table.States (519), 248, 79);
-            Add_Goto (Table.States (519), 249, 80);
-            Add_Goto (Table.States (519), 250, 81);
-            Add_Goto (Table.States (519), 251, 82);
-            Add_Goto (Table.States (519), 252, 83);
-            Add_Goto (Table.States (519), 258, 395);
-            Add_Goto (Table.States (519), 260, 85);
-            Add_Goto (Table.States (519), 261, 86);
-            Add_Goto (Table.States (519), 263, 88);
-            Add_Goto (Table.States (519), 264, 89);
-            Add_Goto (Table.States (519), 265, 90);
-            Add_Goto (Table.States (519), 266, 91);
-            Add_Goto (Table.States (519), 272, 92);
-            Add_Goto (Table.States (519), 282, 95);
-            Add_Goto (Table.States (519), 290, 96);
-            Add_Goto (Table.States (519), 305, 103);
-            Add_Goto (Table.States (519), 306, 104);
-            Add_Goto (Table.States (519), 308, 106);
-            Add_Goto (Table.States (519), 309, 107);
-            Add_Goto (Table.States (519), 310, 108);
-            Add_Goto (Table.States (519), 312, 109);
-            Add_Goto (Table.States (519), 314, 110);
-            Add_Goto (Table.States (519), 317, 112);
-            Add_Goto (Table.States (519), 318, 113);
-            Add_Goto (Table.States (519), 320, 114);
-            Add_Goto (Table.States (519), 326, 116);
-            Add_Goto (Table.States (519), 332, 117);
-            Table.States (519).Kernel := To_Vector (((252, 35, 2, False), 
(252, 35, 1, False)));
-            Table.States (519).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 160, 0)));
-            Table.States (520).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (520), 77, 669);
-            Add_Action (Table.States (520), 84, 445);
-            Table.States (520).Kernel := To_Vector (((126, 126, 1, True), 
(258, 126, 2, False)));
-            Table.States (520).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 669)));
+            Add_Action (Table.States (517), 60, (251, 0), 670);
+            Table.States (517).Kernel := To_Vector ((0 => ((251, 0),  35,  2, 
(2147483647, 0),  0)));
+            Table.States (517).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (251, 0),  60, 670)));
+            Table.States (518).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (518), 35, (250, 0), 671);
+            Table.States (518).Kernel := To_Vector ((((250, 0),  125,  4, 
(2147483647, 0),  0), ((250, 1),  125,  3,
+            (2147483647, 0),  0)));
+            Table.States (518).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (250, 0),  35, 671)));
+            Table.States (519).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (519), 81, (242, 8), 31);
+            Add_Action (Table.States (519), 107, (242, 5), 120);
+            Add_Action (Table.States (519), 108, (242, 7), 34);
+            Add_Action (Table.States (519), 109, (242, 6), 35);
+            Table.States (519).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (519), 131, 42);
+            Add_Goto (Table.States (519), 242, 672);
+            Add_Goto (Table.States (519), 275, 93);
+            Add_Goto (Table.States (519), 296, 98);
+            Table.States (519).Kernel := To_Vector ((0 => ((216, 0),  39,  2, 
(2147483647, 0),  0)));
+            Table.States (519).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (520).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (520), 74, (125, 0), 340);
+            Add_Action (Table.States (520), 76, (118, 0), 237);
+            Add_Action (Table.States (520), 87, (296, 0), 239);
+            Add_Action (Table.States (520), 99, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (520), 104, (325, 0), 241);
+            Add_Action (Table.States (520), 105, (325, 1), 242);
+            Table.States (520).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (520), 118, 243);
+            Add_Goto (Table.States (520), 125, 673);
+            Add_Goto (Table.States (520), 325, 244);
+            Table.States (520).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((253, 0),  242,  1, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (520).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+         end Subr_10;
+         procedure Subr_11
+         is begin
             Table.States (521).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (521), 77, 670);
-            Table.States (521).Kernel := To_Vector ((0 => (258, 154, 2, 
False)));
-            Table.States (521).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 670)));
-            Table.States (522).Action_List.Set_Capacity (40);
-            Add_Action (Table.States (522), (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, 79, 
94, 105, 106, 107, 108), (333, 2), 4,
+            Add_Action (Table.States (521), 107, (127, 6), 440);
+            Table.States (521).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (521), 233, 441);
+            Table.States (521).Kernel := To_Vector ((((127, 6),  28,  4, 
(2147483647, 0),  0), ((127, 7),  28,  5,
+            (2147483647, 0),  0)));
+            Table.States (521).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (127, 6),  107, 440)));
+            Table.States (522).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (522), 35, Reduce, (125, 0),  2, 
aspect_specification_opt_0'Access, null);
+            Add_Action (Table.States (522), 86, (128, 0), 448);
+            Add_Action (Table.States (522), 99, Reduce, (125, 0),  2, 
aspect_specification_opt_0'Access, null);
+            Table.States (522).Kernel := To_Vector ((((125, 0),  128,  0, 
(125, 0),  2), ((128, 0),  128,  1,
+            (2147483647, 0),  0)));
+            Table.States (522).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 0),  2)));
+            Table.States (523).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (523), 24, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (523), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (523), 28, (124, 0), 185);
+            Add_Action (Table.States (523), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (523), 30, (213, 0), 8);
+            Add_Action (Table.States (523), 40, (249, 0), 12);
+            Add_Action (Table.States (523), 46, (249, 1), 14);
+            Add_Action (Table.States (523), 47, (216, 0), 15);
+            Add_Action (Table.States (523), 48, (260, 0), 16);
+            Add_Action (Table.States (523), 49, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (523), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (523), 51, (267, 0), 19);
+            Add_Action (Table.States (523), 63, (316, 0), 25);
+            Add_Action (Table.States (523), 66, (308, 0), 26);
+            Add_Action (Table.States (523), 69, (209, 0), 27);
+            Add_Action (Table.States (523), 71, (334, 0), 28);
+            Add_Action (Table.States (523), 107, (222, 1), 187);
+            Table.States (523).Goto_List.Set_Capacity (53);
+            Add_Goto (Table.States (523), 115, 36);
+            Add_Goto (Table.States (523), 124, 38);
+            Add_Goto (Table.States (523), 130, 41);
+            Add_Goto (Table.States (523), 137, 46);
+            Add_Goto (Table.States (523), 138, 47);
+            Add_Goto (Table.States (523), 160, 394);
+            Add_Goto (Table.States (523), 161, 395);
+            Add_Goto (Table.States (523), 162, 674);
+            Add_Goto (Table.States (523), 182, 55);
+            Add_Goto (Table.States (523), 185, 56);
+            Add_Goto (Table.States (523), 189, 57);
+            Add_Goto (Table.States (523), 196, 59);
+            Add_Goto (Table.States (523), 209, 61);
+            Add_Goto (Table.States (523), 210, 62);
+            Add_Goto (Table.States (523), 212, 63);
+            Add_Goto (Table.States (523), 213, 64);
+            Add_Goto (Table.States (523), 216, 65);
+            Add_Goto (Table.States (523), 217, 66);
+            Add_Goto (Table.States (523), 218, 67);
+            Add_Goto (Table.States (523), 219, 68);
+            Add_Goto (Table.States (523), 222, 70);
+            Add_Goto (Table.States (523), 226, 72);
+            Add_Goto (Table.States (523), 246, 75);
+            Add_Goto (Table.States (523), 247, 76);
+            Add_Goto (Table.States (523), 248, 77);
+            Add_Goto (Table.States (523), 249, 78);
+            Add_Goto (Table.States (523), 250, 79);
+            Add_Goto (Table.States (523), 251, 80);
+            Add_Goto (Table.States (523), 252, 81);
+            Add_Goto (Table.States (523), 253, 82);
+            Add_Goto (Table.States (523), 254, 83);
+            Add_Goto (Table.States (523), 260, 397);
+            Add_Goto (Table.States (523), 262, 85);
+            Add_Goto (Table.States (523), 263, 86);
+            Add_Goto (Table.States (523), 265, 88);
+            Add_Goto (Table.States (523), 266, 89);
+            Add_Goto (Table.States (523), 267, 90);
+            Add_Goto (Table.States (523), 268, 91);
+            Add_Goto (Table.States (523), 274, 92);
+            Add_Goto (Table.States (523), 284, 95);
+            Add_Goto (Table.States (523), 292, 96);
+            Add_Goto (Table.States (523), 307, 103);
+            Add_Goto (Table.States (523), 308, 104);
+            Add_Goto (Table.States (523), 310, 106);
+            Add_Goto (Table.States (523), 311, 107);
+            Add_Goto (Table.States (523), 312, 108);
+            Add_Goto (Table.States (523), 314, 109);
+            Add_Goto (Table.States (523), 316, 110);
+            Add_Goto (Table.States (523), 319, 112);
+            Add_Goto (Table.States (523), 320, 113);
+            Add_Goto (Table.States (523), 322, 114);
+            Add_Goto (Table.States (523), 328, 116);
+            Add_Goto (Table.States (523), 334, 117);
+            Table.States (523).Kernel := To_Vector ((((254, 0),  35,  2, 
(2147483647, 0),  0), ((254, 1),  35,  1,
+            (2147483647, 0),  0)));
+            Table.States (523).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (162, 1),  0)));
+            Table.States (524).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (524), 78, (260, 0), 675);
+            Add_Action (Table.States (524), 86, (128, 0), 448);
+            Table.States (524).Kernel := To_Vector ((((128, 0),  128,  1, 
(2147483647, 0),  0), ((260, 0),  128,  2,
+            (2147483647, 0),  0)));
+            Table.States (524).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (260, 0),  78, 675)));
+            Table.States (525).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (525), 78, (260, 1), 676);
+            Table.States (525).Kernel := To_Vector ((0 => ((260, 1),  156,  2, 
(2147483647, 0),  0)));
+            Table.States (525).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (260, 1),  78, 676)));
+            Table.States (526).Action_List.Set_Capacity (40);
+            Add_Action (Table.States (526), (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, 81, 
96, 107, 108, 109, 110), (335, 2),  4,
             with_clause_2'Access, null);
-            Table.States (522).Kernel := To_Vector ((0 => (333, 97, 0, 
False)));
-            Table.States (522).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 333, 4)));
-            Table.States (523).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (523), 60, 671);
-            Table.States (523).Kernel := To_Vector ((0 => (266, 35, 2, 
False)));
-            Table.States (523).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 60, 671)));
-            Table.States (524).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (524), 35, 672);
-            Table.States (524).Kernel := To_Vector ((0 => (265, 123, 3, 
False)));
-            Table.States (524).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 672)));
-            Table.States (525).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (525), 35, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (525), 74, 338);
-            Table.States (525).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (525), 123, 673);
-            Table.States (525).Kernel := To_Vector (((272, 170, 6, False), 
(272, 170, 3, False)));
-            Table.States (525).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (526).Action_List.Set_Capacity (18);
-            Add_Action (Table.States (526), 24, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (526), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (526), 28, 184);
-            Add_Action (Table.States (526), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (526), 30, 8);
-            Add_Action (Table.States (526), 39, 674);
-            Add_Action (Table.States (526), 40, 12);
-            Add_Action (Table.States (526), 46, 14);
-            Add_Action (Table.States (526), 47, 15);
-            Add_Action (Table.States (526), 48, 16);
-            Add_Action (Table.States (526), 49, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (526), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (526), 51, 19);
-            Add_Action (Table.States (526), 63, 25);
-            Add_Action (Table.States (526), 66, 26);
-            Add_Action (Table.States (526), 69, 27);
-            Add_Action (Table.States (526), 71, 28);
-            Add_Action (Table.States (526), 105, 186);
-            Table.States (526).Goto_List.Set_Capacity (54);
-            Add_Goto (Table.States (526), 113, 36);
-            Add_Goto (Table.States (526), 122, 38);
-            Add_Goto (Table.States (526), 128, 41);
-            Add_Goto (Table.States (526), 135, 46);
-            Add_Goto (Table.States (526), 136, 47);
-            Add_Goto (Table.States (526), 158, 392);
-            Add_Goto (Table.States (526), 159, 393);
-            Add_Goto (Table.States (526), 160, 675);
-            Add_Goto (Table.States (526), 180, 55);
-            Add_Goto (Table.States (526), 183, 56);
-            Add_Goto (Table.States (526), 187, 57);
-            Add_Goto (Table.States (526), 194, 59);
-            Add_Goto (Table.States (526), 207, 61);
-            Add_Goto (Table.States (526), 208, 62);
-            Add_Goto (Table.States (526), 210, 63);
-            Add_Goto (Table.States (526), 211, 64);
-            Add_Goto (Table.States (526), 214, 65);
-            Add_Goto (Table.States (526), 215, 66);
-            Add_Goto (Table.States (526), 216, 67);
-            Add_Goto (Table.States (526), 217, 68);
-            Add_Goto (Table.States (526), 220, 70);
-            Add_Goto (Table.States (526), 224, 72);
-            Add_Goto (Table.States (526), 244, 75);
-            Add_Goto (Table.States (526), 245, 76);
-            Add_Goto (Table.States (526), 246, 77);
-            Add_Goto (Table.States (526), 247, 78);
-            Add_Goto (Table.States (526), 248, 79);
-            Add_Goto (Table.States (526), 249, 80);
-            Add_Goto (Table.States (526), 250, 81);
-            Add_Goto (Table.States (526), 251, 82);
-            Add_Goto (Table.States (526), 252, 83);
-            Add_Goto (Table.States (526), 258, 395);
-            Add_Goto (Table.States (526), 260, 85);
-            Add_Goto (Table.States (526), 261, 86);
-            Add_Goto (Table.States (526), 263, 88);
-            Add_Goto (Table.States (526), 264, 89);
-            Add_Goto (Table.States (526), 265, 90);
-            Add_Goto (Table.States (526), 266, 91);
-            Add_Goto (Table.States (526), 267, 676);
-            Add_Goto (Table.States (526), 272, 92);
-            Add_Goto (Table.States (526), 282, 95);
-            Add_Goto (Table.States (526), 290, 96);
-            Add_Goto (Table.States (526), 305, 103);
-            Add_Goto (Table.States (526), 306, 104);
-            Add_Goto (Table.States (526), 308, 106);
-            Add_Goto (Table.States (526), 309, 107);
-            Add_Goto (Table.States (526), 310, 108);
-            Add_Goto (Table.States (526), 312, 109);
-            Add_Goto (Table.States (526), 314, 110);
-            Add_Goto (Table.States (526), 317, 112);
-            Add_Goto (Table.States (526), 318, 113);
-            Add_Goto (Table.States (526), 320, 114);
-            Add_Goto (Table.States (526), 326, 116);
-            Add_Goto (Table.States (526), 332, 117);
-            Table.States (526).Kernel := To_Vector (((305, 35, 5, False), 
(305, 35, 2, False)));
-            Table.States (526).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 160, 0)));
+            Table.States (526).Kernel := To_Vector ((0 => ((335, 2),  99,  0, 
(335, 2),  4)));
+            Table.States (526).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (335, 2),  4)));
             Table.States (527).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (527), 97, 677);
-            Table.States (527).Kernel := To_Vector ((0 => (277, 193, 1, 
False)));
-            Table.States (527).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 677)));
+            Add_Action (Table.States (527), 60, (268, 0), 677);
+            Table.States (527).Kernel := To_Vector ((0 => ((268, 0),  35,  2, 
(2147483647, 0),  0)));
+            Table.States (527).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (268, 0),  60, 677)));
             Table.States (528).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (528), 97, 678);
-            Table.States (528).Kernel := To_Vector ((0 => (291, 5, 1, False)));
-            Table.States (528).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 678)));
-            Table.States (529).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (529), 7, Reduce, (155, 1), 0, null, 
null);
-            Add_Action (Table.States (529), 16, 572);
-            Add_Action (Table.States (529), 21, Reduce, (155, 1), 0, null, 
null);
-            Add_Action (Table.States (529), 40, Reduce, (155, 1), 0, null, 
null);
-            Add_Action (Table.States (529), 79, Reduce, (155, 1), 0, null, 
null);
-            Add_Action (Table.States (529), 83, Reduce, (155, 1), 0, null, 
null);
-            Add_Action (Table.States (529), 97, Reduce, (155, 1), 0, null, 
null);
-            Add_Action (Table.States (529), 105, Reduce, (155, 1), 0, null, 
null);
-            Add_Action (Table.States (529), 106, Reduce, (155, 1), 0, null, 
null);
-            Add_Action (Table.States (529), 107, Reduce, (155, 1), 0, null, 
null);
+            Add_Action (Table.States (528), 35, (267, 0), 678);
+            Table.States (528).Kernel := To_Vector ((0 => ((267, 0),  125,  3, 
(2147483647, 0),  0)));
+            Table.States (528).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (267, 0),  35, 678)));
+            Table.States (529).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (529), 35, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (529), 74, (125, 0), 340);
             Table.States (529).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (529), 155, 679);
-            Table.States (529).Kernel := To_Vector (((195, 119, 2, False), 
(195, 119, 1, False)));
-            Table.States (529).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 155, 0)));
-            Table.States (530).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (530), 24, 680);
-            Table.States (530).Kernel := To_Vector ((0 => (197, 219, 3, 
False)));
-            Table.States (530).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 680)));
-            Table.States (531).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (531), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (531), 40, 12);
-            Add_Action (Table.States (531), 46, 14);
-            Add_Action (Table.States (531), 47, 681);
-            Add_Action (Table.States (531), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (531), 51, 682);
-            Add_Action (Table.States (531), 66, 683);
-            Table.States (531).Goto_List.Set_Capacity (8);
-            Add_Goto (Table.States (531), 208, 62);
-            Add_Goto (Table.States (531), 247, 684);
-            Add_Goto (Table.States (531), 248, 79);
-            Add_Goto (Table.States (531), 263, 88);
-            Add_Goto (Table.States (531), 264, 685);
-            Add_Goto (Table.States (531), 265, 90);
-            Add_Goto (Table.States (531), 308, 106);
-            Add_Goto (Table.States (531), 317, 112);
-            Table.States (531).Kernel := To_Vector ((0 => (316, 77, 6, 
False)));
-            Table.States (531).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 247, 0)));
-            Table.States (532).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (532), 4, 1);
-            Add_Action (Table.States (532), 18, 4);
-            Add_Action (Table.States (532), 67, 686);
-            Table.States (532).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (532), 114, 687);
-            Add_Goto (Table.States (532), 161, 688);
-            Add_Goto (Table.States (532), 162, 537);
-            Table.States (532).Kernel := To_Vector (((296, 88, 3, False), 
(296, 88, 2, False), (296, 88, 2, False)));
-            Table.States (532).Minimal_Complete_Actions := To_Vector (((Shift, 
67, 686), (Shift, 18, 4)));
-            Table.States (533).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (533), (13, 17, 28, 37, 73), (132, 0), 2, 
block_label_0'Access,
+            Add_Goto (Table.States (529), 125, 679);
+            Table.States (529).Kernel := To_Vector ((((274, 0),  172,  6, 
(2147483647, 0),  0), ((274, 1),  172,  3,
+            (2147483647, 0),  0)));
+            Table.States (529).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (530).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (530), 24, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (530), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (530), 28, (124, 0), 185);
+            Add_Action (Table.States (530), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (530), 30, (213, 0), 8);
+            Add_Action (Table.States (530), 39, (307, 0), 680);
+            Add_Action (Table.States (530), 40, (249, 0), 12);
+            Add_Action (Table.States (530), 46, (249, 1), 14);
+            Add_Action (Table.States (530), 47, (216, 0), 15);
+            Add_Action (Table.States (530), 48, (260, 0), 16);
+            Add_Action (Table.States (530), 49, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (530), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (530), 51, (267, 0), 19);
+            Add_Action (Table.States (530), 63, (316, 0), 25);
+            Add_Action (Table.States (530), 66, (308, 0), 26);
+            Add_Action (Table.States (530), 69, (209, 0), 27);
+            Add_Action (Table.States (530), 71, (334, 0), 28);
+            Add_Action (Table.States (530), 107, (222, 1), 187);
+            Table.States (530).Goto_List.Set_Capacity (54);
+            Add_Goto (Table.States (530), 115, 36);
+            Add_Goto (Table.States (530), 124, 38);
+            Add_Goto (Table.States (530), 130, 41);
+            Add_Goto (Table.States (530), 137, 46);
+            Add_Goto (Table.States (530), 138, 47);
+            Add_Goto (Table.States (530), 160, 394);
+            Add_Goto (Table.States (530), 161, 395);
+            Add_Goto (Table.States (530), 162, 681);
+            Add_Goto (Table.States (530), 182, 55);
+            Add_Goto (Table.States (530), 185, 56);
+            Add_Goto (Table.States (530), 189, 57);
+            Add_Goto (Table.States (530), 196, 59);
+            Add_Goto (Table.States (530), 209, 61);
+            Add_Goto (Table.States (530), 210, 62);
+            Add_Goto (Table.States (530), 212, 63);
+            Add_Goto (Table.States (530), 213, 64);
+            Add_Goto (Table.States (530), 216, 65);
+            Add_Goto (Table.States (530), 217, 66);
+            Add_Goto (Table.States (530), 218, 67);
+            Add_Goto (Table.States (530), 219, 68);
+            Add_Goto (Table.States (530), 222, 70);
+            Add_Goto (Table.States (530), 226, 72);
+            Add_Goto (Table.States (530), 246, 75);
+            Add_Goto (Table.States (530), 247, 76);
+            Add_Goto (Table.States (530), 248, 77);
+            Add_Goto (Table.States (530), 249, 78);
+            Add_Goto (Table.States (530), 250, 79);
+            Add_Goto (Table.States (530), 251, 80);
+            Add_Goto (Table.States (530), 252, 81);
+            Add_Goto (Table.States (530), 253, 82);
+            Add_Goto (Table.States (530), 254, 83);
+            Add_Goto (Table.States (530), 260, 397);
+            Add_Goto (Table.States (530), 262, 85);
+            Add_Goto (Table.States (530), 263, 86);
+            Add_Goto (Table.States (530), 265, 88);
+            Add_Goto (Table.States (530), 266, 89);
+            Add_Goto (Table.States (530), 267, 90);
+            Add_Goto (Table.States (530), 268, 91);
+            Add_Goto (Table.States (530), 269, 682);
+            Add_Goto (Table.States (530), 274, 92);
+            Add_Goto (Table.States (530), 284, 95);
+            Add_Goto (Table.States (530), 292, 96);
+            Add_Goto (Table.States (530), 307, 103);
+            Add_Goto (Table.States (530), 308, 104);
+            Add_Goto (Table.States (530), 310, 106);
+            Add_Goto (Table.States (530), 311, 107);
+            Add_Goto (Table.States (530), 312, 108);
+            Add_Goto (Table.States (530), 314, 109);
+            Add_Goto (Table.States (530), 316, 110);
+            Add_Goto (Table.States (530), 319, 112);
+            Add_Goto (Table.States (530), 320, 113);
+            Add_Goto (Table.States (530), 322, 114);
+            Add_Goto (Table.States (530), 328, 116);
+            Add_Goto (Table.States (530), 334, 117);
+            Table.States (530).Kernel := To_Vector ((((307, 0),  35,  5, 
(2147483647, 0),  0), ((307, 1),  35,  2,
+            (2147483647, 0),  0)));
+            Table.States (530).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (162, 1),  0)));
+            Table.States (531).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (531), 99, (279, 0), 683);
+            Table.States (531).Kernel := To_Vector ((0 => ((279, 0),  195,  1, 
(2147483647, 0),  0)));
+            Table.States (531).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (279, 0),  99, 683)));
+            Table.States (532).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (532), 99, (293, 0), 684);
+            Table.States (532).Kernel := To_Vector ((0 => ((293, 0),  5,  1, 
(2147483647, 0),  0)));
+            Table.States (532).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (293, 0),  99, 684)));
+            Table.States (533).Action_List.Set_Capacity (10);
+            Add_Action (Table.States (533), 7, Reduce, (157, 1),  0, null, 
null);
+            Add_Action (Table.States (533), 16, (157, 0), 576);
+            Add_Action (Table.States (533), 21, Reduce, (157, 1),  0, null, 
null);
+            Add_Action (Table.States (533), 40, Reduce, (157, 1),  0, null, 
null);
+            Add_Action (Table.States (533), 81, Reduce, (157, 1),  0, null, 
null);
+            Add_Action (Table.States (533), 85, Reduce, (157, 1),  0, null, 
null);
+            Add_Action (Table.States (533), 99, Reduce, (157, 1),  0, null, 
null);
+            Add_Action (Table.States (533), 107, Reduce, (157, 1),  0, null, 
null);
+            Add_Action (Table.States (533), 108, Reduce, (157, 1),  0, null, 
null);
+            Add_Action (Table.States (533), 109, Reduce, (157, 1),  0, null, 
null);
+            Table.States (533).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (533), 157, 685);
+            Table.States (533).Kernel := To_Vector ((((197, 0),  121,  2, 
(2147483647, 0),  0), ((197, 1),  121,  1,
+            (2147483647, 0),  0)));
+            Table.States (533).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (157, 1),  0)));
+            Table.States (534).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (534), 24, (199, 0), 686);
+            Table.States (534).Kernel := To_Vector ((0 => ((199, 0),  221,  3, 
(2147483647, 0),  0)));
+            Table.States (534).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (199, 0),  24, 686)));
+            Table.States (535).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (535), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (535), 40, (249, 0), 12);
+            Add_Action (Table.States (535), 46, (249, 1), 14);
+            Add_Action (Table.States (535), 47, (250, 0), 687);
+            Add_Action (Table.States (535), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (535), 51, (267, 0), 688);
+            Add_Action (Table.States (535), 66, (319, 0), 689);
+            Table.States (535).Goto_List.Set_Capacity (8);
+            Add_Goto (Table.States (535), 210, 62);
+            Add_Goto (Table.States (535), 249, 690);
+            Add_Goto (Table.States (535), 250, 79);
+            Add_Goto (Table.States (535), 265, 88);
+            Add_Goto (Table.States (535), 266, 691);
+            Add_Goto (Table.States (535), 267, 90);
+            Add_Goto (Table.States (535), 310, 106);
+            Add_Goto (Table.States (535), 319, 112);
+            Table.States (535).Kernel := To_Vector ((0 => ((318, 0),  78,  6, 
(2147483647, 0),  0)));
+            Table.States (535).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (249, 2),  0)));
+            Table.States (536).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (536), 4, (116, 0), 1);
+            Add_Action (Table.States (536), 18, (164, 0), 4);
+            Add_Action (Table.States (536), 67, (298, 1), 692);
+            Table.States (536).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (536), 116, 693);
+            Add_Goto (Table.States (536), 163, 694);
+            Add_Goto (Table.States (536), 164, 541);
+            Table.States (536).Kernel := To_Vector ((((298, 0),  90,  3, 
(2147483647, 0),  0), ((298, 1),  90,  2,
+            (2147483647, 0),  0), ((298, 2),  90,  2, (2147483647, 0),  0)));
+            Table.States (536).Minimal_Complete_Actions := To_Vector (((Shift, 
(298, 1),  67, 692), (Shift, (164, 0),
+            18, 4)));
+            Table.States (537).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (537), (13, 17, 28, 37, 73), (134, 0),  
2, block_label_0'Access,
             block_label_0_check'Access);
-            Table.States (533).Kernel := To_Vector ((0 => (132, 82, 0, 
False)));
-            Table.States (533).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 132, 2)));
-            Table.States (534).Action_List.Set_Capacity (30);
-            Add_Action (Table.States (534), (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, 79, 94, 105, 106, 107), (300, 0), 2, null, 
null);
-            Table.States (534).Kernel := To_Vector ((0 => (300, 307, 0, 
True)));
-            Table.States (534).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 300, 2)));
-            Table.States (534).Minimal_Complete_Actions_Recursive := True;
-            Table.States (535).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (535), 24, 689);
-            Table.States (535).Kernel := To_Vector ((0 => (153, 301, 3, 
False)));
-            Table.States (535).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 689)));
-            Table.States (536).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (536), 24, 690);
-            Table.States (536).Kernel := To_Vector ((0 => (324, 161, 3, 
False)));
-            Table.States (536).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 690)));
-            Table.States (537).Action_List.Set_Capacity (26);
-            Add_Action (Table.States (537), 4, 1);
-            Add_Action (Table.States (537), 5, 2);
-            Add_Action (Table.States (537), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (537), 15, 3);
-            Add_Action (Table.States (537), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (537), 18, 4);
-            Add_Action (Table.States (537), 22, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (537), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (537), 27, 5);
-            Add_Action (Table.States (537), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (537), 31, 9);
-            Add_Action (Table.States (537), 32, 10);
-            Add_Action (Table.States (537), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (537), 41, 13);
-            Add_Action (Table.States (537), 43, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (537), 48, 16);
-            Add_Action (Table.States (537), 52, 20);
-            Add_Action (Table.States (537), 57, 21);
-            Add_Action (Table.States (537), 58, 22);
-            Add_Action (Table.States (537), 61, 24);
-            Add_Action (Table.States (537), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (537), 79, 31);
-            Add_Action (Table.States (537), 94, 32);
-            Add_Action (Table.States (537), 105, 361);
-            Add_Action (Table.States (537), 106, 34);
-            Add_Action (Table.States (537), 107, 35);
-            Table.States (537).Goto_List.Set_Capacity (31);
-            Add_Goto (Table.States (537), 114, 37);
-            Add_Goto (Table.States (537), 124, 39);
-            Add_Goto (Table.States (537), 127, 40);
-            Add_Goto (Table.States (537), 129, 42);
-            Add_Goto (Table.States (537), 132, 43);
-            Add_Goto (Table.States (537), 133, 44);
-            Add_Goto (Table.States (537), 134, 45);
-            Add_Goto (Table.States (537), 140, 48);
-            Add_Goto (Table.States (537), 152, 51);
-            Add_Goto (Table.States (537), 153, 52);
-            Add_Goto (Table.States (537), 162, 54);
-            Add_Goto (Table.States (537), 191, 58);
-            Add_Goto (Table.States (537), 197, 60);
-            Add_Goto (Table.States (537), 218, 69);
-            Add_Goto (Table.States (537), 223, 71);
-            Add_Goto (Table.States (537), 233, 73);
-            Add_Goto (Table.States (537), 240, 74);
-            Add_Goto (Table.States (537), 258, 84);
-            Add_Goto (Table.States (537), 262, 87);
-            Add_Goto (Table.States (537), 273, 93);
-            Add_Goto (Table.States (537), 277, 94);
-            Add_Goto (Table.States (537), 291, 97);
-            Add_Goto (Table.States (537), 294, 98);
-            Add_Goto (Table.States (537), 295, 99);
-            Add_Goto (Table.States (537), 299, 100);
-            Add_Goto (Table.States (537), 300, 362);
-            Add_Goto (Table.States (537), 301, 691);
-            Add_Goto (Table.States (537), 303, 101);
-            Add_Goto (Table.States (537), 304, 102);
-            Add_Goto (Table.States (537), 307, 364);
-            Add_Goto (Table.States (537), 324, 115);
-            Table.States (537).Kernel := To_Vector ((0 => (161, 162, 0, 
False)));
-            Table.States (537).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 0)));
-         end Subr_10;
-         procedure Subr_11
-         is begin
-            Table.States (538).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (538), (22, 24, 43), (297, 0), 3, 
select_alternative_list_0'Access, null);
-            Table.States (538).Kernel := To_Vector ((0 => (297, 296, 0, 
True)));
-            Table.States (538).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 297, 3)));
-            Table.States (538).Minimal_Complete_Actions_Recursive := True;
+            Table.States (537).Kernel := To_Vector ((0 => ((134, 0),  84,  0, 
(134, 0),  2)));
+            Table.States (537).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (134, 0),  2)));
+            Table.States (538).Action_List.Set_Capacity (30);
+            Add_Action (Table.States (538), (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, 81, 96, 107, 108, 109), (302, 0),  2, 
null, null);
+            Table.States (538).Kernel := To_Vector ((0 => ((302, 0),  309,  0, 
(302, 0),  2)));
+            Table.States (538).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (302, 0),  2)));
             Table.States (539).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (539), 24, 692);
-            Table.States (539).Kernel := To_Vector ((0 => (295, 301, 3, 
False)));
-            Table.States (539).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 692)));
+            Add_Action (Table.States (539), 24, (155, 0), 695);
+            Table.States (539).Kernel := To_Vector ((0 => ((155, 0),  303,  3, 
(2147483647, 0),  0)));
+            Table.States (539).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (155, 0),  24, 695)));
             Table.States (540).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (540), 97, 693);
-            Table.States (540).Kernel := To_Vector ((0 => (295, 61, 1, 
False)));
-            Table.States (540).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 693)));
-            Table.States (541).Action_List.Set_Capacity (24);
-            Add_Action (Table.States (541), 4, 1);
-            Add_Action (Table.States (541), 5, 2);
-            Add_Action (Table.States (541), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (541), 15, 3);
-            Add_Action (Table.States (541), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (541), 18, 4);
-            Add_Action (Table.States (541), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (541), 27, 5);
-            Add_Action (Table.States (541), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (541), 31, 9);
-            Add_Action (Table.States (541), 32, 10);
-            Add_Action (Table.States (541), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (541), 41, 13);
-            Add_Action (Table.States (541), 48, 16);
-            Add_Action (Table.States (541), 52, 20);
-            Add_Action (Table.States (541), 57, 21);
-            Add_Action (Table.States (541), 58, 22);
-            Add_Action (Table.States (541), 61, 24);
-            Add_Action (Table.States (541), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (541), 79, 31);
-            Add_Action (Table.States (541), 94, 32);
-            Add_Action (Table.States (541), 105, 361);
-            Add_Action (Table.States (541), 106, 34);
-            Add_Action (Table.States (541), 107, 35);
+            Add_Action (Table.States (540), 24, (326, 0), 696);
+            Table.States (540).Kernel := To_Vector ((0 => ((326, 0),  163,  3, 
(2147483647, 0),  0)));
+            Table.States (540).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (326, 0),  24, 696)));
+            Table.States (541).Action_List.Set_Capacity (26);
+            Add_Action (Table.States (541), 4, (116, 0), 1);
+            Add_Action (Table.States (541), 5, (306, 8), 2);
+            Add_Action (Table.States (541), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (541), 15, (142, 0), 3);
+            Add_Action (Table.States (541), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (541), 18, (164, 0), 4);
+            Add_Action (Table.States (541), 22, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (541), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (541), 27, (193, 0), 5);
+            Add_Action (Table.States (541), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (541), 31, (306, 3), 9);
+            Add_Action (Table.States (541), 32, (225, 0), 10);
+            Add_Action (Table.States (541), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (541), 41, (306, 0), 13);
+            Add_Action (Table.States (541), 43, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (541), 48, (260, 0), 16);
+            Add_Action (Table.States (541), 52, (279, 0), 20);
+            Add_Action (Table.States (541), 57, (293, 0), 21);
+            Add_Action (Table.States (541), 58, (199, 0), 22);
+            Add_Action (Table.States (541), 61, (129, 0), 24);
+            Add_Action (Table.States (541), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (541), 81, (242, 8), 31);
+            Add_Action (Table.States (541), 96, (220, 0), 32);
+            Add_Action (Table.States (541), 107, (134, 0), 363);
+            Add_Action (Table.States (541), 108, (242, 7), 34);
+            Add_Action (Table.States (541), 109, (242, 6), 35);
             Table.States (541).Goto_List.Set_Capacity (31);
-            Add_Goto (Table.States (541), 114, 37);
-            Add_Goto (Table.States (541), 124, 39);
-            Add_Goto (Table.States (541), 127, 40);
-            Add_Goto (Table.States (541), 129, 42);
-            Add_Goto (Table.States (541), 132, 43);
-            Add_Goto (Table.States (541), 133, 44);
-            Add_Goto (Table.States (541), 134, 45);
-            Add_Goto (Table.States (541), 140, 48);
-            Add_Goto (Table.States (541), 152, 51);
-            Add_Goto (Table.States (541), 153, 52);
-            Add_Goto (Table.States (541), 162, 54);
-            Add_Goto (Table.States (541), 191, 58);
-            Add_Goto (Table.States (541), 197, 60);
-            Add_Goto (Table.States (541), 218, 69);
-            Add_Goto (Table.States (541), 223, 71);
-            Add_Goto (Table.States (541), 233, 73);
-            Add_Goto (Table.States (541), 240, 74);
-            Add_Goto (Table.States (541), 258, 84);
-            Add_Goto (Table.States (541), 262, 87);
-            Add_Goto (Table.States (541), 273, 93);
-            Add_Goto (Table.States (541), 277, 94);
-            Add_Goto (Table.States (541), 291, 97);
-            Add_Goto (Table.States (541), 294, 98);
-            Add_Goto (Table.States (541), 295, 99);
-            Add_Goto (Table.States (541), 299, 100);
-            Add_Goto (Table.States (541), 300, 362);
-            Add_Goto (Table.States (541), 301, 694);
-            Add_Goto (Table.States (541), 303, 101);
-            Add_Goto (Table.States (541), 304, 102);
-            Add_Goto (Table.States (541), 307, 364);
-            Add_Goto (Table.States (541), 324, 115);
-            Table.States (541).Kernel := To_Vector ((0 => (127, 5, 3, False)));
-            Table.States (541).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 0)));
-            Table.States (542).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (542), 74, 338);
-            Add_Action (Table.States (542), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (542).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (542), 123, 695);
-            Table.States (542).Kernel := To_Vector ((0 => (314, 315, 1, 
False)));
-            Table.States (542).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
+            Add_Goto (Table.States (541), 116, 37);
+            Add_Goto (Table.States (541), 126, 39);
+            Add_Goto (Table.States (541), 129, 40);
+            Add_Goto (Table.States (541), 131, 42);
+            Add_Goto (Table.States (541), 134, 43);
+            Add_Goto (Table.States (541), 135, 44);
+            Add_Goto (Table.States (541), 136, 45);
+            Add_Goto (Table.States (541), 142, 48);
+            Add_Goto (Table.States (541), 154, 51);
+            Add_Goto (Table.States (541), 155, 52);
+            Add_Goto (Table.States (541), 164, 54);
+            Add_Goto (Table.States (541), 193, 58);
+            Add_Goto (Table.States (541), 199, 60);
+            Add_Goto (Table.States (541), 220, 69);
+            Add_Goto (Table.States (541), 225, 71);
+            Add_Goto (Table.States (541), 235, 73);
+            Add_Goto (Table.States (541), 242, 74);
+            Add_Goto (Table.States (541), 260, 84);
+            Add_Goto (Table.States (541), 264, 87);
+            Add_Goto (Table.States (541), 275, 93);
+            Add_Goto (Table.States (541), 279, 94);
+            Add_Goto (Table.States (541), 293, 97);
+            Add_Goto (Table.States (541), 296, 98);
+            Add_Goto (Table.States (541), 297, 99);
+            Add_Goto (Table.States (541), 301, 100);
+            Add_Goto (Table.States (541), 302, 364);
+            Add_Goto (Table.States (541), 303, 697);
+            Add_Goto (Table.States (541), 305, 101);
+            Add_Goto (Table.States (541), 306, 102);
+            Add_Goto (Table.States (541), 309, 366);
+            Add_Goto (Table.States (541), 326, 115);
+            Table.States (541).Kernel := To_Vector ((0 => ((163, 0),  164,  0, 
(303, 1),  0)));
+            Table.States (541).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (303, 1),  0)));
+            Table.States (542).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (542), (22, 24, 43), (299, 0),  3, 
select_alternative_list_0'Access, null);
+            Table.States (542).Kernel := To_Vector ((0 => ((299, 0),  298,  0, 
(299, 0),  3)));
+            Table.States (542).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (299, 0),  3)));
             Table.States (543).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (543), 60, 696);
-            Table.States (543).Kernel := To_Vector ((0 => (318, 35, 2, 
False)));
-            Table.States (543).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 60, 696)));
+            Add_Action (Table.States (543), 24, (297, 0), 698);
+            Table.States (543).Kernel := To_Vector ((0 => ((297, 0),  303,  3, 
(2147483647, 0),  0)));
+            Table.States (543).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (297, 0),  24, 698)));
             Table.States (544).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (544), 35, 697);
-            Table.States (544).Kernel := To_Vector ((0 => (317, 123, 4, 
False)));
-            Table.States (544).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 697)));
-            Table.States (545).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (545), 35, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (545), 74, 338);
-            Add_Action (Table.States (545), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (545).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (545), 123, 698);
-            Table.States (545).Kernel := To_Vector (((320, 170, 6, False), 
(320, 170, 3, False), (320, 170, 1,
-            False)));
-            Table.States (545).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (546).Action_List.Set_Capacity (18);
-            Add_Action (Table.States (546), 24, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (546), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (546), 28, 184);
-            Add_Action (Table.States (546), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (546), 30, 8);
-            Add_Action (Table.States (546), 39, 699);
-            Add_Action (Table.States (546), 40, 12);
-            Add_Action (Table.States (546), 46, 14);
-            Add_Action (Table.States (546), 47, 15);
-            Add_Action (Table.States (546), 48, 16);
-            Add_Action (Table.States (546), 49, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (546), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (546), 51, 19);
-            Add_Action (Table.States (546), 63, 25);
-            Add_Action (Table.States (546), 66, 26);
-            Add_Action (Table.States (546), 69, 27);
-            Add_Action (Table.States (546), 71, 28);
-            Add_Action (Table.States (546), 105, 186);
-            Table.States (546).Goto_List.Set_Capacity (54);
-            Add_Goto (Table.States (546), 113, 36);
-            Add_Goto (Table.States (546), 122, 38);
-            Add_Goto (Table.States (546), 128, 41);
-            Add_Goto (Table.States (546), 135, 46);
-            Add_Goto (Table.States (546), 136, 47);
-            Add_Goto (Table.States (546), 158, 392);
-            Add_Goto (Table.States (546), 159, 393);
-            Add_Goto (Table.States (546), 160, 700);
-            Add_Goto (Table.States (546), 180, 55);
-            Add_Goto (Table.States (546), 183, 56);
-            Add_Goto (Table.States (546), 187, 57);
-            Add_Goto (Table.States (546), 194, 59);
-            Add_Goto (Table.States (546), 207, 61);
-            Add_Goto (Table.States (546), 208, 62);
-            Add_Goto (Table.States (546), 210, 63);
-            Add_Goto (Table.States (546), 211, 64);
-            Add_Goto (Table.States (546), 214, 65);
-            Add_Goto (Table.States (546), 215, 66);
-            Add_Goto (Table.States (546), 216, 67);
-            Add_Goto (Table.States (546), 217, 68);
-            Add_Goto (Table.States (546), 220, 70);
-            Add_Goto (Table.States (546), 224, 72);
-            Add_Goto (Table.States (546), 244, 75);
-            Add_Goto (Table.States (546), 245, 76);
-            Add_Goto (Table.States (546), 246, 77);
-            Add_Goto (Table.States (546), 247, 78);
-            Add_Goto (Table.States (546), 248, 79);
-            Add_Goto (Table.States (546), 249, 80);
-            Add_Goto (Table.States (546), 250, 81);
-            Add_Goto (Table.States (546), 251, 82);
-            Add_Goto (Table.States (546), 252, 83);
-            Add_Goto (Table.States (546), 258, 395);
-            Add_Goto (Table.States (546), 260, 85);
-            Add_Goto (Table.States (546), 261, 86);
-            Add_Goto (Table.States (546), 263, 88);
-            Add_Goto (Table.States (546), 264, 89);
-            Add_Goto (Table.States (546), 265, 90);
-            Add_Goto (Table.States (546), 266, 91);
-            Add_Goto (Table.States (546), 272, 92);
-            Add_Goto (Table.States (546), 282, 95);
-            Add_Goto (Table.States (546), 290, 96);
-            Add_Goto (Table.States (546), 305, 103);
-            Add_Goto (Table.States (546), 306, 104);
-            Add_Goto (Table.States (546), 308, 106);
-            Add_Goto (Table.States (546), 309, 107);
-            Add_Goto (Table.States (546), 310, 108);
-            Add_Goto (Table.States (546), 312, 109);
-            Add_Goto (Table.States (546), 314, 110);
-            Add_Goto (Table.States (546), 317, 112);
-            Add_Goto (Table.States (546), 318, 113);
-            Add_Goto (Table.States (546), 319, 701);
-            Add_Goto (Table.States (546), 320, 114);
-            Add_Goto (Table.States (546), 326, 116);
-            Add_Goto (Table.States (546), 332, 117);
-            Table.States (546).Kernel := To_Vector (((306, 35, 5, False), 
(306, 35, 2, False)));
-            Table.States (546).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 319, 0)));
-            Table.States (547).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (547), (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, 
79, 94, 105, 106, 107, 108), (306, 2), 4,
-            single_task_declaration_2'Access, null);
-            Table.States (547).Kernel := To_Vector ((0 => (306, 97, 0, 
False)));
-            Table.States (547).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 306, 4)));
+            Add_Action (Table.States (544), 99, (297, 1), 699);
+            Table.States (544).Kernel := To_Vector ((0 => ((297, 1),  61,  1, 
(2147483647, 0),  0)));
+            Table.States (544).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (297, 1),  99, 699)));
+            Table.States (545).Action_List.Set_Capacity (24);
+            Add_Action (Table.States (545), 4, (116, 0), 1);
+            Add_Action (Table.States (545), 5, (306, 8), 2);
+            Add_Action (Table.States (545), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (545), 15, (142, 0), 3);
+            Add_Action (Table.States (545), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (545), 18, (164, 0), 4);
+            Add_Action (Table.States (545), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (545), 27, (193, 0), 5);
+            Add_Action (Table.States (545), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (545), 31, (306, 3), 9);
+            Add_Action (Table.States (545), 32, (225, 0), 10);
+            Add_Action (Table.States (545), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (545), 41, (306, 0), 13);
+            Add_Action (Table.States (545), 48, (260, 0), 16);
+            Add_Action (Table.States (545), 52, (279, 0), 20);
+            Add_Action (Table.States (545), 57, (293, 0), 21);
+            Add_Action (Table.States (545), 58, (199, 0), 22);
+            Add_Action (Table.States (545), 61, (129, 0), 24);
+            Add_Action (Table.States (545), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (545), 81, (242, 8), 31);
+            Add_Action (Table.States (545), 96, (220, 0), 32);
+            Add_Action (Table.States (545), 107, (134, 0), 363);
+            Add_Action (Table.States (545), 108, (242, 7), 34);
+            Add_Action (Table.States (545), 109, (242, 6), 35);
+            Table.States (545).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (545), 116, 37);
+            Add_Goto (Table.States (545), 126, 39);
+            Add_Goto (Table.States (545), 129, 40);
+            Add_Goto (Table.States (545), 131, 42);
+            Add_Goto (Table.States (545), 134, 43);
+            Add_Goto (Table.States (545), 135, 44);
+            Add_Goto (Table.States (545), 136, 45);
+            Add_Goto (Table.States (545), 142, 48);
+            Add_Goto (Table.States (545), 154, 51);
+            Add_Goto (Table.States (545), 155, 52);
+            Add_Goto (Table.States (545), 164, 54);
+            Add_Goto (Table.States (545), 193, 58);
+            Add_Goto (Table.States (545), 199, 60);
+            Add_Goto (Table.States (545), 220, 69);
+            Add_Goto (Table.States (545), 225, 71);
+            Add_Goto (Table.States (545), 235, 73);
+            Add_Goto (Table.States (545), 242, 74);
+            Add_Goto (Table.States (545), 260, 84);
+            Add_Goto (Table.States (545), 264, 87);
+            Add_Goto (Table.States (545), 275, 93);
+            Add_Goto (Table.States (545), 279, 94);
+            Add_Goto (Table.States (545), 293, 97);
+            Add_Goto (Table.States (545), 296, 98);
+            Add_Goto (Table.States (545), 297, 99);
+            Add_Goto (Table.States (545), 301, 100);
+            Add_Goto (Table.States (545), 302, 364);
+            Add_Goto (Table.States (545), 303, 700);
+            Add_Goto (Table.States (545), 305, 101);
+            Add_Goto (Table.States (545), 306, 102);
+            Add_Goto (Table.States (545), 309, 366);
+            Add_Goto (Table.States (545), 326, 115);
+            Table.States (545).Kernel := To_Vector ((0 => ((129, 0),  5,  3, 
(2147483647, 0),  0)));
+            Table.States (545).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (303, 1),  0)));
+            Table.States (546).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (546), 74, (125, 0), 340);
+            Add_Action (Table.States (546), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (546).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (546), 125, 701);
+            Table.States (546).Kernel := To_Vector ((0 => ((316, 0),  317,  1, 
(2147483647, 0),  0)));
+            Table.States (546).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (547).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (547), 60, (320, 0), 702);
+            Table.States (547).Kernel := To_Vector ((0 => ((320, 0),  35,  2, 
(2147483647, 0),  0)));
+            Table.States (547).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (320, 0),  60, 702)));
             Table.States (548).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (548), 77, 702);
-            Table.States (548).Kernel := To_Vector ((0 => (170, 81, 1, 
False)));
-            Table.States (548).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 702)));
-            Table.States (549).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (549), (77, 97), (172, 1), 1, null, null);
-            Table.States (549).Kernel := To_Vector ((0 => (172, 171, 0, 
False)));
-            Table.States (549).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 172, 1)));
-            Table.States (550).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (550), 77, 703);
-            Add_Action (Table.States (550), 97, 704);
-            Table.States (550).Kernel := To_Vector (((170, 172, 1, False), 
(172, 172, 1, True)));
-            Table.States (550).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 703)));
-            Table.States (551).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (551), 82, 705);
-            Add_Action (Table.States (551), 84, 235);
-            Table.States (551).Kernel := To_Vector (((171, 220, 3, False), 
(171, 220, 4, False), (171, 220, 2, False),
-            (171, 220, 3, False), (220, 220, 2, True)));
-            Table.States (551).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 82, 705)));
-            Table.States (552).Action_List.Set_Capacity (19);
-            Add_Action (Table.States (552), 6, 706);
-            Add_Action (Table.States (552), 7, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (552), 11, 707);
-            Add_Action (Table.States (552), 19, 708);
-            Add_Action (Table.States (552), 20, 709);
-            Add_Action (Table.States (552), 34, 710);
-            Add_Action (Table.States (552), 36, 711);
-            Add_Action (Table.States (552), 38, 712);
-            Add_Action (Table.States (552), 39, Reduce, (110, 5), 0, null, 
null);
-            Add_Conflict (Table.States (552), 39, (111, 3), 0, null, null);
-            Add_Action (Table.States (552), 40, 387);
-            Add_Action (Table.States (552), 41, Reduce, (112, 5), 0, null, 
null);
-            Add_Action (Table.States (552), 49, Reduce, (112, 5), 0, null, 
null);
-            Add_Action (Table.States (552), 51, 714);
-            Add_Action (Table.States (552), 53, 715);
-            Add_Action (Table.States (552), 54, Reduce, (112, 5), 0, null, 
null);
-            Add_Action (Table.States (552), 64, 717);
-            Add_Action (Table.States (552), 65, 718);
-            Add_Action (Table.States (552), 66, 719);
-            Add_Action (Table.States (552), 76, 720);
-            Table.States (552).Goto_List.Set_Capacity (10);
-            Add_Goto (Table.States (552), 110, 721);
-            Add_Goto (Table.States (552), 111, 722);
-            Add_Goto (Table.States (552), 112, 723);
-            Add_Goto (Table.States (552), 115, 724);
-            Add_Goto (Table.States (552), 121, 725);
-            Add_Goto (Table.States (552), 163, 726);
-            Add_Goto (Table.States (552), 184, 727);
-            Add_Goto (Table.States (552), 229, 728);
-            Add_Goto (Table.States (552), 242, 729);
-            Add_Goto (Table.States (552), 327, 730);
-            Table.States (552).Kernel := To_Vector (((207, 35, 2, False), 
(224, 35, 2, False), (260, 35, 5, False),
-            (261, 35, 2, False)));
-            Table.States (552).Minimal_Complete_Actions := To_Vector (((Shift, 
38, 712), (Shift, 65, 718), (Reduce,
-            112, 0)));
-            Table.States (553).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (553), (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, 
79, 94, 105, 106, 107, 108), (224, 1), 4,
-            incomplete_type_declaration_1'Access, null);
-            Table.States (553).Kernel := To_Vector ((0 => (224, 97, 0, 
False)));
-            Table.States (553).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 224, 4)));
+            Add_Action (Table.States (548), 35, (319, 0), 703);
+            Table.States (548).Kernel := To_Vector ((0 => ((319, 0),  125,  4, 
(2147483647, 0),  0)));
+            Table.States (548).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (319, 0),  35, 703)));
+            Table.States (549).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (549), 35, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (549), 74, (125, 0), 340);
+            Add_Action (Table.States (549), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (549).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (549), 125, 704);
+            Table.States (549).Kernel := To_Vector ((((322, 0),  172,  6, 
(2147483647, 0),  0), ((322, 1),  172,  3,
+            (2147483647, 0),  0), ((322, 2),  172,  1, (2147483647, 0),  0)));
+            Table.States (549).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (550).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (550), 24, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (550), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (550), 28, (124, 0), 185);
+            Add_Action (Table.States (550), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (550), 30, (213, 0), 8);
+            Add_Action (Table.States (550), 39, (308, 0), 705);
+            Add_Action (Table.States (550), 40, (249, 0), 12);
+            Add_Action (Table.States (550), 46, (249, 1), 14);
+            Add_Action (Table.States (550), 47, (216, 0), 15);
+            Add_Action (Table.States (550), 48, (260, 0), 16);
+            Add_Action (Table.States (550), 49, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (550), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (550), 51, (267, 0), 19);
+            Add_Action (Table.States (550), 63, (316, 0), 25);
+            Add_Action (Table.States (550), 66, (308, 0), 26);
+            Add_Action (Table.States (550), 69, (209, 0), 27);
+            Add_Action (Table.States (550), 71, (334, 0), 28);
+            Add_Action (Table.States (550), 107, (222, 1), 187);
+            Table.States (550).Goto_List.Set_Capacity (54);
+            Add_Goto (Table.States (550), 115, 36);
+            Add_Goto (Table.States (550), 124, 38);
+            Add_Goto (Table.States (550), 130, 41);
+            Add_Goto (Table.States (550), 137, 46);
+            Add_Goto (Table.States (550), 138, 47);
+            Add_Goto (Table.States (550), 160, 394);
+            Add_Goto (Table.States (550), 161, 395);
+            Add_Goto (Table.States (550), 162, 706);
+            Add_Goto (Table.States (550), 182, 55);
+            Add_Goto (Table.States (550), 185, 56);
+            Add_Goto (Table.States (550), 189, 57);
+            Add_Goto (Table.States (550), 196, 59);
+            Add_Goto (Table.States (550), 209, 61);
+            Add_Goto (Table.States (550), 210, 62);
+            Add_Goto (Table.States (550), 212, 63);
+            Add_Goto (Table.States (550), 213, 64);
+            Add_Goto (Table.States (550), 216, 65);
+            Add_Goto (Table.States (550), 217, 66);
+            Add_Goto (Table.States (550), 218, 67);
+            Add_Goto (Table.States (550), 219, 68);
+            Add_Goto (Table.States (550), 222, 70);
+            Add_Goto (Table.States (550), 226, 72);
+            Add_Goto (Table.States (550), 246, 75);
+            Add_Goto (Table.States (550), 247, 76);
+            Add_Goto (Table.States (550), 248, 77);
+            Add_Goto (Table.States (550), 249, 78);
+            Add_Goto (Table.States (550), 250, 79);
+            Add_Goto (Table.States (550), 251, 80);
+            Add_Goto (Table.States (550), 252, 81);
+            Add_Goto (Table.States (550), 253, 82);
+            Add_Goto (Table.States (550), 254, 83);
+            Add_Goto (Table.States (550), 260, 397);
+            Add_Goto (Table.States (550), 262, 85);
+            Add_Goto (Table.States (550), 263, 86);
+            Add_Goto (Table.States (550), 265, 88);
+            Add_Goto (Table.States (550), 266, 89);
+            Add_Goto (Table.States (550), 267, 90);
+            Add_Goto (Table.States (550), 268, 91);
+            Add_Goto (Table.States (550), 274, 92);
+            Add_Goto (Table.States (550), 284, 95);
+            Add_Goto (Table.States (550), 292, 96);
+            Add_Goto (Table.States (550), 307, 103);
+            Add_Goto (Table.States (550), 308, 104);
+            Add_Goto (Table.States (550), 310, 106);
+            Add_Goto (Table.States (550), 311, 107);
+            Add_Goto (Table.States (550), 312, 108);
+            Add_Goto (Table.States (550), 314, 109);
+            Add_Goto (Table.States (550), 316, 110);
+            Add_Goto (Table.States (550), 319, 112);
+            Add_Goto (Table.States (550), 320, 113);
+            Add_Goto (Table.States (550), 321, 707);
+            Add_Goto (Table.States (550), 322, 114);
+            Add_Goto (Table.States (550), 328, 116);
+            Add_Goto (Table.States (550), 334, 117);
+            Table.States (550).Kernel := To_Vector ((((308, 0),  35,  5, 
(2147483647, 0),  0), ((308, 1),  35,  2,
+            (2147483647, 0),  0)));
+            Table.States (550).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (321, 1),  0)));
+            Table.States (551).Action_List.Set_Capacity (41);
+            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, 
81, 96, 107, 108, 109, 110), (308, 2),  4,
+            single_task_declaration_2'Access, null);
+            Table.States (551).Kernel := To_Vector ((0 => ((308, 2),  99,  0, 
(308, 2),  4)));
+            Table.States (551).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (308, 2),  4)));
+            Table.States (552).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (552), 78, (172, 0), 708);
+            Table.States (552).Kernel := To_Vector ((0 => ((172, 0),  83,  1, 
(2147483647, 0),  0)));
+            Table.States (552).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (172, 0),  78, 708)));
+            Table.States (553).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (553), (78, 99), (174, 1),  1, null, 
null);
+            Table.States (553).Kernel := To_Vector ((0 => ((174, 1),  173,  0, 
(174, 1),  1)));
+            Table.States (553).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (174, 1),  1)));
             Table.States (554).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (554), 84, 382);
-            Add_Action (Table.States (554), 97, 731);
-            Table.States (554).Kernel := To_Vector (((239, 239, 2, True), 
(332, 239, 1, False)));
-            Table.States (554).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 731)));
-            Table.States (555).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (555), (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, 
79, 94, 105, 106, 107, 108), (332, 1), 4,
+            Add_Action (Table.States (554), 78, (172, 1), 709);
+            Add_Action (Table.States (554), 99, (174, 0), 710);
+            Table.States (554).Kernel := To_Vector ((((172, 1),  174,  1, 
(2147483647, 0),  0), ((174, 0),  174,  1,
+            (2147483647, 0),  0)));
+            Table.States (554).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (172, 1),  78, 709)));
+            Table.States (555).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (555), 84, (173, 0), 711);
+            Add_Action (Table.States (555), 86, (222, 0), 236);
+            Table.States (555).Kernel := To_Vector ((((173, 0),  222,  3, 
(2147483647, 0),  0), ((173, 1),  222,  4,
+            (2147483647, 0),  0), ((173, 2),  222,  2, (2147483647, 0),  0), 
((173, 3),  222,  3, (2147483647, 0),  0),
+            ((222, 0),  222,  2, (2147483647, 0),  0)));
+            Table.States (555).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (173, 0),  84, 711)));
+            Table.States (556).Action_List.Set_Capacity (19);
+            Add_Action (Table.States (556), 6, (112, 0), 712);
+            Add_Action (Table.States (556), 7, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (556), 11, (123, 0), 713);
+            Add_Action (Table.States (556), 19, (329, 4), 714);
+            Add_Action (Table.States (556), 20, (329, 3), 715);
+            Add_Action (Table.States (556), 34, (231, 8), 716);
+            Add_Action (Table.States (556), 36, (112, 3), 717);
+            Add_Action (Table.States (556), 38, (329, 2), 718);
+            Add_Action (Table.States (556), 39, Reduce, (112, 5),  0, null, 
null);
+            Add_Conflict (Table.States (556), 39, (113, 3),  0, null, null);
+            Add_Action (Table.States (556), 40, (244, 0), 389);
+            Add_Action (Table.States (556), 41, Reduce, (114, 5),  0, null, 
null);
+            Add_Action (Table.States (556), 49, Reduce, (114, 5),  0, null, 
null);
+            Add_Action (Table.States (556), 51, (231, 2), 720);
+            Add_Action (Table.States (556), 53, (329, 1), 721);
+            Add_Action (Table.States (556), 54, Reduce, (114, 5),  0, null, 
null);
+            Add_Action (Table.States (556), 64, (112, 4), 723);
+            Add_Action (Table.States (556), 65, (114, 2), 724);
+            Add_Action (Table.States (556), 66, (231, 1), 725);
+            Add_Action (Table.States (556), 76, (186, 0), 726);
+            Table.States (556).Goto_List.Set_Capacity (10);
+            Add_Goto (Table.States (556), 112, 727);
+            Add_Goto (Table.States (556), 113, 728);
+            Add_Goto (Table.States (556), 114, 729);
+            Add_Goto (Table.States (556), 117, 730);
+            Add_Goto (Table.States (556), 123, 731);
+            Add_Goto (Table.States (556), 165, 732);
+            Add_Goto (Table.States (556), 186, 733);
+            Add_Goto (Table.States (556), 231, 734);
+            Add_Goto (Table.States (556), 244, 735);
+            Add_Goto (Table.States (556), 329, 736);
+            Table.States (556).Kernel := To_Vector ((((209, 0),  35,  2, 
(2147483647, 0),  0), ((226, 0),  35,  2,
+            (2147483647, 0),  0), ((262, 0),  35,  5, (2147483647, 0),  0), 
((263, 0),  35,  2, (2147483647, 0),  0)));
+            Table.States (556).Minimal_Complete_Actions := To_Vector (((Shift, 
(329, 2),  38, 718), (Shift, (114, 2),
+            65, 724), (Reduce, (114, 5),  0)));
+            Table.States (557).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (557), (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, 
81, 96, 107, 108, 109, 110), (226, 1),  4,
+            incomplete_type_declaration_1'Access, null);
+            Table.States (557).Kernel := To_Vector ((0 => ((226, 1),  99,  0, 
(226, 1),  4)));
+            Table.States (557).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (226, 1),  4)));
+            Table.States (558).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (558), 86, (241, 0), 384);
+            Add_Action (Table.States (558), 99, (334, 0), 737);
+            Table.States (558).Kernel := To_Vector ((((241, 0),  241,  2, 
(2147483647, 0),  0), ((334, 0),  241,  1,
+            (2147483647, 0),  0)));
+            Table.States (558).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (334, 0),  99, 737)));
+            Table.States (559).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (559), (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, 
81, 96, 107, 108, 109, 110), (334, 1),  4,
             use_clause_1'Access, null);
-            Table.States (555).Kernel := To_Vector ((0 => (332, 97, 0, 
False)));
-            Table.States (555).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 332, 4)));
-            Table.States (556).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (556), 76, 236);
-            Add_Action (Table.States (556), 84, Reduce, (239, 0), 3, null, 
null);
-            Add_Action (Table.States (556), 85, 238);
-            Add_Action (Table.States (556), 97, Reduce, (239, 0), 3, null, 
null);
-            Add_Action (Table.States (556), 102, 240);
-            Add_Action (Table.States (556), 103, 241);
-            Table.States (556).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (556), 116, 242);
-            Add_Goto (Table.States (556), 323, 243);
-            Table.States (556).Kernel := To_Vector (((129, 240, 2, True), 
(239, 240, 0, True), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (556).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 239, 3)));
-            Table.States (556).Minimal_Complete_Actions_Recursive := True;
-            Table.States (557).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (557), 79, 31);
-            Add_Action (Table.States (557), 105, 120);
-            Add_Action (Table.States (557), 106, 34);
-            Add_Action (Table.States (557), 107, 35);
-            Table.States (557).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (557), 129, 42);
-            Add_Goto (Table.States (557), 240, 732);
-            Add_Goto (Table.States (557), 273, 93);
-            Add_Goto (Table.States (557), 294, 98);
-            Table.States (557).Kernel := To_Vector ((0 => (246, 56, 2, 
False)));
-            Table.States (557).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (558).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (558), (7, 21, 35, 56, 74, 77, 79, 83, 
97, 105, 106, 107), (242, 0), 2, null,
-            null);
-            Table.States (558).Kernel := To_Vector ((0 => (242, 41, 0, 
False)));
-            Table.States (558).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 242, 2)));
-            Table.States (559).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (559), 79, 31);
-            Add_Action (Table.States (559), 105, 120);
-            Add_Action (Table.States (559), 106, 34);
-            Add_Action (Table.States (559), 107, 35);
-            Table.States (559).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (559), 129, 42);
-            Add_Goto (Table.States (559), 240, 733);
-            Add_Goto (Table.States (559), 273, 93);
-            Add_Goto (Table.States (559), 294, 98);
-            Table.States (559).Kernel := To_Vector ((0 => (246, 56, 2, 
False)));
-            Table.States (559).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (560).Action_List.Set_Capacity (9);
-            Add_Action (Table.States (560), 9, 734);
-            Add_Action (Table.States (560), 16, 735);
-            Add_Action (Table.States (560), 29, Reduce, (271, 1), 0, null, 
null);
-            Add_Action (Table.States (560), 50, Reduce, (271, 1), 0, null, 
null);
-            Add_Action (Table.States (560), 51, 736);
-            Add_Action (Table.States (560), 79, Reduce, (209, 2), 0, null, 
null);
-            Add_Action (Table.States (560), 105, Reduce, (209, 2), 0, null, 
null);
-            Add_Action (Table.States (560), 106, Reduce, (209, 2), 0, null, 
null);
-            Add_Action (Table.States (560), 107, Reduce, (209, 2), 0, null, 
null);
+            Table.States (559).Kernel := To_Vector ((0 => ((334, 1),  99,  0, 
(334, 1),  4)));
+            Table.States (559).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (334, 1),  4)));
+            Table.States (560).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (560), 76, (118, 0), 237);
+            Add_Action (Table.States (560), 86, Reduce, (241, 0),  3, null, 
null);
+            Add_Action (Table.States (560), 87, (296, 0), 239);
+            Add_Action (Table.States (560), 99, Reduce, (241, 0),  3, null, 
null);
+            Add_Action (Table.States (560), 104, (325, 0), 241);
+            Add_Action (Table.States (560), 105, (325, 1), 242);
             Table.States (560).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (560), 209, 737);
-            Add_Goto (Table.States (560), 271, 738);
-            Table.States (560).Kernel := To_Vector (((115, 7, 1, False), (115, 
7, 2, True), (115, 7, 1, False)));
-            Table.States (560).Minimal_Complete_Actions := To_Vector 
(((Reduce, 271, 0), (Reduce, 209, 0)));
-            Table.States (560).Minimal_Complete_Actions_Recursive := True;
-            Table.States (561).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (561), 56, 739);
-            Add_Action (Table.States (561), 76, 236);
-            Add_Action (Table.States (561), 85, 238);
-            Add_Action (Table.States (561), 102, 240);
-            Add_Action (Table.States (561), 103, 241);
-            Table.States (561).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (561), 116, 242);
-            Add_Goto (Table.States (561), 323, 243);
-            Table.States (561).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (246, 240, 3, False), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (561).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 56, 739)));
-            Table.States (562).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (562), 97, Reduce, (221, 1), 0, null, 
null);
-            Add_Action (Table.States (562), 105, 150);
-            Table.States (562).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (562), 221, 740);
-            Table.States (562).Kernel := To_Vector ((0 => (134, 24, 1, 
False)));
-            Table.States (562).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 0)));
-            Table.States (563).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (563), 24, Reduce, (190, 1), 0, null, 
null);
-            Add_Action (Table.States (563), 48, 16);
-            Add_Action (Table.States (563), 72, 741);
+            Add_Goto (Table.States (560), 118, 243);
+            Add_Goto (Table.States (560), 325, 244);
+            Table.States (560).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((241, 0),  242,  0,
+            (241, 0),  3), ((242, 0),  242,  5, (2147483647, 0),  0), ((242, 
1),  242,  2, (2147483647, 0),  0), ((275,
+            0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (560).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (241, 0),  3)));
+            Table.States (561).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (561), 81, (242, 8), 31);
+            Add_Action (Table.States (561), 107, (242, 5), 120);
+            Add_Action (Table.States (561), 108, (242, 7), 34);
+            Add_Action (Table.States (561), 109, (242, 6), 35);
+            Table.States (561).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (561), 131, 42);
+            Add_Goto (Table.States (561), 242, 738);
+            Add_Goto (Table.States (561), 275, 93);
+            Add_Goto (Table.States (561), 296, 98);
+            Table.States (561).Kernel := To_Vector ((0 => ((248, 2),  56,  2, 
(2147483647, 0),  0)));
+            Table.States (561).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (562).Action_List.Set_Capacity (12);
+            Add_Action (Table.States (562), (7, 21, 35, 56, 74, 78, 81, 85, 
99, 107, 108, 109), (244, 0),  2, null,
+            null);
+            Table.States (562).Kernel := To_Vector ((0 => ((244, 0),  41,  0, 
(244, 0),  2)));
+            Table.States (562).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (244, 0),  2)));
+            Table.States (563).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (563), 81, (242, 8), 31);
+            Add_Action (Table.States (563), 107, (242, 5), 120);
+            Add_Action (Table.States (563), 108, (242, 7), 34);
+            Add_Action (Table.States (563), 109, (242, 6), 35);
             Table.States (563).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (563), 188, 742);
-            Add_Goto (Table.States (563), 189, 743);
-            Add_Goto (Table.States (563), 190, 744);
-            Add_Goto (Table.States (563), 258, 745);
-            Table.States (563).Kernel := To_Vector ((0 => (219, 26, 0, 
False)));
-            Table.States (563).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 190, 0)));
-            Table.States (564).Action_List.Set_Capacity (18);
-            Add_Action (Table.States (564), (13, 24, 25, 28, 29, 30, 40, 46, 
47, 48, 49, 50, 51, 63, 66, 69, 71, 105),
-            (159, 0), 2, null, null);
-            Table.States (564).Kernel := To_Vector ((0 => (159, 158, 0, 
True)));
-            Table.States (564).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 2)));
-            Table.States (564).Minimal_Complete_Actions_Recursive := True;
-            Table.States (565).Action_List.Set_Capacity (18);
-            Add_Action (Table.States (565), (13, 24, 25, 28, 29, 30, 40, 46, 
47, 48, 49, 50, 51, 63, 66, 69, 71, 105),
-            (159, 1), 2, null, null);
-            Table.States (565).Kernel := To_Vector ((0 => (159, 258, 0, 
True)));
-            Table.States (565).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 159, 2)));
-            Table.States (565).Minimal_Complete_Actions_Recursive := True;
-            Table.States (566).Action_List.Set_Capacity (25);
-            Add_Action (Table.States (566), 4, 1);
-            Add_Action (Table.States (566), 5, 2);
-            Add_Action (Table.States (566), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (566), 15, 3);
-            Add_Action (Table.States (566), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (566), 18, 4);
-            Add_Action (Table.States (566), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (566), 26, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (566), 27, 5);
-            Add_Action (Table.States (566), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (566), 31, 9);
-            Add_Action (Table.States (566), 32, 10);
-            Add_Action (Table.States (566), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (566), 41, 13);
-            Add_Action (Table.States (566), 48, 16);
-            Add_Action (Table.States (566), 52, 20);
-            Add_Action (Table.States (566), 57, 21);
-            Add_Action (Table.States (566), 58, 22);
-            Add_Action (Table.States (566), 61, 24);
-            Add_Action (Table.States (566), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (566), 79, 31);
-            Add_Action (Table.States (566), 94, 32);
-            Add_Action (Table.States (566), 105, 361);
-            Add_Action (Table.States (566), 106, 34);
-            Add_Action (Table.States (566), 107, 35);
-            Table.States (566).Goto_List.Set_Capacity (32);
-            Add_Goto (Table.States (566), 114, 37);
-            Add_Goto (Table.States (566), 124, 39);
-            Add_Goto (Table.States (566), 127, 40);
-            Add_Goto (Table.States (566), 129, 42);
-            Add_Goto (Table.States (566), 132, 43);
-            Add_Goto (Table.States (566), 133, 44);
-            Add_Goto (Table.States (566), 134, 45);
-            Add_Goto (Table.States (566), 140, 48);
-            Add_Goto (Table.States (566), 152, 51);
-            Add_Goto (Table.States (566), 153, 52);
-            Add_Goto (Table.States (566), 162, 54);
-            Add_Goto (Table.States (566), 191, 58);
-            Add_Goto (Table.States (566), 197, 60);
-            Add_Goto (Table.States (566), 218, 69);
-            Add_Goto (Table.States (566), 219, 746);
-            Add_Goto (Table.States (566), 223, 71);
-            Add_Goto (Table.States (566), 233, 73);
-            Add_Goto (Table.States (566), 240, 74);
-            Add_Goto (Table.States (566), 258, 84);
-            Add_Goto (Table.States (566), 262, 87);
-            Add_Goto (Table.States (566), 273, 93);
-            Add_Goto (Table.States (566), 277, 94);
-            Add_Goto (Table.States (566), 291, 97);
-            Add_Goto (Table.States (566), 294, 98);
-            Add_Goto (Table.States (566), 295, 99);
-            Add_Goto (Table.States (566), 299, 100);
-            Add_Goto (Table.States (566), 300, 362);
-            Add_Goto (Table.States (566), 301, 391);
-            Add_Goto (Table.States (566), 303, 101);
-            Add_Goto (Table.States (566), 304, 102);
-            Add_Goto (Table.States (566), 307, 364);
-            Add_Goto (Table.States (566), 324, 115);
-            Table.States (566).Kernel := To_Vector ((0 => (134, 13, 2, 
False)));
-            Table.States (566).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 219, 0)));
-            Table.States (567).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (567), 37, 747);
-            Table.States (567).Kernel := To_Vector ((0 => (233, 24, 2, 
False)));
-            Table.States (567).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 747)));
-            Table.States (568).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (568), 24, 748);
-            Table.States (568).Kernel := To_Vector ((0 => (233, 301, 3, 
False)));
-            Table.States (568).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 748)));
-            Table.States (569).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (569), (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, 
79, 94, 105, 106, 107, 108), (217, 0), 4,
+            Add_Goto (Table.States (563), 131, 42);
+            Add_Goto (Table.States (563), 242, 739);
+            Add_Goto (Table.States (563), 275, 93);
+            Add_Goto (Table.States (563), 296, 98);
+            Table.States (563).Kernel := To_Vector ((0 => ((248, 1),  56,  2, 
(2147483647, 0),  0)));
+            Table.States (563).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (564).Action_List.Set_Capacity (9);
+            Add_Action (Table.States (564), 9, (211, 0), 740);
+            Add_Action (Table.States (564), 16, (211, 1), 741);
+            Add_Action (Table.States (564), 29, Reduce, (273, 1),  0, null, 
null);
+            Add_Action (Table.States (564), 50, Reduce, (273, 1),  0, null, 
null);
+            Add_Action (Table.States (564), 51, (273, 0), 742);
+            Add_Action (Table.States (564), 81, Reduce, (211, 2),  0, null, 
null);
+            Add_Action (Table.States (564), 107, Reduce, (211, 2),  0, null, 
null);
+            Add_Action (Table.States (564), 108, Reduce, (211, 2),  0, null, 
null);
+            Add_Action (Table.States (564), 109, Reduce, (211, 2),  0, null, 
null);
+            Table.States (564).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (564), 211, 743);
+            Add_Goto (Table.States (564), 273, 744);
+            Table.States (564).Kernel := To_Vector ((((117, 0),  7,  1, 
(2147483647, 0),  0), ((117, 1),  7,  2,
+            (2147483647, 0),  0), ((117, 2),  7,  1, (2147483647, 0),  0)));
+            Table.States (564).Minimal_Complete_Actions := To_Vector 
(((Reduce, (273, 1),  0), (Reduce, (211, 2),
+            0)));
+            Table.States (565).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (565), 56, (248, 0), 745);
+            Add_Action (Table.States (565), 76, (118, 0), 237);
+            Add_Action (Table.States (565), 87, (296, 0), 239);
+            Add_Action (Table.States (565), 104, (325, 0), 241);
+            Add_Action (Table.States (565), 105, (325, 1), 242);
+            Table.States (565).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (565), 118, 243);
+            Add_Goto (Table.States (565), 325, 244);
+            Table.States (565).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((248, 0),  242,  3, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (565).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (248, 0),  56, 745)));
+            Table.States (566).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (566), 99, Reduce, (223, 1),  0, null, 
null);
+            Add_Action (Table.States (566), 107, (223, 0), 151);
+            Table.States (566).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (566), 223, 746);
+            Table.States (566).Kernel := To_Vector ((0 => ((136, 1),  24,  1, 
(2147483647, 0),  0)));
+            Table.States (566).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (223, 1),  0)));
+            Table.States (567).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (567), 24, Reduce, (192, 1),  0, null, 
null);
+            Add_Action (Table.States (567), 48, (260, 0), 16);
+            Add_Action (Table.States (567), 72, (190, 0), 747);
+            Table.States (567).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (567), 190, 748);
+            Add_Goto (Table.States (567), 191, 749);
+            Add_Goto (Table.States (567), 192, 750);
+            Add_Goto (Table.States (567), 260, 751);
+            Table.States (567).Kernel := To_Vector ((0 => ((221, 0),  26,  0, 
(192, 1),  0)));
+            Table.States (567).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (192, 1),  0)));
+            Table.States (568).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (568), (13, 24, 25, 28, 29, 30, 40, 46, 
47, 48, 49, 50, 51, 63, 66, 69, 71, 107),
+            (161, 0),  2, null, null);
+            Table.States (568).Kernel := To_Vector ((0 => ((161, 0),  160,  0, 
(161, 0),  2)));
+            Table.States (568).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (161, 0),  2)));
+            Table.States (569).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (569), (13, 24, 25, 28, 29, 30, 40, 46, 
47, 48, 49, 50, 51, 63, 66, 69, 71, 107),
+            (161, 1),  2, null, null);
+            Table.States (569).Kernel := To_Vector ((0 => ((161, 1),  260,  0, 
(161, 1),  2)));
+            Table.States (569).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (161, 1),  2)));
+            Table.States (570).Action_List.Set_Capacity (25);
+            Add_Action (Table.States (570), 4, (116, 0), 1);
+            Add_Action (Table.States (570), 5, (306, 8), 2);
+            Add_Action (Table.States (570), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (570), 15, (142, 0), 3);
+            Add_Action (Table.States (570), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (570), 18, (164, 0), 4);
+            Add_Action (Table.States (570), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (570), 26, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (570), 27, (193, 0), 5);
+            Add_Action (Table.States (570), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (570), 31, (306, 3), 9);
+            Add_Action (Table.States (570), 32, (225, 0), 10);
+            Add_Action (Table.States (570), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (570), 41, (306, 0), 13);
+            Add_Action (Table.States (570), 48, (260, 0), 16);
+            Add_Action (Table.States (570), 52, (279, 0), 20);
+            Add_Action (Table.States (570), 57, (293, 0), 21);
+            Add_Action (Table.States (570), 58, (199, 0), 22);
+            Add_Action (Table.States (570), 61, (129, 0), 24);
+            Add_Action (Table.States (570), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (570), 81, (242, 8), 31);
+            Add_Action (Table.States (570), 96, (220, 0), 32);
+            Add_Action (Table.States (570), 107, (134, 0), 363);
+            Add_Action (Table.States (570), 108, (242, 7), 34);
+            Add_Action (Table.States (570), 109, (242, 6), 35);
+            Table.States (570).Goto_List.Set_Capacity (32);
+            Add_Goto (Table.States (570), 116, 37);
+            Add_Goto (Table.States (570), 126, 39);
+            Add_Goto (Table.States (570), 129, 40);
+            Add_Goto (Table.States (570), 131, 42);
+            Add_Goto (Table.States (570), 134, 43);
+            Add_Goto (Table.States (570), 135, 44);
+            Add_Goto (Table.States (570), 136, 45);
+            Add_Goto (Table.States (570), 142, 48);
+            Add_Goto (Table.States (570), 154, 51);
+            Add_Goto (Table.States (570), 155, 52);
+            Add_Goto (Table.States (570), 164, 54);
+            Add_Goto (Table.States (570), 193, 58);
+            Add_Goto (Table.States (570), 199, 60);
+            Add_Goto (Table.States (570), 220, 69);
+            Add_Goto (Table.States (570), 221, 752);
+            Add_Goto (Table.States (570), 225, 71);
+            Add_Goto (Table.States (570), 235, 73);
+            Add_Goto (Table.States (570), 242, 74);
+            Add_Goto (Table.States (570), 260, 84);
+            Add_Goto (Table.States (570), 264, 87);
+            Add_Goto (Table.States (570), 275, 93);
+            Add_Goto (Table.States (570), 279, 94);
+            Add_Goto (Table.States (570), 293, 97);
+            Add_Goto (Table.States (570), 296, 98);
+            Add_Goto (Table.States (570), 297, 99);
+            Add_Goto (Table.States (570), 301, 100);
+            Add_Goto (Table.States (570), 302, 364);
+            Add_Goto (Table.States (570), 303, 393);
+            Add_Goto (Table.States (570), 305, 101);
+            Add_Goto (Table.States (570), 306, 102);
+            Add_Goto (Table.States (570), 309, 366);
+            Add_Goto (Table.States (570), 326, 115);
+            Table.States (570).Kernel := To_Vector ((0 => ((136, 0),  13,  2, 
(2147483647, 0),  0)));
+            Table.States (570).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (221, 1),  0)));
+         end Subr_11;
+         procedure Subr_12
+         is begin
+            Table.States (571).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (571), 37, (235, 1), 753);
+            Table.States (571).Kernel := To_Vector ((0 => ((235, 1),  24,  2, 
(2147483647, 0),  0)));
+            Table.States (571).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (235, 1),  37, 753)));
+            Table.States (572).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (572), 24, (235, 0), 754);
+            Table.States (572).Kernel := To_Vector ((0 => ((235, 0),  303,  3, 
(2147483647, 0),  0)));
+            Table.States (572).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (235, 0),  24, 754)));
+            Table.States (573).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (573), (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, 
81, 96, 107, 108, 109, 110), (219, 0),  4,
             generic_subprogram_declaration_0'Access, null);
-            Table.States (569).Kernel := To_Vector ((0 => (217, 97, 0, 
False)));
-            Table.States (569).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 217, 4)));
-            Table.States (570).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (570), 3, 122);
-            Add_Action (Table.States (570), 39, 123);
-            Add_Action (Table.States (570), 40, 124);
-            Add_Action (Table.States (570), 41, 125);
-            Add_Action (Table.States (570), 52, 126);
-            Add_Action (Table.States (570), 76, 127);
-            Add_Action (Table.States (570), 79, 31);
-            Add_Action (Table.States (570), 95, 128);
-            Add_Action (Table.States (570), 96, 129);
-            Add_Action (Table.States (570), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (570), 104, 130);
-            Add_Action (Table.States (570), 105, 120);
-            Add_Action (Table.States (570), 106, 34);
-            Add_Action (Table.States (570), 107, 35);
-            Table.States (570).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (570), 118, 131);
-            Add_Goto (Table.States (570), 129, 42);
-            Add_Goto (Table.States (570), 192, 132);
-            Add_Goto (Table.States (570), 193, 749);
-            Add_Goto (Table.States (570), 198, 134);
-            Add_Goto (Table.States (570), 240, 135);
-            Add_Goto (Table.States (570), 259, 136);
-            Add_Goto (Table.States (570), 273, 93);
-            Add_Goto (Table.States (570), 276, 137);
-            Add_Goto (Table.States (570), 283, 138);
-            Add_Goto (Table.States (570), 284, 139);
-            Add_Goto (Table.States (570), 285, 140);
-            Add_Goto (Table.States (570), 286, 141);
-            Add_Goto (Table.States (570), 287, 142);
-            Add_Goto (Table.States (570), 288, 143);
-            Add_Goto (Table.States (570), 294, 98);
-            Add_Goto (Table.States (570), 302, 144);
-            Add_Goto (Table.States (570), 321, 145);
-            Add_Goto (Table.States (570), 322, 146);
-            Add_Goto (Table.States (570), 331, 147);
-            Table.States (570).Kernel := To_Vector ((0 => (158, 83, 1, 
False)));
-            Table.States (570).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (571).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (571), (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, 
79, 94, 105, 106, 107, 108), (187, 0), 4,
+            Table.States (573).Kernel := To_Vector ((0 => ((219, 0),  99,  0, 
(219, 0),  4)));
+            Table.States (573).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (219, 0),  4)));
+            Table.States (574).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (574), 3, (200, 2), 122);
+            Add_Action (Table.States (574), 39, (261, 4), 123);
+            Add_Action (Table.States (574), 40, (200, 3), 124);
+            Add_Action (Table.States (574), 41, (261, 1), 125);
+            Add_Action (Table.States (574), 52, (278, 0), 126);
+            Add_Action (Table.States (574), 76, (120, 0), 127);
+            Add_Action (Table.States (574), 77, (120, 5), 128);
+            Add_Action (Table.States (574), 81, (242, 8), 31);
+            Add_Action (Table.States (574), 97, (333, 1), 129);
+            Add_Action (Table.States (574), 98, (333, 0), 130);
+            Add_Action (Table.States (574), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (574), 106, (261, 0), 131);
+            Add_Action (Table.States (574), 107, (242, 5), 120);
+            Add_Action (Table.States (574), 108, (242, 7), 34);
+            Add_Action (Table.States (574), 109, (242, 6), 35);
+            Table.States (574).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (574), 120, 132);
+            Add_Goto (Table.States (574), 131, 42);
+            Add_Goto (Table.States (574), 194, 133);
+            Add_Goto (Table.States (574), 195, 755);
+            Add_Goto (Table.States (574), 200, 135);
+            Add_Goto (Table.States (574), 242, 136);
+            Add_Goto (Table.States (574), 261, 137);
+            Add_Goto (Table.States (574), 275, 93);
+            Add_Goto (Table.States (574), 278, 138);
+            Add_Goto (Table.States (574), 285, 139);
+            Add_Goto (Table.States (574), 286, 140);
+            Add_Goto (Table.States (574), 287, 141);
+            Add_Goto (Table.States (574), 288, 142);
+            Add_Goto (Table.States (574), 289, 143);
+            Add_Goto (Table.States (574), 290, 144);
+            Add_Goto (Table.States (574), 296, 98);
+            Add_Goto (Table.States (574), 304, 145);
+            Add_Goto (Table.States (574), 323, 146);
+            Add_Goto (Table.States (574), 324, 147);
+            Add_Goto (Table.States (574), 333, 148);
+            Table.States (574).Kernel := To_Vector ((0 => ((160, 9),  85,  1, 
(2147483647, 0),  0)));
+            Table.States (574).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (575).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (575), (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, 
81, 96, 107, 108, 109, 110), (189, 0),  4,
             exception_declaration_0'Access, null);
-            Table.States (571).Kernel := To_Vector ((0 => (187, 97, 0, 
False)));
-            Table.States (571).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 187, 4)));
-            Table.States (572).Action_List.Set_Capacity (11);
-            Add_Action (Table.States (572), (7, 11, 21, 40, 74, 79, 83, 97, 
105, 106, 107), (155, 0), 1, null, null);
-            Table.States (572).Kernel := To_Vector ((0 => (155, 16, 0, 
False)));
-            Table.States (572).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 155, 1)));
-            Table.States (573).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (573), 7, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (573), 11, 707);
-            Add_Action (Table.States (573), 40, 750);
-            Add_Action (Table.States (573), 79, 31);
-            Add_Action (Table.States (573), 105, 120);
-            Add_Action (Table.States (573), 106, 34);
-            Add_Action (Table.States (573), 107, 35);
-            Table.States (573).Goto_List.Set_Capacity (8);
-            Add_Goto (Table.States (573), 115, 751);
-            Add_Goto (Table.States (573), 121, 752);
-            Add_Goto (Table.States (573), 129, 42);
-            Add_Goto (Table.States (573), 240, 487);
-            Add_Goto (Table.States (573), 242, 729);
-            Add_Goto (Table.States (573), 273, 93);
-            Add_Goto (Table.States (573), 294, 98);
-            Add_Goto (Table.States (573), 315, 753);
-            Table.States (573).Kernel := To_Vector (((245, 155, 3, False), 
(245, 155, 4, False), (245, 155, 10, False),
-            (245, 155, 2, False), (245, 155, 3, False), (245, 155, 9, False)));
-            Table.States (573).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (574).Action_List.Set_Capacity (64);
-            Add_Action (Table.States (574), (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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (116, 0), 3,
+            Table.States (575).Kernel := To_Vector ((0 => ((189, 0),  99,  0, 
(189, 0),  4)));
+            Table.States (575).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (189, 0),  4)));
+            Table.States (576).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (576), (7, 11, 21, 40, 74, 81, 85, 99, 
107, 108, 109), (157, 0),  1, null, null);
+            Table.States (576).Kernel := To_Vector ((0 => ((157, 0),  16,  0, 
(157, 0),  1)));
+            Table.States (576).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (157, 0),  1)));
+            Table.States (577).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (577), 7, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (577), 11, (123, 0), 713);
+            Add_Action (Table.States (577), 40, (244, 0), 756);
+            Add_Action (Table.States (577), 81, (242, 8), 31);
+            Add_Action (Table.States (577), 107, (242, 5), 120);
+            Add_Action (Table.States (577), 108, (242, 7), 34);
+            Add_Action (Table.States (577), 109, (242, 6), 35);
+            Table.States (577).Goto_List.Set_Capacity (8);
+            Add_Goto (Table.States (577), 117, 757);
+            Add_Goto (Table.States (577), 123, 758);
+            Add_Goto (Table.States (577), 131, 42);
+            Add_Goto (Table.States (577), 242, 491);
+            Add_Goto (Table.States (577), 244, 735);
+            Add_Goto (Table.States (577), 275, 93);
+            Add_Goto (Table.States (577), 296, 98);
+            Add_Goto (Table.States (577), 317, 759);
+            Table.States (577).Kernel := To_Vector ((((247, 0),  157,  3, 
(2147483647, 0),  0), ((247, 1),  157,  4,
+            (2147483647, 0),  0), ((247, 2),  157,  10, (2147483647, 0),  0), 
((247, 3),  157,  2, (2147483647, 0),
+            0), ((247, 4),  157,  3, (2147483647, 0),  0), ((247, 5),  157,  
9, (2147483647, 0),  0)));
+            Table.States (577).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (578).Action_List.Set_Capacity (65);
+            Add_Action (Table.States (578), (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, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (118, 0),  3,
             actual_parameter_part_0'Access, null);
-            Table.States (574).Kernel := To_Vector ((0 => (116, 77, 0, 
False)));
-            Table.States (574).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 116, 3)));
-            Table.States (575).Action_List.Set_Capacity (64);
-            Add_Action (Table.States (575), (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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (116, 1), 3,
+            Table.States (578).Kernel := To_Vector ((0 => ((118, 0),  78,  0, 
(118, 0),  3)));
+            Table.States (578).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (118, 0),  3)));
+            Table.States (579).Action_List.Set_Capacity (65);
+            Add_Action (Table.States (579), (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, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (118, 1),  3,
             actual_parameter_part_1'Access, null);
-            Table.States (575).Kernel := To_Vector ((0 => (116, 77, 0, 
False)));
-            Table.States (575).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 116, 3)));
-            Table.States (576).Action_List.Set_Capacity (64);
-            Add_Action (Table.States (576), (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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (240, 0), 4, name_0'Access,
-            null);
-            Table.States (576).Kernel := To_Vector ((0 => (240, 77, 0, True)));
-            Table.States (576).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 4)));
-            Table.States (576).Minimal_Complete_Actions_Recursive := True;
-            Table.States (577).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (577), 3, 122);
-            Add_Action (Table.States (577), 39, 123);
-            Add_Action (Table.States (577), 40, 124);
-            Add_Action (Table.States (577), 41, 125);
-            Add_Action (Table.States (577), 76, 127);
-            Add_Action (Table.States (577), 79, 31);
-            Add_Action (Table.States (577), 95, 128);
-            Add_Action (Table.States (577), 96, 129);
-            Add_Action (Table.States (577), 104, 130);
-            Add_Action (Table.States (577), 105, 120);
-            Add_Action (Table.States (577), 106, 34);
-            Add_Action (Table.States (577), 107, 35);
-            Table.States (577).Goto_List.Set_Capacity (12);
-            Add_Goto (Table.States (577), 118, 131);
-            Add_Goto (Table.States (577), 129, 42);
-            Add_Goto (Table.States (577), 198, 134);
-            Add_Goto (Table.States (577), 240, 275);
-            Add_Goto (Table.States (577), 259, 136);
-            Add_Goto (Table.States (577), 273, 93);
-            Add_Goto (Table.States (577), 278, 754);
-            Add_Goto (Table.States (577), 294, 98);
-            Add_Goto (Table.States (577), 302, 482);
-            Add_Goto (Table.States (577), 321, 145);
-            Add_Goto (Table.States (577), 322, 146);
-            Add_Goto (Table.States (577), 331, 147);
-            Table.States (577).Kernel := To_Vector ((0 => (279, 84, 3, True)));
-            Table.States (577).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (577).Minimal_Complete_Actions_Recursive := True;
-            Table.States (578).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (578), (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, 79, 94, 105, 106,
-            107, 108), (124, 0), 4, assignment_statement_0'Access, null);
-            Table.States (578).Kernel := To_Vector ((0 => (124, 97, 0, 
False)));
-            Table.States (578).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 124, 4)));
-            Table.States (579).Action_List.Set_Capacity (13);
-            Add_Action (Table.States (579), 3, 122);
-            Add_Action (Table.States (579), 39, 123);
-            Add_Action (Table.States (579), 40, 124);
-            Add_Action (Table.States (579), 41, 125);
-            Add_Action (Table.States (579), 52, 126);
-            Add_Action (Table.States (579), 76, 127);
-            Add_Action (Table.States (579), 79, 31);
-            Add_Action (Table.States (579), 95, 128);
-            Add_Action (Table.States (579), 96, 129);
-            Add_Action (Table.States (579), 104, 130);
-            Add_Action (Table.States (579), 105, 120);
-            Add_Action (Table.States (579), 106, 34);
-            Add_Action (Table.States (579), 107, 35);
-            Table.States (579).Goto_List.Set_Capacity (19);
-            Add_Goto (Table.States (579), 118, 131);
-            Add_Goto (Table.States (579), 129, 42);
-            Add_Goto (Table.States (579), 192, 755);
-            Add_Goto (Table.States (579), 198, 134);
-            Add_Goto (Table.States (579), 240, 135);
-            Add_Goto (Table.States (579), 259, 136);
-            Add_Goto (Table.States (579), 273, 93);
-            Add_Goto (Table.States (579), 276, 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), 288, 143);
-            Add_Goto (Table.States (579), 294, 98);
-            Add_Goto (Table.States (579), 302, 144);
-            Add_Goto (Table.States (579), 321, 145);
-            Add_Goto (Table.States (579), 322, 146);
-            Add_Goto (Table.States (579), 331, 147);
-            Table.States (579).Kernel := To_Vector ((0 => (130, 76, 2, 
False)));
-            Table.States (579).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (580).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (580), 3, 122);
-            Add_Action (Table.States (580), 39, 123);
-            Add_Action (Table.States (580), 40, 477);
-            Add_Action (Table.States (580), 41, 125);
-            Add_Action (Table.States (580), 76, 127);
-            Add_Action (Table.States (580), 77, Reduce, (255, 4), 0, null, 
null);
-            Add_Action (Table.States (580), 79, 31);
-            Add_Action (Table.States (580), 95, 128);
-            Add_Action (Table.States (580), 96, 129);
-            Add_Action (Table.States (580), 97, Reduce, (255, 4), 0, null, 
null);
-            Add_Action (Table.States (580), 104, 130);
-            Add_Action (Table.States (580), 105, 495);
-            Add_Action (Table.States (580), 106, 34);
-            Add_Action (Table.States (580), 107, 35);
-            Table.States (580).Goto_List.Set_Capacity (17);
-            Add_Goto (Table.States (580), 118, 131);
-            Add_Goto (Table.States (580), 129, 42);
-            Add_Goto (Table.States (580), 168, 756);
-            Add_Goto (Table.States (580), 198, 134);
-            Add_Goto (Table.States (580), 220, 496);
-            Add_Goto (Table.States (580), 240, 480);
-            Add_Goto (Table.States (580), 255, 497);
-            Add_Goto (Table.States (580), 256, 498);
-            Add_Goto (Table.States (580), 259, 136);
-            Add_Goto (Table.States (580), 273, 93);
-            Add_Goto (Table.States (580), 278, 481);
-            Add_Goto (Table.States (580), 294, 98);
-            Add_Goto (Table.States (580), 302, 482);
-            Add_Goto (Table.States (580), 315, 483);
-            Add_Goto (Table.States (580), 321, 145);
-            Add_Goto (Table.States (580), 322, 146);
-            Add_Goto (Table.States (580), 331, 147);
-            Table.States (580).Kernel := To_Vector (((180, 76, 3, False), 
(200, 76, 1, False)));
-            Table.States (580).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 256, 0)));
-            Table.States (581).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (581), 74, 338);
-            Add_Action (Table.States (581), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (581).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (581), 123, 757);
-            Table.States (581).Kernel := To_Vector ((0 => (180, 254, 1, 
False)));
-            Table.States (581).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (582).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (582), 39, 758);
-            Table.States (582).Kernel := To_Vector ((0 => (214, 35, 3, 
False)));
-            Table.States (582).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 758)));
-            Table.States (583).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (583), 39, 759);
-            Table.States (583).Kernel := To_Vector ((0 => (214, 35, 3, 
False)));
-            Table.States (583).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 759)));
-            Table.States (584).Action_List.Set_Capacity (22);
-            Add_Action (Table.States (584), 3, 122);
-            Add_Action (Table.States (584), 15, 259);
-            Add_Action (Table.States (584), 28, 260);
-            Add_Action (Table.States (584), 32, 261);
-            Add_Action (Table.States (584), 39, 123);
-            Add_Action (Table.States (584), 40, 262);
-            Add_Action (Table.States (584), 41, 263);
-            Add_Action (Table.States (584), 44, 264);
-            Add_Action (Table.States (584), 52, 126);
-            Add_Action (Table.States (584), 74, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (584), 76, 127);
-            Add_Action (Table.States (584), 77, Reduce, (125, 6), 0, null, 
null);
-            Add_Conflict (Table.States (584), 77, (193, 1), 0, null, null);
-            Add_Action (Table.States (584), 79, 31);
-            Add_Action (Table.States (584), 80, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (584), 84, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (584), 88, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (584), 95, 128);
-            Add_Action (Table.States (584), 96, 129);
-            Add_Action (Table.States (584), 104, 130);
-            Add_Action (Table.States (584), 105, 120);
-            Add_Action (Table.States (584), 106, 34);
-            Add_Action (Table.States (584), 107, 265);
-            Table.States (584).Goto_List.Set_Capacity (29);
-            Add_Goto (Table.States (584), 118, 131);
-            Add_Goto (Table.States (584), 125, 266);
-            Add_Goto (Table.States (584), 126, 267);
-            Add_Goto (Table.States (584), 129, 42);
-            Add_Goto (Table.States (584), 137, 268);
-            Add_Goto (Table.States (584), 154, 269);
-            Add_Goto (Table.States (584), 166, 270);
-            Add_Goto (Table.States (584), 167, 271);
-            Add_Goto (Table.States (584), 192, 272);
-            Add_Goto (Table.States (584), 193, 760);
-            Add_Goto (Table.States (584), 198, 134);
-            Add_Goto (Table.States (584), 222, 274);
-            Add_Goto (Table.States (584), 240, 275);
-            Add_Goto (Table.States (584), 259, 136);
-            Add_Goto (Table.States (584), 273, 93);
-            Add_Goto (Table.States (584), 274, 276);
-            Add_Goto (Table.States (584), 276, 137);
-            Add_Goto (Table.States (584), 278, 277);
-            Add_Goto (Table.States (584), 283, 138);
-            Add_Goto (Table.States (584), 284, 139);
-            Add_Goto (Table.States (584), 285, 140);
-            Add_Goto (Table.States (584), 286, 141);
-            Add_Goto (Table.States (584), 287, 142);
-            Add_Goto (Table.States (584), 288, 143);
-            Add_Goto (Table.States (584), 294, 98);
-            Add_Goto (Table.States (584), 302, 278);
-            Add_Goto (Table.States (584), 321, 145);
-            Add_Goto (Table.States (584), 322, 146);
-            Add_Goto (Table.States (584), 331, 147);
-            Table.States (584).Kernel := To_Vector (((118, 76, 4, False), 
(118, 76, 2, False), (118, 76, 3, False),
-            (118, 76, 4, False), (118, 76, 3, False), (118, 76, 1, False), 
(257, 76, 1, False)));
-            Table.States (584).Minimal_Complete_Actions := To_Vector 
(((Reduce, 126, 0), (Reduce, 193, 0)));
+            Table.States (579).Kernel := To_Vector ((0 => ((118, 1),  78,  0, 
(118, 1),  3)));
+            Table.States (579).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (118, 1),  3)));
+            Table.States (580).Action_List.Set_Capacity (65);
+            Add_Action (Table.States (580), (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, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (242, 0),  4,
+            name_0'Access, null);
+            Table.States (580).Kernel := To_Vector ((0 => ((242, 0),  78,  0, 
(242, 0),  4)));
+            Table.States (580).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (242, 0),  4)));
+            Table.States (581).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (581), 3, (200, 2), 122);
+            Add_Action (Table.States (581), 39, (261, 4), 123);
+            Add_Action (Table.States (581), 40, (200, 3), 124);
+            Add_Action (Table.States (581), 41, (261, 1), 125);
+            Add_Action (Table.States (581), 76, (120, 0), 127);
+            Add_Action (Table.States (581), 77, (120, 5), 128);
+            Add_Action (Table.States (581), 81, (242, 8), 31);
+            Add_Action (Table.States (581), 97, (333, 1), 129);
+            Add_Action (Table.States (581), 98, (333, 0), 130);
+            Add_Action (Table.States (581), 106, (261, 0), 131);
+            Add_Action (Table.States (581), 107, (242, 5), 120);
+            Add_Action (Table.States (581), 108, (242, 7), 34);
+            Add_Action (Table.States (581), 109, (242, 6), 35);
+            Table.States (581).Goto_List.Set_Capacity (12);
+            Add_Goto (Table.States (581), 120, 132);
+            Add_Goto (Table.States (581), 131, 42);
+            Add_Goto (Table.States (581), 200, 135);
+            Add_Goto (Table.States (581), 242, 276);
+            Add_Goto (Table.States (581), 261, 137);
+            Add_Goto (Table.States (581), 275, 93);
+            Add_Goto (Table.States (581), 280, 760);
+            Add_Goto (Table.States (581), 296, 98);
+            Add_Goto (Table.States (581), 304, 486);
+            Add_Goto (Table.States (581), 323, 146);
+            Add_Goto (Table.States (581), 324, 147);
+            Add_Goto (Table.States (581), 333, 148);
+            Table.States (581).Kernel := To_Vector ((0 => ((281, 0),  86,  3, 
(2147483647, 0),  0)));
+            Table.States (581).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (582).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (582), (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, 81, 96, 107, 108,
+            109, 110), (126, 0),  4, assignment_statement_0'Access, null);
+            Table.States (582).Kernel := To_Vector ((0 => ((126, 0),  99,  0, 
(126, 0),  4)));
+            Table.States (582).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (126, 0),  4)));
+            Table.States (583).Action_List.Set_Capacity (14);
+            Add_Action (Table.States (583), 3, (200, 2), 122);
+            Add_Action (Table.States (583), 39, (261, 4), 123);
+            Add_Action (Table.States (583), 40, (200, 3), 124);
+            Add_Action (Table.States (583), 41, (261, 1), 125);
+            Add_Action (Table.States (583), 52, (278, 0), 126);
+            Add_Action (Table.States (583), 76, (120, 0), 127);
+            Add_Action (Table.States (583), 77, (120, 5), 128);
+            Add_Action (Table.States (583), 81, (242, 8), 31);
+            Add_Action (Table.States (583), 97, (333, 1), 129);
+            Add_Action (Table.States (583), 98, (333, 0), 130);
+            Add_Action (Table.States (583), 106, (261, 0), 131);
+            Add_Action (Table.States (583), 107, (242, 5), 120);
+            Add_Action (Table.States (583), 108, (242, 7), 34);
+            Add_Action (Table.States (583), 109, (242, 6), 35);
+            Table.States (583).Goto_List.Set_Capacity (19);
+            Add_Goto (Table.States (583), 120, 132);
+            Add_Goto (Table.States (583), 131, 42);
+            Add_Goto (Table.States (583), 194, 761);
+            Add_Goto (Table.States (583), 200, 135);
+            Add_Goto (Table.States (583), 242, 136);
+            Add_Goto (Table.States (583), 261, 137);
+            Add_Goto (Table.States (583), 275, 93);
+            Add_Goto (Table.States (583), 278, 138);
+            Add_Goto (Table.States (583), 285, 139);
+            Add_Goto (Table.States (583), 286, 140);
+            Add_Goto (Table.States (583), 287, 141);
+            Add_Goto (Table.States (583), 288, 142);
+            Add_Goto (Table.States (583), 289, 143);
+            Add_Goto (Table.States (583), 290, 144);
+            Add_Goto (Table.States (583), 296, 98);
+            Add_Goto (Table.States (583), 304, 145);
+            Add_Goto (Table.States (583), 323, 146);
+            Add_Goto (Table.States (583), 324, 147);
+            Add_Goto (Table.States (583), 333, 148);
+            Table.States (583).Kernel := To_Vector ((0 => ((132, 0),  76,  2, 
(2147483647, 0),  0)));
+            Table.States (583).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (584).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (584), 3, (200, 2), 122);
+            Add_Action (Table.States (584), 39, (261, 4), 123);
+            Add_Action (Table.States (584), 40, (200, 3), 481);
+            Add_Action (Table.States (584), 41, (261, 1), 125);
+            Add_Action (Table.States (584), 76, (120, 0), 127);
+            Add_Action (Table.States (584), 77, (120, 5), 128);
+            Add_Action (Table.States (584), 78, Reduce, (257, 4),  0, null, 
null);
+            Add_Action (Table.States (584), 81, (242, 8), 31);
+            Add_Action (Table.States (584), 97, (333, 1), 129);
+            Add_Action (Table.States (584), 98, (333, 0), 130);
+            Add_Action (Table.States (584), 99, Reduce, (257, 4),  0, null, 
null);
+            Add_Action (Table.States (584), 106, (261, 0), 131);
+            Add_Action (Table.States (584), 107, (222, 1), 499);
+            Add_Action (Table.States (584), 108, (242, 7), 34);
+            Add_Action (Table.States (584), 109, (242, 6), 35);
+            Table.States (584).Goto_List.Set_Capacity (17);
+            Add_Goto (Table.States (584), 120, 132);
+            Add_Goto (Table.States (584), 131, 42);
+            Add_Goto (Table.States (584), 170, 762);
+            Add_Goto (Table.States (584), 200, 135);
+            Add_Goto (Table.States (584), 222, 500);
+            Add_Goto (Table.States (584), 242, 484);
+            Add_Goto (Table.States (584), 257, 501);
+            Add_Goto (Table.States (584), 258, 502);
+            Add_Goto (Table.States (584), 261, 137);
+            Add_Goto (Table.States (584), 275, 93);
+            Add_Goto (Table.States (584), 280, 485);
+            Add_Goto (Table.States (584), 296, 98);
+            Add_Goto (Table.States (584), 304, 486);
+            Add_Goto (Table.States (584), 317, 487);
+            Add_Goto (Table.States (584), 323, 146);
+            Add_Goto (Table.States (584), 324, 147);
+            Add_Goto (Table.States (584), 333, 148);
+            Table.States (584).Kernel := To_Vector ((((182, 0),  76,  3, 
(2147483647, 0),  0), ((202, 0),  76,  1,
+            (2147483647, 0),  0)));
+            Table.States (584).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (258, 1),  0)));
             Table.States (585).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (585), (74, 97), (257, 1), 1, null, null);
-            Table.States (585).Kernel := To_Vector ((0 => (257, 118, 0, 
False)));
-            Table.States (585).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 257, 1)));
-            Table.States (586).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (586), 74, 338);
-            Add_Action (Table.States (586), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (586).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (586), 123, 761);
-            Table.States (586).Kernel := To_Vector ((0 => (194, 257, 1, 
False)));
-            Table.States (586).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (587).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (587), 74, 338);
-            Add_Action (Table.States (587), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (587).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (587), 123, 762);
-            Table.States (587).Kernel := To_Vector ((0 => (244, 41, 1, 
False)));
-            Table.States (587).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (588).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (588), 74, 338);
-            Add_Action (Table.States (588), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (588).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (588), 123, 763);
-            Table.States (588).Kernel := To_Vector ((0 => (113, 6, 1, False)));
-            Table.States (588).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
+            Add_Action (Table.States (585), 74, (125, 0), 340);
+            Add_Action (Table.States (585), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (585).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (585), 125, 763);
+            Table.States (585).Kernel := To_Vector ((0 => ((182, 1),  256,  1, 
(2147483647, 0),  0)));
+            Table.States (585).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (586).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (586), 39, (216, 2), 764);
+            Table.States (586).Kernel := To_Vector ((0 => ((216, 2),  35,  3, 
(2147483647, 0),  0)));
+            Table.States (586).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (216, 2),  39, 764)));
+            Table.States (587).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (587), 39, (216, 1), 765);
+            Table.States (587).Kernel := To_Vector ((0 => ((216, 1),  35,  3, 
(2147483647, 0),  0)));
+            Table.States (587).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (216, 1),  39, 765)));
+            Table.States (588).Action_List.Set_Capacity (23);
+            Add_Action (Table.States (588), 3, (200, 2), 122);
+            Add_Action (Table.States (588), 15, (139, 0), 260);
+            Add_Action (Table.States (588), 28, (127, 6), 261);
+            Add_Action (Table.States (588), 32, (224, 0), 262);
+            Add_Action (Table.States (588), 39, (261, 4), 123);
+            Add_Action (Table.States (588), 40, (168, 1), 263);
+            Add_Action (Table.States (588), 41, (120, 1), 264);
+            Add_Action (Table.States (588), 44, (168, 3), 265);
+            Add_Action (Table.States (588), 52, (278, 0), 126);
+            Add_Action (Table.States (588), 74, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (588), 76, (120, 0), 127);
+            Add_Action (Table.States (588), 77, (120, 5), 128);
+            Add_Action (Table.States (588), 78, Reduce, (127, 5),  0, null, 
null);
+            Add_Conflict (Table.States (588), 78, (195, 1),  0, null, null);
+            Add_Action (Table.States (588), 81, (242, 8), 31);
+            Add_Action (Table.States (588), 82, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (588), 86, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (588), 90, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (588), 97, (333, 1), 129);
+            Add_Action (Table.States (588), 98, (333, 0), 130);
+            Add_Action (Table.States (588), 106, (261, 0), 131);
+            Add_Action (Table.States (588), 107, (242, 5), 120);
+            Add_Action (Table.States (588), 108, (242, 7), 34);
+            Add_Action (Table.States (588), 109, (127, 0), 266);
+            Table.States (588).Goto_List.Set_Capacity (29);
+            Add_Goto (Table.States (588), 120, 132);
+            Add_Goto (Table.States (588), 127, 267);
+            Add_Goto (Table.States (588), 128, 268);
+            Add_Goto (Table.States (588), 131, 42);
+            Add_Goto (Table.States (588), 139, 269);
+            Add_Goto (Table.States (588), 156, 270);
+            Add_Goto (Table.States (588), 168, 271);
+            Add_Goto (Table.States (588), 169, 272);
+            Add_Goto (Table.States (588), 194, 273);
+            Add_Goto (Table.States (588), 195, 766);
+            Add_Goto (Table.States (588), 200, 135);
+            Add_Goto (Table.States (588), 224, 275);
+            Add_Goto (Table.States (588), 242, 276);
+            Add_Goto (Table.States (588), 261, 137);
+            Add_Goto (Table.States (588), 275, 93);
+            Add_Goto (Table.States (588), 276, 277);
+            Add_Goto (Table.States (588), 278, 138);
+            Add_Goto (Table.States (588), 280, 278);
+            Add_Goto (Table.States (588), 285, 139);
+            Add_Goto (Table.States (588), 286, 140);
+            Add_Goto (Table.States (588), 287, 141);
+            Add_Goto (Table.States (588), 288, 142);
+            Add_Goto (Table.States (588), 289, 143);
+            Add_Goto (Table.States (588), 290, 144);
+            Add_Goto (Table.States (588), 296, 98);
+            Add_Goto (Table.States (588), 304, 279);
+            Add_Goto (Table.States (588), 323, 146);
+            Add_Goto (Table.States (588), 324, 147);
+            Add_Goto (Table.States (588), 333, 148);
+            Table.States (588).Kernel := To_Vector ((((120, 0),  76,  1, 
(2147483647, 0),  0), ((120, 1),  76,  3,
+            (2147483647, 0),  0), ((120, 2),  76,  4, (2147483647, 0),  0), 
((120, 3),  76,  2, (2147483647, 0),  0),
+            ((120, 4),  76,  4, (2147483647, 0),  0), ((120, 6),  76,  3, 
(2147483647, 0),  0), ((259, 0),  76,  1,
+            (2147483647, 0),  0)));
+            Table.States (588).Minimal_Complete_Actions := To_Vector 
(((Reduce, (128, 1),  0), (Reduce, (195, 1),
+            0)));
             Table.States (589).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (589), 74, 338);
-            Add_Action (Table.States (589), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (589).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (589), 123, 764);
-            Table.States (589).Kernel := To_Vector ((0 => (309, 60, 1, 
False)));
-            Table.States (589).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (590).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (590), 74, 338);
-            Add_Action (Table.States (590), 76, 236);
-            Add_Action (Table.States (590), 85, 238);
-            Add_Action (Table.States (590), 97, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (590), 102, 240);
-            Add_Action (Table.States (590), 103, 241);
-            Table.States (590).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (590), 116, 242);
-            Add_Goto (Table.States (590), 123, 765);
-            Add_Goto (Table.States (590), 323, 243);
-            Table.States (590).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (273, 240, 3, True), (294, 240, 2, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (312, 240, 1, False)));
-            Table.States (590).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-         end Subr_11;
-         procedure Subr_12
-         is begin
-            Table.States (591).Action_List.Set_Capacity (16);
-            Add_Action (Table.States (591), 13, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (591), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (591), 28, 184);
-            Add_Action (Table.States (591), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (591), 30, 8);
-            Add_Action (Table.States (591), 40, 12);
-            Add_Action (Table.States (591), 46, 14);
-            Add_Action (Table.States (591), 47, 15);
-            Add_Action (Table.States (591), 48, 16);
-            Add_Action (Table.States (591), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (591), 51, 19);
-            Add_Action (Table.States (591), 63, 25);
-            Add_Action (Table.States (591), 66, 26);
-            Add_Action (Table.States (591), 69, 27);
-            Add_Action (Table.States (591), 71, 28);
-            Add_Action (Table.States (591), 105, 186);
-            Table.States (591).Goto_List.Set_Capacity (53);
-            Add_Goto (Table.States (591), 113, 36);
-            Add_Goto (Table.States (591), 122, 38);
-            Add_Goto (Table.States (591), 128, 41);
-            Add_Goto (Table.States (591), 135, 46);
-            Add_Goto (Table.States (591), 136, 47);
-            Add_Goto (Table.States (591), 158, 392);
-            Add_Goto (Table.States (591), 159, 393);
-            Add_Goto (Table.States (591), 160, 766);
-            Add_Goto (Table.States (591), 180, 55);
-            Add_Goto (Table.States (591), 183, 56);
-            Add_Goto (Table.States (591), 187, 57);
-            Add_Goto (Table.States (591), 194, 59);
-            Add_Goto (Table.States (591), 207, 61);
-            Add_Goto (Table.States (591), 208, 62);
-            Add_Goto (Table.States (591), 210, 63);
-            Add_Goto (Table.States (591), 211, 64);
-            Add_Goto (Table.States (591), 214, 65);
-            Add_Goto (Table.States (591), 215, 66);
-            Add_Goto (Table.States (591), 216, 67);
-            Add_Goto (Table.States (591), 217, 68);
-            Add_Goto (Table.States (591), 220, 70);
-            Add_Goto (Table.States (591), 224, 72);
-            Add_Goto (Table.States (591), 244, 75);
-            Add_Goto (Table.States (591), 245, 76);
-            Add_Goto (Table.States (591), 246, 77);
-            Add_Goto (Table.States (591), 247, 78);
-            Add_Goto (Table.States (591), 248, 79);
-            Add_Goto (Table.States (591), 249, 80);
-            Add_Goto (Table.States (591), 250, 81);
-            Add_Goto (Table.States (591), 251, 82);
-            Add_Goto (Table.States (591), 252, 83);
-            Add_Goto (Table.States (591), 258, 395);
-            Add_Goto (Table.States (591), 260, 85);
-            Add_Goto (Table.States (591), 261, 86);
-            Add_Goto (Table.States (591), 263, 88);
-            Add_Goto (Table.States (591), 264, 89);
-            Add_Goto (Table.States (591), 265, 90);
-            Add_Goto (Table.States (591), 266, 91);
-            Add_Goto (Table.States (591), 272, 92);
-            Add_Goto (Table.States (591), 282, 95);
-            Add_Goto (Table.States (591), 290, 96);
-            Add_Goto (Table.States (591), 305, 103);
-            Add_Goto (Table.States (591), 306, 104);
-            Add_Goto (Table.States (591), 308, 106);
-            Add_Goto (Table.States (591), 309, 107);
-            Add_Goto (Table.States (591), 310, 108);
-            Add_Goto (Table.States (591), 312, 109);
-            Add_Goto (Table.States (591), 314, 110);
-            Add_Goto (Table.States (591), 317, 112);
-            Add_Goto (Table.States (591), 318, 113);
-            Add_Goto (Table.States (591), 320, 114);
-            Add_Goto (Table.States (591), 326, 116);
-            Add_Goto (Table.States (591), 332, 117);
-            Table.States (591).Kernel := To_Vector ((0 => (308, 35, 3, 
False)));
-            Table.States (591).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 160, 0)));
-            Table.States (592).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (592), (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, 
79, 94, 105, 106, 107, 108), (310, 0), 4,
+            Add_Action (Table.States (589), (74, 99), (259, 1),  1, null, 
null);
+            Table.States (589).Kernel := To_Vector ((0 => ((259, 1),  120,  0, 
(259, 1),  1)));
+            Table.States (589).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (259, 1),  1)));
+            Table.States (590).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (590), 74, (125, 0), 340);
+            Add_Action (Table.States (590), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (590).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (590), 125, 767);
+            Table.States (590).Kernel := To_Vector ((0 => ((196, 0),  259,  1, 
(2147483647, 0),  0)));
+            Table.States (590).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (591).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (591), 74, (125, 0), 340);
+            Add_Action (Table.States (591), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (591).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (591), 125, 768);
+            Table.States (591).Kernel := To_Vector ((0 => ((246, 0),  41,  1, 
(2147483647, 0),  0)));
+            Table.States (591).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (592).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (592), 74, (125, 0), 340);
+            Add_Action (Table.States (592), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (592).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (592), 125, 769);
+            Table.States (592).Kernel := To_Vector ((0 => ((115, 0),  6,  1, 
(2147483647, 0),  0)));
+            Table.States (592).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (593).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (593), 74, (125, 0), 340);
+            Add_Action (Table.States (593), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (593).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (593), 125, 770);
+            Table.States (593).Kernel := To_Vector ((0 => ((311, 0),  60,  1, 
(2147483647, 0),  0)));
+            Table.States (593).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (594).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (594), 74, (125, 0), 340);
+            Add_Action (Table.States (594), 76, (118, 0), 237);
+            Add_Action (Table.States (594), 87, (296, 0), 239);
+            Add_Action (Table.States (594), 99, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (594), 104, (325, 0), 241);
+            Add_Action (Table.States (594), 105, (325, 1), 242);
+            Table.States (594).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (594), 118, 243);
+            Add_Goto (Table.States (594), 125, 771);
+            Add_Goto (Table.States (594), 325, 244);
+            Table.States (594).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((275, 0),  242,  3, (2147483647, 0),  0),
+            ((296, 0),  242,  2, (2147483647, 0),  0), ((296, 1),  242,  2, 
(2147483647, 0),  0), ((296, 2),  242,  2,
+            (2147483647, 0),  0), ((296, 3),  242,  2, (2147483647, 0),  0), 
((314, 0),  242,  1, (2147483647, 0),
+            0)));
+            Table.States (594).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (595).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (595), 13, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (595), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (595), 28, (124, 0), 185);
+            Add_Action (Table.States (595), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (595), 30, (213, 0), 8);
+            Add_Action (Table.States (595), 40, (249, 0), 12);
+            Add_Action (Table.States (595), 46, (249, 1), 14);
+            Add_Action (Table.States (595), 47, (216, 0), 15);
+            Add_Action (Table.States (595), 48, (260, 0), 16);
+            Add_Action (Table.States (595), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (595), 51, (267, 0), 19);
+            Add_Action (Table.States (595), 63, (316, 0), 25);
+            Add_Action (Table.States (595), 66, (308, 0), 26);
+            Add_Action (Table.States (595), 69, (209, 0), 27);
+            Add_Action (Table.States (595), 71, (334, 0), 28);
+            Add_Action (Table.States (595), 107, (222, 1), 187);
+            Table.States (595).Goto_List.Set_Capacity (53);
+            Add_Goto (Table.States (595), 115, 36);
+            Add_Goto (Table.States (595), 124, 38);
+            Add_Goto (Table.States (595), 130, 41);
+            Add_Goto (Table.States (595), 137, 46);
+            Add_Goto (Table.States (595), 138, 47);
+            Add_Goto (Table.States (595), 160, 394);
+            Add_Goto (Table.States (595), 161, 395);
+            Add_Goto (Table.States (595), 162, 772);
+            Add_Goto (Table.States (595), 182, 55);
+            Add_Goto (Table.States (595), 185, 56);
+            Add_Goto (Table.States (595), 189, 57);
+            Add_Goto (Table.States (595), 196, 59);
+            Add_Goto (Table.States (595), 209, 61);
+            Add_Goto (Table.States (595), 210, 62);
+            Add_Goto (Table.States (595), 212, 63);
+            Add_Goto (Table.States (595), 213, 64);
+            Add_Goto (Table.States (595), 216, 65);
+            Add_Goto (Table.States (595), 217, 66);
+            Add_Goto (Table.States (595), 218, 67);
+            Add_Goto (Table.States (595), 219, 68);
+            Add_Goto (Table.States (595), 222, 70);
+            Add_Goto (Table.States (595), 226, 72);
+            Add_Goto (Table.States (595), 246, 75);
+            Add_Goto (Table.States (595), 247, 76);
+            Add_Goto (Table.States (595), 248, 77);
+            Add_Goto (Table.States (595), 249, 78);
+            Add_Goto (Table.States (595), 250, 79);
+            Add_Goto (Table.States (595), 251, 80);
+            Add_Goto (Table.States (595), 252, 81);
+            Add_Goto (Table.States (595), 253, 82);
+            Add_Goto (Table.States (595), 254, 83);
+            Add_Goto (Table.States (595), 260, 397);
+            Add_Goto (Table.States (595), 262, 85);
+            Add_Goto (Table.States (595), 263, 86);
+            Add_Goto (Table.States (595), 265, 88);
+            Add_Goto (Table.States (595), 266, 89);
+            Add_Goto (Table.States (595), 267, 90);
+            Add_Goto (Table.States (595), 268, 91);
+            Add_Goto (Table.States (595), 274, 92);
+            Add_Goto (Table.States (595), 284, 95);
+            Add_Goto (Table.States (595), 292, 96);
+            Add_Goto (Table.States (595), 307, 103);
+            Add_Goto (Table.States (595), 308, 104);
+            Add_Goto (Table.States (595), 310, 106);
+            Add_Goto (Table.States (595), 311, 107);
+            Add_Goto (Table.States (595), 312, 108);
+            Add_Goto (Table.States (595), 314, 109);
+            Add_Goto (Table.States (595), 316, 110);
+            Add_Goto (Table.States (595), 319, 112);
+            Add_Goto (Table.States (595), 320, 113);
+            Add_Goto (Table.States (595), 322, 114);
+            Add_Goto (Table.States (595), 328, 116);
+            Add_Goto (Table.States (595), 334, 117);
+            Table.States (595).Kernel := To_Vector ((0 => ((310, 0),  35,  3, 
(2147483647, 0),  0)));
+            Table.States (595).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (162, 1),  0)));
+            Table.States (596).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (596), (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, 
81, 96, 107, 108, 109, 110), (312, 0),  4,
             subprogram_declaration_0'Access, null);
-            Table.States (592).Kernel := To_Vector ((0 => (310, 97, 0, 
False)));
-            Table.States (592).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 310, 4)));
-            Table.States (593).Action_List.Set_Capacity (25);
-            Add_Action (Table.States (593), 4, 1);
-            Add_Action (Table.States (593), 5, 2);
-            Add_Action (Table.States (593), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (593), 15, 3);
-            Add_Action (Table.States (593), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (593), 18, 4);
-            Add_Action (Table.States (593), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (593), 26, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (593), 27, 5);
-            Add_Action (Table.States (593), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (593), 31, 9);
-            Add_Action (Table.States (593), 32, 10);
-            Add_Action (Table.States (593), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (593), 41, 13);
-            Add_Action (Table.States (593), 48, 16);
-            Add_Action (Table.States (593), 52, 20);
-            Add_Action (Table.States (593), 57, 21);
-            Add_Action (Table.States (593), 58, 22);
-            Add_Action (Table.States (593), 61, 24);
-            Add_Action (Table.States (593), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (593), 79, 31);
-            Add_Action (Table.States (593), 94, 32);
-            Add_Action (Table.States (593), 105, 361);
-            Add_Action (Table.States (593), 106, 34);
-            Add_Action (Table.States (593), 107, 35);
-            Table.States (593).Goto_List.Set_Capacity (32);
-            Add_Goto (Table.States (593), 114, 37);
-            Add_Goto (Table.States (593), 124, 39);
-            Add_Goto (Table.States (593), 127, 40);
-            Add_Goto (Table.States (593), 129, 42);
-            Add_Goto (Table.States (593), 132, 43);
-            Add_Goto (Table.States (593), 133, 44);
-            Add_Goto (Table.States (593), 134, 45);
-            Add_Goto (Table.States (593), 140, 48);
-            Add_Goto (Table.States (593), 152, 51);
-            Add_Goto (Table.States (593), 153, 52);
-            Add_Goto (Table.States (593), 162, 54);
-            Add_Goto (Table.States (593), 191, 58);
-            Add_Goto (Table.States (593), 197, 60);
-            Add_Goto (Table.States (593), 218, 69);
-            Add_Goto (Table.States (593), 219, 767);
-            Add_Goto (Table.States (593), 223, 71);
-            Add_Goto (Table.States (593), 233, 73);
-            Add_Goto (Table.States (593), 240, 74);
-            Add_Goto (Table.States (593), 258, 84);
-            Add_Goto (Table.States (593), 262, 87);
-            Add_Goto (Table.States (593), 273, 93);
-            Add_Goto (Table.States (593), 277, 94);
-            Add_Goto (Table.States (593), 291, 97);
-            Add_Goto (Table.States (593), 294, 98);
-            Add_Goto (Table.States (593), 295, 99);
-            Add_Goto (Table.States (593), 299, 100);
-            Add_Goto (Table.States (593), 300, 362);
-            Add_Goto (Table.States (593), 301, 391);
-            Add_Goto (Table.States (593), 303, 101);
-            Add_Goto (Table.States (593), 304, 102);
-            Add_Goto (Table.States (593), 307, 364);
-            Add_Goto (Table.States (593), 324, 115);
-            Table.States (593).Kernel := To_Vector ((0 => (114, 21, 2, 
False)));
-            Table.States (593).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 219, 0)));
-            Table.States (594).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (594), (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, 79, 94, 105, 106,
-            107, 108), (114, 1), 5, accept_statement_1'Access, null);
-            Table.States (594).Kernel := To_Vector ((0 => (114, 97, 0, 
False)));
-            Table.States (594).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 114, 5)));
-            Table.States (595).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (595), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 80, 84, 88, 97), (276,
-            0), 4, raise_expression_0'Access, null);
-            Table.States (595).Kernel := To_Vector ((0 => (276, 193, 0, 
True)));
-            Table.States (595).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 276, 4)));
-            Table.States (595).Minimal_Complete_Actions_Recursive := True;
-            Table.States (596).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (596), 72, 768);
-            Table.States (596).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (596), 138, 769);
-            Add_Goto (Table.States (596), 139, 770);
-            Table.States (596).Kernel := To_Vector ((0 => (137, 35, 2, 
False)));
-            Table.States (596).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 72, 768)));
-            Table.States (597).Action_List.Set_Capacity (16);
-            Add_Action (Table.States (597), 3, 122);
-            Add_Action (Table.States (597), 39, 123);
-            Add_Action (Table.States (597), 40, 262);
-            Add_Action (Table.States (597), 41, 125);
-            Add_Action (Table.States (597), 44, 264);
-            Add_Action (Table.States (597), 52, 126);
-            Add_Action (Table.States (597), 76, 127);
-            Add_Action (Table.States (597), 79, 31);
-            Add_Action (Table.States (597), 80, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (597), 88, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (597), 95, 128);
-            Add_Action (Table.States (597), 96, 129);
-            Add_Action (Table.States (597), 104, 130);
-            Add_Action (Table.States (597), 105, 120);
-            Add_Action (Table.States (597), 106, 34);
-            Add_Action (Table.States (597), 107, 35);
-            Table.States (597).Goto_List.Set_Capacity (22);
-            Add_Goto (Table.States (597), 118, 131);
-            Add_Goto (Table.States (597), 129, 42);
-            Add_Goto (Table.States (597), 166, 270);
-            Add_Goto (Table.States (597), 167, 771);
-            Add_Goto (Table.States (597), 192, 606);
-            Add_Goto (Table.States (597), 198, 134);
-            Add_Goto (Table.States (597), 240, 275);
-            Add_Goto (Table.States (597), 259, 136);
-            Add_Goto (Table.States (597), 273, 93);
-            Add_Goto (Table.States (597), 276, 137);
-            Add_Goto (Table.States (597), 278, 277);
-            Add_Goto (Table.States (597), 283, 138);
-            Add_Goto (Table.States (597), 284, 139);
-            Add_Goto (Table.States (597), 285, 140);
-            Add_Goto (Table.States (597), 286, 141);
-            Add_Goto (Table.States (597), 287, 142);
-            Add_Goto (Table.States (597), 288, 143);
-            Add_Goto (Table.States (597), 294, 98);
-            Add_Goto (Table.States (597), 302, 278);
-            Add_Goto (Table.States (597), 321, 145);
-            Add_Goto (Table.States (597), 322, 146);
-            Add_Goto (Table.States (597), 331, 147);
-            Table.States (597).Kernel := To_Vector ((0 => (125, 33, 2, 
False)));
-            Table.States (597).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 167, 0)));
-            Table.States (598).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (598), 88, 772);
-            Table.States (598).Kernel := To_Vector ((0 => (274, 231, 1, 
False)));
-            Table.States (598).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 88, 772)));
-            Table.States (599).Action_List.Set_Capacity (16);
-            Add_Action (Table.States (599), 3, 122);
-            Add_Action (Table.States (599), 22, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (599), 23, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (599), 39, 123);
-            Add_Action (Table.States (599), 40, 124);
-            Add_Action (Table.States (599), 41, 125);
-            Add_Action (Table.States (599), 52, 126);
-            Add_Action (Table.States (599), 76, 127);
-            Add_Action (Table.States (599), 77, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (599), 79, 31);
-            Add_Action (Table.States (599), 95, 128);
-            Add_Action (Table.States (599), 96, 129);
-            Add_Action (Table.States (599), 104, 130);
-            Add_Action (Table.States (599), 105, 120);
-            Add_Action (Table.States (599), 106, 34);
-            Add_Action (Table.States (599), 107, 35);
-            Table.States (599).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (599), 118, 131);
-            Add_Goto (Table.States (599), 129, 42);
-            Add_Goto (Table.States (599), 192, 132);
-            Add_Goto (Table.States (599), 193, 773);
-            Add_Goto (Table.States (599), 198, 134);
-            Add_Goto (Table.States (599), 240, 135);
-            Add_Goto (Table.States (599), 259, 136);
-            Add_Goto (Table.States (599), 273, 93);
-            Add_Goto (Table.States (599), 276, 137);
-            Add_Goto (Table.States (599), 283, 138);
-            Add_Goto (Table.States (599), 284, 139);
-            Add_Goto (Table.States (599), 285, 140);
-            Add_Goto (Table.States (599), 286, 141);
-            Add_Goto (Table.States (599), 287, 142);
-            Add_Goto (Table.States (599), 288, 143);
-            Add_Goto (Table.States (599), 294, 98);
-            Add_Goto (Table.States (599), 302, 144);
-            Add_Goto (Table.States (599), 321, 145);
-            Add_Goto (Table.States (599), 322, 146);
-            Add_Goto (Table.States (599), 331, 147);
-            Table.States (599).Kernel := To_Vector (((222, 68, 3, False), 
(222, 68, 1, False), (222, 68, 2, False),
-            (222, 68, 0, False)));
-            Table.States (599).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (600).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (600), 76, 236);
-            Add_Action (Table.States (600), 80, Reduce, (166, 1), 3, null, 
null);
-            Add_Action (Table.States (600), 85, 238);
-            Add_Action (Table.States (600), 88, Reduce, (166, 1), 3, null, 
null);
-            Add_Action (Table.States (600), 102, 240);
-            Add_Action (Table.States (600), 103, 241);
+            Table.States (596).Kernel := To_Vector ((0 => ((312, 0),  99,  0, 
(312, 0),  4)));
+            Table.States (596).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (312, 0),  4)));
+            Table.States (597).Action_List.Set_Capacity (25);
+            Add_Action (Table.States (597), 4, (116, 0), 1);
+            Add_Action (Table.States (597), 5, (306, 8), 2);
+            Add_Action (Table.States (597), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (597), 15, (142, 0), 3);
+            Add_Action (Table.States (597), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (597), 18, (164, 0), 4);
+            Add_Action (Table.States (597), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (597), 26, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (597), 27, (193, 0), 5);
+            Add_Action (Table.States (597), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (597), 31, (306, 3), 9);
+            Add_Action (Table.States (597), 32, (225, 0), 10);
+            Add_Action (Table.States (597), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (597), 41, (306, 0), 13);
+            Add_Action (Table.States (597), 48, (260, 0), 16);
+            Add_Action (Table.States (597), 52, (279, 0), 20);
+            Add_Action (Table.States (597), 57, (293, 0), 21);
+            Add_Action (Table.States (597), 58, (199, 0), 22);
+            Add_Action (Table.States (597), 61, (129, 0), 24);
+            Add_Action (Table.States (597), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (597), 81, (242, 8), 31);
+            Add_Action (Table.States (597), 96, (220, 0), 32);
+            Add_Action (Table.States (597), 107, (134, 0), 363);
+            Add_Action (Table.States (597), 108, (242, 7), 34);
+            Add_Action (Table.States (597), 109, (242, 6), 35);
+            Table.States (597).Goto_List.Set_Capacity (32);
+            Add_Goto (Table.States (597), 116, 37);
+            Add_Goto (Table.States (597), 126, 39);
+            Add_Goto (Table.States (597), 129, 40);
+            Add_Goto (Table.States (597), 131, 42);
+            Add_Goto (Table.States (597), 134, 43);
+            Add_Goto (Table.States (597), 135, 44);
+            Add_Goto (Table.States (597), 136, 45);
+            Add_Goto (Table.States (597), 142, 48);
+            Add_Goto (Table.States (597), 154, 51);
+            Add_Goto (Table.States (597), 155, 52);
+            Add_Goto (Table.States (597), 164, 54);
+            Add_Goto (Table.States (597), 193, 58);
+            Add_Goto (Table.States (597), 199, 60);
+            Add_Goto (Table.States (597), 220, 69);
+            Add_Goto (Table.States (597), 221, 773);
+            Add_Goto (Table.States (597), 225, 71);
+            Add_Goto (Table.States (597), 235, 73);
+            Add_Goto (Table.States (597), 242, 74);
+            Add_Goto (Table.States (597), 260, 84);
+            Add_Goto (Table.States (597), 264, 87);
+            Add_Goto (Table.States (597), 275, 93);
+            Add_Goto (Table.States (597), 279, 94);
+            Add_Goto (Table.States (597), 293, 97);
+            Add_Goto (Table.States (597), 296, 98);
+            Add_Goto (Table.States (597), 297, 99);
+            Add_Goto (Table.States (597), 301, 100);
+            Add_Goto (Table.States (597), 302, 364);
+            Add_Goto (Table.States (597), 303, 393);
+            Add_Goto (Table.States (597), 305, 101);
+            Add_Goto (Table.States (597), 306, 102);
+            Add_Goto (Table.States (597), 309, 366);
+            Add_Goto (Table.States (597), 326, 115);
+            Table.States (597).Kernel := To_Vector ((0 => ((116, 0),  21,  2, 
(2147483647, 0),  0)));
+            Table.States (597).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (221, 1),  0)));
+            Table.States (598).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (598), (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, 81, 96, 107, 108,
+            109, 110), (116, 1),  5, accept_statement_1'Access, null);
+            Table.States (598).Kernel := To_Vector ((0 => ((116, 1),  99,  0, 
(116, 1),  5)));
+            Table.States (598).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (116, 1),  5)));
+            Table.States (599).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (599), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 78, 79, 82, 86, 90, 99),
+            (278, 0),  4, raise_expression_0'Access, null);
+            Table.States (599).Kernel := To_Vector ((0 => ((278, 0),  195,  0, 
(278, 0),  4)));
+            Table.States (599).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (278, 0),  4)));
+            Table.States (600).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (600), 72, (140, 0), 774);
             Table.States (600).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (600), 116, 242);
-            Add_Goto (Table.States (600), 323, 243);
-            Table.States (600).Kernel := To_Vector (((129, 240, 2, True), 
(166, 240, 0, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (600).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 166, 3)));
-            Table.States (601).Action_List.Set_Capacity (64);
-            Add_Action (Table.States (601), (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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (118, 2), 4, null, null);
-            Table.States (601).Kernel := To_Vector ((0 => (118, 77, 0, 
False)));
-            Table.States (601).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 118, 4)));
-            Table.States (602).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (602), (35, 77, 84, 97), (125, 1), 3, 
null, null);
-            Table.States (602).Kernel := To_Vector ((0 => (125, 81, 0, 
False)));
-            Table.States (602).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 125, 3)));
-            Table.States (603).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (603), (35, 77, 84, 97), (125, 0), 3, 
association_opt_0'Access, null);
-            Table.States (603).Kernel := To_Vector ((0 => (125, 193, 0, 
False)));
-            Table.States (603).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 125, 3)));
-            Table.States (604).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (604), (35, 77, 84, 97), (126, 0), 3, 
null, null);
-            Table.States (604).Kernel := To_Vector ((0 => (126, 125, 0, 
True)));
-            Table.States (604).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 126, 3)));
-            Table.States (604).Minimal_Complete_Actions_Recursive := True;
-            Table.States (605).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (605), (80, 88), (167, 0), 3, null, null);
-            Table.States (605).Kernel := To_Vector ((0 => (167, 166, 0, 
True)));
-            Table.States (605).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 167, 3)));
-            Table.States (605).Minimal_Complete_Actions_Recursive := True;
-            Table.States (606).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (606), (80, 88), (166, 0), 1, null, null);
-            Table.States (606).Kernel := To_Vector ((0 => (166, 192, 0, 
False)));
-            Table.States (606).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 166, 1)));
-            Table.States (607).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (607), (35, 77, 84, 97), (125, 3), 3, 
association_opt_3'Access, null);
-            Table.States (607).Kernel := To_Vector ((0 => (125, 81, 0, 
False)));
-            Table.States (607).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 125, 3)));
-            Table.States (608).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (608), (35, 77, 84, 97), (125, 2), 3, 
association_opt_2'Access, null);
-            Table.States (608).Kernel := To_Vector ((0 => (125, 193, 0, 
False)));
-            Table.States (608).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 125, 3)));
-            Table.States (609).Action_List.Set_Capacity (19);
-            Add_Action (Table.States (609), 3, 122);
-            Add_Action (Table.States (609), 28, 517);
-            Add_Action (Table.States (609), 39, 123);
-            Add_Action (Table.States (609), 40, 262);
-            Add_Action (Table.States (609), 41, 125);
-            Add_Action (Table.States (609), 44, 264);
-            Add_Action (Table.States (609), 52, 126);
-            Add_Action (Table.States (609), 76, 127);
-            Add_Action (Table.States (609), 77, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (609), 79, 31);
-            Add_Action (Table.States (609), 80, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (609), 84, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (609), 88, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (609), 95, 128);
-            Add_Action (Table.States (609), 96, 129);
-            Add_Action (Table.States (609), 104, 130);
-            Add_Action (Table.States (609), 105, 120);
-            Add_Action (Table.States (609), 106, 34);
-            Add_Action (Table.States (609), 107, 265);
-            Table.States (609).Goto_List.Set_Capacity (24);
-            Add_Goto (Table.States (609), 118, 131);
-            Add_Goto (Table.States (609), 125, 266);
-            Add_Goto (Table.States (609), 126, 774);
-            Add_Goto (Table.States (609), 129, 42);
-            Add_Goto (Table.States (609), 166, 270);
-            Add_Goto (Table.States (609), 167, 271);
-            Add_Goto (Table.States (609), 192, 409);
-            Add_Goto (Table.States (609), 198, 134);
-            Add_Goto (Table.States (609), 240, 275);
-            Add_Goto (Table.States (609), 259, 136);
-            Add_Goto (Table.States (609), 273, 93);
-            Add_Goto (Table.States (609), 276, 137);
-            Add_Goto (Table.States (609), 278, 277);
-            Add_Goto (Table.States (609), 283, 138);
-            Add_Goto (Table.States (609), 284, 139);
-            Add_Goto (Table.States (609), 285, 140);
-            Add_Goto (Table.States (609), 286, 141);
-            Add_Goto (Table.States (609), 287, 142);
-            Add_Goto (Table.States (609), 288, 143);
-            Add_Goto (Table.States (609), 294, 98);
-            Add_Goto (Table.States (609), 302, 278);
-            Add_Goto (Table.States (609), 321, 145);
-            Add_Goto (Table.States (609), 322, 146);
-            Add_Goto (Table.States (609), 331, 147);
-            Table.States (609).Kernel := To_Vector ((0 => (118, 19, 1, 
False)));
-            Table.States (609).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 126, 0)));
-            Table.States (610).Action_List.Set_Capacity (25);
-            Add_Action (Table.States (610), 10, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 33, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 38, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 40, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 43, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 54, 775);
-            Add_Action (Table.States (610), 55, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 75, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 77, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 78, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 80, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 84, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 86, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 87, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 88, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 89, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 90, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 92, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 93, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 95, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 96, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 98, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 99, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 100, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (610), 101, Reduce, (259, 1), 1, null, 
null);
-            Table.States (610).Kernel := To_Vector (((118, 41, 2, False), 
(259, 41, 0, False)));
-            Table.States (610).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 259, 1)));
+            Add_Goto (Table.States (600), 140, 775);
+            Add_Goto (Table.States (600), 141, 776);
+            Table.States (600).Kernel := To_Vector ((0 => ((139, 0),  35,  2, 
(2147483647, 0),  0)));
+            Table.States (600).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (140, 0),  72, 774)));
+            Table.States (601).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (601), 3, (200, 2), 122);
+            Add_Action (Table.States (601), 39, (261, 4), 123);
+            Add_Action (Table.States (601), 40, (168, 1), 777);
+            Add_Action (Table.States (601), 41, (261, 1), 125);
+            Add_Action (Table.States (601), 44, (168, 3), 265);
+            Add_Action (Table.States (601), 52, (278, 0), 126);
+            Add_Action (Table.States (601), 59, (233, 2), 482);
+            Add_Action (Table.States (601), 76, (120, 0), 127);
+            Add_Action (Table.States (601), 77, (120, 5), 128);
+            Add_Action (Table.States (601), 81, (242, 8), 31);
+            Add_Action (Table.States (601), 82, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (601), 90, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (601), 97, (333, 1), 129);
+            Add_Action (Table.States (601), 98, (333, 0), 130);
+            Add_Action (Table.States (601), 106, (261, 0), 131);
+            Add_Action (Table.States (601), 107, (242, 5), 120);
+            Add_Action (Table.States (601), 108, (242, 7), 34);
+            Add_Action (Table.States (601), 109, (242, 6), 35);
+            Table.States (601).Goto_List.Set_Capacity (24);
+            Add_Goto (Table.States (601), 120, 132);
+            Add_Goto (Table.States (601), 131, 42);
+            Add_Goto (Table.States (601), 168, 271);
+            Add_Goto (Table.States (601), 169, 778);
+            Add_Goto (Table.States (601), 170, 483);
+            Add_Goto (Table.States (601), 194, 611);
+            Add_Goto (Table.States (601), 200, 135);
+            Add_Goto (Table.States (601), 242, 484);
+            Add_Goto (Table.States (601), 261, 137);
+            Add_Goto (Table.States (601), 275, 93);
+            Add_Goto (Table.States (601), 278, 138);
+            Add_Goto (Table.States (601), 280, 779);
+            Add_Goto (Table.States (601), 285, 139);
+            Add_Goto (Table.States (601), 286, 140);
+            Add_Goto (Table.States (601), 287, 141);
+            Add_Goto (Table.States (601), 288, 142);
+            Add_Goto (Table.States (601), 289, 143);
+            Add_Goto (Table.States (601), 290, 144);
+            Add_Goto (Table.States (601), 296, 98);
+            Add_Goto (Table.States (601), 304, 279);
+            Add_Goto (Table.States (601), 317, 487);
+            Add_Goto (Table.States (601), 323, 146);
+            Add_Goto (Table.States (601), 324, 147);
+            Add_Goto (Table.States (601), 333, 148);
+            Table.States (601).Kernel := To_Vector ((((127, 6),  33,  2, 
(2147483647, 0),  0), ((233, 2),  33,  2,
+            (2147483647, 0),  0), ((233, 5),  33,  1, (2147483647, 0),  0)));
+            Table.States (601).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (602).Action_List.Set_Capacity (14);
+            Add_Action (Table.States (602), 3, (200, 2), 122);
+            Add_Action (Table.States (602), 39, (261, 4), 123);
+            Add_Action (Table.States (602), 40, (200, 3), 124);
+            Add_Action (Table.States (602), 41, (261, 1), 125);
+            Add_Action (Table.States (602), 52, (278, 0), 126);
+            Add_Action (Table.States (602), 76, (120, 0), 127);
+            Add_Action (Table.States (602), 77, (120, 5), 128);
+            Add_Action (Table.States (602), 81, (242, 8), 31);
+            Add_Action (Table.States (602), 97, (333, 1), 129);
+            Add_Action (Table.States (602), 98, (333, 0), 130);
+            Add_Action (Table.States (602), 106, (261, 0), 131);
+            Add_Action (Table.States (602), 107, (242, 5), 120);
+            Add_Action (Table.States (602), 108, (242, 7), 34);
+            Add_Action (Table.States (602), 109, (242, 6), 35);
+            Table.States (602).Goto_List.Set_Capacity (19);
+            Add_Goto (Table.States (602), 120, 132);
+            Add_Goto (Table.States (602), 131, 42);
+            Add_Goto (Table.States (602), 194, 780);
+            Add_Goto (Table.States (602), 200, 135);
+            Add_Goto (Table.States (602), 242, 136);
+            Add_Goto (Table.States (602), 261, 137);
+            Add_Goto (Table.States (602), 275, 93);
+            Add_Goto (Table.States (602), 278, 138);
+            Add_Goto (Table.States (602), 285, 139);
+            Add_Goto (Table.States (602), 286, 140);
+            Add_Goto (Table.States (602), 287, 141);
+            Add_Goto (Table.States (602), 288, 142);
+            Add_Goto (Table.States (602), 289, 143);
+            Add_Goto (Table.States (602), 290, 144);
+            Add_Goto (Table.States (602), 296, 98);
+            Add_Goto (Table.States (602), 304, 145);
+            Add_Goto (Table.States (602), 323, 146);
+            Add_Goto (Table.States (602), 324, 147);
+            Add_Goto (Table.States (602), 333, 148);
+            Table.States (602).Kernel := To_Vector ((0 => ((127, 7),  90,  1, 
(2147483647, 0),  0)));
+            Table.States (602).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (603).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (603), 90, (276, 0), 781);
+            Table.States (603).Kernel := To_Vector ((0 => ((276, 0),  233,  1, 
(2147483647, 0),  0)));
+            Table.States (603).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (276, 0),  90, 781)));
+            Table.States (604).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (604), 3, (200, 2), 122);
+            Add_Action (Table.States (604), 22, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (604), 23, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (604), 39, (261, 4), 123);
+            Add_Action (Table.States (604), 40, (200, 3), 124);
+            Add_Action (Table.States (604), 41, (261, 1), 125);
+            Add_Action (Table.States (604), 52, (278, 0), 126);
+            Add_Action (Table.States (604), 76, (120, 0), 127);
+            Add_Action (Table.States (604), 77, (120, 5), 128);
+            Add_Action (Table.States (604), 78, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (604), 81, (242, 8), 31);
+            Add_Action (Table.States (604), 97, (333, 1), 129);
+            Add_Action (Table.States (604), 98, (333, 0), 130);
+            Add_Action (Table.States (604), 106, (261, 0), 131);
+            Add_Action (Table.States (604), 107, (242, 5), 120);
+            Add_Action (Table.States (604), 108, (242, 7), 34);
+            Add_Action (Table.States (604), 109, (242, 6), 35);
+            Table.States (604).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (604), 120, 132);
+            Add_Goto (Table.States (604), 131, 42);
+            Add_Goto (Table.States (604), 194, 133);
+            Add_Goto (Table.States (604), 195, 782);
+            Add_Goto (Table.States (604), 200, 135);
+            Add_Goto (Table.States (604), 242, 136);
+            Add_Goto (Table.States (604), 261, 137);
+            Add_Goto (Table.States (604), 275, 93);
+            Add_Goto (Table.States (604), 278, 138);
+            Add_Goto (Table.States (604), 285, 139);
+            Add_Goto (Table.States (604), 286, 140);
+            Add_Goto (Table.States (604), 287, 141);
+            Add_Goto (Table.States (604), 288, 142);
+            Add_Goto (Table.States (604), 289, 143);
+            Add_Goto (Table.States (604), 290, 144);
+            Add_Goto (Table.States (604), 296, 98);
+            Add_Goto (Table.States (604), 304, 145);
+            Add_Goto (Table.States (604), 323, 146);
+            Add_Goto (Table.States (604), 324, 147);
+            Add_Goto (Table.States (604), 333, 148);
+            Table.States (604).Kernel := To_Vector ((((224, 0),  68,  3, 
(2147483647, 0),  0), ((224, 1),  68,  1,
+            (2147483647, 0),  0), ((224, 2),  68,  2, (2147483647, 0),  0), 
((224, 3),  68,  0, (195, 1),  0)));
+            Table.States (604).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (605).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (605), 76, (118, 0), 237);
+            Add_Action (Table.States (605), 82, Reduce, (168, 1),  3, null, 
null);
+            Add_Action (Table.States (605), 87, (296, 0), 239);
+            Add_Action (Table.States (605), 90, Reduce, (168, 1),  3, null, 
null);
+            Add_Action (Table.States (605), 104, (325, 0), 241);
+            Add_Action (Table.States (605), 105, (325, 1), 242);
+            Table.States (605).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (605), 118, 243);
+            Add_Goto (Table.States (605), 325, 244);
+            Table.States (605).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((168, 1),  242,  0,
+            (168, 1),  3), ((242, 0),  242,  5, (2147483647, 0),  0), ((242, 
1),  242,  2, (2147483647, 0),  0), ((275,
+            0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (605).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (168, 1),  3)));
+            Table.States (606).Action_List.Set_Capacity (65);
+            Add_Action (Table.States (606), (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, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (120, 1),  4, null,
+            null);
+            Table.States (606).Kernel := To_Vector ((0 => ((120, 1),  78,  0, 
(120, 1),  4)));
+            Table.States (606).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (120, 1),  4)));
+            Table.States (607).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (607), (35, 78, 79, 86, 99), (127, 1),  
3, null, null);
+            Table.States (607).Kernel := To_Vector ((0 => ((127, 1),  83,  0, 
(127, 1),  3)));
+            Table.States (607).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (127, 1),  3)));
+            Table.States (608).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (608), (35, 78, 79, 86, 99), (127, 0),  
3, association_opt_0'Access, null);
+            Table.States (608).Kernel := To_Vector ((0 => ((127, 0),  195,  0, 
(127, 0),  3)));
+            Table.States (608).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (127, 0),  3)));
+            Table.States (609).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (609), (35, 78, 79, 86, 99), (128, 0),  
3, null, null);
+            Table.States (609).Kernel := To_Vector ((0 => ((128, 0),  127,  0, 
(128, 0),  3)));
+            Table.States (609).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (128, 0),  3)));
+            Table.States (610).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (610), (82, 90), (169, 0),  3, null, 
null);
+            Table.States (610).Kernel := To_Vector ((0 => ((169, 0),  168,  0, 
(169, 0),  3)));
+            Table.States (610).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (169, 0),  3)));
             Table.States (611).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (611), 77, 776);
-            Add_Action (Table.States (611), 84, 445);
-            Table.States (611).Kernel := To_Vector (((118, 126, 1, False), 
(126, 126, 1, True)));
-            Table.States (611).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 776)));
-            Table.States (612).Action_List.Set_Capacity (20);
-            Add_Action (Table.States (612), 10, Reduce, (278, 1), 3, null, 
null);
-            Add_Action (Table.States (612), 20, Reduce, (278, 1), 3, null, 
null);
-            Add_Action (Table.States (612), 21, Reduce, (278, 1), 3, null, 
null);
-            Add_Action (Table.States (612), 22, Reduce, (278, 1), 3, null, 
null);
-            Add_Action (Table.States (612), 23, Reduce, (278, 1), 3, null, 
null);
-            Add_Action (Table.States (612), 35, Reduce, (278, 1), 3, null, 
null);
-            Add_Action (Table.States (612), 37, Reduce, (278, 1), 3, null, 
null);
-            Add_Action (Table.States (612), 42, Reduce, (278, 1), 3, null, 
null);
-            Add_Action (Table.States (612), 43, Reduce, (278, 1), 3, null, 
null);
-            Add_Action (Table.States (612), 53, Reduce, (278, 1), 3, null, 
null);
-            Add_Action (Table.States (612), 68, Reduce, (278, 1), 3, null, 
null);
-            Add_Action (Table.States (612), 74, Reduce, (278, 1), 3, null, 
null);
-            Add_Action (Table.States (612), 75, Reduce, (278, 1), 3, null, 
null);
-            Add_Action (Table.States (612), 76, 777);
-            Add_Action (Table.States (612), 77, Reduce, (278, 1), 3, null, 
null);
-            Add_Action (Table.States (612), 80, Reduce, (278, 1), 3, null, 
null);
-            Add_Action (Table.States (612), 83, Reduce, (278, 1), 3, null, 
null);
-            Add_Action (Table.States (612), 84, Reduce, (278, 1), 3, null, 
null);
-            Add_Action (Table.States (612), 88, Reduce, (278, 1), 3, null, 
null);
-            Add_Action (Table.States (612), 97, Reduce, (278, 1), 3, null, 
null);
-            Table.States (612).Kernel := To_Vector (((278, 53, 2, False), 
(278, 53, 0, False)));
-            Table.States (612).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 278, 3)));
-            Table.States (613).Action_List.Set_Capacity (19);
-            Add_Action (Table.States (613), (10, 20, 21, 22, 23, 35, 37, 42, 
43, 53, 68, 74, 75, 77, 80, 83, 84, 88,
-            97), (278, 2), 3, null, null);
-            Table.States (613).Kernel := To_Vector ((0 => (278, 302, 0, 
False)));
-            Table.States (613).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 278, 3)));
-            Table.States (614).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (614), 80, 447);
-            Add_Action (Table.States (614), 88, 778);
-            Table.States (614).Kernel := To_Vector (((141, 167, 1, False), 
(167, 167, 2, True)));
-            Table.States (614).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 88, 778)));
-            Table.States (615).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (615), 15, 779);
-            Table.States (615).Kernel := To_Vector ((0 => (140, 24, 2, 
False)));
-            Table.States (615).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 15, 779)));
+            Add_Action (Table.States (611), (82, 90), (168, 0),  1, null, 
null);
+            Table.States (611).Kernel := To_Vector ((0 => ((168, 0),  194,  0, 
(168, 0),  1)));
+            Table.States (611).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (168, 0),  1)));
+            Table.States (612).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (612), (35, 78, 79, 86, 99), (127, 3),  
3, association_opt_3'Access, null);
+            Table.States (612).Kernel := To_Vector ((0 => ((127, 3),  83,  0, 
(127, 3),  3)));
+            Table.States (612).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (127, 3),  3)));
+            Table.States (613).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (613), (35, 78, 79, 86, 99), (127, 2),  
3, association_opt_2'Access, null);
+            Table.States (613).Kernel := To_Vector ((0 => ((127, 2),  195,  0, 
(127, 2),  3)));
+            Table.States (613).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (127, 2),  3)));
+            Table.States (614).Action_List.Set_Capacity (20);
+            Add_Action (Table.States (614), 3, (200, 2), 122);
+            Add_Action (Table.States (614), 28, (127, 6), 521);
+            Add_Action (Table.States (614), 39, (261, 4), 123);
+            Add_Action (Table.States (614), 40, (168, 1), 263);
+            Add_Action (Table.States (614), 41, (261, 1), 125);
+            Add_Action (Table.States (614), 44, (168, 3), 265);
+            Add_Action (Table.States (614), 52, (278, 0), 126);
+            Add_Action (Table.States (614), 76, (120, 0), 127);
+            Add_Action (Table.States (614), 77, (120, 5), 128);
+            Add_Action (Table.States (614), 78, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (614), 81, (242, 8), 31);
+            Add_Action (Table.States (614), 82, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (614), 86, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (614), 90, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (614), 97, (333, 1), 129);
+            Add_Action (Table.States (614), 98, (333, 0), 130);
+            Add_Action (Table.States (614), 106, (261, 0), 131);
+            Add_Action (Table.States (614), 107, (242, 5), 120);
+            Add_Action (Table.States (614), 108, (242, 7), 34);
+            Add_Action (Table.States (614), 109, (127, 0), 266);
+            Table.States (614).Goto_List.Set_Capacity (24);
+            Add_Goto (Table.States (614), 120, 132);
+            Add_Goto (Table.States (614), 127, 267);
+            Add_Goto (Table.States (614), 128, 783);
+            Add_Goto (Table.States (614), 131, 42);
+            Add_Goto (Table.States (614), 168, 271);
+            Add_Goto (Table.States (614), 169, 272);
+            Add_Goto (Table.States (614), 194, 411);
+            Add_Goto (Table.States (614), 200, 135);
+            Add_Goto (Table.States (614), 242, 276);
+            Add_Goto (Table.States (614), 261, 137);
+            Add_Goto (Table.States (614), 275, 93);
+            Add_Goto (Table.States (614), 278, 138);
+            Add_Goto (Table.States (614), 280, 278);
+            Add_Goto (Table.States (614), 285, 139);
+            Add_Goto (Table.States (614), 286, 140);
+            Add_Goto (Table.States (614), 287, 141);
+            Add_Goto (Table.States (614), 288, 142);
+            Add_Goto (Table.States (614), 289, 143);
+            Add_Goto (Table.States (614), 290, 144);
+            Add_Goto (Table.States (614), 296, 98);
+            Add_Goto (Table.States (614), 304, 279);
+            Add_Goto (Table.States (614), 323, 146);
+            Add_Goto (Table.States (614), 324, 147);
+            Add_Goto (Table.States (614), 333, 148);
+            Table.States (614).Kernel := To_Vector ((0 => ((120, 4),  19,  1, 
(2147483647, 0),  0)));
+            Table.States (614).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (128, 1),  0)));
+            Table.States (615).Action_List.Set_Capacity (25);
+            Add_Action (Table.States (615), 10, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 33, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 38, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 40, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 43, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 54, (120, 2), 784);
+            Add_Action (Table.States (615), 55, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 75, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 78, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 80, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 82, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 86, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 88, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 89, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 90, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 91, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 92, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 94, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 95, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 97, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 98, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 100, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 101, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 102, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (615), 103, Reduce, (261, 1),  1, null, 
null);
+            Table.States (615).Kernel := To_Vector ((((120, 2),  41,  2, 
(2147483647, 0),  0), ((261, 1),  41,  0,
+            (261, 1),  1)));
+            Table.States (615).Minimal_Complete_Actions := To_Vector (((Shift, 
(120, 2),  54, 784), (Reduce, (261, 1),
+            1)));
+         end Subr_12;
+         procedure Subr_13
+         is begin
             Table.States (616).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (616), (24, 72), (142, 0), 2, 
case_statement_alternative_list_0'Access, null);
-            Table.States (616).Kernel := To_Vector ((0 => (142, 141, 0, 
True)));
-            Table.States (616).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 142, 2)));
-            Table.States (616).Minimal_Complete_Actions_Recursive := True;
-            Table.States (617).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (617), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 80, 84, 88, 97), (284,
-            0), 4, null, null);
-            Table.States (617).Kernel := To_Vector ((0 => (284, 288, 0, 
True)));
-            Table.States (617).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 284, 4)));
-            Table.States (617).Minimal_Complete_Actions_Recursive := True;
-            Table.States (618).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (618), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 80, 84, 88, 97), (286,
-            0), 4, null, null);
-            Table.States (618).Kernel := To_Vector ((0 => (286, 288, 0, 
True)));
-            Table.States (618).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 286, 4)));
-            Table.States (618).Minimal_Complete_Actions_Recursive := True;
-            Table.States (619).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (619), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 80, 84, 88, 97), (284,
-            1), 4, null, null);
-            Table.States (619).Kernel := To_Vector ((0 => (284, 288, 0, 
True)));
-            Table.States (619).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 284, 4)));
-            Table.States (619).Minimal_Complete_Actions_Recursive := True;
-            Table.States (620).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (620), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 80, 84, 88, 97), (286,
-            1), 4, null, null);
-            Table.States (620).Kernel := To_Vector ((0 => (286, 288, 0, 
True)));
-            Table.States (620).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 286, 4)));
-            Table.States (620).Minimal_Complete_Actions_Recursive := True;
-            Table.States (621).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (621), 3, 122);
-            Add_Action (Table.States (621), 39, 123);
-            Add_Action (Table.States (621), 40, 124);
-            Add_Action (Table.States (621), 41, 125);
-            Add_Action (Table.States (621), 76, 127);
-            Add_Action (Table.States (621), 79, 31);
-            Add_Action (Table.States (621), 95, 128);
-            Add_Action (Table.States (621), 96, 129);
-            Add_Action (Table.States (621), 104, 130);
-            Add_Action (Table.States (621), 105, 120);
-            Add_Action (Table.States (621), 106, 34);
-            Add_Action (Table.States (621), 107, 35);
-            Table.States (621).Goto_List.Set_Capacity (13);
-            Add_Goto (Table.States (621), 118, 131);
-            Add_Goto (Table.States (621), 129, 42);
-            Add_Goto (Table.States (621), 198, 134);
-            Add_Goto (Table.States (621), 235, 780);
-            Add_Goto (Table.States (621), 240, 275);
-            Add_Goto (Table.States (621), 259, 136);
-            Add_Goto (Table.States (621), 273, 93);
-            Add_Goto (Table.States (621), 278, 469);
-            Add_Goto (Table.States (621), 294, 98);
-            Add_Goto (Table.States (621), 302, 470);
-            Add_Goto (Table.States (621), 321, 145);
-            Add_Goto (Table.States (621), 322, 146);
-            Add_Goto (Table.States (621), 331, 147);
-            Table.States (621).Kernel := To_Vector ((0 => (234, 80, 1, True)));
-            Table.States (621).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (621).Minimal_Complete_Actions_Recursive := True;
-            Table.States (622).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (622), 10, Reduce, (288, 0), 4, null, 
null);
-            Add_Action (Table.States (622), 20, Reduce, (288, 0), 4, null, 
null);
-            Add_Action (Table.States (622), 21, Reduce, (288, 0), 4, null, 
null);
-            Add_Action (Table.States (622), 22, Reduce, (288, 0), 4, null, 
null);
-            Add_Action (Table.States (622), 23, Reduce, (288, 0), 4, null, 
null);
-            Add_Action (Table.States (622), 35, Reduce, (288, 0), 4, null, 
null);
-            Add_Action (Table.States (622), 37, Reduce, (288, 0), 4, null, 
null);
-            Add_Action (Table.States (622), 43, Reduce, (288, 0), 4, null, 
null);
-            Add_Action (Table.States (622), 53, Reduce, (288, 0), 4, null, 
null);
-            Add_Action (Table.States (622), 68, Reduce, (288, 0), 4, null, 
null);
-            Add_Action (Table.States (622), 74, Reduce, (288, 0), 4, null, 
null);
-            Add_Action (Table.States (622), 75, Reduce, (288, 0), 4, null, 
null);
-            Add_Action (Table.States (622), 77, Reduce, (288, 0), 4, null, 
null);
-            Add_Action (Table.States (622), 80, 621);
-            Add_Conflict (Table.States (622), 80, (288, 0), 4, null, null);
-            Add_Action (Table.States (622), 84, Reduce, (288, 0), 4, null, 
null);
-            Add_Action (Table.States (622), 88, Reduce, (288, 0), 4, null, 
null);
-            Add_Action (Table.States (622), 97, Reduce, (288, 0), 4, null, 
null);
-            Table.States (622).Kernel := To_Vector (((234, 234, 2, True), 
(288, 234, 0, False)));
-            Table.States (622).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 288, 4)));
-            Table.States (623).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (623), (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, 79, 94, 105, 106,
-            107, 108), (191, 0), 5, exit_statement_0'Access, null);
-            Table.States (623).Kernel := To_Vector ((0 => (191, 97, 0, 
False)));
-            Table.States (623).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 191, 5)));
-            Table.States (624).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (624), 38, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (624), 55, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (624), 78, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (624), 79, 31);
-            Add_Action (Table.States (624), 86, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (624), 95, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (624), 96, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (624), 98, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (624), 100, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (624), 105, 120);
-            Add_Action (Table.States (624), 106, 34);
-            Add_Action (Table.States (624), 107, 35);
-            Table.States (624).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (624), 129, 42);
-            Add_Goto (Table.States (624), 240, 781);
-            Add_Goto (Table.States (624), 273, 93);
-            Add_Goto (Table.States (624), 294, 98);
-            Table.States (624).Kernel := To_Vector (((259, 41, 0, False), 
(315, 41, 5, False), (315, 41, 1, False)));
-            Table.States (624).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 259, 1)));
-            Table.States (625).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (625), (37, 88), (231, 2), 4, 
iterator_specification_2'Access, null);
-            Table.States (625).Kernel := To_Vector ((0 => (231, 168, 0, 
False)));
-            Table.States (625).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 231, 4)));
-            Table.States (626).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (626), 3, 122);
-            Add_Action (Table.States (626), 39, 123);
-            Add_Action (Table.States (626), 40, 124);
-            Add_Action (Table.States (626), 41, 125);
-            Add_Action (Table.States (626), 76, 127);
-            Add_Action (Table.States (626), 79, 31);
-            Add_Action (Table.States (626), 95, 128);
-            Add_Action (Table.States (626), 96, 129);
-            Add_Action (Table.States (626), 104, 130);
-            Add_Action (Table.States (626), 105, 120);
-            Add_Action (Table.States (626), 106, 34);
-            Add_Action (Table.States (626), 107, 35);
-            Table.States (626).Goto_List.Set_Capacity (12);
-            Add_Goto (Table.States (626), 118, 131);
-            Add_Goto (Table.States (626), 129, 42);
-            Add_Goto (Table.States (626), 198, 134);
-            Add_Goto (Table.States (626), 240, 275);
-            Add_Goto (Table.States (626), 259, 136);
-            Add_Goto (Table.States (626), 273, 93);
-            Add_Goto (Table.States (626), 278, 782);
-            Add_Goto (Table.States (626), 294, 98);
-            Add_Goto (Table.States (626), 302, 482);
-            Add_Goto (Table.States (626), 321, 145);
-            Add_Goto (Table.States (626), 322, 146);
-            Add_Goto (Table.States (626), 331, 147);
-            Table.States (626).Kernel := To_Vector ((0 => (156, 53, 3, 
False)));
-            Table.States (626).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (627).Action_List.Set_Capacity (21);
-            Add_Action (Table.States (627), 3, 122);
-            Add_Action (Table.States (627), 15, 259);
-            Add_Action (Table.States (627), 28, 260);
-            Add_Action (Table.States (627), 32, 261);
-            Add_Action (Table.States (627), 39, 123);
-            Add_Action (Table.States (627), 40, 783);
-            Add_Action (Table.States (627), 41, 125);
-            Add_Action (Table.States (627), 44, 264);
-            Add_Action (Table.States (627), 52, 126);
-            Add_Action (Table.States (627), 76, 127);
-            Add_Action (Table.States (627), 77, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (627), 79, 31);
-            Add_Action (Table.States (627), 80, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (627), 84, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (627), 88, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (627), 95, 128);
-            Add_Action (Table.States (627), 96, 129);
-            Add_Action (Table.States (627), 104, 130);
-            Add_Action (Table.States (627), 105, 120);
-            Add_Action (Table.States (627), 106, 34);
-            Add_Action (Table.States (627), 107, 265);
-            Table.States (627).Goto_List.Set_Capacity (32);
-            Add_Goto (Table.States (627), 118, 131);
-            Add_Goto (Table.States (627), 125, 266);
-            Add_Goto (Table.States (627), 126, 407);
-            Add_Goto (Table.States (627), 129, 42);
-            Add_Goto (Table.States (627), 137, 268);
-            Add_Goto (Table.States (627), 154, 408);
-            Add_Goto (Table.States (627), 166, 270);
-            Add_Goto (Table.States (627), 167, 271);
-            Add_Goto (Table.States (627), 168, 784);
-            Add_Goto (Table.States (627), 169, 785);
-            Add_Goto (Table.States (627), 192, 409);
-            Add_Goto (Table.States (627), 198, 134);
-            Add_Goto (Table.States (627), 222, 274);
-            Add_Goto (Table.States (627), 240, 480);
-            Add_Goto (Table.States (627), 259, 136);
-            Add_Goto (Table.States (627), 273, 93);
-            Add_Goto (Table.States (627), 274, 276);
-            Add_Goto (Table.States (627), 276, 137);
-            Add_Goto (Table.States (627), 278, 786);
-            Add_Goto (Table.States (627), 279, 411);
-            Add_Goto (Table.States (627), 283, 138);
-            Add_Goto (Table.States (627), 284, 139);
-            Add_Goto (Table.States (627), 285, 140);
-            Add_Goto (Table.States (627), 286, 141);
-            Add_Goto (Table.States (627), 287, 142);
-            Add_Goto (Table.States (627), 288, 143);
-            Add_Goto (Table.States (627), 294, 98);
-            Add_Goto (Table.States (627), 302, 278);
-            Add_Goto (Table.States (627), 315, 483);
-            Add_Goto (Table.States (627), 321, 145);
-            Add_Goto (Table.States (627), 322, 146);
-            Add_Goto (Table.States (627), 331, 147);
-            Table.States (627).Kernel := To_Vector (((116, 76, 1, False), 
(116, 76, 3, False), (225, 76, 4, False),
-            (240, 76, 4, True)));
-            Table.States (627).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 126, 0)));
-            Table.States (627).Minimal_Complete_Actions_Recursive := True;
-            Table.States (628).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (628), (10, 21, 37, 42, 74, 77, 83, 84, 
88, 97), (315, 2), 2,
+            Add_Action (Table.States (616), 78, (120, 3), 785);
+            Add_Action (Table.States (616), 86, (128, 0), 448);
+            Table.States (616).Kernel := To_Vector ((((120, 3),  128,  1, 
(2147483647, 0),  0), ((128, 0),  128,  1,
+            (2147483647, 0),  0)));
+            Table.States (616).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (120, 3),  78, 785)));
+            Table.States (617).Action_List.Set_Capacity (21);
+            Add_Action (Table.States (617), 10, Reduce, (280, 1),  3, null, 
null);
+            Add_Action (Table.States (617), 20, Reduce, (280, 1),  3, null, 
null);
+            Add_Action (Table.States (617), 21, Reduce, (280, 1),  3, null, 
null);
+            Add_Action (Table.States (617), 22, Reduce, (280, 1),  3, null, 
null);
+            Add_Action (Table.States (617), 23, Reduce, (280, 1),  3, null, 
null);
+            Add_Action (Table.States (617), 35, Reduce, (280, 1),  3, null, 
null);
+            Add_Action (Table.States (617), 37, Reduce, (280, 1),  3, null, 
null);
+            Add_Action (Table.States (617), 42, Reduce, (280, 1),  3, null, 
null);
+            Add_Action (Table.States (617), 43, Reduce, (280, 1),  3, null, 
null);
+            Add_Action (Table.States (617), 53, Reduce, (280, 1),  3, null, 
null);
+            Add_Action (Table.States (617), 68, Reduce, (280, 1),  3, null, 
null);
+            Add_Action (Table.States (617), 74, Reduce, (280, 1),  3, null, 
null);
+            Add_Action (Table.States (617), 75, Reduce, (280, 1),  3, null, 
null);
+            Add_Action (Table.States (617), 76, (280, 0), 786);
+            Add_Action (Table.States (617), 78, Reduce, (280, 1),  3, null, 
null);
+            Add_Action (Table.States (617), 79, Reduce, (280, 1),  3, null, 
null);
+            Add_Action (Table.States (617), 82, Reduce, (280, 1),  3, null, 
null);
+            Add_Action (Table.States (617), 85, Reduce, (280, 1),  3, null, 
null);
+            Add_Action (Table.States (617), 86, Reduce, (280, 1),  3, null, 
null);
+            Add_Action (Table.States (617), 90, Reduce, (280, 1),  3, null, 
null);
+            Add_Action (Table.States (617), 99, Reduce, (280, 1),  3, null, 
null);
+            Table.States (617).Kernel := To_Vector ((((280, 0),  53,  2, 
(2147483647, 0),  0), ((280, 1),  53,  0,
+            (280, 1),  3)));
+            Table.States (617).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (280, 1),  3)));
+            Table.States (618).Action_List.Set_Capacity (20);
+            Add_Action (Table.States (618), (10, 20, 21, 22, 23, 35, 37, 42, 
43, 53, 68, 74, 75, 78, 79, 82, 85, 86,
+            90, 99), (280, 2),  3, null, null);
+            Table.States (618).Kernel := To_Vector ((0 => ((280, 2),  304,  0, 
(280, 2),  3)));
+            Table.States (618).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (280, 2),  3)));
+            Table.States (619).Action_List.Set_Capacity (20);
+            Add_Action (Table.States (619), 3, (200, 2), 122);
+            Add_Action (Table.States (619), 28, (127, 6), 521);
+            Add_Action (Table.States (619), 39, (261, 4), 123);
+            Add_Action (Table.States (619), 40, (168, 1), 263);
+            Add_Action (Table.States (619), 41, (261, 1), 125);
+            Add_Action (Table.States (619), 44, (168, 3), 265);
+            Add_Action (Table.States (619), 52, (278, 0), 126);
+            Add_Action (Table.States (619), 76, (120, 0), 127);
+            Add_Action (Table.States (619), 77, (120, 5), 128);
+            Add_Action (Table.States (619), 79, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (619), 81, (242, 8), 31);
+            Add_Action (Table.States (619), 82, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (619), 86, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (619), 90, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (619), 97, (333, 1), 129);
+            Add_Action (Table.States (619), 98, (333, 0), 130);
+            Add_Action (Table.States (619), 106, (261, 0), 131);
+            Add_Action (Table.States (619), 107, (242, 5), 120);
+            Add_Action (Table.States (619), 108, (242, 7), 34);
+            Add_Action (Table.States (619), 109, (127, 0), 266);
+            Table.States (619).Goto_List.Set_Capacity (24);
+            Add_Goto (Table.States (619), 120, 132);
+            Add_Goto (Table.States (619), 127, 267);
+            Add_Goto (Table.States (619), 128, 787);
+            Add_Goto (Table.States (619), 131, 42);
+            Add_Goto (Table.States (619), 168, 271);
+            Add_Goto (Table.States (619), 169, 272);
+            Add_Goto (Table.States (619), 194, 411);
+            Add_Goto (Table.States (619), 200, 135);
+            Add_Goto (Table.States (619), 242, 276);
+            Add_Goto (Table.States (619), 261, 137);
+            Add_Goto (Table.States (619), 275, 93);
+            Add_Goto (Table.States (619), 278, 138);
+            Add_Goto (Table.States (619), 280, 278);
+            Add_Goto (Table.States (619), 285, 139);
+            Add_Goto (Table.States (619), 286, 140);
+            Add_Goto (Table.States (619), 287, 141);
+            Add_Goto (Table.States (619), 288, 142);
+            Add_Goto (Table.States (619), 289, 143);
+            Add_Goto (Table.States (619), 290, 144);
+            Add_Goto (Table.States (619), 296, 98);
+            Add_Goto (Table.States (619), 304, 279);
+            Add_Goto (Table.States (619), 323, 146);
+            Add_Goto (Table.States (619), 324, 147);
+            Add_Goto (Table.States (619), 333, 148);
+            Table.States (619).Kernel := To_Vector ((0 => ((120, 5),  19,  1, 
(2147483647, 0),  0)));
+            Table.States (619).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (128, 1),  0)));
+            Table.States (620).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (620), 82, (169, 0), 450);
+            Add_Action (Table.States (620), 90, (143, 0), 788);
+            Table.States (620).Kernel := To_Vector ((((143, 0),  169,  1, 
(2147483647, 0),  0), ((169, 0),  169,  2,
+            (2147483647, 0),  0)));
+            Table.States (620).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (143, 0),  90, 788)));
+            Table.States (621).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (621), 15, (142, 0), 789);
+            Table.States (621).Kernel := To_Vector ((0 => ((142, 0),  24,  2, 
(2147483647, 0),  0)));
+            Table.States (621).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (142, 0),  15, 789)));
+            Table.States (622).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (622), (24, 72), (144, 0),  2, 
case_statement_alternative_list_0'Access, null);
+            Table.States (622).Kernel := To_Vector ((0 => ((144, 0),  143,  0, 
(144, 0),  2)));
+            Table.States (622).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (144, 0),  2)));
+            Table.States (623).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (623), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 78, 79, 82, 86, 90, 99),
+            (286, 0),  4, null, null);
+            Table.States (623).Kernel := To_Vector ((0 => ((286, 0),  290,  0, 
(286, 0),  4)));
+            Table.States (623).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (286, 0),  4)));
+            Table.States (624).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (624), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 78, 79, 82, 86, 90, 99),
+            (288, 0),  4, null, null);
+            Table.States (624).Kernel := To_Vector ((0 => ((288, 0),  290,  0, 
(288, 0),  4)));
+            Table.States (624).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (288, 0),  4)));
+            Table.States (625).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (625), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 78, 79, 82, 86, 90, 99),
+            (286, 1),  4, null, null);
+            Table.States (625).Kernel := To_Vector ((0 => ((286, 1),  290,  0, 
(286, 1),  4)));
+            Table.States (625).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (286, 1),  4)));
+            Table.States (626).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (626), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 78, 79, 82, 86, 90, 99),
+            (288, 1),  4, null, null);
+            Table.States (626).Kernel := To_Vector ((0 => ((288, 1),  290,  0, 
(288, 1),  4)));
+            Table.States (626).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (288, 1),  4)));
+            Table.States (627).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (627), 3, (200, 2), 122);
+            Add_Action (Table.States (627), 39, (261, 4), 123);
+            Add_Action (Table.States (627), 40, (200, 3), 124);
+            Add_Action (Table.States (627), 41, (261, 1), 125);
+            Add_Action (Table.States (627), 76, (120, 0), 127);
+            Add_Action (Table.States (627), 77, (120, 5), 128);
+            Add_Action (Table.States (627), 81, (242, 8), 31);
+            Add_Action (Table.States (627), 97, (333, 1), 129);
+            Add_Action (Table.States (627), 98, (333, 0), 130);
+            Add_Action (Table.States (627), 106, (261, 0), 131);
+            Add_Action (Table.States (627), 107, (242, 5), 120);
+            Add_Action (Table.States (627), 108, (242, 7), 34);
+            Add_Action (Table.States (627), 109, (242, 6), 35);
+            Table.States (627).Goto_List.Set_Capacity (13);
+            Add_Goto (Table.States (627), 120, 132);
+            Add_Goto (Table.States (627), 131, 42);
+            Add_Goto (Table.States (627), 200, 135);
+            Add_Goto (Table.States (627), 237, 790);
+            Add_Goto (Table.States (627), 242, 276);
+            Add_Goto (Table.States (627), 261, 137);
+            Add_Goto (Table.States (627), 275, 93);
+            Add_Goto (Table.States (627), 280, 473);
+            Add_Goto (Table.States (627), 296, 98);
+            Add_Goto (Table.States (627), 304, 474);
+            Add_Goto (Table.States (627), 323, 146);
+            Add_Goto (Table.States (627), 324, 147);
+            Add_Goto (Table.States (627), 333, 148);
+            Table.States (627).Kernel := To_Vector ((0 => ((236, 0),  82,  1, 
(2147483647, 0),  0)));
+            Table.States (627).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (628).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (628), 10, Reduce, (290, 0),  4, null, 
null);
+            Add_Action (Table.States (628), 20, Reduce, (290, 0),  4, null, 
null);
+            Add_Action (Table.States (628), 21, Reduce, (290, 0),  4, null, 
null);
+            Add_Action (Table.States (628), 22, Reduce, (290, 0),  4, null, 
null);
+            Add_Action (Table.States (628), 23, Reduce, (290, 0),  4, null, 
null);
+            Add_Action (Table.States (628), 35, Reduce, (290, 0),  4, null, 
null);
+            Add_Action (Table.States (628), 37, Reduce, (290, 0),  4, null, 
null);
+            Add_Action (Table.States (628), 43, Reduce, (290, 0),  4, null, 
null);
+            Add_Action (Table.States (628), 53, Reduce, (290, 0),  4, null, 
null);
+            Add_Action (Table.States (628), 68, Reduce, (290, 0),  4, null, 
null);
+            Add_Action (Table.States (628), 74, Reduce, (290, 0),  4, null, 
null);
+            Add_Action (Table.States (628), 75, Reduce, (290, 0),  4, null, 
null);
+            Add_Action (Table.States (628), 78, Reduce, (290, 0),  4, null, 
null);
+            Add_Action (Table.States (628), 79, Reduce, (290, 0),  4, null, 
null);
+            Add_Action (Table.States (628), 82, (236, 0), 627);
+            Add_Conflict (Table.States (628), 82, (290, 0),  4, null, null);
+            Add_Action (Table.States (628), 86, Reduce, (290, 0),  4, null, 
null);
+            Add_Action (Table.States (628), 90, Reduce, (290, 0),  4, null, 
null);
+            Add_Action (Table.States (628), 99, Reduce, (290, 0),  4, null, 
null);
+            Table.States (628).Kernel := To_Vector ((((236, 0),  236,  2, 
(2147483647, 0),  0), ((290, 0),  236,  0,
+            (290, 0),  4)));
+            Table.States (628).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (290, 0),  4)));
+            Table.States (629).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (629), (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, 81, 96, 107, 108,
+            109, 110), (193, 0),  5, exit_statement_0'Access, null);
+            Table.States (629).Kernel := To_Vector ((0 => ((193, 0),  99,  0, 
(193, 0),  5)));
+            Table.States (629).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (193, 0),  5)));
+            Table.States (630).Action_List.Set_Capacity (12);
+            Add_Action (Table.States (630), 38, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (630), 55, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (630), 80, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (630), 81, (242, 8), 31);
+            Add_Action (Table.States (630), 88, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (630), 97, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (630), 98, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (630), 100, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (630), 102, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (630), 107, (242, 5), 120);
+            Add_Action (Table.States (630), 108, (242, 7), 34);
+            Add_Action (Table.States (630), 109, (242, 6), 35);
+            Table.States (630).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (630), 131, 42);
+            Add_Goto (Table.States (630), 242, 791);
+            Add_Goto (Table.States (630), 275, 93);
+            Add_Goto (Table.States (630), 296, 98);
+            Table.States (630).Kernel := To_Vector ((((261, 1),  41,  0, (261, 
1),  1), ((317, 0),  41,  5,
+            (2147483647, 0),  0), ((317, 1),  41,  1, (2147483647, 0),  0)));
+            Table.States (630).Minimal_Complete_Actions := To_Vector 
(((Reduce, (261, 1),  1), (Shift, (242, 5),  107,
+            120)));
+            Table.States (631).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (631), (37, 90), (233, 2),  4, 
iterator_specification_2'Access, null);
+            Table.States (631).Kernel := To_Vector ((0 => ((233, 2),  170,  0, 
(233, 2),  4)));
+            Table.States (631).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (233, 2),  4)));
+            Table.States (632).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (632), 3, (200, 2), 122);
+            Add_Action (Table.States (632), 39, (261, 4), 123);
+            Add_Action (Table.States (632), 40, (200, 3), 124);
+            Add_Action (Table.States (632), 41, (261, 1), 125);
+            Add_Action (Table.States (632), 76, (120, 0), 127);
+            Add_Action (Table.States (632), 77, (120, 5), 128);
+            Add_Action (Table.States (632), 81, (242, 8), 31);
+            Add_Action (Table.States (632), 97, (333, 1), 129);
+            Add_Action (Table.States (632), 98, (333, 0), 130);
+            Add_Action (Table.States (632), 106, (261, 0), 131);
+            Add_Action (Table.States (632), 107, (242, 5), 120);
+            Add_Action (Table.States (632), 108, (242, 7), 34);
+            Add_Action (Table.States (632), 109, (242, 6), 35);
+            Table.States (632).Goto_List.Set_Capacity (12);
+            Add_Goto (Table.States (632), 120, 132);
+            Add_Goto (Table.States (632), 131, 42);
+            Add_Goto (Table.States (632), 200, 135);
+            Add_Goto (Table.States (632), 242, 276);
+            Add_Goto (Table.States (632), 261, 137);
+            Add_Goto (Table.States (632), 275, 93);
+            Add_Goto (Table.States (632), 280, 792);
+            Add_Goto (Table.States (632), 296, 98);
+            Add_Goto (Table.States (632), 304, 486);
+            Add_Goto (Table.States (632), 323, 146);
+            Add_Goto (Table.States (632), 324, 147);
+            Add_Goto (Table.States (632), 333, 148);
+            Table.States (632).Kernel := To_Vector ((0 => ((158, 0),  53,  3, 
(2147483647, 0),  0)));
+            Table.States (632).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (633).Action_List.Set_Capacity (22);
+            Add_Action (Table.States (633), 3, (200, 2), 122);
+            Add_Action (Table.States (633), 15, (139, 0), 260);
+            Add_Action (Table.States (633), 28, (127, 6), 261);
+            Add_Action (Table.States (633), 32, (224, 0), 262);
+            Add_Action (Table.States (633), 39, (261, 4), 123);
+            Add_Action (Table.States (633), 40, (168, 1), 777);
+            Add_Action (Table.States (633), 41, (261, 1), 125);
+            Add_Action (Table.States (633), 44, (168, 3), 265);
+            Add_Action (Table.States (633), 52, (278, 0), 126);
+            Add_Action (Table.States (633), 76, (120, 0), 127);
+            Add_Action (Table.States (633), 77, (120, 5), 128);
+            Add_Action (Table.States (633), 78, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (633), 81, (242, 8), 31);
+            Add_Action (Table.States (633), 82, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (633), 86, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (633), 90, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (633), 97, (333, 1), 129);
+            Add_Action (Table.States (633), 98, (333, 0), 130);
+            Add_Action (Table.States (633), 106, (261, 0), 131);
+            Add_Action (Table.States (633), 107, (242, 5), 120);
+            Add_Action (Table.States (633), 108, (242, 7), 34);
+            Add_Action (Table.States (633), 109, (127, 0), 266);
+            Table.States (633).Goto_List.Set_Capacity (32);
+            Add_Goto (Table.States (633), 120, 132);
+            Add_Goto (Table.States (633), 127, 267);
+            Add_Goto (Table.States (633), 128, 409);
+            Add_Goto (Table.States (633), 131, 42);
+            Add_Goto (Table.States (633), 139, 269);
+            Add_Goto (Table.States (633), 156, 410);
+            Add_Goto (Table.States (633), 168, 271);
+            Add_Goto (Table.States (633), 169, 272);
+            Add_Goto (Table.States (633), 170, 793);
+            Add_Goto (Table.States (633), 171, 794);
+            Add_Goto (Table.States (633), 194, 411);
+            Add_Goto (Table.States (633), 200, 135);
+            Add_Goto (Table.States (633), 224, 275);
+            Add_Goto (Table.States (633), 242, 484);
+            Add_Goto (Table.States (633), 261, 137);
+            Add_Goto (Table.States (633), 275, 93);
+            Add_Goto (Table.States (633), 276, 277);
+            Add_Goto (Table.States (633), 278, 138);
+            Add_Goto (Table.States (633), 280, 795);
+            Add_Goto (Table.States (633), 281, 413);
+            Add_Goto (Table.States (633), 285, 139);
+            Add_Goto (Table.States (633), 286, 140);
+            Add_Goto (Table.States (633), 287, 141);
+            Add_Goto (Table.States (633), 288, 142);
+            Add_Goto (Table.States (633), 289, 143);
+            Add_Goto (Table.States (633), 290, 144);
+            Add_Goto (Table.States (633), 296, 98);
+            Add_Goto (Table.States (633), 304, 279);
+            Add_Goto (Table.States (633), 317, 487);
+            Add_Goto (Table.States (633), 323, 146);
+            Add_Goto (Table.States (633), 324, 147);
+            Add_Goto (Table.States (633), 333, 148);
+            Table.States (633).Kernel := To_Vector ((((118, 0),  76,  1, 
(2147483647, 0),  0), ((118, 1),  76,  3,
+            (2147483647, 0),  0), ((227, 0),  76,  4, (2147483647, 0),  0), 
((242, 0),  76,  4, (2147483647, 0),  0)));
+            Table.States (633).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (128, 1),  0)));
+            Table.States (634).Action_List.Set_Capacity (10);
+            Add_Action (Table.States (634), (10, 21, 37, 42, 74, 78, 85, 86, 
90, 99), (317, 2),  2,
             subtype_indication_2'Access, null);
-            Table.States (628).Kernel := To_Vector ((0 => (315, 156, 0, 
False)));
-            Table.States (628).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 315, 2)));
-            Table.States (629).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (629), (10, 21, 37, 42, 74, 77, 83, 84, 
88, 97), (156, 1), 1, null, null);
-            Table.States (629).Kernel := To_Vector ((0 => (156, 225, 0, 
False)));
-            Table.States (629).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 156, 1)));
-            Table.States (630).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (630), 37, Reduce, (231, 3), 4, null, 
null);
-            Add_Action (Table.States (630), 76, 236);
-            Add_Action (Table.States (630), 85, 238);
-            Add_Action (Table.States (630), 88, Reduce, (231, 3), 4, null, 
null);
-            Add_Action (Table.States (630), 102, 240);
-            Add_Action (Table.States (630), 103, 241);
-            Table.States (630).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (630), 116, 242);
-            Add_Goto (Table.States (630), 323, 243);
-            Table.States (630).Kernel := To_Vector (((129, 240, 2, True), 
(231, 240, 0, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (630).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 231, 4)));
-            Table.States (631).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (631), 79, 31);
-            Add_Action (Table.States (631), 105, 120);
-            Add_Action (Table.States (631), 106, 34);
-            Add_Action (Table.States (631), 107, 35);
-            Table.States (631).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (631), 129, 42);
-            Add_Goto (Table.States (631), 240, 781);
-            Add_Goto (Table.States (631), 273, 93);
-            Add_Goto (Table.States (631), 294, 98);
-            Table.States (631).Kernel := To_Vector (((315, 41, 5, False), 
(315, 41, 1, False)));
-            Table.States (631).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (632).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (632), 59, 787);
-            Add_Action (Table.States (632), 79, 31);
-            Add_Action (Table.States (632), 105, 120);
-            Add_Action (Table.States (632), 106, 34);
-            Add_Action (Table.States (632), 107, 35);
-            Table.States (632).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (632), 129, 42);
-            Add_Goto (Table.States (632), 240, 788);
-            Add_Goto (Table.States (632), 273, 93);
-            Add_Goto (Table.States (632), 294, 98);
-            Table.States (632).Kernel := To_Vector (((231, 42, 2, False), 
(231, 42, 1, False)));
-            Table.States (632).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (633).Action_List.Set_Capacity (42);
-            Add_Action (Table.States (633), (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, 79, 94, 105, 106, 107, 108), (122, 0),
-            5, aspect_clause_0'Access, null);
-            Table.States (633).Kernel := To_Vector ((0 => (122, 97, 0, 
False)));
-            Table.States (633).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 122, 5)));
-            Table.States (634).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (634), 97, 789);
-            Table.States (634).Kernel := To_Vector ((0 => (128, 193, 1, 
False)));
-            Table.States (634).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 789)));
-            Table.States (635).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (635), 38, 790);
-            Table.States (635).Kernel := To_Vector ((0 => (236, 12, 2, 
False)));
-            Table.States (635).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 38, 790)));
-            Table.States (636).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (636), 105, 791);
+            Table.States (634).Kernel := To_Vector ((0 => ((317, 2),  158,  0, 
(317, 2),  2)));
+            Table.States (634).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (317, 2),  2)));
+            Table.States (635).Action_List.Set_Capacity (10);
+            Add_Action (Table.States (635), (10, 21, 37, 42, 74, 78, 85, 86, 
90, 99), (158, 1),  1, null, null);
+            Table.States (635).Kernel := To_Vector ((0 => ((158, 1),  227,  0, 
(158, 1),  1)));
+            Table.States (635).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (158, 1),  1)));
+            Table.States (636).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (636), 37, Reduce, (233, 3),  4, null, 
null);
+            Add_Action (Table.States (636), 76, (118, 0), 237);
+            Add_Action (Table.States (636), 87, (296, 0), 239);
+            Add_Action (Table.States (636), 90, Reduce, (233, 3),  4, null, 
null);
+            Add_Action (Table.States (636), 104, (325, 0), 241);
+            Add_Action (Table.States (636), 105, (325, 1), 242);
             Table.States (636).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (636), 145, 792);
-            Add_Goto (Table.States (636), 146, 793);
-            Table.States (636).Kernel := To_Vector ((0 => (282, 236, 11, 
False)));
-            Table.States (636).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 791)));
-            Table.States (637).Action_List.Set_Capacity (42);
-            Add_Action (Table.States (637), (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, 79, 94, 105, 106, 107, 108), (183, 0),
+            Add_Goto (Table.States (636), 118, 243);
+            Add_Goto (Table.States (636), 325, 244);
+            Table.States (636).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((233, 3),  242,  0,
+            (233, 3),  4), ((242, 0),  242,  5, (2147483647, 0),  0), ((242, 
1),  242,  2, (2147483647, 0),  0), ((275,
+            0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (636).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (233, 3),  4)));
+            Table.States (637).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (637), 81, (242, 8), 31);
+            Add_Action (Table.States (637), 107, (242, 5), 120);
+            Add_Action (Table.States (637), 108, (242, 7), 34);
+            Add_Action (Table.States (637), 109, (242, 6), 35);
+            Table.States (637).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (637), 131, 42);
+            Add_Goto (Table.States (637), 242, 791);
+            Add_Goto (Table.States (637), 275, 93);
+            Add_Goto (Table.States (637), 296, 98);
+            Table.States (637).Kernel := To_Vector ((((317, 0),  41,  5, 
(2147483647, 0),  0), ((317, 1),  41,  1,
+            (2147483647, 0),  0)));
+            Table.States (637).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (638).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (638), 59, (233, 0), 796);
+            Add_Action (Table.States (638), 81, (242, 8), 31);
+            Add_Action (Table.States (638), 107, (242, 5), 120);
+            Add_Action (Table.States (638), 108, (242, 7), 34);
+            Add_Action (Table.States (638), 109, (242, 6), 35);
+            Table.States (638).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (638), 131, 42);
+            Add_Goto (Table.States (638), 242, 797);
+            Add_Goto (Table.States (638), 275, 93);
+            Add_Goto (Table.States (638), 296, 98);
+            Table.States (638).Kernel := To_Vector ((((233, 0),  42,  2, 
(2147483647, 0),  0), ((233, 1),  42,  1,
+            (2147483647, 0),  0)));
+            Table.States (638).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (639).Action_List.Set_Capacity (42);
+            Add_Action (Table.States (639), (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, 81, 96, 107, 108, 109, 110), (124, 0),
+            5, aspect_clause_0'Access, null);
+            Table.States (639).Kernel := To_Vector ((0 => ((124, 0),  99,  0, 
(124, 0),  5)));
+            Table.States (639).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (124, 0),  5)));
+            Table.States (640).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (640), 99, (130, 0), 798);
+            Table.States (640).Kernel := To_Vector ((0 => ((130, 0),  195,  1, 
(2147483647, 0),  0)));
+            Table.States (640).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (130, 0),  99, 798)));
+            Table.States (641).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (641), 38, (238, 0), 799);
+            Table.States (641).Kernel := To_Vector ((0 => ((238, 0),  12,  2, 
(2147483647, 0),  0)));
+            Table.States (641).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (238, 0),  38, 799)));
+            Table.States (642).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (642), 107, (147, 0), 800);
+            Table.States (642).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (642), 147, 801);
+            Add_Goto (Table.States (642), 148, 802);
+            Table.States (642).Kernel := To_Vector ((0 => ((284, 0),  238,  
11, (2147483647, 0),  0)));
+            Table.States (642).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (147, 0),  107, 800)));
+            Table.States (643).Action_List.Set_Capacity (42);
+            Add_Action (Table.States (643), (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, 81, 96, 107, 108, 109, 110), (185, 0),
             5, enumeration_representation_clause_0'Access, null);
-            Table.States (637).Kernel := To_Vector ((0 => (183, 97, 0, 
False)));
-            Table.States (637).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 183, 5)));
-            Table.States (638).Action_List.Set_Capacity (11);
-            Add_Action (Table.States (638), 21, Reduce, (241, 0), 1, null, 
name_opt_0_check'Access);
-            Add_Action (Table.States (638), 35, Reduce, (241, 0), 1, null, 
name_opt_0_check'Access);
-            Add_Action (Table.States (638), 56, Reduce, (241, 0), 1, null, 
name_opt_0_check'Access);
-            Add_Action (Table.States (638), 74, Reduce, (241, 0), 1, null, 
name_opt_0_check'Access);
-            Add_Action (Table.States (638), 76, 236);
-            Add_Action (Table.States (638), 77, Reduce, (241, 0), 1, null, 
name_opt_0_check'Access);
-            Add_Action (Table.States (638), 83, Reduce, (241, 0), 1, null, 
name_opt_0_check'Access);
-            Add_Action (Table.States (638), 85, 238);
-            Add_Action (Table.States (638), 97, Reduce, (241, 0), 1, null, 
name_opt_0_check'Access);
-            Add_Action (Table.States (638), 102, 240);
-            Add_Action (Table.States (638), 103, 241);
-            Table.States (638).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (638), 116, 242);
-            Add_Goto (Table.States (638), 323, 243);
-            Table.States (638).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (241, 240, 0, False), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (638).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 241, 1)));
-            Table.States (639).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (639), (21, 35, 56, 74, 77, 83, 97), 
(292, 0), 3, result_profile_0'Access, null);
-            Table.States (639).Kernel := To_Vector ((0 => (292, 241, 0, 
False)));
-            Table.States (639).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 292, 3)));
-            Table.States (640).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (640), 7, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (640), 8, 402);
-            Add_Action (Table.States (640), 33, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (640), 40, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (640), 45, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (640), 77, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (640), 79, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (640), 83, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (640), 97, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (640), 105, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (640), 106, Reduce, (119, 1), 0, null, 
null);
-            Add_Action (Table.States (640), 107, Reduce, (119, 1), 0, null, 
null);
-            Table.States (640).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (640), 119, 794);
-            Table.States (640).Kernel := To_Vector (((255, 82, 2, False), 
(255, 82, 1, False), (255, 82, 3, False),
-            (255, 82, 2, False)));
-            Table.States (640).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 119, 0)));
-         end Subr_12;
-         procedure Subr_13
-         is begin
-            Table.States (641).Action_List.Set_Capacity (9);
-            Add_Action (Table.States (641), (21, 35, 56, 58, 72, 74, 77, 83, 
97), (200, 0), 3, formal_part_0'Access,
+            Table.States (643).Kernel := To_Vector ((0 => ((185, 0),  99,  0, 
(185, 0),  5)));
+            Table.States (643).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (185, 0),  5)));
+            Table.States (644).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (644), 21, Reduce, (243, 0),  1, null, 
name_opt_0_check'Access);
+            Add_Action (Table.States (644), 35, Reduce, (243, 0),  1, null, 
name_opt_0_check'Access);
+            Add_Action (Table.States (644), 56, Reduce, (243, 0),  1, null, 
name_opt_0_check'Access);
+            Add_Action (Table.States (644), 74, Reduce, (243, 0),  1, null, 
name_opt_0_check'Access);
+            Add_Action (Table.States (644), 76, (118, 0), 237);
+            Add_Action (Table.States (644), 78, Reduce, (243, 0),  1, null, 
name_opt_0_check'Access);
+            Add_Action (Table.States (644), 85, Reduce, (243, 0),  1, null, 
name_opt_0_check'Access);
+            Add_Action (Table.States (644), 87, (296, 0), 239);
+            Add_Action (Table.States (644), 99, Reduce, (243, 0),  1, null, 
name_opt_0_check'Access);
+            Add_Action (Table.States (644), 104, (325, 0), 241);
+            Add_Action (Table.States (644), 105, (325, 1), 242);
+            Table.States (644).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (644), 118, 243);
+            Add_Goto (Table.States (644), 325, 244);
+            Table.States (644).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((243, 0),  242,  0, (243, 0),  1), ((275,
+            0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (644).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (243, 0),  1)));
+            Table.States (645).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (645), (21, 35, 56, 74, 78, 85, 99), 
(294, 0),  3, result_profile_0'Access, null);
+            Table.States (645).Kernel := To_Vector ((0 => ((294, 0),  243,  0, 
(294, 0),  3)));
+            Table.States (645).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (294, 0),  3)));
+            Table.States (646).Action_List.Set_Capacity (12);
+            Add_Action (Table.States (646), 7, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (646), 8, (121, 0), 404);
+            Add_Action (Table.States (646), 33, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (646), 40, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (646), 45, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (646), 78, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (646), 81, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (646), 85, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (646), 99, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (646), 107, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (646), 108, Reduce, (121, 1),  0, null, 
null);
+            Add_Action (Table.States (646), 109, Reduce, (121, 1),  0, null, 
null);
+            Table.States (646).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (646), 121, 803);
+            Table.States (646).Kernel := To_Vector ((((257, 0),  84,  2, 
(2147483647, 0),  0), ((257, 1),  84,  1,
+            (2147483647, 0),  0), ((257, 2),  84,  3, (2147483647, 0),  0), 
((257, 3),  84,  2, (2147483647, 0),  0)));
+            Table.States (646).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (121, 1),  0)));
+            Table.States (647).Action_List.Set_Capacity (9);
+            Add_Action (Table.States (647), (21, 35, 56, 58, 72, 74, 78, 85, 
99), (202, 0),  3, formal_part_0'Access,
             null);
-            Table.States (641).Kernel := To_Vector ((0 => (200, 77, 0, 
False)));
-            Table.States (641).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 200, 3)));
-            Table.States (642).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (642), 77, Reduce, (255, 4), 0, null, 
null);
-            Add_Action (Table.States (642), 97, Reduce, (255, 4), 0, null, 
null);
-            Add_Action (Table.States (642), 105, 165);
-            Table.States (642).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (642), 220, 496);
-            Add_Goto (Table.States (642), 255, 795);
-            Table.States (642).Kernel := To_Vector ((0 => (256, 97, 0, True)));
-            Table.States (642).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 255, 0)));
-            Table.States (642).Minimal_Complete_Actions_Recursive := True;
-            Table.States (643).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (643), 74, 338);
-            Add_Action (Table.States (643), 76, 236);
-            Add_Action (Table.States (643), 85, 238);
-            Add_Action (Table.States (643), 97, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (643), 102, 240);
-            Add_Action (Table.States (643), 103, 241);
-            Table.States (643).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (643), 116, 242);
-            Add_Goto (Table.States (643), 123, 796);
-            Add_Goto (Table.States (643), 323, 243);
-            Table.States (643).Kernel := To_Vector (((129, 240, 2, True), 
(216, 240, 1, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (643).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (644).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (644), 74, 338);
-            Add_Action (Table.States (644), 76, 236);
-            Add_Action (Table.States (644), 85, 238);
-            Add_Action (Table.States (644), 97, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (644), 102, 240);
-            Add_Action (Table.States (644), 103, 241);
-            Table.States (644).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (644), 116, 242);
-            Add_Goto (Table.States (644), 123, 797);
-            Add_Goto (Table.States (644), 323, 243);
-            Table.States (644).Kernel := To_Vector (((129, 240, 2, True), 
(216, 240, 1, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (644).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (645).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (645), 74, 338);
-            Add_Action (Table.States (645), 76, 236);
-            Add_Action (Table.States (645), 85, 238);
-            Add_Action (Table.States (645), 97, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (645), 102, 240);
-            Add_Action (Table.States (645), 103, 241);
-            Table.States (645).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (645), 116, 242);
-            Add_Goto (Table.States (645), 123, 798);
-            Add_Goto (Table.States (645), 323, 243);
-            Table.States (645).Kernel := To_Vector (((129, 240, 2, True), 
(216, 240, 1, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (645).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (646).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (646), 6, 799);
-            Add_Action (Table.States (646), 7, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (646), 11, 707);
-            Add_Action (Table.States (646), 19, 800);
-            Add_Action (Table.States (646), 20, 801);
-            Add_Action (Table.States (646), 34, 710);
-            Add_Action (Table.States (646), 36, 802);
-            Add_Action (Table.States (646), 38, 803);
-            Add_Action (Table.States (646), 39, Reduce, (110, 5), 0, null, 
null);
-            Add_Action (Table.States (646), 40, 387);
-            Add_Action (Table.States (646), 49, Reduce, (112, 5), 0, null, 
null);
-            Add_Action (Table.States (646), 51, 714);
-            Add_Action (Table.States (646), 53, 804);
-            Add_Action (Table.States (646), 64, 717);
-            Add_Action (Table.States (646), 65, 805);
-            Add_Action (Table.States (646), 66, 719);
-            Add_Action (Table.States (646), 76, 806);
-            Table.States (646).Goto_List.Set_Capacity (8);
-            Add_Goto (Table.States (646), 110, 807);
-            Add_Goto (Table.States (646), 112, 808);
-            Add_Goto (Table.States (646), 115, 809);
-            Add_Goto (Table.States (646), 121, 810);
-            Add_Goto (Table.States (646), 203, 811);
-            Add_Goto (Table.States (646), 204, 812);
-            Add_Goto (Table.States (646), 229, 813);
-            Add_Goto (Table.States (646), 242, 729);
-            Table.States (646).Kernel := To_Vector (((202, 35, 2, False), 
(202, 35, 2, False)));
-            Table.States (646).Minimal_Complete_Actions := To_Vector 
(((Reduce, 112, 0), (Shift, 65, 805)));
-            Table.States (647).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (647), 97, 814);
-            Table.States (647).Kernel := To_Vector ((0 => (202, 123, 1, 
False)));
-            Table.States (647).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 814)));
-            Table.States (648).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (648), 39, 815);
-            Table.States (648).Kernel := To_Vector ((0 => (205, 35, 3, 
False)));
-            Table.States (648).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 815)));
-            Table.States (649).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (649), 41, 650);
-            Add_Action (Table.States (649), 74, 338);
-            Add_Action (Table.States (649), 79, 31);
-            Add_Action (Table.States (649), 81, 651);
-            Add_Action (Table.States (649), 97, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (649), 105, 120);
-            Add_Action (Table.States (649), 106, 34);
-            Add_Action (Table.States (649), 107, 35);
-            Table.States (649).Goto_List.Set_Capacity (6);
-            Add_Goto (Table.States (649), 123, 816);
-            Add_Goto (Table.States (649), 129, 42);
-            Add_Goto (Table.States (649), 240, 652);
-            Add_Goto (Table.States (649), 273, 93);
-            Add_Goto (Table.States (649), 294, 98);
-            Add_Goto (Table.States (649), 311, 817);
-            Table.States (649).Kernel := To_Vector (((201, 6, 2, False), (201, 
6, 1, False)));
-            Table.States (649).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (650).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (650), (74, 97), (311, 2), 1, null, null);
-            Table.States (650).Kernel := To_Vector ((0 => (311, 41, 0, 
False)));
-            Table.States (650).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 311, 1)));
-            Table.States (651).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (651), (74, 97), (311, 1), 1, null, null);
-            Table.States (651).Kernel := To_Vector ((0 => (311, 81, 0, 
False)));
-            Table.States (651).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 311, 1)));
-            Table.States (652).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (652), 74, Reduce, (311, 0), 1, 
subprogram_default_0'Access, null);
-            Add_Action (Table.States (652), 76, 236);
-            Add_Action (Table.States (652), 85, 238);
-            Add_Action (Table.States (652), 97, Reduce, (311, 0), 1, 
subprogram_default_0'Access, null);
-            Add_Action (Table.States (652), 102, 240);
-            Add_Action (Table.States (652), 103, 241);
-            Table.States (652).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (652), 116, 242);
-            Add_Goto (Table.States (652), 323, 243);
-            Table.States (652).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (273, 240, 3, True), (294, 240, 2, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (311, 240, 0, False)));
-            Table.States (652).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 311, 1)));
-            Table.States (653).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (653), 74, 338);
-            Add_Action (Table.States (653), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (653).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (653), 123, 818);
-            Table.States (653).Kernel := To_Vector ((0 => (201, 311, 1, 
False)));
-            Table.States (653).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (654).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (654), (29, 47, 48, 50, 69, 71, 74, 105), 
(201, 3), 4,
+            Table.States (647).Kernel := To_Vector ((0 => ((202, 0),  78,  0, 
(202, 0),  3)));
+            Table.States (647).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (202, 0),  3)));
+            Table.States (648).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (648), 78, Reduce, (257, 4),  0, null, 
null);
+            Add_Action (Table.States (648), 99, Reduce, (257, 4),  0, null, 
null);
+            Add_Action (Table.States (648), 107, (222, 1), 166);
+            Table.States (648).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (648), 222, 500);
+            Add_Goto (Table.States (648), 257, 804);
+            Table.States (648).Kernel := To_Vector ((0 => ((258, 0),  99,  0, 
(257, 4),  0)));
+            Table.States (648).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (257, 4),  0)));
+            Table.States (649).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (649), 74, (125, 0), 340);
+            Add_Action (Table.States (649), 76, (118, 0), 237);
+            Add_Action (Table.States (649), 87, (296, 0), 239);
+            Add_Action (Table.States (649), 99, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (649), 104, (325, 0), 241);
+            Add_Action (Table.States (649), 105, (325, 1), 242);
+            Table.States (649).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (649), 118, 243);
+            Add_Goto (Table.States (649), 125, 805);
+            Add_Goto (Table.States (649), 325, 244);
+            Table.States (649).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((218, 2),  242,  1,
+            (2147483647, 0),  0), ((242, 0),  242,  5, (2147483647, 0),  0), 
((242, 1),  242,  2, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (649).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (650).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (650), 74, (125, 0), 340);
+            Add_Action (Table.States (650), 76, (118, 0), 237);
+            Add_Action (Table.States (650), 87, (296, 0), 239);
+            Add_Action (Table.States (650), 99, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (650), 104, (325, 0), 241);
+            Add_Action (Table.States (650), 105, (325, 1), 242);
+            Table.States (650).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (650), 118, 243);
+            Add_Goto (Table.States (650), 125, 806);
+            Add_Goto (Table.States (650), 325, 244);
+            Table.States (650).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((218, 0),  242,  1,
+            (2147483647, 0),  0), ((242, 0),  242,  5, (2147483647, 0),  0), 
((242, 1),  242,  2, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (650).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (651).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (651), 74, (125, 0), 340);
+            Add_Action (Table.States (651), 76, (118, 0), 237);
+            Add_Action (Table.States (651), 87, (296, 0), 239);
+            Add_Action (Table.States (651), 99, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (651), 104, (325, 0), 241);
+            Add_Action (Table.States (651), 105, (325, 1), 242);
+            Table.States (651).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (651), 118, 243);
+            Add_Goto (Table.States (651), 125, 807);
+            Add_Goto (Table.States (651), 325, 244);
+            Table.States (651).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((218, 1),  242,  1,
+            (2147483647, 0),  0), ((242, 0),  242,  5, (2147483647, 0),  0), 
((242, 1),  242,  2, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (651).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (652).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (652), 6, (112, 0), 808);
+            Add_Action (Table.States (652), 7, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (652), 11, (123, 0), 713);
+            Add_Action (Table.States (652), 19, (205, 6), 809);
+            Add_Action (Table.States (652), 20, (205, 5), 810);
+            Add_Action (Table.States (652), 34, (231, 8), 716);
+            Add_Action (Table.States (652), 36, (112, 3), 811);
+            Add_Action (Table.States (652), 38, (205, 4), 812);
+            Add_Action (Table.States (652), 39, Reduce, (112, 5),  0, null, 
null);
+            Add_Action (Table.States (652), 40, (244, 0), 389);
+            Add_Action (Table.States (652), 49, Reduce, (114, 5),  0, null, 
null);
+            Add_Action (Table.States (652), 51, (231, 2), 720);
+            Add_Action (Table.States (652), 53, (205, 3), 813);
+            Add_Action (Table.States (652), 64, (112, 4), 723);
+            Add_Action (Table.States (652), 65, (114, 2), 814);
+            Add_Action (Table.States (652), 66, (231, 1), 725);
+            Add_Action (Table.States (652), 76, (205, 2), 815);
+            Table.States (652).Goto_List.Set_Capacity (8);
+            Add_Goto (Table.States (652), 112, 816);
+            Add_Goto (Table.States (652), 114, 817);
+            Add_Goto (Table.States (652), 117, 818);
+            Add_Goto (Table.States (652), 123, 819);
+            Add_Goto (Table.States (652), 205, 820);
+            Add_Goto (Table.States (652), 206, 821);
+            Add_Goto (Table.States (652), 231, 822);
+            Add_Goto (Table.States (652), 244, 735);
+            Table.States (652).Kernel := To_Vector ((((204, 0),  35,  2, 
(2147483647, 0),  0), ((204, 1),  35,  2,
+            (2147483647, 0),  0)));
+            Table.States (652).Minimal_Complete_Actions := To_Vector 
(((Reduce, (114, 5),  0), (Shift, (114, 2),  65,
+            814)));
+            Table.States (653).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (653), 99, (204, 2), 823);
+            Table.States (653).Kernel := To_Vector ((0 => ((204, 2),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (653).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (204, 2),  99, 823)));
+            Table.States (654).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (654), 39, (207, 0), 824);
+            Table.States (654).Kernel := To_Vector ((0 => ((207, 0),  35,  3, 
(2147483647, 0),  0)));
+            Table.States (654).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (207, 0),  39, 824)));
+            Table.States (655).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (655), 41, (313, 2), 656);
+            Add_Action (Table.States (655), 74, (125, 0), 340);
+            Add_Action (Table.States (655), 81, (242, 8), 31);
+            Add_Action (Table.States (655), 83, (313, 1), 657);
+            Add_Action (Table.States (655), 99, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (655), 107, (242, 5), 120);
+            Add_Action (Table.States (655), 108, (242, 7), 34);
+            Add_Action (Table.States (655), 109, (242, 6), 35);
+            Table.States (655).Goto_List.Set_Capacity (6);
+            Add_Goto (Table.States (655), 125, 825);
+            Add_Goto (Table.States (655), 131, 42);
+            Add_Goto (Table.States (655), 242, 658);
+            Add_Goto (Table.States (655), 275, 93);
+            Add_Goto (Table.States (655), 296, 98);
+            Add_Goto (Table.States (655), 313, 826);
+            Table.States (655).Kernel := To_Vector ((((203, 0),  6,  2, 
(2147483647, 0),  0), ((203, 2),  6,  1,
+            (2147483647, 0),  0)));
+            Table.States (655).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (656).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (656), (74, 99), (313, 2),  1, null, 
null);
+            Table.States (656).Kernel := To_Vector ((0 => ((313, 2),  41,  0, 
(313, 2),  1)));
+            Table.States (656).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (313, 2),  1)));
+            Table.States (657).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (657), (74, 99), (313, 1),  1, null, 
null);
+            Table.States (657).Kernel := To_Vector ((0 => ((313, 1),  83,  0, 
(313, 1),  1)));
+            Table.States (657).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (313, 1),  1)));
+            Table.States (658).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (658), 74, Reduce, (313, 0),  1, 
subprogram_default_0'Access, null);
+            Add_Action (Table.States (658), 76, (118, 0), 237);
+            Add_Action (Table.States (658), 87, (296, 0), 239);
+            Add_Action (Table.States (658), 99, Reduce, (313, 0),  1, 
subprogram_default_0'Access, null);
+            Add_Action (Table.States (658), 104, (325, 0), 241);
+            Add_Action (Table.States (658), 105, (325, 1), 242);
+            Table.States (658).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (658), 118, 243);
+            Add_Goto (Table.States (658), 325, 244);
+            Table.States (658).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((275, 0),  242,  3, (2147483647, 0),  0),
+            ((296, 0),  242,  2, (2147483647, 0),  0), ((296, 1),  242,  2, 
(2147483647, 0),  0), ((296, 2),  242,  2,
+            (2147483647, 0),  0), ((296, 3),  242,  2, (2147483647, 0),  0), 
((313, 0),  242,  0, (313, 0),  1)));
+            Table.States (658).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (313, 0),  1)));
+            Table.States (659).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (659), 74, (125, 0), 340);
+            Add_Action (Table.States (659), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (659).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (659), 125, 827);
+            Table.States (659).Kernel := To_Vector ((0 => ((203, 1),  313,  1, 
(2147483647, 0),  0)));
+            Table.States (659).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (660).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (660), (29, 47, 48, 50, 69, 71, 74, 107), 
(203, 3),  4,
             formal_subprogram_declaration_3'Access, null);
-            Table.States (654).Kernel := To_Vector ((0 => (201, 97, 0, 
False)));
-            Table.States (654).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 201, 4)));
-            Table.States (655).Action_List.Set_Capacity (9);
-            Add_Action (Table.States (655), (7, 40, 74, 79, 83, 97, 105, 106, 
107), (237, 1), 2, null, null);
-            Table.States (655).Kernel := To_Vector ((0 => (237, 45, 0, 
False)));
-            Table.States (655).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 237, 2)));
-            Table.States (656).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (656), 74, 338);
-            Add_Action (Table.States (656), 83, 819);
-            Add_Action (Table.States (656), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (656).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (656), 123, 820);
-            Table.States (656).Kernel := To_Vector (((199, 115, 2, False), 
(199, 115, 1, False)));
-            Table.States (656).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (657).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (657), 7, 560);
-            Add_Action (Table.States (657), 79, 31);
-            Add_Action (Table.States (657), 105, 120);
-            Add_Action (Table.States (657), 106, 34);
-            Add_Action (Table.States (657), 107, 35);
-            Table.States (657).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (657), 129, 42);
-            Add_Goto (Table.States (657), 240, 821);
-            Add_Goto (Table.States (657), 273, 93);
-            Add_Goto (Table.States (657), 294, 98);
-            Table.States (657).Kernel := To_Vector (((115, 242, 2, False), 
(115, 242, 3, True), (115, 242, 2, False),
-            (199, 242, 3, False), (199, 242, 2, False)));
-            Table.States (657).Minimal_Complete_Actions := To_Vector (((Shift, 
7, 560), (Shift, 105, 120)));
-            Table.States (658).Action_List.Set_Capacity (24);
-            Add_Action (Table.States (658), 4, 1);
-            Add_Action (Table.States (658), 5, 2);
-            Add_Action (Table.States (658), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (658), 15, 3);
-            Add_Action (Table.States (658), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (658), 18, 4);
-            Add_Action (Table.States (658), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (658), 27, 5);
-            Add_Action (Table.States (658), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (658), 31, 9);
-            Add_Action (Table.States (658), 32, 10);
-            Add_Action (Table.States (658), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (658), 41, 13);
-            Add_Action (Table.States (658), 48, 16);
-            Add_Action (Table.States (658), 52, 20);
-            Add_Action (Table.States (658), 57, 21);
-            Add_Action (Table.States (658), 58, 22);
-            Add_Action (Table.States (658), 61, 24);
-            Add_Action (Table.States (658), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (658), 79, 31);
-            Add_Action (Table.States (658), 94, 32);
-            Add_Action (Table.States (658), 105, 361);
-            Add_Action (Table.States (658), 106, 34);
-            Add_Action (Table.States (658), 107, 35);
-            Table.States (658).Goto_List.Set_Capacity (31);
-            Add_Goto (Table.States (658), 114, 37);
-            Add_Goto (Table.States (658), 124, 39);
-            Add_Goto (Table.States (658), 127, 40);
-            Add_Goto (Table.States (658), 129, 42);
-            Add_Goto (Table.States (658), 132, 43);
-            Add_Goto (Table.States (658), 133, 44);
-            Add_Goto (Table.States (658), 134, 45);
-            Add_Goto (Table.States (658), 140, 48);
-            Add_Goto (Table.States (658), 152, 51);
-            Add_Goto (Table.States (658), 153, 52);
-            Add_Goto (Table.States (658), 162, 54);
-            Add_Goto (Table.States (658), 191, 58);
-            Add_Goto (Table.States (658), 197, 60);
-            Add_Goto (Table.States (658), 218, 69);
-            Add_Goto (Table.States (658), 223, 71);
-            Add_Goto (Table.States (658), 233, 73);
-            Add_Goto (Table.States (658), 240, 74);
-            Add_Goto (Table.States (658), 258, 84);
-            Add_Goto (Table.States (658), 262, 87);
-            Add_Goto (Table.States (658), 273, 93);
-            Add_Goto (Table.States (658), 277, 94);
-            Add_Goto (Table.States (658), 291, 97);
-            Add_Goto (Table.States (658), 294, 98);
-            Add_Goto (Table.States (658), 295, 99);
-            Add_Goto (Table.States (658), 299, 100);
-            Add_Goto (Table.States (658), 300, 362);
-            Add_Goto (Table.States (658), 301, 822);
-            Add_Goto (Table.States (658), 303, 101);
-            Add_Goto (Table.States (658), 304, 102);
-            Add_Goto (Table.States (658), 307, 364);
-            Add_Goto (Table.States (658), 324, 115);
-            Table.States (658).Kernel := To_Vector ((0 => (223, 22, 3, 
False)));
-            Table.States (658).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 0)));
-            Table.States (659).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (659), 3, 122);
-            Add_Action (Table.States (659), 39, 123);
-            Add_Action (Table.States (659), 40, 124);
-            Add_Action (Table.States (659), 41, 125);
-            Add_Action (Table.States (659), 52, 126);
-            Add_Action (Table.States (659), 68, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (659), 76, 127);
-            Add_Action (Table.States (659), 79, 31);
-            Add_Action (Table.States (659), 95, 128);
-            Add_Action (Table.States (659), 96, 129);
-            Add_Action (Table.States (659), 104, 130);
-            Add_Action (Table.States (659), 105, 120);
-            Add_Action (Table.States (659), 106, 34);
-            Add_Action (Table.States (659), 107, 35);
-            Table.States (659).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (659), 118, 131);
-            Add_Goto (Table.States (659), 129, 42);
-            Add_Goto (Table.States (659), 192, 132);
-            Add_Goto (Table.States (659), 193, 823);
-            Add_Goto (Table.States (659), 198, 134);
-            Add_Goto (Table.States (659), 240, 135);
-            Add_Goto (Table.States (659), 259, 136);
-            Add_Goto (Table.States (659), 273, 93);
-            Add_Goto (Table.States (659), 276, 137);
-            Add_Goto (Table.States (659), 283, 138);
-            Add_Goto (Table.States (659), 284, 139);
-            Add_Goto (Table.States (659), 285, 140);
-            Add_Goto (Table.States (659), 286, 141);
-            Add_Goto (Table.States (659), 287, 142);
-            Add_Goto (Table.States (659), 288, 143);
-            Add_Goto (Table.States (659), 294, 98);
-            Add_Goto (Table.States (659), 302, 144);
-            Add_Goto (Table.States (659), 321, 145);
-            Add_Goto (Table.States (659), 322, 146);
-            Add_Goto (Table.States (659), 331, 147);
-            Table.States (659).Kernel := To_Vector ((0 => (175, 23, 1, 
False)));
-            Table.States (659).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (660).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (660), 32, 824);
-            Table.States (660).Kernel := To_Vector ((0 => (223, 24, 2, 
False)));
-            Table.States (660).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 32, 824)));
-            Table.States (661).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (661), (22, 23, 24), (176, 1), 1, null, 
null);
-            Table.States (661).Kernel := To_Vector ((0 => (176, 175, 0, 
False)));
-            Table.States (661).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 176, 1)));
+            Table.States (660).Kernel := To_Vector ((0 => ((203, 3),  99,  0, 
(203, 3),  4)));
+            Table.States (660).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (203, 3),  4)));
+            Table.States (661).Action_List.Set_Capacity (9);
+            Add_Action (Table.States (661), (7, 40, 74, 81, 85, 99, 107, 108, 
109), (239, 1),  2, null, null);
+            Table.States (661).Kernel := To_Vector ((0 => ((239, 1),  45,  0, 
(239, 1),  2)));
+            Table.States (661).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (239, 1),  2)));
             Table.States (662).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (662), 22, 825);
-            Add_Action (Table.States (662), 23, 659);
-            Add_Action (Table.States (662), 24, 826);
+            Add_Action (Table.States (662), 74, (125, 0), 340);
+            Add_Action (Table.States (662), 85, (201, 1), 828);
+            Add_Action (Table.States (662), 99, Reduce, (125, 1),  0, null, 
null);
             Table.States (662).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (662), 175, 827);
-            Table.States (662).Kernel := To_Vector (((176, 176, 2, True), 
(223, 176, 4, False), (223, 176, 3, False)));
-            Table.States (662).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 826)));
-            Table.States (663).Action_List.Set_Capacity (40);
-            Add_Action (Table.States (663), (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, 79, 
94, 105, 106, 107, 108), (333, 0), 5,
+            Add_Goto (Table.States (662), 125, 829);
+            Table.States (662).Kernel := To_Vector ((((201, 1),  117,  2, 
(2147483647, 0),  0), ((201, 3),  117,  1,
+            (2147483647, 0),  0)));
+            Table.States (662).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (663).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (663), 7, (117, 0), 564);
+            Add_Action (Table.States (663), 81, (242, 8), 31);
+            Add_Action (Table.States (663), 107, (242, 5), 120);
+            Add_Action (Table.States (663), 108, (242, 7), 34);
+            Add_Action (Table.States (663), 109, (242, 6), 35);
+            Table.States (663).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (663), 131, 42);
+            Add_Goto (Table.States (663), 242, 830);
+            Add_Goto (Table.States (663), 275, 93);
+            Add_Goto (Table.States (663), 296, 98);
+            Table.States (663).Kernel := To_Vector ((((117, 0),  244,  2, 
(2147483647, 0),  0), ((117, 1),  244,  3,
+            (2147483647, 0),  0), ((117, 2),  244,  2, (2147483647, 0),  0), 
((201, 0),  244,  3, (2147483647, 0),  0),
+            ((201, 2),  244,  2, (2147483647, 0),  0)));
+            Table.States (663).Minimal_Complete_Actions := To_Vector (((Shift, 
(117, 0),  7, 564), (Shift, (242, 5),
+            107, 120)));
+            Table.States (664).Action_List.Set_Capacity (24);
+            Add_Action (Table.States (664), 4, (116, 0), 1);
+            Add_Action (Table.States (664), 5, (306, 8), 2);
+            Add_Action (Table.States (664), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (664), 15, (142, 0), 3);
+            Add_Action (Table.States (664), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (664), 18, (164, 0), 4);
+            Add_Action (Table.States (664), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (664), 27, (193, 0), 5);
+            Add_Action (Table.States (664), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (664), 31, (306, 3), 9);
+            Add_Action (Table.States (664), 32, (225, 0), 10);
+            Add_Action (Table.States (664), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (664), 41, (306, 0), 13);
+            Add_Action (Table.States (664), 48, (260, 0), 16);
+            Add_Action (Table.States (664), 52, (279, 0), 20);
+            Add_Action (Table.States (664), 57, (293, 0), 21);
+            Add_Action (Table.States (664), 58, (199, 0), 22);
+            Add_Action (Table.States (664), 61, (129, 0), 24);
+            Add_Action (Table.States (664), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (664), 81, (242, 8), 31);
+            Add_Action (Table.States (664), 96, (220, 0), 32);
+            Add_Action (Table.States (664), 107, (134, 0), 363);
+            Add_Action (Table.States (664), 108, (242, 7), 34);
+            Add_Action (Table.States (664), 109, (242, 6), 35);
+            Table.States (664).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (664), 116, 37);
+            Add_Goto (Table.States (664), 126, 39);
+            Add_Goto (Table.States (664), 129, 40);
+            Add_Goto (Table.States (664), 131, 42);
+            Add_Goto (Table.States (664), 134, 43);
+            Add_Goto (Table.States (664), 135, 44);
+            Add_Goto (Table.States (664), 136, 45);
+            Add_Goto (Table.States (664), 142, 48);
+            Add_Goto (Table.States (664), 154, 51);
+            Add_Goto (Table.States (664), 155, 52);
+            Add_Goto (Table.States (664), 164, 54);
+            Add_Goto (Table.States (664), 193, 58);
+            Add_Goto (Table.States (664), 199, 60);
+            Add_Goto (Table.States (664), 220, 69);
+            Add_Goto (Table.States (664), 225, 71);
+            Add_Goto (Table.States (664), 235, 73);
+            Add_Goto (Table.States (664), 242, 74);
+            Add_Goto (Table.States (664), 260, 84);
+            Add_Goto (Table.States (664), 264, 87);
+            Add_Goto (Table.States (664), 275, 93);
+            Add_Goto (Table.States (664), 279, 94);
+            Add_Goto (Table.States (664), 293, 97);
+            Add_Goto (Table.States (664), 296, 98);
+            Add_Goto (Table.States (664), 297, 99);
+            Add_Goto (Table.States (664), 301, 100);
+            Add_Goto (Table.States (664), 302, 364);
+            Add_Goto (Table.States (664), 303, 831);
+            Add_Goto (Table.States (664), 305, 101);
+            Add_Goto (Table.States (664), 306, 102);
+            Add_Goto (Table.States (664), 309, 366);
+            Add_Goto (Table.States (664), 326, 115);
+            Table.States (664).Kernel := To_Vector ((0 => ((225, 1),  22,  3, 
(2147483647, 0),  0)));
+            Table.States (664).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (303, 1),  0)));
+            Table.States (665).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (665), 3, (200, 2), 122);
+            Add_Action (Table.States (665), 39, (261, 4), 123);
+            Add_Action (Table.States (665), 40, (200, 3), 124);
+            Add_Action (Table.States (665), 41, (261, 1), 125);
+            Add_Action (Table.States (665), 52, (278, 0), 126);
+            Add_Action (Table.States (665), 68, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (665), 76, (120, 0), 127);
+            Add_Action (Table.States (665), 77, (120, 5), 128);
+            Add_Action (Table.States (665), 81, (242, 8), 31);
+            Add_Action (Table.States (665), 97, (333, 1), 129);
+            Add_Action (Table.States (665), 98, (333, 0), 130);
+            Add_Action (Table.States (665), 106, (261, 0), 131);
+            Add_Action (Table.States (665), 107, (242, 5), 120);
+            Add_Action (Table.States (665), 108, (242, 7), 34);
+            Add_Action (Table.States (665), 109, (242, 6), 35);
+            Table.States (665).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (665), 120, 132);
+            Add_Goto (Table.States (665), 131, 42);
+            Add_Goto (Table.States (665), 194, 133);
+            Add_Goto (Table.States (665), 195, 832);
+            Add_Goto (Table.States (665), 200, 135);
+            Add_Goto (Table.States (665), 242, 136);
+            Add_Goto (Table.States (665), 261, 137);
+            Add_Goto (Table.States (665), 275, 93);
+            Add_Goto (Table.States (665), 278, 138);
+            Add_Goto (Table.States (665), 285, 139);
+            Add_Goto (Table.States (665), 286, 140);
+            Add_Goto (Table.States (665), 287, 141);
+            Add_Goto (Table.States (665), 288, 142);
+            Add_Goto (Table.States (665), 289, 143);
+            Add_Goto (Table.States (665), 290, 144);
+            Add_Goto (Table.States (665), 296, 98);
+            Add_Goto (Table.States (665), 304, 145);
+            Add_Goto (Table.States (665), 323, 146);
+            Add_Goto (Table.States (665), 324, 147);
+            Add_Goto (Table.States (665), 333, 148);
+            Table.States (665).Kernel := To_Vector ((0 => ((177, 0),  23,  1, 
(2147483647, 0),  0)));
+            Table.States (665).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (666).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (666), 32, (225, 3), 833);
+            Table.States (666).Kernel := To_Vector ((0 => ((225, 3),  24,  2, 
(2147483647, 0),  0)));
+            Table.States (666).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (225, 3),  32, 833)));
+            Table.States (667).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (667), (22, 23, 24), (178, 1),  1, null, 
null);
+            Table.States (667).Kernel := To_Vector ((0 => ((178, 1),  177,  0, 
(178, 1),  1)));
+            Table.States (667).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (178, 1),  1)));
+            Table.States (668).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (668), 22, (225, 0), 834);
+            Add_Action (Table.States (668), 23, (177, 0), 665);
+            Add_Action (Table.States (668), 24, (225, 2), 835);
+            Table.States (668).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (668), 177, 836);
+            Table.States (668).Kernel := To_Vector ((((178, 0),  178,  2, 
(2147483647, 0),  0), ((225, 0),  178,  4,
+            (2147483647, 0),  0), ((225, 2),  178,  3, (2147483647, 0),  0)));
+            Table.States (668).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (225, 2),  24, 835)));
+         end Subr_13;
+         procedure Subr_14
+         is begin
+            Table.States (669).Action_List.Set_Capacity (40);
+            Add_Action (Table.States (669), (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, 81, 
96, 107, 108, 109, 110), (335, 0),  5,
             with_clause_0'Access, null);
-            Table.States (663).Kernel := To_Vector ((0 => (333, 97, 0, 
False)));
-            Table.States (663).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 333, 5)));
-            Table.States (664).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (664), 74, 338);
-            Add_Action (Table.States (664), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (664).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (664), 123, 828);
-            Table.States (664).Kernel := To_Vector ((0 => (249, 60, 1, 
False)));
-            Table.States (664).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (665).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (665), 13, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (665), 24, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (665), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (665), 28, 184);
-            Add_Action (Table.States (665), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (665), 30, 8);
-            Add_Action (Table.States (665), 40, 12);
-            Add_Action (Table.States (665), 46, 14);
-            Add_Action (Table.States (665), 47, 15);
-            Add_Action (Table.States (665), 48, 16);
-            Add_Action (Table.States (665), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (665), 51, 19);
-            Add_Action (Table.States (665), 63, 25);
-            Add_Action (Table.States (665), 66, 26);
-            Add_Action (Table.States (665), 69, 27);
-            Add_Action (Table.States (665), 71, 28);
-            Add_Action (Table.States (665), 105, 186);
-            Table.States (665).Goto_List.Set_Capacity (53);
-            Add_Goto (Table.States (665), 113, 36);
-            Add_Goto (Table.States (665), 122, 38);
-            Add_Goto (Table.States (665), 128, 41);
-            Add_Goto (Table.States (665), 135, 46);
-            Add_Goto (Table.States (665), 136, 47);
-            Add_Goto (Table.States (665), 158, 392);
-            Add_Goto (Table.States (665), 159, 393);
-            Add_Goto (Table.States (665), 160, 829);
-            Add_Goto (Table.States (665), 180, 55);
-            Add_Goto (Table.States (665), 183, 56);
-            Add_Goto (Table.States (665), 187, 57);
-            Add_Goto (Table.States (665), 194, 59);
-            Add_Goto (Table.States (665), 207, 61);
-            Add_Goto (Table.States (665), 208, 62);
-            Add_Goto (Table.States (665), 210, 63);
-            Add_Goto (Table.States (665), 211, 64);
-            Add_Goto (Table.States (665), 214, 65);
-            Add_Goto (Table.States (665), 215, 66);
-            Add_Goto (Table.States (665), 216, 67);
-            Add_Goto (Table.States (665), 217, 68);
-            Add_Goto (Table.States (665), 220, 70);
-            Add_Goto (Table.States (665), 224, 72);
-            Add_Goto (Table.States (665), 244, 75);
-            Add_Goto (Table.States (665), 245, 76);
-            Add_Goto (Table.States (665), 246, 77);
-            Add_Goto (Table.States (665), 247, 78);
-            Add_Goto (Table.States (665), 248, 79);
-            Add_Goto (Table.States (665), 249, 80);
-            Add_Goto (Table.States (665), 250, 81);
-            Add_Goto (Table.States (665), 251, 82);
-            Add_Goto (Table.States (665), 252, 83);
-            Add_Goto (Table.States (665), 258, 395);
-            Add_Goto (Table.States (665), 260, 85);
-            Add_Goto (Table.States (665), 261, 86);
-            Add_Goto (Table.States (665), 263, 88);
-            Add_Goto (Table.States (665), 264, 89);
-            Add_Goto (Table.States (665), 265, 90);
-            Add_Goto (Table.States (665), 266, 91);
-            Add_Goto (Table.States (665), 272, 92);
-            Add_Goto (Table.States (665), 282, 95);
-            Add_Goto (Table.States (665), 290, 96);
-            Add_Goto (Table.States (665), 305, 103);
-            Add_Goto (Table.States (665), 306, 104);
-            Add_Goto (Table.States (665), 308, 106);
-            Add_Goto (Table.States (665), 309, 107);
-            Add_Goto (Table.States (665), 310, 108);
-            Add_Goto (Table.States (665), 312, 109);
-            Add_Goto (Table.States (665), 314, 110);
-            Add_Goto (Table.States (665), 317, 112);
-            Add_Goto (Table.States (665), 318, 113);
-            Add_Goto (Table.States (665), 320, 114);
-            Add_Goto (Table.States (665), 326, 116);
-            Add_Goto (Table.States (665), 332, 117);
-            Table.States (665).Kernel := To_Vector (((248, 35, 3, False), 
(248, 35, 2, False)));
-            Table.States (665).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 160, 0)));
-            Table.States (666).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (666), 74, 338);
-            Add_Action (Table.States (666), 76, 236);
-            Add_Action (Table.States (666), 85, 238);
-            Add_Action (Table.States (666), 97, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (666), 102, 240);
-            Add_Action (Table.States (666), 103, 241);
-            Table.States (666).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (666), 116, 242);
-            Add_Goto (Table.States (666), 123, 830);
-            Add_Goto (Table.States (666), 323, 243);
-            Table.States (666).Kernel := To_Vector (((129, 240, 2, True), 
(214, 240, 1, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (666).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (667).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (667), 97, 831);
-            Table.States (667).Kernel := To_Vector ((0 => (251, 123, 1, 
False)));
-            Table.States (667).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 831)));
-            Table.States (668).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (668), 24, 832);
-            Add_Action (Table.States (668), 49, 833);
-            Table.States (668).Kernel := To_Vector (((252, 160, 2, False), 
(252, 160, 1, False)));
-            Table.States (668).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 832)));
-            Table.States (669).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (669), 97, 834);
-            Table.States (669).Kernel := To_Vector ((0 => (258, 77, 1, 
False)));
-            Table.States (669).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 834)));
-            Table.States (670).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (670), 97, 835);
-            Table.States (670).Kernel := To_Vector ((0 => (258, 77, 1, 
False)));
-            Table.States (670).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 835)));
-            Table.States (671).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (671), 74, 338);
-            Add_Action (Table.States (671), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (671).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (671), 123, 836);
-            Table.States (671).Kernel := To_Vector ((0 => (266, 60, 1, 
False)));
-            Table.States (671).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (672).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (672), 24, Reduce, (270, 1), 0, null, 
null);
-            Add_Action (Table.States (672), 25, 837);
-            Add_Action (Table.States (672), 28, 184);
-            Add_Action (Table.States (672), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (672), 40, 12);
-            Add_Action (Table.States (672), 46, 14);
-            Add_Action (Table.States (672), 50, Reduce, (247, 2), 0, null, 
null);
-            Table.States (672).Goto_List.Set_Capacity (15);
-            Add_Goto (Table.States (672), 122, 838);
-            Add_Goto (Table.States (672), 128, 41);
-            Add_Goto (Table.States (672), 177, 839);
-            Add_Goto (Table.States (672), 183, 56);
-            Add_Goto (Table.States (672), 194, 840);
-            Add_Goto (Table.States (672), 208, 62);
-            Add_Goto (Table.States (672), 244, 841);
-            Add_Goto (Table.States (672), 247, 842);
-            Add_Goto (Table.States (672), 263, 88);
-            Add_Goto (Table.States (672), 268, 843);
-            Add_Goto (Table.States (672), 269, 844);
-            Add_Goto (Table.States (672), 270, 845);
-            Add_Goto (Table.States (672), 282, 95);
-            Add_Goto (Table.States (672), 308, 846);
-            Add_Goto (Table.States (672), 310, 847);
-            Table.States (672).Kernel := To_Vector ((0 => (265, 35, 2, 
False)));
-            Table.States (672).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 270, 0)));
+            Table.States (669).Kernel := To_Vector ((0 => ((335, 0),  99,  0, 
(335, 0),  5)));
+            Table.States (669).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (335, 0),  5)));
+            Table.States (670).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (670), 74, (125, 0), 340);
+            Add_Action (Table.States (670), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (670).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (670), 125, 837);
+            Table.States (670).Kernel := To_Vector ((0 => ((251, 0),  60,  1, 
(2147483647, 0),  0)));
+            Table.States (670).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (671).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (671), 13, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (671), 24, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (671), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (671), 28, (124, 0), 185);
+            Add_Action (Table.States (671), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (671), 30, (213, 0), 8);
+            Add_Action (Table.States (671), 40, (249, 0), 12);
+            Add_Action (Table.States (671), 46, (249, 1), 14);
+            Add_Action (Table.States (671), 47, (216, 0), 15);
+            Add_Action (Table.States (671), 48, (260, 0), 16);
+            Add_Action (Table.States (671), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (671), 51, (267, 0), 19);
+            Add_Action (Table.States (671), 63, (316, 0), 25);
+            Add_Action (Table.States (671), 66, (308, 0), 26);
+            Add_Action (Table.States (671), 69, (209, 0), 27);
+            Add_Action (Table.States (671), 71, (334, 0), 28);
+            Add_Action (Table.States (671), 107, (222, 1), 187);
+            Table.States (671).Goto_List.Set_Capacity (53);
+            Add_Goto (Table.States (671), 115, 36);
+            Add_Goto (Table.States (671), 124, 38);
+            Add_Goto (Table.States (671), 130, 41);
+            Add_Goto (Table.States (671), 137, 46);
+            Add_Goto (Table.States (671), 138, 47);
+            Add_Goto (Table.States (671), 160, 394);
+            Add_Goto (Table.States (671), 161, 395);
+            Add_Goto (Table.States (671), 162, 838);
+            Add_Goto (Table.States (671), 182, 55);
+            Add_Goto (Table.States (671), 185, 56);
+            Add_Goto (Table.States (671), 189, 57);
+            Add_Goto (Table.States (671), 196, 59);
+            Add_Goto (Table.States (671), 209, 61);
+            Add_Goto (Table.States (671), 210, 62);
+            Add_Goto (Table.States (671), 212, 63);
+            Add_Goto (Table.States (671), 213, 64);
+            Add_Goto (Table.States (671), 216, 65);
+            Add_Goto (Table.States (671), 217, 66);
+            Add_Goto (Table.States (671), 218, 67);
+            Add_Goto (Table.States (671), 219, 68);
+            Add_Goto (Table.States (671), 222, 70);
+            Add_Goto (Table.States (671), 226, 72);
+            Add_Goto (Table.States (671), 246, 75);
+            Add_Goto (Table.States (671), 247, 76);
+            Add_Goto (Table.States (671), 248, 77);
+            Add_Goto (Table.States (671), 249, 78);
+            Add_Goto (Table.States (671), 250, 79);
+            Add_Goto (Table.States (671), 251, 80);
+            Add_Goto (Table.States (671), 252, 81);
+            Add_Goto (Table.States (671), 253, 82);
+            Add_Goto (Table.States (671), 254, 83);
+            Add_Goto (Table.States (671), 260, 397);
+            Add_Goto (Table.States (671), 262, 85);
+            Add_Goto (Table.States (671), 263, 86);
+            Add_Goto (Table.States (671), 265, 88);
+            Add_Goto (Table.States (671), 266, 89);
+            Add_Goto (Table.States (671), 267, 90);
+            Add_Goto (Table.States (671), 268, 91);
+            Add_Goto (Table.States (671), 274, 92);
+            Add_Goto (Table.States (671), 284, 95);
+            Add_Goto (Table.States (671), 292, 96);
+            Add_Goto (Table.States (671), 307, 103);
+            Add_Goto (Table.States (671), 308, 104);
+            Add_Goto (Table.States (671), 310, 106);
+            Add_Goto (Table.States (671), 311, 107);
+            Add_Goto (Table.States (671), 312, 108);
+            Add_Goto (Table.States (671), 314, 109);
+            Add_Goto (Table.States (671), 316, 110);
+            Add_Goto (Table.States (671), 319, 112);
+            Add_Goto (Table.States (671), 320, 113);
+            Add_Goto (Table.States (671), 322, 114);
+            Add_Goto (Table.States (671), 328, 116);
+            Add_Goto (Table.States (671), 334, 117);
+            Table.States (671).Kernel := To_Vector ((((250, 0),  35,  3, 
(2147483647, 0),  0), ((250, 1),  35,  2,
+            (2147483647, 0),  0)));
+            Table.States (671).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (162, 1),  0)));
+            Table.States (672).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (672), 74, (125, 0), 340);
+            Add_Action (Table.States (672), 76, (118, 0), 237);
+            Add_Action (Table.States (672), 87, (296, 0), 239);
+            Add_Action (Table.States (672), 99, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (672), 104, (325, 0), 241);
+            Add_Action (Table.States (672), 105, (325, 1), 242);
+            Table.States (672).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (672), 118, 243);
+            Add_Goto (Table.States (672), 125, 839);
+            Add_Goto (Table.States (672), 325, 244);
+            Table.States (672).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((216, 0),  242,  1,
+            (2147483647, 0),  0), ((242, 0),  242,  5, (2147483647, 0),  0), 
((242, 1),  242,  2, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (672).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
             Table.States (673).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (673), 35, 848);
-            Table.States (673).Kernel := To_Vector (((272, 123, 6, False), 
(272, 123, 3, False)));
-            Table.States (673).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 848)));
-            Table.States (674).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (674), 79, 31);
-            Add_Action (Table.States (674), 105, 120);
-            Add_Action (Table.States (674), 106, 34);
-            Add_Action (Table.States (674), 107, 35);
-            Table.States (674).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (674), 129, 42);
-            Add_Goto (Table.States (674), 228, 849);
-            Add_Goto (Table.States (674), 240, 850);
-            Add_Goto (Table.States (674), 273, 93);
-            Add_Goto (Table.States (674), 294, 98);
-            Table.States (674).Kernel := To_Vector ((0 => (305, 39, 4, 
False)));
-            Table.States (674).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (675).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (675), 24, 851);
-            Add_Action (Table.States (675), 49, 852);
-            Table.States (675).Kernel := To_Vector (((267, 160, 2, False), 
(267, 160, 1, False)));
-            Table.States (675).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 851)));
+            Add_Action (Table.States (673), 99, (253, 0), 840);
+            Table.States (673).Kernel := To_Vector ((0 => ((253, 0),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (673).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (253, 0),  99, 840)));
+            Table.States (674).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (674), 24, (254, 1), 841);
+            Add_Action (Table.States (674), 49, (254, 0), 842);
+            Table.States (674).Kernel := To_Vector ((((254, 0),  162,  2, 
(2147483647, 0),  0), ((254, 1),  162,  1,
+            (2147483647, 0),  0)));
+            Table.States (674).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (254, 1),  24, 841)));
+            Table.States (675).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (675), 99, (260, 0), 843);
+            Table.States (675).Kernel := To_Vector ((0 => ((260, 0),  78,  1, 
(2147483647, 0),  0)));
+            Table.States (675).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (260, 0),  99, 843)));
             Table.States (676).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (676), 97, 853);
-            Table.States (676).Kernel := To_Vector ((0 => (305, 267, 1, 
False)));
-            Table.States (676).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 853)));
-            Table.States (677).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (677), (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, 79, 94, 105, 106,
-            107, 108), (277, 0), 5, raise_statement_0'Access, null);
-            Table.States (677).Kernel := To_Vector ((0 => (277, 97, 0, 
False)));
-            Table.States (677).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 277, 5)));
-            Table.States (678).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (678), (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, 79, 94, 105, 106,
-            107, 108), (291, 0), 5, requeue_statement_0'Access, null);
-            Table.States (678).Kernel := To_Vector ((0 => (291, 97, 0, 
False)));
-            Table.States (678).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 291, 5)));
-            Table.States (679).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (679), 7, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (679), 40, 750);
-            Add_Action (Table.States (679), 79, 31);
-            Add_Action (Table.States (679), 105, 120);
-            Add_Action (Table.States (679), 106, 34);
-            Add_Action (Table.States (679), 107, 35);
-            Table.States (679).Goto_List.Set_Capacity (8);
-            Add_Goto (Table.States (679), 115, 854);
-            Add_Goto (Table.States (679), 129, 42);
-            Add_Goto (Table.States (679), 240, 487);
-            Add_Goto (Table.States (679), 242, 729);
-            Add_Goto (Table.States (679), 273, 93);
-            Add_Goto (Table.States (679), 293, 855);
-            Add_Goto (Table.States (679), 294, 98);
-            Add_Goto (Table.States (679), 315, 856);
-            Table.States (679).Kernel := To_Vector (((195, 155, 2, False), 
(195, 155, 1, False)));
-            Table.States (679).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (680).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (680), 58, 857);
-            Table.States (680).Kernel := To_Vector ((0 => (197, 24, 2, 
False)));
-            Table.States (680).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 58, 857)));
-            Table.States (681).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (681), 14, 858);
-            Table.States (681).Kernel := To_Vector (((248, 47, 6, False), 
(248, 47, 5, False)));
-            Table.States (681).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 858)));
+            Add_Action (Table.States (676), 99, (260, 1), 844);
+            Table.States (676).Kernel := To_Vector ((0 => ((260, 1),  78,  1, 
(2147483647, 0),  0)));
+            Table.States (676).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (260, 1),  99, 844)));
+            Table.States (677).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (677), 74, (125, 0), 340);
+            Add_Action (Table.States (677), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (677).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (677), 125, 845);
+            Table.States (677).Kernel := To_Vector ((0 => ((268, 0),  60,  1, 
(2147483647, 0),  0)));
+            Table.States (677).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (678).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (678), 24, Reduce, (272, 1),  0, null, 
null);
+            Add_Action (Table.States (678), 25, (179, 0), 846);
+            Add_Action (Table.States (678), 28, (124, 0), 185);
+            Add_Action (Table.States (678), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (678), 40, (249, 0), 12);
+            Add_Action (Table.States (678), 46, (249, 1), 14);
+            Add_Action (Table.States (678), 50, Reduce, (249, 2),  0, null, 
null);
+            Table.States (678).Goto_List.Set_Capacity (15);
+            Add_Goto (Table.States (678), 124, 847);
+            Add_Goto (Table.States (678), 130, 41);
+            Add_Goto (Table.States (678), 179, 848);
+            Add_Goto (Table.States (678), 185, 56);
+            Add_Goto (Table.States (678), 196, 849);
+            Add_Goto (Table.States (678), 210, 62);
+            Add_Goto (Table.States (678), 246, 850);
+            Add_Goto (Table.States (678), 249, 851);
+            Add_Goto (Table.States (678), 265, 88);
+            Add_Goto (Table.States (678), 270, 852);
+            Add_Goto (Table.States (678), 271, 853);
+            Add_Goto (Table.States (678), 272, 854);
+            Add_Goto (Table.States (678), 284, 95);
+            Add_Goto (Table.States (678), 310, 855);
+            Add_Goto (Table.States (678), 312, 856);
+            Table.States (678).Kernel := To_Vector ((0 => ((267, 0),  35,  2, 
(2147483647, 0),  0)));
+            Table.States (678).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (272, 1),  0)));
+            Table.States (679).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (679), 35, (274, 0), 857);
+            Table.States (679).Kernel := To_Vector ((((274, 0),  125,  6, 
(2147483647, 0),  0), ((274, 1),  125,  3,
+            (2147483647, 0),  0)));
+            Table.States (679).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (274, 0),  35, 857)));
+            Table.States (680).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (680), 81, (242, 8), 31);
+            Add_Action (Table.States (680), 107, (242, 5), 120);
+            Add_Action (Table.States (680), 108, (242, 7), 34);
+            Add_Action (Table.States (680), 109, (242, 6), 35);
+            Table.States (680).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (680), 131, 42);
+            Add_Goto (Table.States (680), 230, 858);
+            Add_Goto (Table.States (680), 242, 859);
+            Add_Goto (Table.States (680), 275, 93);
+            Add_Goto (Table.States (680), 296, 98);
+            Table.States (680).Kernel := To_Vector ((0 => ((307, 0),  39,  4, 
(2147483647, 0),  0)));
+            Table.States (680).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (681).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (681), 24, (269, 1), 860);
+            Add_Action (Table.States (681), 49, (269, 0), 861);
+            Table.States (681).Kernel := To_Vector ((((269, 0),  162,  2, 
(2147483647, 0),  0), ((269, 1),  162,  1,
+            (2147483647, 0),  0)));
             Table.States (682).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (682), 14, 859);
-            Table.States (682).Kernel := To_Vector ((0 => (265, 51, 5, 
False)));
-            Table.States (682).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 859)));
-            Table.States (683).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (683), 14, 860);
-            Table.States (683).Kernel := To_Vector ((0 => (317, 66, 6, 
False)));
-            Table.States (683).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 860)));
-            Table.States (684).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (684), 29, 7);
-            Add_Action (Table.States (684), 50, 18);
-            Table.States (684).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (684), 208, 62);
-            Add_Goto (Table.States (684), 263, 88);
-            Add_Goto (Table.States (684), 313, 861);
-            Table.States (684).Kernel := To_Vector ((0 => (308, 247, 6, 
False)));
-            Table.States (684).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 50, 18)));
-            Table.States (685).Action_List.Set_Capacity (40);
-            Add_Action (Table.States (685), (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, 79, 
94, 105, 106, 107, 108), (316, 0), 5,
-            subunit_0'Access, null);
-            Table.States (685).Kernel := To_Vector ((0 => (316, 264, 0, 
False)));
-            Table.States (685).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 316, 5)));
+            Add_Action (Table.States (682), 99, (307, 1), 862);
+            Table.States (682).Kernel := To_Vector ((0 => ((307, 1),  269,  1, 
(2147483647, 0),  0)));
+            Table.States (682).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (307, 1),  99, 862)));
+            Table.States (683).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (683), (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, 81, 96, 107, 108,
+            109, 110), (279, 0),  5, raise_statement_0'Access, null);
+            Table.States (683).Kernel := To_Vector ((0 => ((279, 0),  99,  0, 
(279, 0),  5)));
+            Table.States (683).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (279, 0),  5)));
+            Table.States (684).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (684), (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, 81, 96, 107, 108,
+            109, 110), (293, 0),  5, requeue_statement_0'Access, null);
+            Table.States (684).Kernel := To_Vector ((0 => ((293, 0),  99,  0, 
(293, 0),  5)));
+            Table.States (684).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (293, 0),  5)));
+            Table.States (685).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (685), 7, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (685), 40, (244, 0), 756);
+            Add_Action (Table.States (685), 81, (242, 8), 31);
+            Add_Action (Table.States (685), 107, (242, 5), 120);
+            Add_Action (Table.States (685), 108, (242, 7), 34);
+            Add_Action (Table.States (685), 109, (242, 6), 35);
+            Table.States (685).Goto_List.Set_Capacity (8);
+            Add_Goto (Table.States (685), 117, 863);
+            Add_Goto (Table.States (685), 131, 42);
+            Add_Goto (Table.States (685), 242, 491);
+            Add_Goto (Table.States (685), 244, 735);
+            Add_Goto (Table.States (685), 275, 93);
+            Add_Goto (Table.States (685), 295, 864);
+            Add_Goto (Table.States (685), 296, 98);
+            Add_Goto (Table.States (685), 317, 865);
+            Table.States (685).Kernel := To_Vector ((((197, 0),  157,  2, 
(2147483647, 0),  0), ((197, 1),  157,  1,
+            (2147483647, 0),  0)));
+            Table.States (685).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
             Table.States (686).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (686), 97, 862);
-            Table.States (686).Kernel := To_Vector ((0 => (296, 67, 1, 
False)));
-            Table.States (686).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 862)));
-            Table.States (687).Action_List.Set_Capacity (26);
-            Add_Action (Table.States (687), 4, 1);
-            Add_Action (Table.States (687), 5, 2);
-            Add_Action (Table.States (687), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (687), 15, 3);
-            Add_Action (Table.States (687), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (687), 18, 4);
-            Add_Action (Table.States (687), 22, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (687), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (687), 27, 5);
-            Add_Action (Table.States (687), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (687), 31, 9);
-            Add_Action (Table.States (687), 32, 10);
-            Add_Action (Table.States (687), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (687), 41, 13);
-            Add_Action (Table.States (687), 43, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (687), 48, 16);
-            Add_Action (Table.States (687), 52, 20);
-            Add_Action (Table.States (687), 57, 21);
-            Add_Action (Table.States (687), 58, 22);
-            Add_Action (Table.States (687), 61, 24);
-            Add_Action (Table.States (687), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (687), 79, 31);
-            Add_Action (Table.States (687), 94, 32);
-            Add_Action (Table.States (687), 105, 361);
-            Add_Action (Table.States (687), 106, 34);
-            Add_Action (Table.States (687), 107, 35);
-            Table.States (687).Goto_List.Set_Capacity (31);
-            Add_Goto (Table.States (687), 114, 37);
-            Add_Goto (Table.States (687), 124, 39);
-            Add_Goto (Table.States (687), 127, 40);
-            Add_Goto (Table.States (687), 129, 42);
-            Add_Goto (Table.States (687), 132, 43);
-            Add_Goto (Table.States (687), 133, 44);
-            Add_Goto (Table.States (687), 134, 45);
-            Add_Goto (Table.States (687), 140, 48);
-            Add_Goto (Table.States (687), 152, 51);
-            Add_Goto (Table.States (687), 153, 52);
-            Add_Goto (Table.States (687), 162, 54);
-            Add_Goto (Table.States (687), 191, 58);
-            Add_Goto (Table.States (687), 197, 60);
-            Add_Goto (Table.States (687), 218, 69);
-            Add_Goto (Table.States (687), 223, 71);
-            Add_Goto (Table.States (687), 233, 73);
-            Add_Goto (Table.States (687), 240, 74);
-            Add_Goto (Table.States (687), 258, 84);
-            Add_Goto (Table.States (687), 262, 87);
-            Add_Goto (Table.States (687), 273, 93);
-            Add_Goto (Table.States (687), 277, 94);
-            Add_Goto (Table.States (687), 291, 97);
-            Add_Goto (Table.States (687), 294, 98);
-            Add_Goto (Table.States (687), 295, 99);
-            Add_Goto (Table.States (687), 299, 100);
-            Add_Goto (Table.States (687), 300, 362);
-            Add_Goto (Table.States (687), 301, 863);
-            Add_Goto (Table.States (687), 303, 101);
-            Add_Goto (Table.States (687), 304, 102);
-            Add_Goto (Table.States (687), 307, 364);
-            Add_Goto (Table.States (687), 324, 115);
-            Table.States (687).Kernel := To_Vector ((0 => (296, 114, 0, 
False)));
-            Table.States (687).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 0)));
-            Table.States (688).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (688), (22, 24, 43), (296, 2), 4, 
select_alternative_2'Access, null);
-            Table.States (688).Kernel := To_Vector ((0 => (296, 161, 0, 
False)));
-            Table.States (688).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 296, 4)));
+            Add_Action (Table.States (686), 58, (199, 0), 866);
+            Table.States (686).Kernel := To_Vector ((0 => ((199, 0),  24,  2, 
(2147483647, 0),  0)));
+            Table.States (686).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (199, 0),  58, 866)));
+            Table.States (687).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (687), 14, (250, 0), 867);
+            Table.States (687).Kernel := To_Vector ((((250, 0),  47,  6, 
(2147483647, 0),  0), ((250, 1),  47,  5,
+            (2147483647, 0),  0)));
+            Table.States (687).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (250, 0),  14, 867)));
+            Table.States (688).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (688), 14, (267, 0), 868);
+            Table.States (688).Kernel := To_Vector ((0 => ((267, 0),  51,  5, 
(2147483647, 0),  0)));
+            Table.States (688).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (267, 0),  14, 868)));
             Table.States (689).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (689), 61, 864);
-            Table.States (689).Kernel := To_Vector ((0 => (153, 24, 2, 
False)));
-            Table.States (689).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 61, 864)));
-            Table.States (690).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (690), 61, 865);
-            Table.States (690).Kernel := To_Vector ((0 => (324, 24, 2, 
False)));
-            Table.States (690).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 61, 865)));
-            Table.States (691).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (691), (22, 24, 43), (161, 0), 2, null, 
null);
-            Table.States (691).Kernel := To_Vector ((0 => (161, 301, 0, 
False)));
-            Table.States (691).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 161, 2)));
+            Add_Action (Table.States (689), 14, (319, 0), 869);
+            Table.States (689).Kernel := To_Vector ((0 => ((319, 0),  66,  6, 
(2147483647, 0),  0)));
+            Table.States (689).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (319, 0),  14, 869)));
+            Table.States (690).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (690), 29, (210, 0), 7);
+            Add_Action (Table.States (690), 50, (265, 0), 18);
+            Table.States (690).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (690), 210, 62);
+            Add_Goto (Table.States (690), 265, 88);
+            Add_Goto (Table.States (690), 315, 870);
+            Table.States (690).Kernel := To_Vector ((0 => ((310, 0),  249,  6, 
(2147483647, 0),  0)));
+            Table.States (690).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (265, 0),  50, 18)));
+            Table.States (691).Action_List.Set_Capacity (40);
+            Add_Action (Table.States (691), (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, 81, 
96, 107, 108, 109, 110), (318, 0),  5,
+            subunit_0'Access, null);
+            Table.States (691).Kernel := To_Vector ((0 => ((318, 0),  266,  0, 
(318, 0),  5)));
+            Table.States (691).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (318, 0),  5)));
             Table.States (692).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (692), 61, 866);
-            Table.States (692).Kernel := To_Vector ((0 => (295, 24, 2, 
False)));
-            Table.States (692).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 61, 866)));
-            Table.States (693).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (693), (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, 79, 94, 105, 106,
-            107, 108), (295, 1), 5, selective_accept_1'Access, null);
-            Table.States (693).Kernel := To_Vector ((0 => (295, 97, 0, 
False)));
-            Table.States (693).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 295, 5)));
-            Table.States (694).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (694), 24, 867);
-            Table.States (694).Kernel := To_Vector ((0 => (127, 301, 3, 
False)));
-            Table.States (694).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 867)));
+            Add_Action (Table.States (692), 99, (298, 1), 871);
+            Table.States (692).Kernel := To_Vector ((0 => ((298, 1),  67,  1, 
(2147483647, 0),  0)));
+            Table.States (692).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (298, 1),  99, 871)));
+            Table.States (693).Action_List.Set_Capacity (26);
+            Add_Action (Table.States (693), 4, (116, 0), 1);
+            Add_Action (Table.States (693), 5, (306, 8), 2);
+            Add_Action (Table.States (693), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (693), 15, (142, 0), 3);
+            Add_Action (Table.States (693), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (693), 18, (164, 0), 4);
+            Add_Action (Table.States (693), 22, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (693), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (693), 27, (193, 0), 5);
+            Add_Action (Table.States (693), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (693), 31, (306, 3), 9);
+            Add_Action (Table.States (693), 32, (225, 0), 10);
+            Add_Action (Table.States (693), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (693), 41, (306, 0), 13);
+            Add_Action (Table.States (693), 43, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (693), 48, (260, 0), 16);
+            Add_Action (Table.States (693), 52, (279, 0), 20);
+            Add_Action (Table.States (693), 57, (293, 0), 21);
+            Add_Action (Table.States (693), 58, (199, 0), 22);
+            Add_Action (Table.States (693), 61, (129, 0), 24);
+            Add_Action (Table.States (693), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (693), 81, (242, 8), 31);
+            Add_Action (Table.States (693), 96, (220, 0), 32);
+            Add_Action (Table.States (693), 107, (134, 0), 363);
+            Add_Action (Table.States (693), 108, (242, 7), 34);
+            Add_Action (Table.States (693), 109, (242, 6), 35);
+            Table.States (693).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (693), 116, 37);
+            Add_Goto (Table.States (693), 126, 39);
+            Add_Goto (Table.States (693), 129, 40);
+            Add_Goto (Table.States (693), 131, 42);
+            Add_Goto (Table.States (693), 134, 43);
+            Add_Goto (Table.States (693), 135, 44);
+            Add_Goto (Table.States (693), 136, 45);
+            Add_Goto (Table.States (693), 142, 48);
+            Add_Goto (Table.States (693), 154, 51);
+            Add_Goto (Table.States (693), 155, 52);
+            Add_Goto (Table.States (693), 164, 54);
+            Add_Goto (Table.States (693), 193, 58);
+            Add_Goto (Table.States (693), 199, 60);
+            Add_Goto (Table.States (693), 220, 69);
+            Add_Goto (Table.States (693), 225, 71);
+            Add_Goto (Table.States (693), 235, 73);
+            Add_Goto (Table.States (693), 242, 74);
+            Add_Goto (Table.States (693), 260, 84);
+            Add_Goto (Table.States (693), 264, 87);
+            Add_Goto (Table.States (693), 275, 93);
+            Add_Goto (Table.States (693), 279, 94);
+            Add_Goto (Table.States (693), 293, 97);
+            Add_Goto (Table.States (693), 296, 98);
+            Add_Goto (Table.States (693), 297, 99);
+            Add_Goto (Table.States (693), 301, 100);
+            Add_Goto (Table.States (693), 302, 364);
+            Add_Goto (Table.States (693), 303, 872);
+            Add_Goto (Table.States (693), 305, 101);
+            Add_Goto (Table.States (693), 306, 102);
+            Add_Goto (Table.States (693), 309, 366);
+            Add_Goto (Table.States (693), 326, 115);
+            Table.States (693).Kernel := To_Vector ((0 => ((298, 0),  116,  0, 
(303, 1),  0)));
+            Table.States (693).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (303, 1),  0)));
+            Table.States (694).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (694), (22, 24, 43), (298, 2),  4, 
select_alternative_2'Access, null);
+            Table.States (694).Kernel := To_Vector ((0 => ((298, 2),  163,  0, 
(298, 2),  4)));
+            Table.States (694).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (298, 2),  4)));
             Table.States (695).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (695), 97, 868);
-            Table.States (695).Kernel := To_Vector ((0 => (314, 123, 1, 
False)));
-            Table.States (695).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 868)));
-            Table.States (696).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (696), 74, 338);
-            Add_Action (Table.States (696), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (696).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (696), 123, 869);
-            Table.States (696).Kernel := To_Vector ((0 => (318, 60, 1, 
False)));
-            Table.States (696).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (697).Action_List.Set_Capacity (16);
-            Add_Action (Table.States (697), 13, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (697), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (697), 28, 184);
-            Add_Action (Table.States (697), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (697), 30, 8);
-            Add_Action (Table.States (697), 40, 12);
-            Add_Action (Table.States (697), 46, 14);
-            Add_Action (Table.States (697), 47, 15);
-            Add_Action (Table.States (697), 48, 16);
-            Add_Action (Table.States (697), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (697), 51, 19);
-            Add_Action (Table.States (697), 63, 25);
-            Add_Action (Table.States (697), 66, 26);
-            Add_Action (Table.States (697), 69, 27);
-            Add_Action (Table.States (697), 71, 28);
-            Add_Action (Table.States (697), 105, 186);
-            Table.States (697).Goto_List.Set_Capacity (53);
-            Add_Goto (Table.States (697), 113, 36);
-            Add_Goto (Table.States (697), 122, 38);
-            Add_Goto (Table.States (697), 128, 41);
-            Add_Goto (Table.States (697), 135, 46);
-            Add_Goto (Table.States (697), 136, 47);
-            Add_Goto (Table.States (697), 158, 392);
-            Add_Goto (Table.States (697), 159, 393);
-            Add_Goto (Table.States (697), 160, 870);
-            Add_Goto (Table.States (697), 180, 55);
-            Add_Goto (Table.States (697), 183, 56);
-            Add_Goto (Table.States (697), 187, 57);
-            Add_Goto (Table.States (697), 194, 59);
-            Add_Goto (Table.States (697), 207, 61);
-            Add_Goto (Table.States (697), 208, 62);
-            Add_Goto (Table.States (697), 210, 63);
-            Add_Goto (Table.States (697), 211, 64);
-            Add_Goto (Table.States (697), 214, 65);
-            Add_Goto (Table.States (697), 215, 66);
-            Add_Goto (Table.States (697), 216, 67);
-            Add_Goto (Table.States (697), 217, 68);
-            Add_Goto (Table.States (697), 220, 70);
-            Add_Goto (Table.States (697), 224, 72);
-            Add_Goto (Table.States (697), 244, 75);
-            Add_Goto (Table.States (697), 245, 76);
-            Add_Goto (Table.States (697), 246, 77);
-            Add_Goto (Table.States (697), 247, 78);
-            Add_Goto (Table.States (697), 248, 79);
-            Add_Goto (Table.States (697), 249, 80);
-            Add_Goto (Table.States (697), 250, 81);
-            Add_Goto (Table.States (697), 251, 82);
-            Add_Goto (Table.States (697), 252, 83);
-            Add_Goto (Table.States (697), 258, 395);
-            Add_Goto (Table.States (697), 260, 85);
-            Add_Goto (Table.States (697), 261, 86);
-            Add_Goto (Table.States (697), 263, 88);
-            Add_Goto (Table.States (697), 264, 89);
-            Add_Goto (Table.States (697), 265, 90);
-            Add_Goto (Table.States (697), 266, 91);
-            Add_Goto (Table.States (697), 272, 92);
-            Add_Goto (Table.States (697), 282, 95);
-            Add_Goto (Table.States (697), 290, 96);
-            Add_Goto (Table.States (697), 305, 103);
-            Add_Goto (Table.States (697), 306, 104);
-            Add_Goto (Table.States (697), 308, 106);
-            Add_Goto (Table.States (697), 309, 107);
-            Add_Goto (Table.States (697), 310, 108);
-            Add_Goto (Table.States (697), 312, 109);
-            Add_Goto (Table.States (697), 314, 110);
-            Add_Goto (Table.States (697), 317, 112);
-            Add_Goto (Table.States (697), 318, 113);
-            Add_Goto (Table.States (697), 320, 114);
-            Add_Goto (Table.States (697), 326, 116);
-            Add_Goto (Table.States (697), 332, 117);
-            Table.States (697).Kernel := To_Vector ((0 => (317, 35, 3, 
False)));
-            Table.States (697).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 160, 0)));
-            Table.States (698).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (698), 35, 871);
-            Add_Action (Table.States (698), 97, 872);
-            Table.States (698).Kernel := To_Vector (((320, 123, 6, False), 
(320, 123, 3, False), (320, 123, 1,
-            False)));
-            Table.States (698).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 872)));
-            Table.States (699).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (699), 79, 31);
-            Add_Action (Table.States (699), 105, 120);
-            Add_Action (Table.States (699), 106, 34);
-            Add_Action (Table.States (699), 107, 35);
-            Table.States (699).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (699), 129, 42);
-            Add_Goto (Table.States (699), 228, 873);
-            Add_Goto (Table.States (699), 240, 850);
-            Add_Goto (Table.States (699), 273, 93);
-            Add_Goto (Table.States (699), 294, 98);
-            Table.States (699).Kernel := To_Vector ((0 => (306, 39, 4, 
False)));
-            Table.States (699).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (700).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (700), 24, Reduce, (319, 1), 1, 
task_definition_1'Access, null);
-            Add_Action (Table.States (700), 49, 874);
-            Table.States (700).Kernel := To_Vector (((319, 160, 1, False), 
(319, 160, 0, False)));
-            Table.States (700).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 319, 1)));
+            Add_Action (Table.States (695), 61, (155, 0), 873);
+            Table.States (695).Kernel := To_Vector ((0 => ((155, 0),  24,  2, 
(2147483647, 0),  0)));
+            Table.States (695).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (155, 0),  61, 873)));
+            Table.States (696).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (696), 61, (326, 0), 874);
+            Table.States (696).Kernel := To_Vector ((0 => ((326, 0),  24,  2, 
(2147483647, 0),  0)));
+            Table.States (696).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (326, 0),  61, 874)));
+            Table.States (697).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (697), (22, 24, 43), (163, 0),  2, null, 
null);
+            Table.States (697).Kernel := To_Vector ((0 => ((163, 0),  303,  0, 
(163, 0),  2)));
+            Table.States (697).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (163, 0),  2)));
+            Table.States (698).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (698), 61, (297, 0), 875);
+            Table.States (698).Kernel := To_Vector ((0 => ((297, 0),  24,  2, 
(2147483647, 0),  0)));
+            Table.States (698).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (297, 0),  61, 875)));
+            Table.States (699).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (699), (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, 81, 96, 107, 108,
+            109, 110), (297, 1),  5, selective_accept_1'Access, null);
+            Table.States (699).Kernel := To_Vector ((0 => ((297, 1),  99,  0, 
(297, 1),  5)));
+            Table.States (699).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (297, 1),  5)));
+            Table.States (700).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (700), 24, (129, 0), 876);
+            Table.States (700).Kernel := To_Vector ((0 => ((129, 0),  303,  3, 
(2147483647, 0),  0)));
+            Table.States (700).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (129, 0),  24, 876)));
             Table.States (701).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (701), 24, 875);
-            Table.States (701).Kernel := To_Vector ((0 => (306, 319, 2, 
False)));
-            Table.States (701).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 875)));
-            Table.States (702).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (702), (35, 74, 97), (170, 0), 3, null, 
null);
-            Table.States (702).Kernel := To_Vector ((0 => (170, 77, 0, 
False)));
-            Table.States (702).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 170, 3)));
-            Table.States (703).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (703), (35, 74, 97), (170, 1), 3, 
discriminant_part_opt_1'Access, null);
-            Table.States (703).Kernel := To_Vector ((0 => (170, 77, 0, 
False)));
-            Table.States (703).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 170, 3)));
-            Table.States (704).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (704), 77, Reduce, (171, 4), 0, null, 
null);
-            Add_Action (Table.States (704), 97, Reduce, (171, 4), 0, null, 
null);
-            Add_Action (Table.States (704), 105, 165);
-            Table.States (704).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (704), 171, 876);
-            Add_Goto (Table.States (704), 220, 551);
-            Table.States (704).Kernel := To_Vector ((0 => (172, 97, 0, True)));
-            Table.States (704).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 171, 0)));
-            Table.States (704).Minimal_Complete_Actions_Recursive := True;
-            Table.States (705).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (705), 7, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (705), 40, 877);
-            Add_Action (Table.States (705), 79, 31);
-            Add_Action (Table.States (705), 105, 878);
-            Add_Action (Table.States (705), 106, 34);
-            Add_Action (Table.States (705), 107, 35);
-            Table.States (705).Goto_List.Set_Capacity (7);
-            Add_Goto (Table.States (705), 115, 879);
-            Add_Goto (Table.States (705), 129, 42);
-            Add_Goto (Table.States (705), 240, 880);
-            Add_Goto (Table.States (705), 242, 729);
-            Add_Goto (Table.States (705), 243, 881);
-            Add_Goto (Table.States (705), 273, 93);
-            Add_Goto (Table.States (705), 294, 882);
-            Table.States (705).Kernel := To_Vector (((171, 82, 2, False), 
(171, 82, 3, False), (171, 82, 1, False),
-            (171, 82, 2, False)));
-            Table.States (705).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 878)));
-         end Subr_13;
-         procedure Subr_14
-         is begin
-            Table.States (706).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (706), 36, 883);
-            Add_Action (Table.States (706), 39, Reduce, (110, 2), 1, null, 
null);
-            Add_Conflict (Table.States (706), 39, (111, 2), 1, null, null);
-            Add_Action (Table.States (706), 64, 884);
-            Add_Action (Table.States (706), 65, 885);
-            Table.States (706).Kernel := To_Vector (((110, 6, 1, False), (110, 
6, 1, False), (110, 6, 0, False), (111,
-            6, 1, False), (111, 6, 0, False), (112, 6, 2, False), (112, 6, 1, 
False)));
-            Table.States (706).Minimal_Complete_Actions := To_Vector 
(((Reduce, 110, 1), (Reduce, 111, 1)));
+            Add_Action (Table.States (701), 99, (316, 0), 877);
+            Table.States (701).Kernel := To_Vector ((0 => ((316, 0),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (701).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (316, 0),  99, 877)));
+            Table.States (702).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (702), 74, (125, 0), 340);
+            Add_Action (Table.States (702), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (702).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (702), 125, 878);
+            Table.States (702).Kernel := To_Vector ((0 => ((320, 0),  60,  1, 
(2147483647, 0),  0)));
+            Table.States (702).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (703).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (703), 13, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (703), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (703), 28, (124, 0), 185);
+            Add_Action (Table.States (703), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (703), 30, (213, 0), 8);
+            Add_Action (Table.States (703), 40, (249, 0), 12);
+            Add_Action (Table.States (703), 46, (249, 1), 14);
+            Add_Action (Table.States (703), 47, (216, 0), 15);
+            Add_Action (Table.States (703), 48, (260, 0), 16);
+            Add_Action (Table.States (703), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (703), 51, (267, 0), 19);
+            Add_Action (Table.States (703), 63, (316, 0), 25);
+            Add_Action (Table.States (703), 66, (308, 0), 26);
+            Add_Action (Table.States (703), 69, (209, 0), 27);
+            Add_Action (Table.States (703), 71, (334, 0), 28);
+            Add_Action (Table.States (703), 107, (222, 1), 187);
+            Table.States (703).Goto_List.Set_Capacity (53);
+            Add_Goto (Table.States (703), 115, 36);
+            Add_Goto (Table.States (703), 124, 38);
+            Add_Goto (Table.States (703), 130, 41);
+            Add_Goto (Table.States (703), 137, 46);
+            Add_Goto (Table.States (703), 138, 47);
+            Add_Goto (Table.States (703), 160, 394);
+            Add_Goto (Table.States (703), 161, 395);
+            Add_Goto (Table.States (703), 162, 879);
+            Add_Goto (Table.States (703), 182, 55);
+            Add_Goto (Table.States (703), 185, 56);
+            Add_Goto (Table.States (703), 189, 57);
+            Add_Goto (Table.States (703), 196, 59);
+            Add_Goto (Table.States (703), 209, 61);
+            Add_Goto (Table.States (703), 210, 62);
+            Add_Goto (Table.States (703), 212, 63);
+            Add_Goto (Table.States (703), 213, 64);
+            Add_Goto (Table.States (703), 216, 65);
+            Add_Goto (Table.States (703), 217, 66);
+            Add_Goto (Table.States (703), 218, 67);
+            Add_Goto (Table.States (703), 219, 68);
+            Add_Goto (Table.States (703), 222, 70);
+            Add_Goto (Table.States (703), 226, 72);
+            Add_Goto (Table.States (703), 246, 75);
+            Add_Goto (Table.States (703), 247, 76);
+            Add_Goto (Table.States (703), 248, 77);
+            Add_Goto (Table.States (703), 249, 78);
+            Add_Goto (Table.States (703), 250, 79);
+            Add_Goto (Table.States (703), 251, 80);
+            Add_Goto (Table.States (703), 252, 81);
+            Add_Goto (Table.States (703), 253, 82);
+            Add_Goto (Table.States (703), 254, 83);
+            Add_Goto (Table.States (703), 260, 397);
+            Add_Goto (Table.States (703), 262, 85);
+            Add_Goto (Table.States (703), 263, 86);
+            Add_Goto (Table.States (703), 265, 88);
+            Add_Goto (Table.States (703), 266, 89);
+            Add_Goto (Table.States (703), 267, 90);
+            Add_Goto (Table.States (703), 268, 91);
+            Add_Goto (Table.States (703), 274, 92);
+            Add_Goto (Table.States (703), 284, 95);
+            Add_Goto (Table.States (703), 292, 96);
+            Add_Goto (Table.States (703), 307, 103);
+            Add_Goto (Table.States (703), 308, 104);
+            Add_Goto (Table.States (703), 310, 106);
+            Add_Goto (Table.States (703), 311, 107);
+            Add_Goto (Table.States (703), 312, 108);
+            Add_Goto (Table.States (703), 314, 109);
+            Add_Goto (Table.States (703), 316, 110);
+            Add_Goto (Table.States (703), 319, 112);
+            Add_Goto (Table.States (703), 320, 113);
+            Add_Goto (Table.States (703), 322, 114);
+            Add_Goto (Table.States (703), 328, 116);
+            Add_Goto (Table.States (703), 334, 117);
+            Table.States (703).Kernel := To_Vector ((0 => ((319, 0),  35,  3, 
(2147483647, 0),  0)));
+            Table.States (703).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (162, 1),  0)));
+            Table.States (704).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (704), 35, (322, 0), 880);
+            Add_Action (Table.States (704), 99, (322, 2), 881);
+            Table.States (704).Kernel := To_Vector ((((322, 0),  125,  6, 
(2147483647, 0),  0), ((322, 1),  125,  3,
+            (2147483647, 0),  0), ((322, 2),  125,  1, (2147483647, 0),  0)));
+            Table.States (704).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (322, 2),  99, 881)));
+            Table.States (705).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (705), 81, (242, 8), 31);
+            Add_Action (Table.States (705), 107, (242, 5), 120);
+            Add_Action (Table.States (705), 108, (242, 7), 34);
+            Add_Action (Table.States (705), 109, (242, 6), 35);
+            Table.States (705).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (705), 131, 42);
+            Add_Goto (Table.States (705), 230, 882);
+            Add_Goto (Table.States (705), 242, 859);
+            Add_Goto (Table.States (705), 275, 93);
+            Add_Goto (Table.States (705), 296, 98);
+            Table.States (705).Kernel := To_Vector ((0 => ((308, 0),  39,  4, 
(2147483647, 0),  0)));
+            Table.States (705).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (706).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (706), 24, Reduce, (321, 1),  1, 
task_definition_1'Access, null);
+            Add_Action (Table.States (706), 49, (321, 0), 883);
+            Table.States (706).Kernel := To_Vector ((((321, 0),  162,  1, 
(2147483647, 0),  0), ((321, 1),  162,  0,
+            (321, 1),  1)));
+            Table.States (706).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (321, 1),  1)));
             Table.States (707).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (707), 76, 886);
-            Table.States (707).Kernel := To_Vector (((121, 11, 7, False), 
(121, 11, 7, False)));
-            Table.States (707).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 76, 886)));
-            Table.States (708).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (708), 3, 122);
-            Add_Action (Table.States (708), 20, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (708), 39, 123);
-            Add_Action (Table.States (708), 40, 124);
-            Add_Action (Table.States (708), 41, 125);
-            Add_Action (Table.States (708), 52, 126);
-            Add_Action (Table.States (708), 53, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (708), 74, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (708), 76, 127);
-            Add_Action (Table.States (708), 79, 31);
-            Add_Action (Table.States (708), 95, 128);
-            Add_Action (Table.States (708), 96, 129);
-            Add_Action (Table.States (708), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (708), 104, 130);
-            Add_Action (Table.States (708), 105, 120);
-            Add_Action (Table.States (708), 106, 34);
-            Add_Action (Table.States (708), 107, 35);
-            Table.States (708).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (708), 118, 131);
-            Add_Goto (Table.States (708), 129, 42);
-            Add_Goto (Table.States (708), 192, 132);
-            Add_Goto (Table.States (708), 193, 887);
-            Add_Goto (Table.States (708), 198, 134);
-            Add_Goto (Table.States (708), 240, 135);
-            Add_Goto (Table.States (708), 259, 136);
-            Add_Goto (Table.States (708), 273, 93);
-            Add_Goto (Table.States (708), 276, 137);
-            Add_Goto (Table.States (708), 283, 138);
-            Add_Goto (Table.States (708), 284, 139);
-            Add_Goto (Table.States (708), 285, 140);
-            Add_Goto (Table.States (708), 286, 141);
-            Add_Goto (Table.States (708), 287, 142);
-            Add_Goto (Table.States (708), 288, 143);
-            Add_Goto (Table.States (708), 294, 98);
-            Add_Goto (Table.States (708), 302, 144);
-            Add_Goto (Table.States (708), 321, 145);
-            Add_Goto (Table.States (708), 322, 146);
-            Add_Goto (Table.States (708), 331, 147);
-            Table.States (708).Kernel := To_Vector (((327, 19, 1, False), 
(327, 19, 0, False)));
-            Table.States (708).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (709).Action_List.Set_Capacity (16);
-            Add_Action (Table.States (709), 3, 122);
-            Add_Action (Table.States (709), 39, 123);
-            Add_Action (Table.States (709), 40, 124);
-            Add_Action (Table.States (709), 41, 125);
-            Add_Action (Table.States (709), 52, 126);
-            Add_Action (Table.States (709), 53, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (709), 74, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (709), 76, 127);
-            Add_Action (Table.States (709), 79, 31);
-            Add_Action (Table.States (709), 95, 128);
-            Add_Action (Table.States (709), 96, 129);
-            Add_Action (Table.States (709), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (709), 104, 130);
-            Add_Action (Table.States (709), 105, 120);
-            Add_Action (Table.States (709), 106, 34);
-            Add_Action (Table.States (709), 107, 35);
-            Table.States (709).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (709), 118, 131);
-            Add_Goto (Table.States (709), 129, 42);
-            Add_Goto (Table.States (709), 192, 132);
-            Add_Goto (Table.States (709), 193, 888);
-            Add_Goto (Table.States (709), 198, 134);
-            Add_Goto (Table.States (709), 240, 135);
-            Add_Goto (Table.States (709), 259, 136);
-            Add_Goto (Table.States (709), 273, 93);
-            Add_Goto (Table.States (709), 276, 137);
-            Add_Goto (Table.States (709), 283, 138);
-            Add_Goto (Table.States (709), 284, 139);
-            Add_Goto (Table.States (709), 285, 140);
-            Add_Goto (Table.States (709), 286, 141);
-            Add_Goto (Table.States (709), 287, 142);
-            Add_Goto (Table.States (709), 288, 143);
-            Add_Goto (Table.States (709), 294, 98);
-            Add_Goto (Table.States (709), 302, 144);
-            Add_Goto (Table.States (709), 321, 145);
-            Add_Goto (Table.States (709), 322, 146);
-            Add_Goto (Table.States (709), 331, 147);
-            Table.States (709).Kernel := To_Vector ((0 => (327, 20, 0, 
False)));
-            Table.States (709).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (710).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (710), (74, 97), (229, 8), 1, null, null);
-            Table.States (710).Kernel := To_Vector ((0 => (229, 34, 0, 
False)));
-            Table.States (710).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 229, 1)));
-            Table.States (711).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (711), 34, 889);
-            Add_Action (Table.States (711), 39, Reduce, (110, 3), 1, null, 
null);
-            Add_Conflict (Table.States (711), 39, (111, 1), 1, null, null);
-            Add_Action (Table.States (711), 41, Reduce, (112, 4), 1, null, 
null);
-            Add_Action (Table.States (711), 49, Reduce, (112, 4), 1, null, 
null);
-            Add_Action (Table.States (711), 54, Reduce, (112, 4), 1, null, 
null);
-            Table.States (711).Kernel := To_Vector (((110, 36, 0, False), 
(111, 36, 0, False), (112, 36, 0, False),
-            (229, 36, 3, False), (229, 36, 1, False)));
-            Table.States (711).Minimal_Complete_Actions := To_Vector 
(((Reduce, 110, 1), (Reduce, 111, 1), (Reduce,
-            112, 1)));
-            Table.States (712).Action_List.Set_Capacity (15);
-            Add_Action (Table.States (712), 3, 122);
-            Add_Action (Table.States (712), 39, 123);
-            Add_Action (Table.States (712), 40, 124);
-            Add_Action (Table.States (712), 41, 125);
-            Add_Action (Table.States (712), 52, 126);
-            Add_Action (Table.States (712), 74, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (712), 76, 127);
-            Add_Action (Table.States (712), 79, 31);
-            Add_Action (Table.States (712), 95, 128);
-            Add_Action (Table.States (712), 96, 129);
-            Add_Action (Table.States (712), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (712), 104, 130);
-            Add_Action (Table.States (712), 105, 120);
-            Add_Action (Table.States (712), 106, 34);
-            Add_Action (Table.States (712), 107, 35);
-            Table.States (712).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (712), 118, 131);
-            Add_Goto (Table.States (712), 129, 42);
-            Add_Goto (Table.States (712), 192, 132);
-            Add_Goto (Table.States (712), 193, 890);
-            Add_Goto (Table.States (712), 198, 134);
-            Add_Goto (Table.States (712), 240, 135);
-            Add_Goto (Table.States (712), 259, 136);
-            Add_Goto (Table.States (712), 273, 93);
-            Add_Goto (Table.States (712), 276, 137);
-            Add_Goto (Table.States (712), 283, 138);
-            Add_Goto (Table.States (712), 284, 139);
-            Add_Goto (Table.States (712), 285, 140);
-            Add_Goto (Table.States (712), 286, 141);
-            Add_Goto (Table.States (712), 287, 142);
-            Add_Goto (Table.States (712), 288, 143);
-            Add_Goto (Table.States (712), 294, 98);
-            Add_Goto (Table.States (712), 302, 144);
-            Add_Goto (Table.States (712), 321, 145);
-            Add_Goto (Table.States (712), 322, 146);
-            Add_Goto (Table.States (712), 331, 147);
-            Table.States (712).Kernel := To_Vector ((0 => (327, 38, 0, 
False)));
-            Table.States (712).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
+            Add_Action (Table.States (707), 24, (308, 1), 884);
+            Table.States (707).Kernel := To_Vector ((0 => ((308, 1),  321,  2, 
(2147483647, 0),  0)));
+            Table.States (707).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (308, 1),  24, 884)));
+            Table.States (708).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (708), (35, 74, 99), (172, 0),  3, null, 
null);
+            Table.States (708).Kernel := To_Vector ((0 => ((172, 0),  78,  0, 
(172, 0),  3)));
+            Table.States (708).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (172, 0),  3)));
+            Table.States (709).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (709), (35, 74, 99), (172, 1),  3, 
discriminant_part_opt_1'Access, null);
+            Table.States (709).Kernel := To_Vector ((0 => ((172, 1),  78,  0, 
(172, 1),  3)));
+            Table.States (709).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (172, 1),  3)));
+            Table.States (710).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (710), 78, Reduce, (173, 4),  0, null, 
null);
+            Add_Action (Table.States (710), 99, Reduce, (173, 4),  0, null, 
null);
+            Add_Action (Table.States (710), 107, (222, 1), 166);
+            Table.States (710).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (710), 173, 885);
+            Add_Goto (Table.States (710), 222, 555);
+            Table.States (710).Kernel := To_Vector ((0 => ((174, 0),  99,  0, 
(173, 4),  0)));
+            Table.States (710).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (173, 4),  0)));
+            Table.States (711).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (711), 7, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (711), 40, (244, 0), 886);
+            Add_Action (Table.States (711), 81, (242, 8), 31);
+            Add_Action (Table.States (711), 107, (242, 5), 887);
+            Add_Action (Table.States (711), 108, (242, 7), 34);
+            Add_Action (Table.States (711), 109, (242, 6), 35);
+            Table.States (711).Goto_List.Set_Capacity (7);
+            Add_Goto (Table.States (711), 117, 888);
+            Add_Goto (Table.States (711), 131, 42);
+            Add_Goto (Table.States (711), 242, 889);
+            Add_Goto (Table.States (711), 244, 735);
+            Add_Goto (Table.States (711), 245, 890);
+            Add_Goto (Table.States (711), 275, 93);
+            Add_Goto (Table.States (711), 296, 891);
+            Table.States (711).Kernel := To_Vector ((((173, 0),  84,  2, 
(2147483647, 0),  0), ((173, 1),  84,  3,
+            (2147483647, 0),  0), ((173, 2),  84,  1, (2147483647, 0),  0), 
((173, 3),  84,  2, (2147483647, 0),  0)));
+            Table.States (711).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 887)));
+            Table.States (712).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (712), 36, (112, 0), 892);
+            Add_Action (Table.States (712), 39, Reduce, (112, 2),  1, null, 
null);
+            Add_Conflict (Table.States (712), 39, (113, 2),  1, null, null);
+            Add_Action (Table.States (712), 64, (112, 1), 893);
+            Add_Action (Table.States (712), 65, (114, 0), 894);
+            Table.States (712).Kernel := To_Vector ((((112, 0),  6,  1, 
(2147483647, 0),  0), ((112, 1),  6,  1,
+            (2147483647, 0),  0), ((112, 2),  6,  0, (112, 2),  1), ((113, 0), 
 6,  1, (2147483647, 0),  0), ((113, 2),
+             6,  0, (113, 2),  1), ((114, 0),  6,  2, (2147483647, 0),  0), 
((114, 1),  6,  1, (2147483647, 0),  0)));
+            Table.States (712).Minimal_Complete_Actions := To_Vector (((Shift, 
(112, 0),  36, 892), (Shift, (112, 1),
+            64, 893), (Reduce, (112, 2),  1), (Reduce, (113, 2),  1), (Shift, 
(114, 0),  65, 894)));
             Table.States (713).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (713), 54, 891);
-            Table.States (713).Kernel := To_Vector ((0 => (281, 41, 1, 
False)));
-            Table.States (713).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 54, 891)));
-            Table.States (714).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (714), 34, 892);
-            Table.States (714).Kernel := To_Vector (((229, 51, 3, False), 
(229, 51, 1, False)));
-            Table.States (714).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 892)));
-            Table.States (715).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (715), 3, 122);
-            Add_Action (Table.States (715), 39, 123);
-            Add_Action (Table.States (715), 40, 124);
-            Add_Action (Table.States (715), 41, 125);
-            Add_Action (Table.States (715), 76, 127);
-            Add_Action (Table.States (715), 79, 31);
-            Add_Action (Table.States (715), 95, 128);
-            Add_Action (Table.States (715), 96, 129);
-            Add_Action (Table.States (715), 104, 130);
-            Add_Action (Table.States (715), 105, 120);
-            Add_Action (Table.States (715), 106, 34);
-            Add_Action (Table.States (715), 107, 35);
-            Table.States (715).Goto_List.Set_Capacity (11);
-            Add_Goto (Table.States (715), 118, 131);
-            Add_Goto (Table.States (715), 129, 42);
-            Add_Goto (Table.States (715), 198, 134);
-            Add_Goto (Table.States (715), 240, 135);
-            Add_Goto (Table.States (715), 259, 136);
-            Add_Goto (Table.States (715), 273, 93);
-            Add_Goto (Table.States (715), 294, 98);
-            Add_Goto (Table.States (715), 302, 893);
-            Add_Goto (Table.States (715), 321, 145);
-            Add_Goto (Table.States (715), 322, 146);
-            Add_Goto (Table.States (715), 331, 147);
-            Table.States (715).Kernel := To_Vector ((0 => (327, 53, 3, 
False)));
-            Table.States (715).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (716).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (716), 15, 894);
-            Add_Action (Table.States (716), 24, Reduce, (151, 1), 0, null, 
null);
-            Add_Action (Table.States (716), 28, 184);
-            Add_Action (Table.States (716), 41, 895);
-            Add_Action (Table.States (716), 105, 165);
-            Table.States (716).Goto_List.Set_Capacity (10);
-            Add_Goto (Table.States (716), 122, 896);
-            Add_Goto (Table.States (716), 128, 41);
-            Add_Goto (Table.States (716), 147, 897);
-            Add_Goto (Table.States (716), 149, 898);
-            Add_Goto (Table.States (716), 150, 899);
-            Add_Goto (Table.States (716), 151, 900);
-            Add_Goto (Table.States (716), 183, 56);
-            Add_Goto (Table.States (716), 220, 901);
-            Add_Goto (Table.States (716), 282, 95);
-            Add_Goto (Table.States (716), 328, 902);
-            Table.States (716).Kernel := To_Vector ((0 => (281, 54, 2, 
False)));
-            Table.States (716).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 151, 0)));
-            Table.States (717).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (717), 34, 903);
-            Add_Action (Table.States (717), 39, Reduce, (110, 4), 1, null, 
null);
-            Table.States (717).Kernel := To_Vector (((110, 64, 0, False), 
(229, 64, 3, False), (229, 64, 1, False)));
-            Table.States (717).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 110, 1)));
-            Table.States (718).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (718), 36, 904);
-            Add_Action (Table.States (718), 41, Reduce, (112, 3), 1, null, 
null);
-            Add_Action (Table.States (718), 49, Reduce, (112, 3), 1, null, 
null);
-            Add_Action (Table.States (718), 54, Reduce, (112, 3), 1, null, 
null);
-            Add_Action (Table.States (718), 97, 905);
-            Table.States (718).Kernel := To_Vector (((112, 65, 1, False), 
(112, 65, 0, False), (224, 65, 1, False)));
-            Table.States (718).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 112, 1)));
+            Add_Action (Table.States (713), 76, (123, 0), 895);
+            Table.States (713).Kernel := To_Vector ((((123, 0),  11,  7, 
(2147483647, 0),  0), ((123, 1),  11,  7,
+            (2147483647, 0),  0)));
+            Table.States (713).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (123, 0),  76, 895)));
+            Table.States (714).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (714), 3, (200, 2), 122);
+            Add_Action (Table.States (714), 20, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (714), 39, (261, 4), 123);
+            Add_Action (Table.States (714), 40, (200, 3), 124);
+            Add_Action (Table.States (714), 41, (261, 1), 125);
+            Add_Action (Table.States (714), 52, (278, 0), 126);
+            Add_Action (Table.States (714), 53, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (714), 74, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (714), 76, (120, 0), 127);
+            Add_Action (Table.States (714), 77, (120, 5), 128);
+            Add_Action (Table.States (714), 81, (242, 8), 31);
+            Add_Action (Table.States (714), 97, (333, 1), 129);
+            Add_Action (Table.States (714), 98, (333, 0), 130);
+            Add_Action (Table.States (714), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (714), 106, (261, 0), 131);
+            Add_Action (Table.States (714), 107, (242, 5), 120);
+            Add_Action (Table.States (714), 108, (242, 7), 34);
+            Add_Action (Table.States (714), 109, (242, 6), 35);
+            Table.States (714).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (714), 120, 132);
+            Add_Goto (Table.States (714), 131, 42);
+            Add_Goto (Table.States (714), 194, 133);
+            Add_Goto (Table.States (714), 195, 896);
+            Add_Goto (Table.States (714), 200, 135);
+            Add_Goto (Table.States (714), 242, 136);
+            Add_Goto (Table.States (714), 261, 137);
+            Add_Goto (Table.States (714), 275, 93);
+            Add_Goto (Table.States (714), 278, 138);
+            Add_Goto (Table.States (714), 285, 139);
+            Add_Goto (Table.States (714), 286, 140);
+            Add_Goto (Table.States (714), 287, 141);
+            Add_Goto (Table.States (714), 288, 142);
+            Add_Goto (Table.States (714), 289, 143);
+            Add_Goto (Table.States (714), 290, 144);
+            Add_Goto (Table.States (714), 296, 98);
+            Add_Goto (Table.States (714), 304, 145);
+            Add_Goto (Table.States (714), 323, 146);
+            Add_Goto (Table.States (714), 324, 147);
+            Add_Goto (Table.States (714), 333, 148);
+            Table.States (714).Kernel := To_Vector ((((329, 4),  19,  1, 
(2147483647, 0),  0), ((329, 5),  19,  0,
+            (195, 1),  0)));
+            Table.States (714).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (715).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (715), 3, (200, 2), 122);
+            Add_Action (Table.States (715), 39, (261, 4), 123);
+            Add_Action (Table.States (715), 40, (200, 3), 124);
+            Add_Action (Table.States (715), 41, (261, 1), 125);
+            Add_Action (Table.States (715), 52, (278, 0), 126);
+            Add_Action (Table.States (715), 53, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (715), 74, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (715), 76, (120, 0), 127);
+            Add_Action (Table.States (715), 77, (120, 5), 128);
+            Add_Action (Table.States (715), 81, (242, 8), 31);
+            Add_Action (Table.States (715), 97, (333, 1), 129);
+            Add_Action (Table.States (715), 98, (333, 0), 130);
+            Add_Action (Table.States (715), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (715), 106, (261, 0), 131);
+            Add_Action (Table.States (715), 107, (242, 5), 120);
+            Add_Action (Table.States (715), 108, (242, 7), 34);
+            Add_Action (Table.States (715), 109, (242, 6), 35);
+            Table.States (715).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (715), 120, 132);
+            Add_Goto (Table.States (715), 131, 42);
+            Add_Goto (Table.States (715), 194, 133);
+            Add_Goto (Table.States (715), 195, 897);
+            Add_Goto (Table.States (715), 200, 135);
+            Add_Goto (Table.States (715), 242, 136);
+            Add_Goto (Table.States (715), 261, 137);
+            Add_Goto (Table.States (715), 275, 93);
+            Add_Goto (Table.States (715), 278, 138);
+            Add_Goto (Table.States (715), 285, 139);
+            Add_Goto (Table.States (715), 286, 140);
+            Add_Goto (Table.States (715), 287, 141);
+            Add_Goto (Table.States (715), 288, 142);
+            Add_Goto (Table.States (715), 289, 143);
+            Add_Goto (Table.States (715), 290, 144);
+            Add_Goto (Table.States (715), 296, 98);
+            Add_Goto (Table.States (715), 304, 145);
+            Add_Goto (Table.States (715), 323, 146);
+            Add_Goto (Table.States (715), 324, 147);
+            Add_Goto (Table.States (715), 333, 148);
+            Table.States (715).Kernel := To_Vector ((0 => ((329, 3),  20,  0, 
(195, 1),  0)));
+            Table.States (715).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (716).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (716), (74, 99), (231, 8),  1, null, 
null);
+            Table.States (716).Kernel := To_Vector ((0 => ((231, 8),  34,  0, 
(231, 8),  1)));
+            Table.States (716).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (231, 8),  1)));
+            Table.States (717).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (717), 34, (231, 0), 898);
+            Add_Action (Table.States (717), 39, Reduce, (112, 3),  1, null, 
null);
+            Add_Conflict (Table.States (717), 39, (113, 1),  1, null, null);
+            Add_Action (Table.States (717), 41, Reduce, (114, 4),  1, null, 
null);
+            Add_Action (Table.States (717), 49, Reduce, (114, 4),  1, null, 
null);
+            Add_Action (Table.States (717), 54, Reduce, (114, 4),  1, null, 
null);
+            Table.States (717).Kernel := To_Vector ((((112, 3),  36,  0, (112, 
3),  1), ((113, 1),  36,  0, (113, 1),
+            1), ((114, 4),  36,  0, (114, 4),  1), ((231, 0),  36,  3, 
(2147483647, 0),  0), ((231, 4),  36,  1,
+            (2147483647, 0),  0)));
+            Table.States (717).Minimal_Complete_Actions := To_Vector 
(((Reduce, (112, 3),  1), (Reduce, (113, 1),  1),
+            (Reduce, (114, 4),  1), (Shift, (231, 0),  34, 898)));
+            Table.States (718).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (718), 3, (200, 2), 122);
+            Add_Action (Table.States (718), 39, (261, 4), 123);
+            Add_Action (Table.States (718), 40, (200, 3), 124);
+            Add_Action (Table.States (718), 41, (261, 1), 125);
+            Add_Action (Table.States (718), 52, (278, 0), 126);
+            Add_Action (Table.States (718), 74, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (718), 76, (120, 0), 127);
+            Add_Action (Table.States (718), 77, (120, 5), 128);
+            Add_Action (Table.States (718), 81, (242, 8), 31);
+            Add_Action (Table.States (718), 97, (333, 1), 129);
+            Add_Action (Table.States (718), 98, (333, 0), 130);
+            Add_Action (Table.States (718), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (718), 106, (261, 0), 131);
+            Add_Action (Table.States (718), 107, (242, 5), 120);
+            Add_Action (Table.States (718), 108, (242, 7), 34);
+            Add_Action (Table.States (718), 109, (242, 6), 35);
+            Table.States (718).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (718), 120, 132);
+            Add_Goto (Table.States (718), 131, 42);
+            Add_Goto (Table.States (718), 194, 133);
+            Add_Goto (Table.States (718), 195, 899);
+            Add_Goto (Table.States (718), 200, 135);
+            Add_Goto (Table.States (718), 242, 136);
+            Add_Goto (Table.States (718), 261, 137);
+            Add_Goto (Table.States (718), 275, 93);
+            Add_Goto (Table.States (718), 278, 138);
+            Add_Goto (Table.States (718), 285, 139);
+            Add_Goto (Table.States (718), 286, 140);
+            Add_Goto (Table.States (718), 287, 141);
+            Add_Goto (Table.States (718), 288, 142);
+            Add_Goto (Table.States (718), 289, 143);
+            Add_Goto (Table.States (718), 290, 144);
+            Add_Goto (Table.States (718), 296, 98);
+            Add_Goto (Table.States (718), 304, 145);
+            Add_Goto (Table.States (718), 323, 146);
+            Add_Goto (Table.States (718), 324, 147);
+            Add_Goto (Table.States (718), 333, 148);
+            Table.States (718).Kernel := To_Vector ((0 => ((329, 2),  38,  0, 
(195, 1),  0)));
+            Table.States (718).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
             Table.States (719).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (719), 34, 906);
-            Table.States (719).Kernel := To_Vector (((229, 66, 3, False), 
(229, 66, 1, False)));
-            Table.States (719).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 906)));
-            Table.States (720).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (720), 105, 907);
-            Add_Action (Table.States (720), 107, 908);
-            Table.States (720).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (720), 181, 909);
-            Add_Goto (Table.States (720), 182, 910);
-            Table.States (720).Kernel := To_Vector ((0 => (184, 76, 2, 
False)));
-            Table.States (720).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 907)));
-            Table.States (721).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (721), 39, 911);
-            Table.States (721).Kernel := To_Vector ((0 => (260, 110, 5, 
False)));
-            Table.States (721).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 911)));
-            Table.States (722).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (722), 39, 912);
-            Table.States (722).Kernel := To_Vector (((163, 111, 5, False), 
(163, 111, 2, False)));
-            Table.States (722).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 912)));
-            Table.States (723).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (723), 41, 713);
-            Add_Action (Table.States (723), 49, 913);
-            Add_Action (Table.States (723), 54, 716);
-            Table.States (723).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (723), 281, 914);
-            Table.States (723).Kernel := To_Vector (((261, 112, 2, False), 
(327, 112, 2, False)));
-            Table.States (723).Minimal_Complete_Actions := To_Vector (((Shift, 
49, 913), (Shift, 41, 713)));
-            Table.States (724).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (724), (74, 97), (327, 8), 1, null, null);
-            Table.States (724).Kernel := To_Vector ((0 => (327, 115, 0, 
False)));
-            Table.States (724).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 327, 1)));
-            Table.States (725).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (725), (74, 97), (327, 6), 1, null, null);
-            Table.States (725).Kernel := To_Vector ((0 => (327, 121, 0, 
False)));
-            Table.States (725).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 327, 1)));
+            Add_Action (Table.States (719), 54, (283, 1), 900);
+            Table.States (719).Kernel := To_Vector ((0 => ((283, 1),  41,  1, 
(2147483647, 0),  0)));
+            Table.States (719).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (283, 1),  54, 900)));
+            Table.States (720).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (720), 34, (231, 2), 901);
+            Table.States (720).Kernel := To_Vector ((((231, 2),  51,  3, 
(2147483647, 0),  0), ((231, 6),  51,  1,
+            (2147483647, 0),  0)));
+            Table.States (720).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (231, 2),  34, 901)));
+            Table.States (721).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (721), 3, (200, 2), 122);
+            Add_Action (Table.States (721), 39, (261, 4), 123);
+            Add_Action (Table.States (721), 40, (200, 3), 124);
+            Add_Action (Table.States (721), 41, (261, 1), 125);
+            Add_Action (Table.States (721), 76, (120, 0), 127);
+            Add_Action (Table.States (721), 77, (120, 5), 128);
+            Add_Action (Table.States (721), 81, (242, 8), 31);
+            Add_Action (Table.States (721), 97, (333, 1), 129);
+            Add_Action (Table.States (721), 98, (333, 0), 130);
+            Add_Action (Table.States (721), 106, (261, 0), 131);
+            Add_Action (Table.States (721), 107, (242, 5), 120);
+            Add_Action (Table.States (721), 108, (242, 7), 34);
+            Add_Action (Table.States (721), 109, (242, 6), 35);
+            Table.States (721).Goto_List.Set_Capacity (11);
+            Add_Goto (Table.States (721), 120, 132);
+            Add_Goto (Table.States (721), 131, 42);
+            Add_Goto (Table.States (721), 200, 135);
+            Add_Goto (Table.States (721), 242, 136);
+            Add_Goto (Table.States (721), 261, 137);
+            Add_Goto (Table.States (721), 275, 93);
+            Add_Goto (Table.States (721), 296, 98);
+            Add_Goto (Table.States (721), 304, 902);
+            Add_Goto (Table.States (721), 323, 146);
+            Add_Goto (Table.States (721), 324, 147);
+            Add_Goto (Table.States (721), 333, 148);
+            Table.States (721).Kernel := To_Vector ((0 => ((329, 1),  53,  3, 
(2147483647, 0),  0)));
+            Table.States (721).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (722).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (722), 15, (330, 0), 903);
+            Add_Action (Table.States (722), 24, Reduce, (153, 1),  0, null, 
null);
+            Add_Action (Table.States (722), 28, (124, 0), 185);
+            Add_Action (Table.States (722), 41, (152, 4), 904);
+            Add_Action (Table.States (722), 107, (222, 1), 166);
+            Table.States (722).Goto_List.Set_Capacity (10);
+            Add_Goto (Table.States (722), 124, 905);
+            Add_Goto (Table.States (722), 130, 41);
+            Add_Goto (Table.States (722), 149, 906);
+            Add_Goto (Table.States (722), 151, 907);
+            Add_Goto (Table.States (722), 152, 908);
+            Add_Goto (Table.States (722), 153, 909);
+            Add_Goto (Table.States (722), 185, 56);
+            Add_Goto (Table.States (722), 222, 910);
+            Add_Goto (Table.States (722), 284, 95);
+            Add_Goto (Table.States (722), 330, 911);
+            Table.States (722).Kernel := To_Vector ((0 => ((283, 0),  54,  2, 
(2147483647, 0),  0)));
+            Table.States (722).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (153, 1),  0)));
+            Table.States (723).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (723), 34, (231, 3), 912);
+            Add_Action (Table.States (723), 39, Reduce, (112, 4),  1, null, 
null);
+            Table.States (723).Kernel := To_Vector ((((112, 4),  64,  0, (112, 
4),  1), ((231, 3),  64,  3,
+            (2147483647, 0),  0), ((231, 7),  64,  1, (2147483647, 0),  0)));
+            Table.States (723).Minimal_Complete_Actions := To_Vector 
(((Reduce, (112, 4),  1), (Shift, (231, 3),  34,
+            912)));
+            Table.States (724).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (724), 36, (114, 2), 913);
+            Add_Action (Table.States (724), 41, Reduce, (114, 3),  1, null, 
null);
+            Add_Action (Table.States (724), 49, Reduce, (114, 3),  1, null, 
null);
+            Add_Action (Table.States (724), 54, Reduce, (114, 3),  1, null, 
null);
+            Add_Action (Table.States (724), 99, (226, 0), 914);
+            Table.States (724).Kernel := To_Vector ((((114, 2),  65,  1, 
(2147483647, 0),  0), ((114, 3),  65,  0,
+            (114, 3),  1), ((226, 0),  65,  1, (2147483647, 0),  0)));
+            Table.States (724).Minimal_Complete_Actions := To_Vector (((Shift, 
(114, 2),  36, 913), (Reduce, (114, 3),
+            1), (Shift, (226, 0),  99, 914)));
+            Table.States (725).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (725), 34, (231, 1), 915);
+            Table.States (725).Kernel := To_Vector ((((231, 1),  66,  3, 
(2147483647, 0),  0), ((231, 5),  66,  1,
+            (2147483647, 0),  0)));
+            Table.States (725).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (231, 1),  34, 915)));
             Table.States (726).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (726), (74, 97), (327, 9), 1, null, null);
-            Table.States (726).Kernel := To_Vector ((0 => (327, 163, 0, 
False)));
-            Table.States (726).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 327, 1)));
-            Table.States (727).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (727), (74, 97), (327, 0), 1, null, null);
-            Table.States (727).Kernel := To_Vector ((0 => (327, 184, 0, 
False)));
-            Table.States (727).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 327, 1)));
-            Table.States (728).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (728), (74, 97), (327, 10), 1, null, 
null);
-            Table.States (728).Kernel := To_Vector ((0 => (327, 229, 0, 
False)));
-            Table.States (728).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 327, 1)));
-            Table.States (729).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (729), 7, 560);
-            Table.States (729).Kernel := To_Vector (((115, 242, 2, False), 
(115, 242, 3, True), (115, 242, 2, False)));
-            Table.States (729).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 7, 560)));
+            Add_Action (Table.States (726), 107, (183, 0), 916);
+            Add_Action (Table.States (726), 109, (183, 1), 917);
+            Table.States (726).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (726), 183, 918);
+            Add_Goto (Table.States (726), 184, 919);
+            Table.States (726).Kernel := To_Vector ((0 => ((186, 0),  76,  2, 
(2147483647, 0),  0)));
+            Table.States (726).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (183, 0),  107, 916)));
+            Table.States (727).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (727), 39, (262, 0), 920);
+            Table.States (727).Kernel := To_Vector ((0 => ((262, 0),  112,  5, 
(2147483647, 0),  0)));
+            Table.States (727).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (262, 0),  39, 920)));
+            Table.States (728).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (728), 39, (165, 0), 921);
+            Table.States (728).Kernel := To_Vector ((((165, 0),  113,  5, 
(2147483647, 0),  0), ((165, 1),  113,  2,
+            (2147483647, 0),  0)));
+            Table.States (728).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (165, 0),  39, 921)));
+            Table.States (729).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (729), 41, (283, 1), 719);
+            Add_Action (Table.States (729), 49, (263, 0), 922);
+            Add_Action (Table.States (729), 54, (283, 0), 722);
+            Table.States (729).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (729), 283, 923);
+            Table.States (729).Kernel := To_Vector ((((263, 0),  114,  2, 
(2147483647, 0),  0), ((329, 7),  114,  2,
+            (2147483647, 0),  0)));
+            Table.States (729).Minimal_Complete_Actions := To_Vector (((Shift, 
(263, 0),  49, 922), (Shift, (283, 1),
+            41, 719)));
             Table.States (730).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (730), 74, 338);
-            Add_Action (Table.States (730), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (730).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (730), 123, 915);
-            Table.States (730).Kernel := To_Vector ((0 => (207, 327, 1, 
False)));
-            Table.States (730).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (731).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (731), (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, 
79, 94, 105, 106, 107, 108), (332, 0), 5,
-            use_clause_0'Access, null);
-            Table.States (731).Kernel := To_Vector ((0 => (332, 97, 0, 
False)));
-            Table.States (731).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 332, 5)));
-            Table.States (732).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (732), 74, 338);
-            Add_Action (Table.States (732), 76, 236);
-            Add_Action (Table.States (732), 85, 238);
-            Add_Action (Table.States (732), 97, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (732), 102, 240);
-            Add_Action (Table.States (732), 103, 241);
-            Table.States (732).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (732), 116, 242);
-            Add_Goto (Table.States (732), 123, 916);
-            Add_Goto (Table.States (732), 323, 243);
-            Table.States (732).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (246, 240, 1, False), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (732).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (733).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (733), 74, 338);
-            Add_Action (Table.States (733), 76, 236);
-            Add_Action (Table.States (733), 85, 238);
-            Add_Action (Table.States (733), 97, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (733), 102, 240);
-            Add_Action (Table.States (733), 103, 241);
-            Table.States (733).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (733), 116, 242);
-            Add_Goto (Table.States (733), 123, 917);
-            Add_Goto (Table.States (733), 323, 243);
-            Table.States (733).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (246, 240, 1, False), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (733).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (734).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (734), (79, 105, 106, 107), (209, 0), 1, 
null, null);
-            Table.States (734).Kernel := To_Vector ((0 => (209, 9, 0, False)));
-            Table.States (734).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 209, 1)));
-            Table.States (735).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (735), (79, 105, 106, 107), (209, 1), 1, 
null, null);
-            Table.States (735).Kernel := To_Vector ((0 => (209, 16, 0, 
False)));
-            Table.States (735).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 209, 1)));
+            Add_Action (Table.States (730), (74, 99), (329, 8),  1, null, 
null);
+            Table.States (730).Kernel := To_Vector ((0 => ((329, 8),  117,  0, 
(329, 8),  1)));
+            Table.States (730).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (329, 8),  1)));
+            Table.States (731).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (731), (74, 99), (329, 6),  1, null, 
null);
+            Table.States (731).Kernel := To_Vector ((0 => ((329, 6),  123,  0, 
(329, 6),  1)));
+            Table.States (731).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (329, 6),  1)));
+            Table.States (732).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (732), (74, 99), (329, 9),  1, null, 
null);
+            Table.States (732).Kernel := To_Vector ((0 => ((329, 9),  165,  0, 
(329, 9),  1)));
+            Table.States (732).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (329, 9),  1)));
+         end Subr_14;
+         procedure Subr_15
+         is begin
+            Table.States (733).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (733), (74, 99), (329, 0),  1, null, 
null);
+            Table.States (733).Kernel := To_Vector ((0 => ((329, 0),  186,  0, 
(329, 0),  1)));
+            Table.States (733).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (329, 0),  1)));
+            Table.States (734).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (734), (74, 99), (329, 10),  1, null, 
null);
+            Table.States (734).Kernel := To_Vector ((0 => ((329, 10),  231,  
0, (329, 10),  1)));
+            Table.States (734).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (329, 10),  1)));
+            Table.States (735).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (735), 7, (117, 0), 564);
+            Table.States (735).Kernel := To_Vector ((((117, 0),  244,  2, 
(2147483647, 0),  0), ((117, 1),  244,  3,
+            (2147483647, 0),  0), ((117, 2),  244,  2, (2147483647, 0),  0)));
+            Table.States (735).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (117, 0),  7, 564)));
             Table.States (736).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (736), (29, 50), (271, 0), 1, null, null);
-            Table.States (736).Kernel := To_Vector ((0 => (271, 51, 0, 
False)));
-            Table.States (736).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 271, 1)));
-            Table.States (737).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (737), 79, 31);
-            Add_Action (Table.States (737), 105, 120);
-            Add_Action (Table.States (737), 106, 34);
-            Add_Action (Table.States (737), 107, 35);
-            Table.States (737).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (737), 129, 42);
-            Add_Goto (Table.States (737), 240, 918);
-            Add_Goto (Table.States (737), 273, 93);
-            Add_Goto (Table.States (737), 294, 98);
-            Table.States (737).Kernel := To_Vector ((0 => (115, 209, 1, 
False)));
-            Table.States (737).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (738).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (738), 29, 919);
-            Add_Action (Table.States (738), 50, 920);
-            Table.States (738).Kernel := To_Vector (((115, 271, 1, False), 
(115, 271, 2, True)));
-            Table.States (738).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 50, 920)));
-            Table.States (738).Minimal_Complete_Actions_Recursive := True;
-            Table.States (739).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (739), 79, 31);
-            Add_Action (Table.States (739), 105, 120);
-            Add_Action (Table.States (739), 106, 34);
-            Add_Action (Table.States (739), 107, 35);
-            Table.States (739).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (739), 129, 42);
-            Add_Goto (Table.States (739), 240, 921);
-            Add_Goto (Table.States (739), 273, 93);
-            Add_Goto (Table.States (739), 294, 98);
-            Table.States (739).Kernel := To_Vector ((0 => (246, 56, 2, 
False)));
-            Table.States (739).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (740).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (740), 97, 922);
-            Table.States (740).Kernel := To_Vector ((0 => (134, 221, 1, 
False)));
-            Table.States (740).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 922)));
-            Table.States (741).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (741), 44, 923);
-            Add_Action (Table.States (741), 79, 31);
-            Add_Action (Table.States (741), 105, 924);
-            Add_Action (Table.States (741), 106, 34);
-            Add_Action (Table.States (741), 107, 35);
-            Table.States (741).Goto_List.Set_Capacity (6);
-            Add_Goto (Table.States (741), 129, 42);
-            Add_Goto (Table.States (741), 185, 925);
-            Add_Goto (Table.States (741), 186, 926);
-            Add_Goto (Table.States (741), 240, 927);
-            Add_Goto (Table.States (741), 273, 93);
-            Add_Goto (Table.States (741), 294, 98);
-            Table.States (741).Kernel := To_Vector (((188, 72, 4, False), 
(188, 72, 2, False)));
-            Table.States (741).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 924)));
+            Add_Action (Table.States (736), 74, (125, 0), 340);
+            Add_Action (Table.States (736), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (736).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (736), 125, 924);
+            Table.States (736).Kernel := To_Vector ((0 => ((209, 0),  329,  1, 
(2147483647, 0),  0)));
+            Table.States (736).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (737).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (737), (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, 
81, 96, 107, 108, 109, 110), (334, 0),  5,
+            use_clause_0'Access, null);
+            Table.States (737).Kernel := To_Vector ((0 => ((334, 0),  99,  0, 
(334, 0),  5)));
+            Table.States (737).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (334, 0),  5)));
+            Table.States (738).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (738), 74, (125, 0), 340);
+            Add_Action (Table.States (738), 76, (118, 0), 237);
+            Add_Action (Table.States (738), 87, (296, 0), 239);
+            Add_Action (Table.States (738), 99, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (738), 104, (325, 0), 241);
+            Add_Action (Table.States (738), 105, (325, 1), 242);
+            Table.States (738).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (738), 118, 243);
+            Add_Goto (Table.States (738), 125, 925);
+            Add_Goto (Table.States (738), 325, 244);
+            Table.States (738).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((248, 2),  242,  1, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (738).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (739).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (739), 74, (125, 0), 340);
+            Add_Action (Table.States (739), 76, (118, 0), 237);
+            Add_Action (Table.States (739), 87, (296, 0), 239);
+            Add_Action (Table.States (739), 99, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (739), 104, (325, 0), 241);
+            Add_Action (Table.States (739), 105, (325, 1), 242);
+            Table.States (739).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (739), 118, 243);
+            Add_Goto (Table.States (739), 125, 926);
+            Add_Goto (Table.States (739), 325, 244);
+            Table.States (739).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((248, 1),  242,  1, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (739).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (740).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (740), (81, 107, 108, 109), (211, 0),  1, 
null, null);
+            Table.States (740).Kernel := To_Vector ((0 => ((211, 0),  9,  0, 
(211, 0),  1)));
+            Table.States (740).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (211, 0),  1)));
+            Table.States (741).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (741), (81, 107, 108, 109), (211, 1),  1, 
null, null);
+            Table.States (741).Kernel := To_Vector ((0 => ((211, 1),  16,  0, 
(211, 1),  1)));
+            Table.States (741).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (211, 1),  1)));
             Table.States (742).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (742), (24, 72), (189, 1), 1, null, null);
-            Table.States (742).Kernel := To_Vector ((0 => (189, 188, 0, 
False)));
-            Table.States (742).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 189, 1)));
-            Table.States (743).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (743), 24, Reduce, (190, 0), 1, null, 
null);
-            Add_Action (Table.States (743), 72, 741);
-            Table.States (743).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (743), 188, 928);
-            Table.States (743).Kernel := To_Vector (((189, 189, 3, True), 
(190, 189, 0, False)));
-            Table.States (743).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 190, 1)));
-            Table.States (744).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (744), (1 =>  24), (219, 0), 3, 
handled_sequence_of_statements_0'Access, null);
-            Table.States (744).Kernel := To_Vector ((0 => (219, 190, 0, 
False)));
-            Table.States (744).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 219, 3)));
-            Table.States (745).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (745), (24, 72), (189, 2), 1, null, null);
-            Table.States (745).Kernel := To_Vector ((0 => (189, 258, 0, 
False)));
-            Table.States (745).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 189, 1)));
+            Add_Action (Table.States (742), (29, 50), (273, 0),  1, null, 
null);
+            Table.States (742).Kernel := To_Vector ((0 => ((273, 0),  51,  0, 
(273, 0),  1)));
+            Table.States (742).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (273, 0),  1)));
+            Table.States (743).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (743), 81, (242, 8), 31);
+            Add_Action (Table.States (743), 107, (242, 5), 120);
+            Add_Action (Table.States (743), 108, (242, 7), 34);
+            Add_Action (Table.States (743), 109, (242, 6), 35);
+            Table.States (743).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (743), 131, 42);
+            Add_Goto (Table.States (743), 242, 927);
+            Add_Goto (Table.States (743), 275, 93);
+            Add_Goto (Table.States (743), 296, 98);
+            Table.States (743).Kernel := To_Vector ((0 => ((117, 2),  211,  1, 
(2147483647, 0),  0)));
+            Table.States (743).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (744).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (744), 29, (117, 1), 928);
+            Add_Action (Table.States (744), 50, (117, 0), 929);
+            Table.States (744).Kernel := To_Vector ((((117, 0),  273,  1, 
(2147483647, 0),  0), ((117, 1),  273,  2,
+            (2147483647, 0),  0)));
+            Table.States (744).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (117, 0),  50, 929)));
+            Table.States (745).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (745), 81, (242, 8), 31);
+            Add_Action (Table.States (745), 107, (242, 5), 120);
+            Add_Action (Table.States (745), 108, (242, 7), 34);
+            Add_Action (Table.States (745), 109, (242, 6), 35);
+            Table.States (745).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (745), 131, 42);
+            Add_Goto (Table.States (745), 242, 930);
+            Add_Goto (Table.States (745), 275, 93);
+            Add_Goto (Table.States (745), 296, 98);
+            Table.States (745).Kernel := To_Vector ((0 => ((248, 0),  56,  2, 
(2147483647, 0),  0)));
+            Table.States (745).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
             Table.States (746).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (746), 24, 929);
-            Table.States (746).Kernel := To_Vector ((0 => (134, 219, 2, 
False)));
-            Table.States (746).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 929)));
-            Table.States (747).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (747), 97, Reduce, (221, 1), 0, null, 
null);
-            Add_Action (Table.States (747), 105, 150);
-            Table.States (747).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (747), 221, 930);
-            Table.States (747).Kernel := To_Vector ((0 => (233, 37, 1, 
False)));
-            Table.States (747).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 0)));
-            Table.States (748).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (748), 37, 931);
-            Table.States (748).Kernel := To_Vector ((0 => (233, 24, 2, 
False)));
-            Table.States (748).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 931)));
-            Table.States (749).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (749), 97, 932);
-            Table.States (749).Kernel := To_Vector ((0 => (158, 193, 1, 
False)));
-            Table.States (749).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 932)));
+            Add_Action (Table.States (746), 99, (136, 1), 931);
+            Table.States (746).Kernel := To_Vector ((0 => ((136, 1),  223,  1, 
(2147483647, 0),  0)));
+            Table.States (746).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (136, 1),  99, 931)));
+            Table.States (747).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (747), 44, (187, 1), 932);
+            Add_Action (Table.States (747), 81, (242, 8), 31);
+            Add_Action (Table.States (747), 107, (190, 0), 933);
+            Add_Action (Table.States (747), 108, (242, 7), 34);
+            Add_Action (Table.States (747), 109, (242, 6), 35);
+            Table.States (747).Goto_List.Set_Capacity (6);
+            Add_Goto (Table.States (747), 131, 42);
+            Add_Goto (Table.States (747), 187, 934);
+            Add_Goto (Table.States (747), 188, 935);
+            Add_Goto (Table.States (747), 242, 936);
+            Add_Goto (Table.States (747), 275, 93);
+            Add_Goto (Table.States (747), 296, 98);
+            Table.States (747).Kernel := To_Vector ((((190, 0),  72,  4, 
(2147483647, 0),  0), ((190, 1),  72,  2,
+            (2147483647, 0),  0)));
+            Table.States (747).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (190, 0),  107, 933)));
+            Table.States (748).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (748), (24, 72), (191, 1),  1, null, 
null);
+            Table.States (748).Kernel := To_Vector ((0 => ((191, 1),  190,  0, 
(191, 1),  1)));
+            Table.States (748).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (191, 1),  1)));
+            Table.States (749).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (749), 24, Reduce, (192, 0),  1, null, 
null);
+            Add_Action (Table.States (749), 72, (190, 0), 747);
+            Table.States (749).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (749), 190, 937);
+            Table.States (749).Kernel := To_Vector ((((191, 0),  191,  3, 
(2147483647, 0),  0), ((192, 0),  191,  0,
+            (192, 0),  1)));
+            Table.States (749).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (192, 0),  1)));
             Table.States (750).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (750), 41, 933);
-            Table.States (750).Kernel := To_Vector (((242, 40, 1, False), 
(315, 40, 6, False), (315, 40, 2, False)));
-            Table.States (750).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 41, 933)));
-            Table.States (751).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (751), 74, 338);
-            Add_Action (Table.States (751), 83, 934);
-            Add_Action (Table.States (751), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (751).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (751), 123, 935);
-            Table.States (751).Kernel := To_Vector (((245, 115, 2, False), 
(245, 115, 1, False)));
-            Table.States (751).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (752).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (752), 74, 338);
-            Add_Action (Table.States (752), 83, 936);
-            Add_Action (Table.States (752), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (752).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (752), 123, 937);
-            Table.States (752).Kernel := To_Vector (((245, 121, 2, False), 
(245, 121, 1, False)));
-            Table.States (752).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (753).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (753), 74, 338);
-            Add_Action (Table.States (753), 83, 938);
-            Add_Action (Table.States (753), 97, Reduce, (123, 1), 0, null, 
null);
+            Add_Action (Table.States (750), (1 =>  24), (221, 0),  3, 
handled_sequence_of_statements_0'Access, null);
+            Table.States (750).Kernel := To_Vector ((0 => ((221, 0),  192,  0, 
(221, 0),  3)));
+            Table.States (750).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (221, 0),  3)));
+            Table.States (751).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (751), (24, 72), (191, 2),  1, null, 
null);
+            Table.States (751).Kernel := To_Vector ((0 => ((191, 2),  260,  0, 
(191, 2),  1)));
+            Table.States (751).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (191, 2),  1)));
+            Table.States (752).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (752), 24, (136, 0), 938);
+            Table.States (752).Kernel := To_Vector ((0 => ((136, 0),  221,  2, 
(2147483647, 0),  0)));
+            Table.States (752).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (136, 0),  24, 938)));
+            Table.States (753).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (753), 99, Reduce, (223, 1),  0, null, 
null);
+            Add_Action (Table.States (753), 107, (223, 0), 151);
             Table.States (753).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (753), 123, 939);
-            Table.States (753).Kernel := To_Vector (((245, 315, 2, False), 
(245, 315, 1, False)));
-            Table.States (753).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (754).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (754), (77, 84), (279, 0), 3, null, null);
-            Table.States (754).Kernel := To_Vector ((0 => (279, 278, 0, 
True)));
-            Table.States (754).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 279, 3)));
-            Table.States (754).Minimal_Complete_Actions_Recursive := True;
+            Add_Goto (Table.States (753), 223, 939);
+            Table.States (753).Kernel := To_Vector ((0 => ((235, 1),  37,  1, 
(2147483647, 0),  0)));
+            Table.States (753).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (223, 1),  0)));
+            Table.States (754).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (754), 37, (235, 0), 940);
+            Table.States (754).Kernel := To_Vector ((0 => ((235, 0),  24,  2, 
(2147483647, 0),  0)));
+            Table.States (754).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (235, 0),  37, 940)));
             Table.States (755).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (755), 77, 940);
-            Table.States (755).Kernel := To_Vector ((0 => (130, 192, 1, 
False)));
-            Table.States (755).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 940)));
+            Add_Action (Table.States (755), 99, (160, 9), 941);
+            Table.States (755).Kernel := To_Vector ((0 => ((160, 9),  195,  1, 
(2147483647, 0),  0)));
+            Table.States (755).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (160, 9),  99, 941)));
             Table.States (756).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (756), 77, 941);
-            Table.States (756).Kernel := To_Vector ((0 => (180, 168, 2, 
False)));
-            Table.States (756).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 941)));
-            Table.States (757).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (757), 97, 942);
-            Table.States (757).Kernel := To_Vector ((0 => (180, 123, 1, 
False)));
-            Table.States (757).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 942)));
-            Table.States (758).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (758), 79, 31);
-            Add_Action (Table.States (758), 105, 120);
-            Add_Action (Table.States (758), 106, 34);
-            Add_Action (Table.States (758), 107, 35);
-            Table.States (758).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (758), 129, 42);
-            Add_Goto (Table.States (758), 240, 943);
-            Add_Goto (Table.States (758), 273, 93);
-            Add_Goto (Table.States (758), 294, 98);
-            Table.States (758).Kernel := To_Vector ((0 => (214, 39, 2, 
False)));
-            Table.States (758).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (759).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (759), 79, 31);
-            Add_Action (Table.States (759), 105, 120);
-            Add_Action (Table.States (759), 106, 34);
-            Add_Action (Table.States (759), 107, 35);
-            Table.States (759).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (759), 129, 42);
-            Add_Goto (Table.States (759), 240, 944);
-            Add_Goto (Table.States (759), 273, 93);
-            Add_Goto (Table.States (759), 294, 98);
-            Table.States (759).Kernel := To_Vector ((0 => (214, 39, 2, 
False)));
-            Table.States (759).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
+            Add_Action (Table.States (756), 41, (244, 0), 942);
+            Table.States (756).Kernel := To_Vector ((((244, 0),  40,  1, 
(2147483647, 0),  0), ((317, 0),  40,  6,
+            (2147483647, 0),  0), ((317, 1),  40,  2, (2147483647, 0),  0)));
+            Table.States (756).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (244, 0),  41, 942)));
+            Table.States (757).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (757), 74, (125, 0), 340);
+            Add_Action (Table.States (757), 85, (247, 1), 943);
+            Add_Action (Table.States (757), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (757).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (757), 125, 944);
+            Table.States (757).Kernel := To_Vector ((((247, 1),  117,  2, 
(2147483647, 0),  0), ((247, 4),  117,  1,
+            (2147483647, 0),  0)));
+            Table.States (757).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (758).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (758), 74, (125, 0), 340);
+            Add_Action (Table.States (758), 85, (247, 2), 945);
+            Add_Action (Table.States (758), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (758).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (758), 125, 946);
+            Table.States (758).Kernel := To_Vector ((((247, 2),  123,  2, 
(2147483647, 0),  0), ((247, 5),  123,  1,
+            (2147483647, 0),  0)));
+            Table.States (758).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (759).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (759), 74, (125, 0), 340);
+            Add_Action (Table.States (759), 85, (247, 0), 947);
+            Add_Action (Table.States (759), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (759).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (759), 125, 948);
+            Table.States (759).Kernel := To_Vector ((((247, 0),  317,  2, 
(2147483647, 0),  0), ((247, 3),  317,  1,
+            (2147483647, 0),  0)));
+            Table.States (759).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
             Table.States (760).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (760), 74, 450);
-            Add_Action (Table.States (760), 77, 945);
-            Table.States (760).Kernel := To_Vector (((118, 193, 4, False), 
(118, 193, 2, False), (257, 193, 1,
-            False)));
-            Table.States (760).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 945)));
+            Add_Action (Table.States (760), (78, 86), (281, 0),  3, null, 
null);
+            Table.States (760).Kernel := To_Vector ((0 => ((281, 0),  280,  0, 
(281, 0),  3)));
+            Table.States (760).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (281, 0),  3)));
             Table.States (761).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (761), 97, 946);
-            Table.States (761).Kernel := To_Vector ((0 => (194, 123, 1, 
False)));
-            Table.States (761).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 946)));
+            Add_Action (Table.States (761), 78, (132, 0), 949);
+            Table.States (761).Kernel := To_Vector ((0 => ((132, 0),  194,  1, 
(2147483647, 0),  0)));
+            Table.States (761).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (132, 0),  78, 949)));
             Table.States (762).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (762), 97, 947);
-            Table.States (762).Kernel := To_Vector ((0 => (244, 123, 1, 
False)));
-            Table.States (762).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 947)));
+            Add_Action (Table.States (762), 78, (182, 0), 950);
+            Table.States (762).Kernel := To_Vector ((0 => ((182, 0),  170,  2, 
(2147483647, 0),  0)));
+            Table.States (762).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (182, 0),  78, 950)));
             Table.States (763).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (763), 97, 948);
-            Table.States (763).Kernel := To_Vector ((0 => (113, 123, 1, 
False)));
-            Table.States (763).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 948)));
-            Table.States (764).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (764), 97, 949);
-            Table.States (764).Kernel := To_Vector ((0 => (309, 123, 1, 
False)));
-            Table.States (764).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 949)));
-            Table.States (765).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (765), 97, 950);
-            Table.States (765).Kernel := To_Vector ((0 => (312, 123, 1, 
False)));
-            Table.States (765).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 950)));
-            Table.States (766).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (766), 13, 951);
-            Table.States (766).Kernel := To_Vector ((0 => (308, 160, 3, 
False)));
-            Table.States (766).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 951)));
+            Add_Action (Table.States (763), 99, (182, 1), 951);
+            Table.States (763).Kernel := To_Vector ((0 => ((182, 1),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (763).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (182, 1),  99, 951)));
+            Table.States (764).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (764), 81, (242, 8), 31);
+            Add_Action (Table.States (764), 107, (242, 5), 120);
+            Add_Action (Table.States (764), 108, (242, 7), 34);
+            Add_Action (Table.States (764), 109, (242, 6), 35);
+            Table.States (764).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (764), 131, 42);
+            Add_Goto (Table.States (764), 242, 952);
+            Add_Goto (Table.States (764), 275, 93);
+            Add_Goto (Table.States (764), 296, 98);
+            Table.States (764).Kernel := To_Vector ((0 => ((216, 2),  39,  2, 
(2147483647, 0),  0)));
+            Table.States (764).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (765).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (765), 81, (242, 8), 31);
+            Add_Action (Table.States (765), 107, (242, 5), 120);
+            Add_Action (Table.States (765), 108, (242, 7), 34);
+            Add_Action (Table.States (765), 109, (242, 6), 35);
+            Table.States (765).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (765), 131, 42);
+            Add_Goto (Table.States (765), 242, 953);
+            Add_Goto (Table.States (765), 275, 93);
+            Add_Goto (Table.States (765), 296, 98);
+            Table.States (765).Kernel := To_Vector ((0 => ((216, 1),  39,  2, 
(2147483647, 0),  0)));
+            Table.States (765).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (766).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (766), 74, (120, 2), 453);
+            Add_Action (Table.States (766), 78, (259, 0), 954);
+            Table.States (766).Kernel := To_Vector ((((120, 2),  195,  4, 
(2147483647, 0),  0), ((120, 3),  195,  2,
+            (2147483647, 0),  0), ((259, 0),  195,  1, (2147483647, 0),  0)));
+            Table.States (766).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (259, 0),  78, 954)));
             Table.States (767).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (767), 24, 952);
-            Table.States (767).Kernel := To_Vector ((0 => (114, 219, 2, 
False)));
-            Table.States (767).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 952)));
-            Table.States (768).Action_List.Set_Capacity (16);
-            Add_Action (Table.States (768), 3, 122);
-            Add_Action (Table.States (768), 39, 123);
-            Add_Action (Table.States (768), 40, 262);
-            Add_Action (Table.States (768), 41, 125);
-            Add_Action (Table.States (768), 44, 264);
-            Add_Action (Table.States (768), 52, 126);
-            Add_Action (Table.States (768), 76, 127);
-            Add_Action (Table.States (768), 79, 31);
-            Add_Action (Table.States (768), 80, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (768), 88, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (768), 95, 128);
-            Add_Action (Table.States (768), 96, 129);
-            Add_Action (Table.States (768), 104, 130);
-            Add_Action (Table.States (768), 105, 120);
-            Add_Action (Table.States (768), 106, 34);
-            Add_Action (Table.States (768), 107, 35);
-            Table.States (768).Goto_List.Set_Capacity (22);
-            Add_Goto (Table.States (768), 118, 131);
-            Add_Goto (Table.States (768), 129, 42);
-            Add_Goto (Table.States (768), 166, 270);
-            Add_Goto (Table.States (768), 167, 953);
-            Add_Goto (Table.States (768), 192, 606);
-            Add_Goto (Table.States (768), 198, 134);
-            Add_Goto (Table.States (768), 240, 275);
-            Add_Goto (Table.States (768), 259, 136);
-            Add_Goto (Table.States (768), 273, 93);
-            Add_Goto (Table.States (768), 276, 137);
-            Add_Goto (Table.States (768), 278, 277);
-            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), 288, 143);
-            Add_Goto (Table.States (768), 294, 98);
-            Add_Goto (Table.States (768), 302, 278);
-            Add_Goto (Table.States (768), 321, 145);
-            Add_Goto (Table.States (768), 322, 146);
-            Add_Goto (Table.States (768), 331, 147);
-            Table.States (768).Kernel := To_Vector ((0 => (138, 72, 1, 
False)));
-            Table.States (768).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 167, 0)));
-            Table.States (769).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (769), (77, 84), (139, 1), 1, null, null);
-            Table.States (769).Kernel := To_Vector ((0 => (139, 138, 0, 
False)));
-            Table.States (769).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 139, 1)));
-            Table.States (770).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (770), 77, Reduce, (137, 0), 4, 
case_expression_0'Access, null);
-            Add_Action (Table.States (770), 84, 954);
-            Table.States (770).Kernel := To_Vector (((137, 139, 0, False), 
(139, 139, 3, True)));
-            Table.States (770).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 137, 4)));
-            Table.States (771).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (771), 80, 447);
-            Add_Action (Table.States (771), 88, 955);
-            Table.States (771).Kernel := To_Vector (((125, 167, 2, False), 
(167, 167, 2, True)));
-            Table.States (771).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 88, 955)));
-            Table.States (772).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (772), 3, 122);
-            Add_Action (Table.States (772), 39, 123);
-            Add_Action (Table.States (772), 40, 124);
-            Add_Action (Table.States (772), 41, 125);
-            Add_Action (Table.States (772), 52, 126);
-            Add_Action (Table.States (772), 76, 127);
-            Add_Action (Table.States (772), 77, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (772), 79, 31);
-            Add_Action (Table.States (772), 95, 128);
-            Add_Action (Table.States (772), 96, 129);
-            Add_Action (Table.States (772), 104, 130);
-            Add_Action (Table.States (772), 105, 120);
-            Add_Action (Table.States (772), 106, 34);
-            Add_Action (Table.States (772), 107, 35);
-            Table.States (772).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (772), 118, 131);
-            Add_Goto (Table.States (772), 129, 42);
-            Add_Goto (Table.States (772), 192, 132);
-            Add_Goto (Table.States (772), 193, 956);
-            Add_Goto (Table.States (772), 198, 134);
-            Add_Goto (Table.States (772), 240, 135);
-            Add_Goto (Table.States (772), 259, 136);
-            Add_Goto (Table.States (772), 273, 93);
-            Add_Goto (Table.States (772), 276, 137);
-            Add_Goto (Table.States (772), 283, 138);
-            Add_Goto (Table.States (772), 284, 139);
-            Add_Goto (Table.States (772), 285, 140);
-            Add_Goto (Table.States (772), 286, 141);
-            Add_Goto (Table.States (772), 287, 142);
-            Add_Goto (Table.States (772), 288, 143);
-            Add_Goto (Table.States (772), 294, 98);
-            Add_Goto (Table.States (772), 302, 144);
-            Add_Goto (Table.States (772), 321, 145);
-            Add_Goto (Table.States (772), 322, 146);
-            Add_Goto (Table.States (772), 331, 147);
-            Table.States (772).Kernel := To_Vector ((0 => (274, 88, 0, 
False)));
-            Table.States (772).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (773).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (773), 22, 957);
-            Add_Action (Table.States (773), 23, 958);
-            Add_Action (Table.States (773), 77, Reduce, (222, 3), 4, 
if_expression_3'Access, null);
-            Table.States (773).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (773), 173, 959);
-            Add_Goto (Table.States (773), 174, 960);
-            Table.States (773).Kernel := To_Vector (((222, 193, 3, False), 
(222, 193, 1, False), (222, 193, 2, False),
-            (222, 193, 0, False)));
-            Table.States (773).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 222, 4)));
-            Table.States (774).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (774), 77, 961);
-            Add_Action (Table.States (774), 84, 445);
-            Table.States (774).Kernel := To_Vector (((118, 126, 1, False), 
(126, 126, 1, True)));
-            Table.States (774).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 961)));
-            Table.States (775).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (775), 77, 962);
-            Table.States (775).Kernel := To_Vector ((0 => (118, 54, 1, 
False)));
-            Table.States (775).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 962)));
-            Table.States (776).Action_List.Set_Capacity (64);
-            Add_Action (Table.States (776), (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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (118, 1), 5,
-            aggregate_1'Access, null);
-            Table.States (776).Kernel := To_Vector ((0 => (118, 77, 0, 
False)));
-            Table.States (776).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 118, 5)));
-            Table.States (777).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (777), 3, 122);
-            Add_Action (Table.States (777), 39, 123);
-            Add_Action (Table.States (777), 40, 124);
-            Add_Action (Table.States (777), 41, 125);
-            Add_Action (Table.States (777), 52, 126);
-            Add_Action (Table.States (777), 76, 127);
-            Add_Action (Table.States (777), 77, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (777), 79, 31);
-            Add_Action (Table.States (777), 95, 128);
-            Add_Action (Table.States (777), 96, 129);
-            Add_Action (Table.States (777), 104, 130);
-            Add_Action (Table.States (777), 105, 120);
-            Add_Action (Table.States (777), 106, 34);
-            Add_Action (Table.States (777), 107, 35);
-            Table.States (777).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (777), 118, 131);
-            Add_Goto (Table.States (777), 129, 42);
-            Add_Goto (Table.States (777), 192, 132);
-            Add_Goto (Table.States (777), 193, 963);
-            Add_Goto (Table.States (777), 198, 134);
-            Add_Goto (Table.States (777), 240, 135);
-            Add_Goto (Table.States (777), 259, 136);
-            Add_Goto (Table.States (777), 273, 93);
-            Add_Goto (Table.States (777), 276, 137);
-            Add_Goto (Table.States (777), 283, 138);
-            Add_Goto (Table.States (777), 284, 139);
-            Add_Goto (Table.States (777), 285, 140);
-            Add_Goto (Table.States (777), 286, 141);
-            Add_Goto (Table.States (777), 287, 142);
-            Add_Goto (Table.States (777), 288, 143);
-            Add_Goto (Table.States (777), 294, 98);
-            Add_Goto (Table.States (777), 302, 144);
-            Add_Goto (Table.States (777), 321, 145);
-            Add_Goto (Table.States (777), 322, 146);
-            Add_Goto (Table.States (777), 331, 147);
-            Table.States (777).Kernel := To_Vector ((0 => (278, 76, 1, 
False)));
-            Table.States (777).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (778).Action_List.Set_Capacity (25);
-            Add_Action (Table.States (778), 4, 1);
-            Add_Action (Table.States (778), 5, 2);
-            Add_Action (Table.States (778), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (778), 15, 3);
-            Add_Action (Table.States (778), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (778), 18, 4);
-            Add_Action (Table.States (778), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (778), 27, 5);
-            Add_Action (Table.States (778), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (778), 31, 9);
-            Add_Action (Table.States (778), 32, 10);
-            Add_Action (Table.States (778), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (778), 41, 13);
-            Add_Action (Table.States (778), 48, 16);
-            Add_Action (Table.States (778), 52, 20);
-            Add_Action (Table.States (778), 57, 21);
-            Add_Action (Table.States (778), 58, 22);
-            Add_Action (Table.States (778), 61, 24);
-            Add_Action (Table.States (778), 72, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (778), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (778), 79, 31);
-            Add_Action (Table.States (778), 94, 32);
-            Add_Action (Table.States (778), 105, 361);
-            Add_Action (Table.States (778), 106, 34);
-            Add_Action (Table.States (778), 107, 35);
-            Table.States (778).Goto_List.Set_Capacity (31);
-            Add_Goto (Table.States (778), 114, 37);
-            Add_Goto (Table.States (778), 124, 39);
-            Add_Goto (Table.States (778), 127, 40);
-            Add_Goto (Table.States (778), 129, 42);
-            Add_Goto (Table.States (778), 132, 43);
-            Add_Goto (Table.States (778), 133, 44);
-            Add_Goto (Table.States (778), 134, 45);
-            Add_Goto (Table.States (778), 140, 48);
-            Add_Goto (Table.States (778), 152, 51);
-            Add_Goto (Table.States (778), 153, 52);
-            Add_Goto (Table.States (778), 162, 54);
-            Add_Goto (Table.States (778), 191, 58);
-            Add_Goto (Table.States (778), 197, 60);
-            Add_Goto (Table.States (778), 218, 69);
-            Add_Goto (Table.States (778), 223, 71);
-            Add_Goto (Table.States (778), 233, 73);
-            Add_Goto (Table.States (778), 240, 74);
-            Add_Goto (Table.States (778), 258, 84);
-            Add_Goto (Table.States (778), 262, 87);
-            Add_Goto (Table.States (778), 273, 93);
-            Add_Goto (Table.States (778), 277, 94);
-            Add_Goto (Table.States (778), 291, 97);
-            Add_Goto (Table.States (778), 294, 98);
-            Add_Goto (Table.States (778), 295, 99);
-            Add_Goto (Table.States (778), 299, 100);
-            Add_Goto (Table.States (778), 300, 362);
-            Add_Goto (Table.States (778), 301, 964);
-            Add_Goto (Table.States (778), 303, 101);
-            Add_Goto (Table.States (778), 304, 102);
-            Add_Goto (Table.States (778), 307, 364);
-            Add_Goto (Table.States (778), 324, 115);
-            Table.States (778).Kernel := To_Vector ((0 => (141, 88, 0, 
False)));
-            Table.States (778).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 0)));
-            Table.States (779).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (779), 97, 965);
-            Table.States (779).Kernel := To_Vector ((0 => (140, 15, 1, 
False)));
-            Table.States (779).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 965)));
-            Table.States (780).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (780), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 77, 80, 84, 88, 97), (234,
-            0), 3, null, null);
-            Table.States (780).Kernel := To_Vector ((0 => (234, 235, 0, 
True)));
-            Table.States (780).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 234, 3)));
-            Table.States (780).Minimal_Complete_Actions_Recursive := True;
-         end Subr_14;
-         procedure Subr_15
-         is begin
+            Add_Action (Table.States (767), 99, (196, 0), 955);
+            Table.States (767).Kernel := To_Vector ((0 => ((196, 0),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (767).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (196, 0),  99, 955)));
+            Table.States (768).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (768), 99, (246, 0), 956);
+            Table.States (768).Kernel := To_Vector ((0 => ((246, 0),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (768).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (246, 0),  99, 956)));
+            Table.States (769).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (769), 99, (115, 0), 957);
+            Table.States (769).Kernel := To_Vector ((0 => ((115, 0),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (769).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (115, 0),  99, 957)));
+            Table.States (770).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (770), 99, (311, 0), 958);
+            Table.States (770).Kernel := To_Vector ((0 => ((311, 0),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (770).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (311, 0),  99, 958)));
+            Table.States (771).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (771), 99, (314, 0), 959);
+            Table.States (771).Kernel := To_Vector ((0 => ((314, 0),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (771).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (314, 0),  99, 959)));
+            Table.States (772).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (772), 13, (310, 0), 960);
+            Table.States (772).Kernel := To_Vector ((0 => ((310, 0),  162,  3, 
(2147483647, 0),  0)));
+            Table.States (772).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (310, 0),  13, 960)));
+            Table.States (773).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (773), 24, (116, 0), 961);
+            Table.States (773).Kernel := To_Vector ((0 => ((116, 0),  221,  2, 
(2147483647, 0),  0)));
+            Table.States (773).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (116, 0),  24, 961)));
+            Table.States (774).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (774), 3, (200, 2), 122);
+            Add_Action (Table.States (774), 39, (261, 4), 123);
+            Add_Action (Table.States (774), 40, (168, 1), 263);
+            Add_Action (Table.States (774), 41, (261, 1), 125);
+            Add_Action (Table.States (774), 44, (168, 3), 265);
+            Add_Action (Table.States (774), 52, (278, 0), 126);
+            Add_Action (Table.States (774), 76, (120, 0), 127);
+            Add_Action (Table.States (774), 77, (120, 5), 128);
+            Add_Action (Table.States (774), 81, (242, 8), 31);
+            Add_Action (Table.States (774), 82, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (774), 90, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (774), 97, (333, 1), 129);
+            Add_Action (Table.States (774), 98, (333, 0), 130);
+            Add_Action (Table.States (774), 106, (261, 0), 131);
+            Add_Action (Table.States (774), 107, (242, 5), 120);
+            Add_Action (Table.States (774), 108, (242, 7), 34);
+            Add_Action (Table.States (774), 109, (242, 6), 35);
+            Table.States (774).Goto_List.Set_Capacity (22);
+            Add_Goto (Table.States (774), 120, 132);
+            Add_Goto (Table.States (774), 131, 42);
+            Add_Goto (Table.States (774), 168, 271);
+            Add_Goto (Table.States (774), 169, 962);
+            Add_Goto (Table.States (774), 194, 611);
+            Add_Goto (Table.States (774), 200, 135);
+            Add_Goto (Table.States (774), 242, 276);
+            Add_Goto (Table.States (774), 261, 137);
+            Add_Goto (Table.States (774), 275, 93);
+            Add_Goto (Table.States (774), 278, 138);
+            Add_Goto (Table.States (774), 280, 278);
+            Add_Goto (Table.States (774), 285, 139);
+            Add_Goto (Table.States (774), 286, 140);
+            Add_Goto (Table.States (774), 287, 141);
+            Add_Goto (Table.States (774), 288, 142);
+            Add_Goto (Table.States (774), 289, 143);
+            Add_Goto (Table.States (774), 290, 144);
+            Add_Goto (Table.States (774), 296, 98);
+            Add_Goto (Table.States (774), 304, 279);
+            Add_Goto (Table.States (774), 323, 146);
+            Add_Goto (Table.States (774), 324, 147);
+            Add_Goto (Table.States (774), 333, 148);
+            Table.States (774).Kernel := To_Vector ((0 => ((140, 0),  72,  1, 
(2147483647, 0),  0)));
+            Table.States (774).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (169, 2),  0)));
+            Table.States (775).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (775), (78, 86), (141, 1),  1, null, 
null);
+            Table.States (775).Kernel := To_Vector ((0 => ((141, 1),  140,  0, 
(141, 1),  1)));
+            Table.States (775).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (141, 1),  1)));
+            Table.States (776).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (776), 78, Reduce, (139, 0),  4, 
case_expression_0'Access, null);
+            Add_Action (Table.States (776), 86, (141, 0), 963);
+            Table.States (776).Kernel := To_Vector ((((139, 0),  141,  0, 
(139, 0),  4), ((141, 0),  141,  3,
+            (2147483647, 0),  0)));
+            Table.States (776).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (139, 0),  4)));
+            Table.States (777).Action_List.Set_Capacity (9);
+            Add_Action (Table.States (777), 39, (261, 4), 123);
+            Add_Action (Table.States (777), 41, (168, 1), 964);
+            Add_Action (Table.States (777), 76, (120, 0), 127);
+            Add_Action (Table.States (777), 77, (120, 5), 128);
+            Add_Action (Table.States (777), 81, (242, 8), 31);
+            Add_Action (Table.States (777), 106, (261, 0), 131);
+            Add_Action (Table.States (777), 107, (242, 5), 120);
+            Add_Action (Table.States (777), 108, (242, 7), 34);
+            Add_Action (Table.States (777), 109, (242, 6), 35);
+            Table.States (777).Goto_List.Set_Capacity (6);
+            Add_Goto (Table.States (777), 120, 132);
+            Add_Goto (Table.States (777), 131, 42);
+            Add_Goto (Table.States (777), 242, 136);
+            Add_Goto (Table.States (777), 261, 258);
+            Add_Goto (Table.States (777), 275, 93);
+            Add_Goto (Table.States (777), 296, 98);
+            Table.States (777).Kernel := To_Vector ((((168, 1),  40,  2, 
(2147483647, 0),  0), ((200, 3),  40,  1,
+            (2147483647, 0),  0), ((317, 0),  40,  6, (2147483647, 0),  0), 
((317, 1),  40,  2, (2147483647, 0),  0)));
+            Table.States (777).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (778).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (778), 82, (169, 0), 450);
+            Add_Action (Table.States (778), 90, (127, 6), 965);
+            Table.States (778).Kernel := To_Vector ((((127, 6),  169,  2, 
(2147483647, 0),  0), ((169, 0),  169,  2,
+            (2147483647, 0),  0)));
+            Table.States (778).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (127, 6),  90, 965)));
+            Table.States (779).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (779), 82, Reduce, (168, 2),  1, null, 
null);
+            Add_Action (Table.States (779), 90, Reduce, (168, 2),  1, null, 
null);
+            Add_Conflict (Table.States (779), 90, (170, 1),  1, null, null);
+            Table.States (779).Kernel := To_Vector ((((168, 2),  280,  0, 
(168, 2),  1), ((170, 1),  280,  0, (170, 1),
+             1)));
+            Table.States (779).Minimal_Complete_Actions := To_Vector 
(((Reduce, (168, 2),  1), (Reduce, (170, 1),
+            1)));
+            Table.States (780).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (780), (35, 78, 79, 86, 99), (127, 7),  
4, association_opt_7'Access, null);
+            Table.States (780).Kernel := To_Vector ((0 => ((127, 7),  194,  0, 
(127, 7),  4)));
+            Table.States (780).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (127, 7),  4)));
             Table.States (781).Action_List.Set_Capacity (15);
-            Add_Action (Table.States (781), 10, Reduce, (315, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (781), 21, Reduce, (315, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (781), 37, Reduce, (315, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (781), 42, Reduce, (315, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (781), 53, 626);
-            Add_Action (Table.States (781), 74, Reduce, (315, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (781), 76, 627);
-            Add_Action (Table.States (781), 77, Reduce, (315, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (781), 83, Reduce, (315, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (781), 84, Reduce, (315, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (781), 85, 238);
-            Add_Action (Table.States (781), 88, Reduce, (315, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (781), 97, Reduce, (315, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (781), 102, 240);
-            Add_Action (Table.States (781), 103, 241);
-            Table.States (781).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (781), 116, 242);
-            Add_Goto (Table.States (781), 156, 966);
-            Add_Goto (Table.States (781), 225, 629);
-            Add_Goto (Table.States (781), 323, 243);
-            Table.States (781).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (273, 240, 3, True), (294, 240, 2, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (315, 240, 4, False), (315, 240, 0, False)));
-            Table.States (781).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 315, 3)));
-            Table.States (782).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (782), (10, 21, 37, 42, 74, 77, 83, 84, 
88, 97), (156, 0), 2, null, null);
-            Table.States (782).Kernel := To_Vector ((0 => (156, 278, 0, 
False)));
-            Table.States (782).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 156, 2)));
-            Table.States (783).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (783), 39, 123);
-            Add_Action (Table.States (783), 41, 967);
-            Add_Action (Table.States (783), 76, 127);
-            Add_Action (Table.States (783), 79, 31);
-            Add_Action (Table.States (783), 104, 130);
-            Add_Action (Table.States (783), 105, 120);
-            Add_Action (Table.States (783), 106, 34);
-            Add_Action (Table.States (783), 107, 35);
-            Table.States (783).Goto_List.Set_Capacity (6);
-            Add_Goto (Table.States (783), 118, 131);
-            Add_Goto (Table.States (783), 129, 42);
-            Add_Goto (Table.States (783), 240, 135);
-            Add_Goto (Table.States (783), 259, 257);
-            Add_Goto (Table.States (783), 273, 93);
-            Add_Goto (Table.States (783), 294, 98);
-            Table.States (783).Kernel := To_Vector (((166, 40, 2, False), 
(198, 40, 1, False), (315, 40, 6, False),
-            (315, 40, 2, False)));
-            Table.States (783).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (784).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (784), (77, 84), (169, 1), 1, null, null);
-            Table.States (784).Kernel := To_Vector ((0 => (169, 168, 0, 
False)));
-            Table.States (784).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 169, 1)));
-            Table.States (785).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (785), 77, 968);
-            Add_Action (Table.States (785), 84, 969);
-            Table.States (785).Kernel := To_Vector (((169, 169, 2, True), 
(225, 169, 1, False)));
-            Table.States (785).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 968)));
-            Table.States (786).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (786), 77, Reduce, (168, 1), 1, null, 
null);
-            Add_Conflict (Table.States (786), 77, (279, 1), 1, null, null);
-            Add_Action (Table.States (786), 80, Reduce, (166, 2), 1, null, 
null);
-            Add_Action (Table.States (786), 84, Reduce, (168, 1), 1, null, 
null);
-            Add_Conflict (Table.States (786), 84, (279, 1), 1, null, null);
-            Add_Action (Table.States (786), 88, Reduce, (166, 2), 1, null, 
null);
-            Table.States (786).Kernel := To_Vector (((166, 278, 0, False), 
(168, 278, 0, False), (279, 278, 0,
-            False)));
-            Table.States (786).Minimal_Complete_Actions := To_Vector 
(((Reduce, 166, 1), (Reduce, 168, 1), (Reduce,
-            279, 1)));
-            Table.States (787).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (787), 79, 31);
-            Add_Action (Table.States (787), 105, 120);
-            Add_Action (Table.States (787), 106, 34);
-            Add_Action (Table.States (787), 107, 35);
-            Table.States (787).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (787), 129, 42);
-            Add_Goto (Table.States (787), 240, 970);
-            Add_Goto (Table.States (787), 273, 93);
-            Add_Goto (Table.States (787), 294, 98);
-            Table.States (787).Kernel := To_Vector ((0 => (231, 59, 1, 
False)));
-            Table.States (787).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (788).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (788), 37, Reduce, (231, 1), 5, null, 
null);
-            Add_Action (Table.States (788), 76, 236);
-            Add_Action (Table.States (788), 85, 238);
-            Add_Action (Table.States (788), 88, Reduce, (231, 1), 5, null, 
null);
-            Add_Action (Table.States (788), 102, 240);
-            Add_Action (Table.States (788), 103, 241);
-            Table.States (788).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (788), 116, 242);
-            Add_Goto (Table.States (788), 323, 243);
-            Table.States (788).Kernel := To_Vector (((129, 240, 2, True), 
(231, 240, 0, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (788).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 231, 5)));
-            Table.States (789).Action_List.Set_Capacity (42);
-            Add_Action (Table.States (789), (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, 79, 94, 105, 106, 107, 108), (128, 0),
-            6, at_clause_0'Access, null);
-            Table.States (789).Kernel := To_Vector ((0 => (128, 97, 0, 
False)));
-            Table.States (789).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 128, 6)));
-            Table.States (790).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (790), 3, 122);
-            Add_Action (Table.States (790), 39, 123);
-            Add_Action (Table.States (790), 40, 124);
-            Add_Action (Table.States (790), 41, 125);
-            Add_Action (Table.States (790), 52, 126);
-            Add_Action (Table.States (790), 76, 127);
-            Add_Action (Table.States (790), 79, 31);
-            Add_Action (Table.States (790), 95, 128);
-            Add_Action (Table.States (790), 96, 129);
-            Add_Action (Table.States (790), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (790), 104, 130);
-            Add_Action (Table.States (790), 105, 120);
-            Add_Action (Table.States (790), 106, 34);
-            Add_Action (Table.States (790), 107, 35);
-            Table.States (790).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (790), 118, 131);
-            Add_Goto (Table.States (790), 129, 42);
-            Add_Goto (Table.States (790), 192, 132);
-            Add_Goto (Table.States (790), 193, 971);
-            Add_Goto (Table.States (790), 198, 134);
-            Add_Goto (Table.States (790), 240, 135);
-            Add_Goto (Table.States (790), 259, 136);
-            Add_Goto (Table.States (790), 273, 93);
-            Add_Goto (Table.States (790), 276, 137);
-            Add_Goto (Table.States (790), 283, 138);
-            Add_Goto (Table.States (790), 284, 139);
-            Add_Goto (Table.States (790), 285, 140);
-            Add_Goto (Table.States (790), 286, 141);
-            Add_Goto (Table.States (790), 287, 142);
-            Add_Goto (Table.States (790), 288, 143);
-            Add_Goto (Table.States (790), 294, 98);
-            Add_Goto (Table.States (790), 302, 144);
-            Add_Goto (Table.States (790), 321, 145);
-            Add_Goto (Table.States (790), 322, 146);
-            Add_Goto (Table.States (790), 331, 147);
-            Table.States (790).Kernel := To_Vector ((0 => (236, 38, 1, 
False)));
-            Table.States (790).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (791).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (791), 12, 972);
-            Table.States (791).Kernel := To_Vector ((0 => (145, 105, 7, 
False)));
-            Table.States (791).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 12, 972)));
-            Table.States (792).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (792), (24, 105), (146, 1), 1, null, 
null);
-            Table.States (792).Kernel := To_Vector ((0 => (146, 145, 0, 
False)));
-            Table.States (792).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 146, 1)));
+            Add_Action (Table.States (781), 3, (200, 2), 122);
+            Add_Action (Table.States (781), 39, (261, 4), 123);
+            Add_Action (Table.States (781), 40, (200, 3), 124);
+            Add_Action (Table.States (781), 41, (261, 1), 125);
+            Add_Action (Table.States (781), 52, (278, 0), 126);
+            Add_Action (Table.States (781), 76, (120, 0), 127);
+            Add_Action (Table.States (781), 77, (120, 5), 128);
+            Add_Action (Table.States (781), 78, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (781), 81, (242, 8), 31);
+            Add_Action (Table.States (781), 97, (333, 1), 129);
+            Add_Action (Table.States (781), 98, (333, 0), 130);
+            Add_Action (Table.States (781), 106, (261, 0), 131);
+            Add_Action (Table.States (781), 107, (242, 5), 120);
+            Add_Action (Table.States (781), 108, (242, 7), 34);
+            Add_Action (Table.States (781), 109, (242, 6), 35);
+            Table.States (781).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (781), 120, 132);
+            Add_Goto (Table.States (781), 131, 42);
+            Add_Goto (Table.States (781), 194, 133);
+            Add_Goto (Table.States (781), 195, 966);
+            Add_Goto (Table.States (781), 200, 135);
+            Add_Goto (Table.States (781), 242, 136);
+            Add_Goto (Table.States (781), 261, 137);
+            Add_Goto (Table.States (781), 275, 93);
+            Add_Goto (Table.States (781), 278, 138);
+            Add_Goto (Table.States (781), 285, 139);
+            Add_Goto (Table.States (781), 286, 140);
+            Add_Goto (Table.States (781), 287, 141);
+            Add_Goto (Table.States (781), 288, 142);
+            Add_Goto (Table.States (781), 289, 143);
+            Add_Goto (Table.States (781), 290, 144);
+            Add_Goto (Table.States (781), 296, 98);
+            Add_Goto (Table.States (781), 304, 145);
+            Add_Goto (Table.States (781), 323, 146);
+            Add_Goto (Table.States (781), 324, 147);
+            Add_Goto (Table.States (781), 333, 148);
+            Table.States (781).Kernel := To_Vector ((0 => ((276, 0),  90,  0, 
(195, 1),  0)));
+            Table.States (781).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (782).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (782), 22, (224, 1), 967);
+            Add_Action (Table.States (782), 23, (175, 0), 968);
+            Add_Action (Table.States (782), 78, Reduce, (224, 3),  4, 
if_expression_3'Access, null);
+            Table.States (782).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (782), 175, 969);
+            Add_Goto (Table.States (782), 176, 970);
+            Table.States (782).Kernel := To_Vector ((((224, 0),  195,  3, 
(2147483647, 0),  0), ((224, 1),  195,  1,
+            (2147483647, 0),  0), ((224, 2),  195,  2, (2147483647, 0),  0), 
((224, 3),  195,  0, (224, 3),  4)));
+            Table.States (782).Minimal_Complete_Actions := To_Vector (((Shift, 
(224, 1),  22, 967), (Reduce, (224, 3),
+            4)));
+            Table.States (783).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (783), 78, (120, 4), 971);
+            Add_Action (Table.States (783), 86, (128, 0), 448);
+            Table.States (783).Kernel := To_Vector ((((120, 4),  128,  1, 
(2147483647, 0),  0), ((128, 0),  128,  1,
+            (2147483647, 0),  0)));
+            Table.States (783).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (120, 4),  78, 971)));
+            Table.States (784).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (784), 78, (120, 2), 972);
+            Table.States (784).Kernel := To_Vector ((0 => ((120, 2),  54,  1, 
(2147483647, 0),  0)));
+            Table.States (784).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (120, 2),  78, 972)));
+            Table.States (785).Action_List.Set_Capacity (65);
+            Add_Action (Table.States (785), (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, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (120, 3),  5,
+            aggregate_3'Access, null);
+            Table.States (785).Kernel := To_Vector ((0 => ((120, 3),  78,  0, 
(120, 3),  5)));
+            Table.States (785).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (120, 3),  5)));
+            Table.States (786).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (786), 3, (200, 2), 122);
+            Add_Action (Table.States (786), 39, (261, 4), 123);
+            Add_Action (Table.States (786), 40, (200, 3), 124);
+            Add_Action (Table.States (786), 41, (261, 1), 125);
+            Add_Action (Table.States (786), 52, (278, 0), 126);
+            Add_Action (Table.States (786), 76, (120, 0), 127);
+            Add_Action (Table.States (786), 77, (120, 5), 128);
+            Add_Action (Table.States (786), 78, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (786), 81, (242, 8), 31);
+            Add_Action (Table.States (786), 97, (333, 1), 129);
+            Add_Action (Table.States (786), 98, (333, 0), 130);
+            Add_Action (Table.States (786), 106, (261, 0), 131);
+            Add_Action (Table.States (786), 107, (242, 5), 120);
+            Add_Action (Table.States (786), 108, (242, 7), 34);
+            Add_Action (Table.States (786), 109, (242, 6), 35);
+            Table.States (786).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (786), 120, 132);
+            Add_Goto (Table.States (786), 131, 42);
+            Add_Goto (Table.States (786), 194, 133);
+            Add_Goto (Table.States (786), 195, 973);
+            Add_Goto (Table.States (786), 200, 135);
+            Add_Goto (Table.States (786), 242, 136);
+            Add_Goto (Table.States (786), 261, 137);
+            Add_Goto (Table.States (786), 275, 93);
+            Add_Goto (Table.States (786), 278, 138);
+            Add_Goto (Table.States (786), 285, 139);
+            Add_Goto (Table.States (786), 286, 140);
+            Add_Goto (Table.States (786), 287, 141);
+            Add_Goto (Table.States (786), 288, 142);
+            Add_Goto (Table.States (786), 289, 143);
+            Add_Goto (Table.States (786), 290, 144);
+            Add_Goto (Table.States (786), 296, 98);
+            Add_Goto (Table.States (786), 304, 145);
+            Add_Goto (Table.States (786), 323, 146);
+            Add_Goto (Table.States (786), 324, 147);
+            Add_Goto (Table.States (786), 333, 148);
+            Table.States (786).Kernel := To_Vector ((0 => ((280, 0),  76,  1, 
(2147483647, 0),  0)));
+            Table.States (786).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (787).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (787), 79, (120, 5), 974);
+            Add_Action (Table.States (787), 86, (128, 0), 448);
+            Table.States (787).Kernel := To_Vector ((((120, 5),  128,  1, 
(2147483647, 0),  0), ((128, 0),  128,  1,
+            (2147483647, 0),  0)));
+            Table.States (787).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (120, 5),  79, 974)));
+            Table.States (788).Action_List.Set_Capacity (25);
+            Add_Action (Table.States (788), 4, (116, 0), 1);
+            Add_Action (Table.States (788), 5, (306, 8), 2);
+            Add_Action (Table.States (788), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (788), 15, (142, 0), 3);
+            Add_Action (Table.States (788), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (788), 18, (164, 0), 4);
+            Add_Action (Table.States (788), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (788), 27, (193, 0), 5);
+            Add_Action (Table.States (788), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (788), 31, (306, 3), 9);
+            Add_Action (Table.States (788), 32, (225, 0), 10);
+            Add_Action (Table.States (788), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (788), 41, (306, 0), 13);
+            Add_Action (Table.States (788), 48, (260, 0), 16);
+            Add_Action (Table.States (788), 52, (279, 0), 20);
+            Add_Action (Table.States (788), 57, (293, 0), 21);
+            Add_Action (Table.States (788), 58, (199, 0), 22);
+            Add_Action (Table.States (788), 61, (129, 0), 24);
+            Add_Action (Table.States (788), 72, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (788), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (788), 81, (242, 8), 31);
+            Add_Action (Table.States (788), 96, (220, 0), 32);
+            Add_Action (Table.States (788), 107, (134, 0), 363);
+            Add_Action (Table.States (788), 108, (242, 7), 34);
+            Add_Action (Table.States (788), 109, (242, 6), 35);
+            Table.States (788).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (788), 116, 37);
+            Add_Goto (Table.States (788), 126, 39);
+            Add_Goto (Table.States (788), 129, 40);
+            Add_Goto (Table.States (788), 131, 42);
+            Add_Goto (Table.States (788), 134, 43);
+            Add_Goto (Table.States (788), 135, 44);
+            Add_Goto (Table.States (788), 136, 45);
+            Add_Goto (Table.States (788), 142, 48);
+            Add_Goto (Table.States (788), 154, 51);
+            Add_Goto (Table.States (788), 155, 52);
+            Add_Goto (Table.States (788), 164, 54);
+            Add_Goto (Table.States (788), 193, 58);
+            Add_Goto (Table.States (788), 199, 60);
+            Add_Goto (Table.States (788), 220, 69);
+            Add_Goto (Table.States (788), 225, 71);
+            Add_Goto (Table.States (788), 235, 73);
+            Add_Goto (Table.States (788), 242, 74);
+            Add_Goto (Table.States (788), 260, 84);
+            Add_Goto (Table.States (788), 264, 87);
+            Add_Goto (Table.States (788), 275, 93);
+            Add_Goto (Table.States (788), 279, 94);
+            Add_Goto (Table.States (788), 293, 97);
+            Add_Goto (Table.States (788), 296, 98);
+            Add_Goto (Table.States (788), 297, 99);
+            Add_Goto (Table.States (788), 301, 100);
+            Add_Goto (Table.States (788), 302, 364);
+            Add_Goto (Table.States (788), 303, 975);
+            Add_Goto (Table.States (788), 305, 101);
+            Add_Goto (Table.States (788), 306, 102);
+            Add_Goto (Table.States (788), 309, 366);
+            Add_Goto (Table.States (788), 326, 115);
+            Table.States (788).Kernel := To_Vector ((0 => ((143, 0),  90,  0, 
(303, 1),  0)));
+            Table.States (788).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (303, 1),  0)));
+            Table.States (789).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (789), 99, (142, 0), 976);
+            Table.States (789).Kernel := To_Vector ((0 => ((142, 0),  15,  1, 
(2147483647, 0),  0)));
+            Table.States (789).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (142, 0),  99, 976)));
+            Table.States (790).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (790), (10, 20, 21, 22, 23, 35, 37, 43, 
53, 68, 74, 75, 78, 79, 82, 86, 90, 99),
+            (236, 0),  3, null, null);
+            Table.States (790).Kernel := To_Vector ((0 => ((236, 0),  237,  0, 
(236, 0),  3)));
+            Table.States (790).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (236, 0),  3)));
+            Table.States (791).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (791), 10, Reduce, (317, 1),  3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (791), 21, Reduce, (317, 1),  3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (791), 37, Reduce, (317, 1),  3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (791), 42, Reduce, (317, 1),  3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (791), 53, (158, 0), 632);
+            Add_Action (Table.States (791), 74, Reduce, (317, 1),  3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (791), 76, (118, 0), 633);
+            Add_Action (Table.States (791), 78, Reduce, (317, 1),  3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (791), 85, Reduce, (317, 1),  3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (791), 86, Reduce, (317, 1),  3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (791), 87, (296, 0), 239);
+            Add_Action (Table.States (791), 90, Reduce, (317, 1),  3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (791), 99, Reduce, (317, 1),  3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (791), 104, (325, 0), 241);
+            Add_Action (Table.States (791), 105, (325, 1), 242);
+            Table.States (791).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (791), 118, 243);
+            Add_Goto (Table.States (791), 158, 977);
+            Add_Goto (Table.States (791), 227, 635);
+            Add_Goto (Table.States (791), 325, 244);
+            Table.States (791).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((275, 0),  242,  3, (2147483647, 0),  0),
+            ((296, 0),  242,  2, (2147483647, 0),  0), ((296, 1),  242,  2, 
(2147483647, 0),  0), ((296, 2),  242,  2,
+            (2147483647, 0),  0), ((296, 3),  242,  2, (2147483647, 0),  0), 
((317, 0),  242,  4, (2147483647, 0),  0),
+            ((317, 1),  242,  0, (317, 1),  3)));
+            Table.States (791).Minimal_Complete_Actions := To_Vector (((Shift, 
(158, 0),  53, 632), (Reduce, (317, 1),
+            3)));
+            Table.States (792).Action_List.Set_Capacity (10);
+            Add_Action (Table.States (792), (10, 21, 37, 42, 74, 78, 85, 86, 
90, 99), (158, 0),  2, null, null);
+            Table.States (792).Kernel := To_Vector ((0 => ((158, 0),  280,  0, 
(158, 0),  2)));
+            Table.States (792).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (158, 0),  2)));
             Table.States (793).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (793), 24, 973);
-            Add_Action (Table.States (793), 105, 791);
-            Table.States (793).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (793), 145, 974);
-            Table.States (793).Kernel := To_Vector (((146, 146, 8, True), 
(282, 146, 3, False)));
-            Table.States (793).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 973)));
-            Table.States (794).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (794), 7, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (794), 33, 507);
-            Add_Action (Table.States (794), 40, 387);
-            Add_Conflict (Table.States (794), 40, (237, 3), 0, null, null);
-            Add_Action (Table.States (794), 45, 508);
-            Add_Action (Table.States (794), 79, Reduce, (237, 3), 0, null, 
null);
-            Add_Action (Table.States (794), 105, Reduce, (237, 3), 0, null, 
null);
-            Add_Action (Table.States (794), 106, Reduce, (237, 3), 0, null, 
null);
-            Add_Action (Table.States (794), 107, Reduce, (237, 3), 0, null, 
null);
-            Table.States (794).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (794), 115, 975);
-            Add_Goto (Table.States (794), 237, 976);
-            Add_Goto (Table.States (794), 242, 729);
-            Table.States (794).Kernel := To_Vector (((255, 119, 2, False), 
(255, 119, 1, False), (255, 119, 3, False),
-            (255, 119, 2, False)));
-            Table.States (794).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 237, 0)));
-            Table.States (795).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (795), (77, 97), (256, 0), 3, null, null);
-            Table.States (795).Kernel := To_Vector ((0 => (256, 255, 0, 
True)));
-            Table.States (795).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 256, 3)));
-            Table.States (795).Minimal_Complete_Actions_Recursive := True;
-            Table.States (796).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (796), 97, 977);
-            Table.States (796).Kernel := To_Vector ((0 => (216, 123, 1, 
False)));
-            Table.States (796).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 977)));
-            Table.States (797).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (797), 97, 978);
-            Table.States (797).Kernel := To_Vector ((0 => (216, 123, 1, 
False)));
-            Table.States (797).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 978)));
-            Table.States (798).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (798), 97, 979);
-            Table.States (798).Kernel := To_Vector ((0 => (216, 123, 1, 
False)));
-            Table.States (798).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 979)));
-            Table.States (799).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (799), 36, 980);
-            Add_Action (Table.States (799), 39, Reduce, (110, 2), 1, null, 
null);
-            Add_Action (Table.States (799), 64, 884);
-            Add_Action (Table.States (799), 65, 885);
-            Table.States (799).Kernel := To_Vector (((110, 6, 1, False), (110, 
6, 1, False), (110, 6, 0, False), (112,
-            6, 2, False), (112, 6, 1, False)));
-            Table.States (799).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 110, 1)));
+            Add_Action (Table.States (793), (78, 86), (171, 1),  1, null, 
null);
+            Table.States (793).Kernel := To_Vector ((0 => ((171, 1),  170,  0, 
(171, 1),  1)));
+            Table.States (793).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (171, 1),  1)));
+            Table.States (794).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (794), 78, (227, 0), 978);
+            Add_Action (Table.States (794), 86, (171, 0), 979);
+            Table.States (794).Kernel := To_Vector ((((171, 0),  171,  2, 
(2147483647, 0),  0), ((227, 0),  171,  1,
+            (2147483647, 0),  0)));
+            Table.States (794).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (227, 0),  78, 978)));
+            Table.States (795).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (795), 78, Reduce, (170, 1),  1, null, 
null);
+            Add_Conflict (Table.States (795), 78, (281, 1),  1, null, null);
+            Add_Action (Table.States (795), 82, Reduce, (168, 2),  1, null, 
null);
+            Add_Action (Table.States (795), 86, Reduce, (170, 1),  1, null, 
null);
+            Add_Conflict (Table.States (795), 86, (281, 1),  1, null, null);
+            Add_Action (Table.States (795), 90, Reduce, (168, 2),  1, null, 
null);
+            Table.States (795).Kernel := To_Vector ((((168, 2),  280,  0, 
(168, 2),  1), ((170, 1),  280,  0, (170, 1),
+             1), ((281, 1),  280,  0, (281, 1),  1)));
+            Table.States (795).Minimal_Complete_Actions := To_Vector 
(((Reduce, (168, 2),  1), (Reduce, (170, 1),  1),
+            (Reduce, (281, 1),  1)));
+            Table.States (796).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (796), 81, (242, 8), 31);
+            Add_Action (Table.States (796), 107, (242, 5), 120);
+            Add_Action (Table.States (796), 108, (242, 7), 34);
+            Add_Action (Table.States (796), 109, (242, 6), 35);
+            Table.States (796).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (796), 131, 42);
+            Add_Goto (Table.States (796), 242, 980);
+            Add_Goto (Table.States (796), 275, 93);
+            Add_Goto (Table.States (796), 296, 98);
+            Table.States (796).Kernel := To_Vector ((0 => ((233, 0),  59,  1, 
(2147483647, 0),  0)));
+            Table.States (796).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (797).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (797), 37, Reduce, (233, 1),  5, null, 
null);
+            Add_Action (Table.States (797), 76, (118, 0), 237);
+            Add_Action (Table.States (797), 87, (296, 0), 239);
+            Add_Action (Table.States (797), 90, Reduce, (233, 1),  5, null, 
null);
+            Add_Action (Table.States (797), 104, (325, 0), 241);
+            Add_Action (Table.States (797), 105, (325, 1), 242);
+            Table.States (797).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (797), 118, 243);
+            Add_Goto (Table.States (797), 325, 244);
+            Table.States (797).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((233, 1),  242,  0,
+            (233, 1),  5), ((242, 0),  242,  5, (2147483647, 0),  0), ((242, 
1),  242,  2, (2147483647, 0),  0), ((275,
+            0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (797).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (233, 1),  5)));
+            Table.States (798).Action_List.Set_Capacity (42);
+            Add_Action (Table.States (798), (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, 81, 96, 107, 108, 109, 110), (130, 0),
+            6, at_clause_0'Access, null);
+            Table.States (798).Kernel := To_Vector ((0 => ((130, 0),  99,  0, 
(130, 0),  6)));
+            Table.States (798).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (130, 0),  6)));
+            Table.States (799).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (799), 3, (200, 2), 122);
+            Add_Action (Table.States (799), 39, (261, 4), 123);
+            Add_Action (Table.States (799), 40, (200, 3), 124);
+            Add_Action (Table.States (799), 41, (261, 1), 125);
+            Add_Action (Table.States (799), 52, (278, 0), 126);
+            Add_Action (Table.States (799), 76, (120, 0), 127);
+            Add_Action (Table.States (799), 77, (120, 5), 128);
+            Add_Action (Table.States (799), 81, (242, 8), 31);
+            Add_Action (Table.States (799), 97, (333, 1), 129);
+            Add_Action (Table.States (799), 98, (333, 0), 130);
+            Add_Action (Table.States (799), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (799), 106, (261, 0), 131);
+            Add_Action (Table.States (799), 107, (242, 5), 120);
+            Add_Action (Table.States (799), 108, (242, 7), 34);
+            Add_Action (Table.States (799), 109, (242, 6), 35);
+            Table.States (799).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (799), 120, 132);
+            Add_Goto (Table.States (799), 131, 42);
+            Add_Goto (Table.States (799), 194, 133);
+            Add_Goto (Table.States (799), 195, 981);
+            Add_Goto (Table.States (799), 200, 135);
+            Add_Goto (Table.States (799), 242, 136);
+            Add_Goto (Table.States (799), 261, 137);
+            Add_Goto (Table.States (799), 275, 93);
+            Add_Goto (Table.States (799), 278, 138);
+            Add_Goto (Table.States (799), 285, 139);
+            Add_Goto (Table.States (799), 286, 140);
+            Add_Goto (Table.States (799), 287, 141);
+            Add_Goto (Table.States (799), 288, 142);
+            Add_Goto (Table.States (799), 289, 143);
+            Add_Goto (Table.States (799), 290, 144);
+            Add_Goto (Table.States (799), 296, 98);
+            Add_Goto (Table.States (799), 304, 145);
+            Add_Goto (Table.States (799), 323, 146);
+            Add_Goto (Table.States (799), 324, 147);
+            Add_Goto (Table.States (799), 333, 148);
+            Table.States (799).Kernel := To_Vector ((0 => ((238, 0),  38,  1, 
(2147483647, 0),  0)));
+            Table.States (799).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
             Table.States (800).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (800), 81, 981);
-            Table.States (800).Kernel := To_Vector (((203, 19, 3, False), 
(203, 19, 1, False)));
-            Table.States (800).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 81, 981)));
-            Table.States (801).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (801), 81, 982);
-            Table.States (801).Kernel := To_Vector ((0 => (203, 20, 1, 
False)));
-            Table.States (801).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 81, 982)));
-            Table.States (802).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (802), 34, 889);
-            Add_Action (Table.States (802), 39, Reduce, (110, 3), 1, null, 
null);
-            Add_Action (Table.States (802), 49, Reduce, (112, 4), 1, null, 
null);
-            Table.States (802).Kernel := To_Vector (((110, 36, 0, False), 
(112, 36, 0, False), (229, 36, 3, False),
-            (229, 36, 1, False)));
-            Table.States (802).Minimal_Complete_Actions := To_Vector 
(((Reduce, 110, 1), (Reduce, 112, 1)));
-            Table.States (803).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (803), 81, 983);
-            Table.States (803).Kernel := To_Vector ((0 => (203, 38, 1, 
False)));
-            Table.States (803).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 81, 983)));
-            Table.States (804).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (804), 81, 984);
-            Table.States (804).Kernel := To_Vector ((0 => (203, 53, 1, 
False)));
-            Table.States (804).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 81, 984)));
-            Table.States (805).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (805), 36, 904);
-            Add_Action (Table.States (805), 49, Reduce, (112, 3), 1, null, 
null);
-            Add_Action (Table.States (805), 74, 338);
-            Add_Action (Table.States (805), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (805).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (805), 123, 985);
-            Table.States (805).Kernel := To_Vector (((112, 65, 1, False), 
(112, 65, 0, False), (202, 65, 1, False)));
-            Table.States (805).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 112, 1)));
+            Add_Action (Table.States (800), 12, (147, 0), 982);
+            Table.States (800).Kernel := To_Vector ((0 => ((147, 0),  107,  7, 
(2147483647, 0),  0)));
+            Table.States (800).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (147, 0),  12, 982)));
+            Table.States (801).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (801), (24, 107), (148, 1),  1, null, 
null);
+            Table.States (801).Kernel := To_Vector ((0 => ((148, 1),  147,  0, 
(148, 1),  1)));
+            Table.States (801).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (148, 1),  1)));
+            Table.States (802).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (802), 24, (284, 0), 983);
+            Add_Action (Table.States (802), 107, (147, 0), 800);
+            Table.States (802).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (802), 147, 984);
+            Table.States (802).Kernel := To_Vector ((((148, 0),  148,  8, 
(2147483647, 0),  0), ((284, 0),  148,  3,
+            (2147483647, 0),  0)));
+            Table.States (802).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (284, 0),  24, 983)));
+            Table.States (803).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (803), 7, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (803), 33, (239, 0), 511);
+            Add_Action (Table.States (803), 40, (244, 0), 389);
+            Add_Conflict (Table.States (803), 40, (239, 3),  0, null, null);
+            Add_Action (Table.States (803), 45, (239, 2), 512);
+            Add_Action (Table.States (803), 81, Reduce, (239, 3),  0, null, 
null);
+            Add_Action (Table.States (803), 107, Reduce, (239, 3),  0, null, 
null);
+            Add_Action (Table.States (803), 108, Reduce, (239, 3),  0, null, 
null);
+            Add_Action (Table.States (803), 109, Reduce, (239, 3),  0, null, 
null);
+            Table.States (803).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (803), 117, 985);
+            Add_Goto (Table.States (803), 239, 986);
+            Add_Goto (Table.States (803), 244, 735);
+            Table.States (803).Kernel := To_Vector ((((257, 0),  121,  2, 
(2147483647, 0),  0), ((257, 1),  121,  1,
+            (2147483647, 0),  0), ((257, 2),  121,  3, (2147483647, 0),  0), 
((257, 3),  121,  2, (2147483647, 0),
+            0)));
+            Table.States (803).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (239, 3),  0)));
+            Table.States (804).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (804), (78, 99), (258, 0),  3, null, 
null);
+            Table.States (804).Kernel := To_Vector ((0 => ((258, 0),  257,  0, 
(258, 0),  3)));
+            Table.States (804).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (258, 0),  3)));
+            Table.States (805).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (805), 99, (218, 2), 987);
+            Table.States (805).Kernel := To_Vector ((0 => ((218, 2),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (805).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (218, 2),  99, 987)));
             Table.States (806).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (806), 81, 986);
-            Table.States (806).Kernel := To_Vector ((0 => (203, 76, 2, 
False)));
-            Table.States (806).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 81, 986)));
+            Add_Action (Table.States (806), 99, (218, 0), 988);
+            Table.States (806).Kernel := To_Vector ((0 => ((218, 0),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (806).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (218, 0),  99, 988)));
             Table.States (807).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (807), 39, 987);
-            Table.States (807).Kernel := To_Vector (((204, 110, 4, False), 
(204, 110, 2, False)));
-            Table.States (807).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 39, 987)));
-            Table.States (808).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (808), 49, 988);
-            Table.States (808).Kernel := To_Vector ((0 => (203, 112, 1, 
False)));
-            Table.States (808).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 49, 988)));
-            Table.States (809).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (809), (74, 97), (203, 9), 1, null, null);
-            Table.States (809).Kernel := To_Vector ((0 => (203, 115, 0, 
False)));
-            Table.States (809).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 203, 1)));
-            Table.States (810).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (810), (74, 97), (203, 8), 1, null, null);
-            Table.States (810).Kernel := To_Vector ((0 => (203, 121, 0, 
False)));
-            Table.States (810).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 203, 1)));
-            Table.States (811).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (811), 74, 338);
-            Add_Action (Table.States (811), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (811).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (811), 123, 989);
-            Table.States (811).Kernel := To_Vector ((0 => (202, 203, 1, 
False)));
-            Table.States (811).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (812).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (812), (74, 97), (203, 1), 1, null, null);
-            Table.States (812).Kernel := To_Vector ((0 => (203, 204, 0, 
False)));
-            Table.States (812).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 203, 1)));
-            Table.States (813).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (813), (74, 97), (203, 10), 1, null, 
null);
-            Table.States (813).Kernel := To_Vector ((0 => (203, 229, 0, 
False)));
-            Table.States (813).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 203, 1)));
-            Table.States (814).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (814), (29, 47, 48, 50, 69, 71, 74, 105), 
(202, 2), 5,
-            formal_type_declaration_2'Access, null);
-            Table.States (814).Kernel := To_Vector ((0 => (202, 97, 0, 
False)));
-            Table.States (814).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 202, 5)));
-            Table.States (815).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (815), 79, 31);
-            Add_Action (Table.States (815), 105, 120);
-            Add_Action (Table.States (815), 106, 34);
-            Add_Action (Table.States (815), 107, 35);
-            Table.States (815).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (815), 129, 42);
-            Add_Goto (Table.States (815), 240, 990);
-            Add_Goto (Table.States (815), 273, 93);
-            Add_Goto (Table.States (815), 294, 98);
-            Table.States (815).Kernel := To_Vector ((0 => (205, 39, 2, 
False)));
-            Table.States (815).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
+            Add_Action (Table.States (807), 99, (218, 1), 989);
+            Table.States (807).Kernel := To_Vector ((0 => ((218, 1),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (807).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (218, 1),  99, 989)));
+            Table.States (808).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (808), 36, (112, 0), 990);
+            Add_Action (Table.States (808), 39, Reduce, (112, 2),  1, null, 
null);
+            Add_Action (Table.States (808), 64, (112, 1), 893);
+            Add_Action (Table.States (808), 65, (114, 0), 894);
+            Table.States (808).Kernel := To_Vector ((((112, 0),  6,  1, 
(2147483647, 0),  0), ((112, 1),  6,  1,
+            (2147483647, 0),  0), ((112, 2),  6,  0, (112, 2),  1), ((114, 0), 
 6,  2, (2147483647, 0),  0), ((114, 1),
+             6,  1, (2147483647, 0),  0)));
+            Table.States (808).Minimal_Complete_Actions := To_Vector (((Shift, 
(112, 0),  36, 990), (Shift, (112, 1),
+            64, 893), (Reduce, (112, 2),  1), (Shift, (114, 0),  65, 894)));
+            Table.States (809).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (809), 83, (205, 6), 991);
+            Table.States (809).Kernel := To_Vector ((((205, 6),  19,  3, 
(2147483647, 0),  0), ((205, 7),  19,  1,
+            (2147483647, 0),  0)));
+            Table.States (809).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (205, 6),  83, 991)));
+            Table.States (810).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (810), 83, (205, 5), 992);
+            Table.States (810).Kernel := To_Vector ((0 => ((205, 5),  20,  1, 
(2147483647, 0),  0)));
+            Table.States (810).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (205, 5),  83, 992)));
+            Table.States (811).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (811), 34, (231, 0), 898);
+            Add_Action (Table.States (811), 39, Reduce, (112, 3),  1, null, 
null);
+            Add_Action (Table.States (811), 49, Reduce, (114, 4),  1, null, 
null);
+            Table.States (811).Kernel := To_Vector ((((112, 3),  36,  0, (112, 
3),  1), ((114, 4),  36,  0, (114, 4),
+            1), ((231, 0),  36,  3, (2147483647, 0),  0), ((231, 4),  36,  1, 
(2147483647, 0),  0)));
+            Table.States (811).Minimal_Complete_Actions := To_Vector 
(((Reduce, (112, 3),  1), (Reduce, (114, 4),  1),
+            (Shift, (231, 0),  34, 898)));
+         end Subr_15;
+         procedure Subr_16
+         is begin
+            Table.States (812).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (812), 83, (205, 4), 993);
+            Table.States (812).Kernel := To_Vector ((0 => ((205, 4),  38,  1, 
(2147483647, 0),  0)));
+            Table.States (812).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (205, 4),  83, 993)));
+            Table.States (813).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (813), 83, (205, 3), 994);
+            Table.States (813).Kernel := To_Vector ((0 => ((205, 3),  53,  1, 
(2147483647, 0),  0)));
+            Table.States (813).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (205, 3),  83, 994)));
+            Table.States (814).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (814), 36, (114, 2), 913);
+            Add_Action (Table.States (814), 49, Reduce, (114, 3),  1, null, 
null);
+            Add_Action (Table.States (814), 74, (125, 0), 340);
+            Add_Action (Table.States (814), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (814).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (814), 125, 995);
+            Table.States (814).Kernel := To_Vector ((((114, 2),  65,  1, 
(2147483647, 0),  0), ((114, 3),  65,  0,
+            (114, 3),  1), ((204, 1),  65,  1, (2147483647, 0),  0)));
+            Table.States (814).Minimal_Complete_Actions := To_Vector (((Shift, 
(114, 2),  36, 913), (Reduce, (114, 3),
+            1), (Reduce, (125, 1),  0)));
+            Table.States (815).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (815), 83, (205, 2), 996);
+            Table.States (815).Kernel := To_Vector ((0 => ((205, 2),  76,  2, 
(2147483647, 0),  0)));
+            Table.States (815).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (205, 2),  83, 996)));
             Table.States (816).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (816), 97, 991);
-            Table.States (816).Kernel := To_Vector ((0 => (201, 123, 1, 
False)));
-            Table.States (816).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 991)));
-            Table.States (817).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (817), 74, 338);
-            Add_Action (Table.States (817), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (817).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (817), 123, 992);
-            Table.States (817).Kernel := To_Vector ((0 => (201, 311, 1, 
False)));
-            Table.States (817).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (818).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (818), 97, 993);
-            Table.States (818).Kernel := To_Vector ((0 => (201, 123, 1, 
False)));
-            Table.States (818).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 993)));
-            Table.States (819).Action_List.Set_Capacity (15);
-            Add_Action (Table.States (819), 3, 122);
-            Add_Action (Table.States (819), 39, 123);
-            Add_Action (Table.States (819), 40, 124);
-            Add_Action (Table.States (819), 41, 125);
-            Add_Action (Table.States (819), 52, 126);
-            Add_Action (Table.States (819), 74, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (819), 76, 127);
-            Add_Action (Table.States (819), 79, 31);
-            Add_Action (Table.States (819), 95, 128);
-            Add_Action (Table.States (819), 96, 129);
-            Add_Action (Table.States (819), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (819), 104, 130);
-            Add_Action (Table.States (819), 105, 120);
-            Add_Action (Table.States (819), 106, 34);
-            Add_Action (Table.States (819), 107, 35);
-            Table.States (819).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (819), 118, 131);
-            Add_Goto (Table.States (819), 129, 42);
-            Add_Goto (Table.States (819), 192, 132);
-            Add_Goto (Table.States (819), 193, 994);
-            Add_Goto (Table.States (819), 198, 134);
-            Add_Goto (Table.States (819), 240, 135);
-            Add_Goto (Table.States (819), 259, 136);
-            Add_Goto (Table.States (819), 273, 93);
-            Add_Goto (Table.States (819), 276, 137);
-            Add_Goto (Table.States (819), 283, 138);
-            Add_Goto (Table.States (819), 284, 139);
-            Add_Goto (Table.States (819), 285, 140);
-            Add_Goto (Table.States (819), 286, 141);
-            Add_Goto (Table.States (819), 287, 142);
-            Add_Goto (Table.States (819), 288, 143);
-            Add_Goto (Table.States (819), 294, 98);
-            Add_Goto (Table.States (819), 302, 144);
-            Add_Goto (Table.States (819), 321, 145);
-            Add_Goto (Table.States (819), 322, 146);
-            Add_Goto (Table.States (819), 331, 147);
-            Table.States (819).Kernel := To_Vector ((0 => (199, 83, 1, 
False)));
-            Table.States (819).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (820).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (820), 97, 995);
-            Table.States (820).Kernel := To_Vector ((0 => (199, 123, 1, 
False)));
-            Table.States (820).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 995)));
-            Table.States (821).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (821), 74, 338);
-            Add_Action (Table.States (821), 76, 236);
-            Add_Action (Table.States (821), 83, 996);
-            Add_Action (Table.States (821), 85, 238);
-            Add_Action (Table.States (821), 97, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (821), 102, 240);
-            Add_Action (Table.States (821), 103, 241);
-            Table.States (821).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (821), 116, 242);
-            Add_Goto (Table.States (821), 123, 997);
-            Add_Goto (Table.States (821), 323, 243);
-            Table.States (821).Kernel := To_Vector (((129, 240, 2, True), 
(199, 240, 2, False), (199, 240, 1, False),
-            (240, 240, 5, True), (240, 240, 2, True), (273, 240, 3, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True), (294, 240, 2, True)));
-            Table.States (821).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (822).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (822), 24, 998);
-            Table.States (822).Kernel := To_Vector ((0 => (223, 301, 3, 
False)));
-            Table.States (822).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 998)));
-            Table.States (823).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (823), 68, 999);
-            Table.States (823).Kernel := To_Vector ((0 => (175, 193, 1, 
False)));
-            Table.States (823).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 68, 999)));
-            Table.States (824).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (824), 97, 1000);
-            Table.States (824).Kernel := To_Vector ((0 => (223, 32, 1, 
False)));
-            Table.States (824).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1000)));
-            Table.States (825).Action_List.Set_Capacity (24);
-            Add_Action (Table.States (825), 4, 1);
-            Add_Action (Table.States (825), 5, 2);
-            Add_Action (Table.States (825), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (825), 15, 3);
-            Add_Action (Table.States (825), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (825), 18, 4);
-            Add_Action (Table.States (825), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (825), 27, 5);
-            Add_Action (Table.States (825), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (825), 31, 9);
-            Add_Action (Table.States (825), 32, 10);
-            Add_Action (Table.States (825), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (825), 41, 13);
-            Add_Action (Table.States (825), 48, 16);
-            Add_Action (Table.States (825), 52, 20);
-            Add_Action (Table.States (825), 57, 21);
-            Add_Action (Table.States (825), 58, 22);
-            Add_Action (Table.States (825), 61, 24);
-            Add_Action (Table.States (825), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (825), 79, 31);
-            Add_Action (Table.States (825), 94, 32);
-            Add_Action (Table.States (825), 105, 361);
-            Add_Action (Table.States (825), 106, 34);
-            Add_Action (Table.States (825), 107, 35);
-            Table.States (825).Goto_List.Set_Capacity (31);
-            Add_Goto (Table.States (825), 114, 37);
-            Add_Goto (Table.States (825), 124, 39);
-            Add_Goto (Table.States (825), 127, 40);
-            Add_Goto (Table.States (825), 129, 42);
-            Add_Goto (Table.States (825), 132, 43);
-            Add_Goto (Table.States (825), 133, 44);
-            Add_Goto (Table.States (825), 134, 45);
-            Add_Goto (Table.States (825), 140, 48);
-            Add_Goto (Table.States (825), 152, 51);
-            Add_Goto (Table.States (825), 153, 52);
-            Add_Goto (Table.States (825), 162, 54);
-            Add_Goto (Table.States (825), 191, 58);
-            Add_Goto (Table.States (825), 197, 60);
-            Add_Goto (Table.States (825), 218, 69);
-            Add_Goto (Table.States (825), 223, 71);
-            Add_Goto (Table.States (825), 233, 73);
-            Add_Goto (Table.States (825), 240, 74);
-            Add_Goto (Table.States (825), 258, 84);
-            Add_Goto (Table.States (825), 262, 87);
-            Add_Goto (Table.States (825), 273, 93);
-            Add_Goto (Table.States (825), 277, 94);
-            Add_Goto (Table.States (825), 291, 97);
-            Add_Goto (Table.States (825), 294, 98);
-            Add_Goto (Table.States (825), 295, 99);
-            Add_Goto (Table.States (825), 299, 100);
-            Add_Goto (Table.States (825), 300, 362);
-            Add_Goto (Table.States (825), 301, 1001);
-            Add_Goto (Table.States (825), 303, 101);
-            Add_Goto (Table.States (825), 304, 102);
-            Add_Goto (Table.States (825), 307, 364);
-            Add_Goto (Table.States (825), 324, 115);
-            Table.States (825).Kernel := To_Vector ((0 => (223, 22, 3, 
False)));
-            Table.States (825).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 0)));
-            Table.States (826).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (826), 32, 1002);
-            Table.States (826).Kernel := To_Vector ((0 => (223, 24, 2, 
False)));
-            Table.States (826).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 32, 1002)));
-            Table.States (827).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (827), (22, 23, 24), (176, 0), 2, 
elsif_statement_list_0'Access, null);
-            Table.States (827).Kernel := To_Vector ((0 => (176, 175, 0, 
True)));
-            Table.States (827).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 176, 2)));
-            Table.States (827).Minimal_Complete_Actions_Recursive := True;
-            Table.States (828).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (828), 97, 1003);
-            Table.States (828).Kernel := To_Vector ((0 => (249, 123, 1, 
False)));
-            Table.States (828).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1003)));
-            Table.States (829).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (829), 13, 1004);
-            Add_Action (Table.States (829), 24, 1005);
-            Table.States (829).Kernel := To_Vector (((248, 160, 3, False), 
(248, 160, 2, False)));
-            Table.States (829).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1005)));
-            Table.States (830).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (830), 97, 1006);
-            Table.States (830).Kernel := To_Vector ((0 => (214, 123, 1, 
False)));
-            Table.States (830).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1006)));
-            Table.States (831).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (831), (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, 
79, 94, 105, 106, 107, 108), (251, 0), 6,
-            package_renaming_declaration_0'Access, null);
-            Table.States (831).Kernel := To_Vector ((0 => (251, 97, 0, 
False)));
-            Table.States (831).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 251, 6)));
-            Table.States (832).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (832), 79, 31);
-            Add_Action (Table.States (832), 97, Reduce, (241, 1), 0, null, 
null);
-            Add_Action (Table.States (832), 105, 120);
-            Add_Action (Table.States (832), 106, 34);
-            Add_Action (Table.States (832), 107, 35);
-            Table.States (832).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (832), 129, 42);
-            Add_Goto (Table.States (832), 240, 638);
-            Add_Goto (Table.States (832), 241, 1007);
-            Add_Goto (Table.States (832), 273, 93);
-            Add_Goto (Table.States (832), 294, 98);
-            Table.States (832).Kernel := To_Vector ((0 => (252, 24, 0, 
False)));
-            Table.States (832).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 241, 0)));
-            Table.States (833).Action_List.Set_Capacity (16);
-            Add_Action (Table.States (833), 24, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (833), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (833), 28, 184);
-            Add_Action (Table.States (833), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (833), 30, 8);
-            Add_Action (Table.States (833), 40, 12);
-            Add_Action (Table.States (833), 46, 14);
-            Add_Action (Table.States (833), 47, 15);
-            Add_Action (Table.States (833), 48, 16);
-            Add_Action (Table.States (833), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (833), 51, 19);
-            Add_Action (Table.States (833), 63, 25);
-            Add_Action (Table.States (833), 66, 26);
-            Add_Action (Table.States (833), 69, 27);
-            Add_Action (Table.States (833), 71, 28);
-            Add_Action (Table.States (833), 105, 186);
-            Table.States (833).Goto_List.Set_Capacity (53);
-            Add_Goto (Table.States (833), 113, 36);
-            Add_Goto (Table.States (833), 122, 38);
-            Add_Goto (Table.States (833), 128, 41);
-            Add_Goto (Table.States (833), 135, 46);
-            Add_Goto (Table.States (833), 136, 47);
-            Add_Goto (Table.States (833), 158, 392);
-            Add_Goto (Table.States (833), 159, 393);
-            Add_Goto (Table.States (833), 160, 1008);
-            Add_Goto (Table.States (833), 180, 55);
-            Add_Goto (Table.States (833), 183, 56);
-            Add_Goto (Table.States (833), 187, 57);
-            Add_Goto (Table.States (833), 194, 59);
-            Add_Goto (Table.States (833), 207, 61);
-            Add_Goto (Table.States (833), 208, 62);
-            Add_Goto (Table.States (833), 210, 63);
-            Add_Goto (Table.States (833), 211, 64);
-            Add_Goto (Table.States (833), 214, 65);
-            Add_Goto (Table.States (833), 215, 66);
-            Add_Goto (Table.States (833), 216, 67);
-            Add_Goto (Table.States (833), 217, 68);
-            Add_Goto (Table.States (833), 220, 70);
-            Add_Goto (Table.States (833), 224, 72);
-            Add_Goto (Table.States (833), 244, 75);
-            Add_Goto (Table.States (833), 245, 76);
-            Add_Goto (Table.States (833), 246, 77);
-            Add_Goto (Table.States (833), 247, 78);
-            Add_Goto (Table.States (833), 248, 79);
-            Add_Goto (Table.States (833), 249, 80);
-            Add_Goto (Table.States (833), 250, 81);
-            Add_Goto (Table.States (833), 251, 82);
-            Add_Goto (Table.States (833), 252, 83);
-            Add_Goto (Table.States (833), 258, 395);
-            Add_Goto (Table.States (833), 260, 85);
-            Add_Goto (Table.States (833), 261, 86);
-            Add_Goto (Table.States (833), 263, 88);
-            Add_Goto (Table.States (833), 264, 89);
-            Add_Goto (Table.States (833), 265, 90);
-            Add_Goto (Table.States (833), 266, 91);
-            Add_Goto (Table.States (833), 272, 92);
-            Add_Goto (Table.States (833), 282, 95);
-            Add_Goto (Table.States (833), 290, 96);
-            Add_Goto (Table.States (833), 305, 103);
-            Add_Goto (Table.States (833), 306, 104);
-            Add_Goto (Table.States (833), 308, 106);
-            Add_Goto (Table.States (833), 309, 107);
-            Add_Goto (Table.States (833), 310, 108);
-            Add_Goto (Table.States (833), 312, 109);
-            Add_Goto (Table.States (833), 314, 110);
-            Add_Goto (Table.States (833), 317, 112);
-            Add_Goto (Table.States (833), 318, 113);
-            Add_Goto (Table.States (833), 320, 114);
-            Add_Goto (Table.States (833), 326, 116);
-            Add_Goto (Table.States (833), 332, 117);
-            Table.States (833).Kernel := To_Vector ((0 => (252, 49, 1, 
False)));
-            Table.States (833).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 160, 0)));
-            Table.States (834).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (834), (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, 79, 94, 105, 106,
-            107, 108), (258, 0), 6, pragma_g_0'Access, null);
-            Table.States (834).Kernel := To_Vector ((0 => (258, 97, 0, 
False)));
-            Table.States (834).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 258, 6)));
-            Table.States (835).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (835), (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, 79, 94, 105, 106,
-            107, 108), (258, 1), 6, pragma_g_1'Access, null);
-            Table.States (835).Kernel := To_Vector ((0 => (258, 97, 0, 
False)));
-            Table.States (835).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 258, 6)));
-            Table.States (836).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (836), 97, 1009);
-            Table.States (836).Kernel := To_Vector ((0 => (266, 123, 1, 
False)));
-            Table.States (836).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1009)));
+            Add_Action (Table.States (816), 39, (206, 0), 997);
+            Table.States (816).Kernel := To_Vector ((((206, 0),  112,  4, 
(2147483647, 0),  0), ((206, 1),  112,  2,
+            (2147483647, 0),  0)));
+            Table.States (816).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (206, 0),  39, 997)));
+            Table.States (817).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (817), 49, (205, 0), 998);
+            Table.States (817).Kernel := To_Vector ((0 => ((205, 0),  114,  1, 
(2147483647, 0),  0)));
+            Table.States (817).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (205, 0),  49, 998)));
+            Table.States (818).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (818), (74, 99), (205, 9),  1, null, 
null);
+            Table.States (818).Kernel := To_Vector ((0 => ((205, 9),  117,  0, 
(205, 9),  1)));
+            Table.States (818).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (205, 9),  1)));
+            Table.States (819).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (819), (74, 99), (205, 8),  1, null, 
null);
+            Table.States (819).Kernel := To_Vector ((0 => ((205, 8),  123,  0, 
(205, 8),  1)));
+            Table.States (819).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (205, 8),  1)));
+            Table.States (820).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (820), 74, (125, 0), 340);
+            Add_Action (Table.States (820), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (820).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (820), 125, 999);
+            Table.States (820).Kernel := To_Vector ((0 => ((204, 0),  205,  1, 
(2147483647, 0),  0)));
+            Table.States (820).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (821).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (821), (74, 99), (205, 1),  1, null, 
null);
+            Table.States (821).Kernel := To_Vector ((0 => ((205, 1),  206,  0, 
(205, 1),  1)));
+            Table.States (821).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (205, 1),  1)));
+            Table.States (822).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (822), (74, 99), (205, 10),  1, null, 
null);
+            Table.States (822).Kernel := To_Vector ((0 => ((205, 10),  231,  
0, (205, 10),  1)));
+            Table.States (822).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (205, 10),  1)));
+            Table.States (823).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (823), (29, 47, 48, 50, 69, 71, 74, 107), 
(204, 2),  5,
+            formal_type_declaration_2'Access, null);
+            Table.States (823).Kernel := To_Vector ((0 => ((204, 2),  99,  0, 
(204, 2),  5)));
+            Table.States (823).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (204, 2),  5)));
+            Table.States (824).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (824), 81, (242, 8), 31);
+            Add_Action (Table.States (824), 107, (242, 5), 120);
+            Add_Action (Table.States (824), 108, (242, 7), 34);
+            Add_Action (Table.States (824), 109, (242, 6), 35);
+            Table.States (824).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (824), 131, 42);
+            Add_Goto (Table.States (824), 242, 1000);
+            Add_Goto (Table.States (824), 275, 93);
+            Add_Goto (Table.States (824), 296, 98);
+            Table.States (824).Kernel := To_Vector ((0 => ((207, 0),  39,  2, 
(2147483647, 0),  0)));
+            Table.States (824).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (825).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (825), 99, (203, 2), 1001);
+            Table.States (825).Kernel := To_Vector ((0 => ((203, 2),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (825).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (203, 2),  99, 1001)));
+            Table.States (826).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (826), 74, (125, 0), 340);
+            Add_Action (Table.States (826), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (826).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (826), 125, 1002);
+            Table.States (826).Kernel := To_Vector ((0 => ((203, 0),  313,  1, 
(2147483647, 0),  0)));
+            Table.States (826).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (827).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (827), 99, (203, 1), 1003);
+            Table.States (827).Kernel := To_Vector ((0 => ((203, 1),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (827).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (203, 1),  99, 1003)));
+            Table.States (828).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (828), 3, (200, 2), 122);
+            Add_Action (Table.States (828), 39, (261, 4), 123);
+            Add_Action (Table.States (828), 40, (200, 3), 124);
+            Add_Action (Table.States (828), 41, (261, 1), 125);
+            Add_Action (Table.States (828), 52, (278, 0), 126);
+            Add_Action (Table.States (828), 74, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (828), 76, (120, 0), 127);
+            Add_Action (Table.States (828), 77, (120, 5), 128);
+            Add_Action (Table.States (828), 81, (242, 8), 31);
+            Add_Action (Table.States (828), 97, (333, 1), 129);
+            Add_Action (Table.States (828), 98, (333, 0), 130);
+            Add_Action (Table.States (828), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (828), 106, (261, 0), 131);
+            Add_Action (Table.States (828), 107, (242, 5), 120);
+            Add_Action (Table.States (828), 108, (242, 7), 34);
+            Add_Action (Table.States (828), 109, (242, 6), 35);
+            Table.States (828).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (828), 120, 132);
+            Add_Goto (Table.States (828), 131, 42);
+            Add_Goto (Table.States (828), 194, 133);
+            Add_Goto (Table.States (828), 195, 1004);
+            Add_Goto (Table.States (828), 200, 135);
+            Add_Goto (Table.States (828), 242, 136);
+            Add_Goto (Table.States (828), 261, 137);
+            Add_Goto (Table.States (828), 275, 93);
+            Add_Goto (Table.States (828), 278, 138);
+            Add_Goto (Table.States (828), 285, 139);
+            Add_Goto (Table.States (828), 286, 140);
+            Add_Goto (Table.States (828), 287, 141);
+            Add_Goto (Table.States (828), 288, 142);
+            Add_Goto (Table.States (828), 289, 143);
+            Add_Goto (Table.States (828), 290, 144);
+            Add_Goto (Table.States (828), 296, 98);
+            Add_Goto (Table.States (828), 304, 145);
+            Add_Goto (Table.States (828), 323, 146);
+            Add_Goto (Table.States (828), 324, 147);
+            Add_Goto (Table.States (828), 333, 148);
+            Table.States (828).Kernel := To_Vector ((0 => ((201, 1),  85,  1, 
(2147483647, 0),  0)));
+            Table.States (828).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (829).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (829), 99, (201, 3), 1005);
+            Table.States (829).Kernel := To_Vector ((0 => ((201, 3),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (829).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (201, 3),  99, 1005)));
+            Table.States (830).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (830), 74, (125, 0), 340);
+            Add_Action (Table.States (830), 76, (118, 0), 237);
+            Add_Action (Table.States (830), 85, (201, 0), 1006);
+            Add_Action (Table.States (830), 87, (296, 0), 239);
+            Add_Action (Table.States (830), 99, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (830), 104, (325, 0), 241);
+            Add_Action (Table.States (830), 105, (325, 1), 242);
+            Table.States (830).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (830), 118, 243);
+            Add_Goto (Table.States (830), 125, 1007);
+            Add_Goto (Table.States (830), 325, 244);
+            Table.States (830).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((201, 0),  242,  2,
+            (2147483647, 0),  0), ((201, 2),  242,  1, (2147483647, 0),  0), 
((242, 0),  242,  5, (2147483647, 0),  0),
+            ((242, 1),  242,  2, (2147483647, 0),  0), ((275, 0),  242,  3, 
(2147483647, 0),  0), ((296, 0),  242,  2,
+            (2147483647, 0),  0), ((296, 1),  242,  2, (2147483647, 0),  0), 
((296, 2),  242,  2, (2147483647, 0),  0),
+            ((296, 3),  242,  2, (2147483647, 0),  0)));
+            Table.States (830).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (831).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (831), 24, (225, 1), 1008);
+            Table.States (831).Kernel := To_Vector ((0 => ((225, 1),  303,  3, 
(2147483647, 0),  0)));
+            Table.States (831).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (225, 1),  24, 1008)));
+            Table.States (832).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (832), 68, (177, 0), 1009);
+            Table.States (832).Kernel := To_Vector ((0 => ((177, 0),  195,  1, 
(2147483647, 0),  0)));
+            Table.States (832).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (177, 0),  68, 1009)));
+            Table.States (833).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (833), 99, (225, 3), 1010);
+            Table.States (833).Kernel := To_Vector ((0 => ((225, 3),  32,  1, 
(2147483647, 0),  0)));
+            Table.States (833).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (225, 3),  99, 1010)));
+            Table.States (834).Action_List.Set_Capacity (24);
+            Add_Action (Table.States (834), 4, (116, 0), 1);
+            Add_Action (Table.States (834), 5, (306, 8), 2);
+            Add_Action (Table.States (834), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (834), 15, (142, 0), 3);
+            Add_Action (Table.States (834), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (834), 18, (164, 0), 4);
+            Add_Action (Table.States (834), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (834), 27, (193, 0), 5);
+            Add_Action (Table.States (834), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (834), 31, (306, 3), 9);
+            Add_Action (Table.States (834), 32, (225, 0), 10);
+            Add_Action (Table.States (834), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (834), 41, (306, 0), 13);
+            Add_Action (Table.States (834), 48, (260, 0), 16);
+            Add_Action (Table.States (834), 52, (279, 0), 20);
+            Add_Action (Table.States (834), 57, (293, 0), 21);
+            Add_Action (Table.States (834), 58, (199, 0), 22);
+            Add_Action (Table.States (834), 61, (129, 0), 24);
+            Add_Action (Table.States (834), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (834), 81, (242, 8), 31);
+            Add_Action (Table.States (834), 96, (220, 0), 32);
+            Add_Action (Table.States (834), 107, (134, 0), 363);
+            Add_Action (Table.States (834), 108, (242, 7), 34);
+            Add_Action (Table.States (834), 109, (242, 6), 35);
+            Table.States (834).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (834), 116, 37);
+            Add_Goto (Table.States (834), 126, 39);
+            Add_Goto (Table.States (834), 129, 40);
+            Add_Goto (Table.States (834), 131, 42);
+            Add_Goto (Table.States (834), 134, 43);
+            Add_Goto (Table.States (834), 135, 44);
+            Add_Goto (Table.States (834), 136, 45);
+            Add_Goto (Table.States (834), 142, 48);
+            Add_Goto (Table.States (834), 154, 51);
+            Add_Goto (Table.States (834), 155, 52);
+            Add_Goto (Table.States (834), 164, 54);
+            Add_Goto (Table.States (834), 193, 58);
+            Add_Goto (Table.States (834), 199, 60);
+            Add_Goto (Table.States (834), 220, 69);
+            Add_Goto (Table.States (834), 225, 71);
+            Add_Goto (Table.States (834), 235, 73);
+            Add_Goto (Table.States (834), 242, 74);
+            Add_Goto (Table.States (834), 260, 84);
+            Add_Goto (Table.States (834), 264, 87);
+            Add_Goto (Table.States (834), 275, 93);
+            Add_Goto (Table.States (834), 279, 94);
+            Add_Goto (Table.States (834), 293, 97);
+            Add_Goto (Table.States (834), 296, 98);
+            Add_Goto (Table.States (834), 297, 99);
+            Add_Goto (Table.States (834), 301, 100);
+            Add_Goto (Table.States (834), 302, 364);
+            Add_Goto (Table.States (834), 303, 1011);
+            Add_Goto (Table.States (834), 305, 101);
+            Add_Goto (Table.States (834), 306, 102);
+            Add_Goto (Table.States (834), 309, 366);
+            Add_Goto (Table.States (834), 326, 115);
+            Table.States (834).Kernel := To_Vector ((0 => ((225, 0),  22,  3, 
(2147483647, 0),  0)));
+            Table.States (834).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (303, 1),  0)));
+            Table.States (835).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (835), 32, (225, 2), 1012);
+            Table.States (835).Kernel := To_Vector ((0 => ((225, 2),  24,  2, 
(2147483647, 0),  0)));
+            Table.States (835).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (225, 2),  32, 1012)));
+            Table.States (836).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (836), (22, 23, 24), (178, 0),  2, 
elsif_statement_list_0'Access, null);
+            Table.States (836).Kernel := To_Vector ((0 => ((178, 0),  177,  0, 
(178, 0),  2)));
+            Table.States (836).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (178, 0),  2)));
             Table.States (837).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (837), 105, 1010);
-            Table.States (837).Kernel := To_Vector ((0 => (177, 25, 6, 
False)));
-            Table.States (837).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 1010)));
-            Table.States (838).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (838), (24, 25, 28, 29, 40, 46, 50), 
(268, 5), 1, null, null);
-            Table.States (838).Kernel := To_Vector ((0 => (268, 122, 0, 
False)));
-            Table.States (838).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 268, 1)));
-            Table.States (839).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (839), (24, 25, 28, 29, 40, 46, 50), 
(268, 2), 1, null, null);
-            Table.States (839).Kernel := To_Vector ((0 => (268, 177, 0, 
False)));
-            Table.States (839).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 268, 1)));
-            Table.States (840).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (840), (24, 25, 28, 29, 40, 46, 50), 
(268, 3), 1, null, null);
-            Table.States (840).Kernel := To_Vector ((0 => (268, 194, 0, 
False)));
-            Table.States (840).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 268, 1)));
-            Table.States (841).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (841), (24, 25, 28, 29, 40, 46, 50), 
(268, 4), 1, null, null);
-            Table.States (841).Kernel := To_Vector ((0 => (268, 244, 0, 
False)));
-            Table.States (841).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 268, 1)));
-            Table.States (842).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (842), 29, 7);
-            Add_Action (Table.States (842), 50, 18);
-            Table.States (842).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (842), 208, 247);
-            Add_Goto (Table.States (842), 263, 248);
-            Add_Goto (Table.States (842), 313, 1011);
-            Table.States (842).Kernel := To_Vector (((194, 247, 7, False), 
(244, 247, 5, False), (308, 247, 6, False),
-            (310, 247, 3, False)));
-            Table.States (842).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 50, 18)));
-            Table.States (843).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (843), (24, 25, 28, 29, 40, 46, 50), 
(269, 1), 1, null, null);
-            Table.States (843).Kernel := To_Vector ((0 => (269, 268, 0, 
False)));
-            Table.States (843).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 269, 1)));
-            Table.States (844).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (844), 24, Reduce, (270, 0), 1, null, 
null);
-            Add_Action (Table.States (844), 25, 837);
-            Add_Action (Table.States (844), 28, 184);
-            Add_Action (Table.States (844), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (844), 40, 12);
-            Add_Action (Table.States (844), 46, 14);
-            Add_Action (Table.States (844), 50, Reduce, (247, 2), 0, null, 
null);
-            Table.States (844).Goto_List.Set_Capacity (13);
-            Add_Goto (Table.States (844), 122, 838);
-            Add_Goto (Table.States (844), 128, 41);
-            Add_Goto (Table.States (844), 177, 839);
-            Add_Goto (Table.States (844), 183, 56);
-            Add_Goto (Table.States (844), 194, 840);
-            Add_Goto (Table.States (844), 208, 62);
-            Add_Goto (Table.States (844), 244, 841);
-            Add_Goto (Table.States (844), 247, 842);
-            Add_Goto (Table.States (844), 263, 88);
-            Add_Goto (Table.States (844), 268, 1012);
-            Add_Goto (Table.States (844), 282, 95);
-            Add_Goto (Table.States (844), 308, 846);
-            Add_Goto (Table.States (844), 310, 847);
-            Table.States (844).Kernel := To_Vector (((269, 269, 3, True), 
(270, 269, 0, False)));
-            Table.States (844).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 270, 1)));
+            Add_Action (Table.States (837), 99, (251, 0), 1013);
+            Table.States (837).Kernel := To_Vector ((0 => ((251, 0),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (837).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (251, 0),  99, 1013)));
+            Table.States (838).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (838), 13, (250, 0), 1014);
+            Add_Action (Table.States (838), 24, (250, 1), 1015);
+            Table.States (838).Kernel := To_Vector ((((250, 0),  162,  3, 
(2147483647, 0),  0), ((250, 1),  162,  2,
+            (2147483647, 0),  0)));
+            Table.States (838).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (250, 1),  24, 1015)));
+            Table.States (839).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (839), 99, (216, 0), 1016);
+            Table.States (839).Kernel := To_Vector ((0 => ((216, 0),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (839).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (216, 0),  99, 1016)));
+            Table.States (840).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (840), (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, 
81, 96, 107, 108, 109, 110), (253, 0),  6,
+            package_renaming_declaration_0'Access, null);
+            Table.States (840).Kernel := To_Vector ((0 => ((253, 0),  99,  0, 
(253, 0),  6)));
+            Table.States (840).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (253, 0),  6)));
+            Table.States (841).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (841), 81, (242, 8), 31);
+            Add_Action (Table.States (841), 99, Reduce, (243, 1),  0, null, 
null);
+            Add_Action (Table.States (841), 107, (242, 5), 120);
+            Add_Action (Table.States (841), 108, (242, 7), 34);
+            Add_Action (Table.States (841), 109, (242, 6), 35);
+            Table.States (841).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (841), 131, 42);
+            Add_Goto (Table.States (841), 242, 644);
+            Add_Goto (Table.States (841), 243, 1017);
+            Add_Goto (Table.States (841), 275, 93);
+            Add_Goto (Table.States (841), 296, 98);
+            Table.States (841).Kernel := To_Vector ((0 => ((254, 1),  24,  0, 
(243, 1),  0)));
+            Table.States (841).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (243, 1),  0)));
+            Table.States (842).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (842), 24, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (842), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (842), 28, (124, 0), 185);
+            Add_Action (Table.States (842), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (842), 30, (213, 0), 8);
+            Add_Action (Table.States (842), 40, (249, 0), 12);
+            Add_Action (Table.States (842), 46, (249, 1), 14);
+            Add_Action (Table.States (842), 47, (216, 0), 15);
+            Add_Action (Table.States (842), 48, (260, 0), 16);
+            Add_Action (Table.States (842), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (842), 51, (267, 0), 19);
+            Add_Action (Table.States (842), 63, (316, 0), 25);
+            Add_Action (Table.States (842), 66, (308, 0), 26);
+            Add_Action (Table.States (842), 69, (209, 0), 27);
+            Add_Action (Table.States (842), 71, (334, 0), 28);
+            Add_Action (Table.States (842), 107, (222, 1), 187);
+            Table.States (842).Goto_List.Set_Capacity (53);
+            Add_Goto (Table.States (842), 115, 36);
+            Add_Goto (Table.States (842), 124, 38);
+            Add_Goto (Table.States (842), 130, 41);
+            Add_Goto (Table.States (842), 137, 46);
+            Add_Goto (Table.States (842), 138, 47);
+            Add_Goto (Table.States (842), 160, 394);
+            Add_Goto (Table.States (842), 161, 395);
+            Add_Goto (Table.States (842), 162, 1018);
+            Add_Goto (Table.States (842), 182, 55);
+            Add_Goto (Table.States (842), 185, 56);
+            Add_Goto (Table.States (842), 189, 57);
+            Add_Goto (Table.States (842), 196, 59);
+            Add_Goto (Table.States (842), 209, 61);
+            Add_Goto (Table.States (842), 210, 62);
+            Add_Goto (Table.States (842), 212, 63);
+            Add_Goto (Table.States (842), 213, 64);
+            Add_Goto (Table.States (842), 216, 65);
+            Add_Goto (Table.States (842), 217, 66);
+            Add_Goto (Table.States (842), 218, 67);
+            Add_Goto (Table.States (842), 219, 68);
+            Add_Goto (Table.States (842), 222, 70);
+            Add_Goto (Table.States (842), 226, 72);
+            Add_Goto (Table.States (842), 246, 75);
+            Add_Goto (Table.States (842), 247, 76);
+            Add_Goto (Table.States (842), 248, 77);
+            Add_Goto (Table.States (842), 249, 78);
+            Add_Goto (Table.States (842), 250, 79);
+            Add_Goto (Table.States (842), 251, 80);
+            Add_Goto (Table.States (842), 252, 81);
+            Add_Goto (Table.States (842), 253, 82);
+            Add_Goto (Table.States (842), 254, 83);
+            Add_Goto (Table.States (842), 260, 397);
+            Add_Goto (Table.States (842), 262, 85);
+            Add_Goto (Table.States (842), 263, 86);
+            Add_Goto (Table.States (842), 265, 88);
+            Add_Goto (Table.States (842), 266, 89);
+            Add_Goto (Table.States (842), 267, 90);
+            Add_Goto (Table.States (842), 268, 91);
+            Add_Goto (Table.States (842), 274, 92);
+            Add_Goto (Table.States (842), 284, 95);
+            Add_Goto (Table.States (842), 292, 96);
+            Add_Goto (Table.States (842), 307, 103);
+            Add_Goto (Table.States (842), 308, 104);
+            Add_Goto (Table.States (842), 310, 106);
+            Add_Goto (Table.States (842), 311, 107);
+            Add_Goto (Table.States (842), 312, 108);
+            Add_Goto (Table.States (842), 314, 109);
+            Add_Goto (Table.States (842), 316, 110);
+            Add_Goto (Table.States (842), 319, 112);
+            Add_Goto (Table.States (842), 320, 113);
+            Add_Goto (Table.States (842), 322, 114);
+            Add_Goto (Table.States (842), 328, 116);
+            Add_Goto (Table.States (842), 334, 117);
+            Table.States (842).Kernel := To_Vector ((0 => ((254, 0),  49,  1, 
(2147483647, 0),  0)));
+            Table.States (842).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (162, 1),  0)));
+            Table.States (843).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (843), (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, 81, 96, 107, 108,
+            109, 110), (260, 0),  6, pragma_g_0'Access, null);
+            Table.States (843).Kernel := To_Vector ((0 => ((260, 0),  99,  0, 
(260, 0),  6)));
+            Table.States (843).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (260, 0),  6)));
+            Table.States (844).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (844), (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, 81, 96, 107, 108,
+            109, 110), (260, 1),  6, pragma_g_1'Access, null);
+            Table.States (844).Kernel := To_Vector ((0 => ((260, 1),  99,  0, 
(260, 1),  6)));
+            Table.States (844).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (260, 1),  6)));
             Table.States (845).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (845), 24, 1013);
-            Table.States (845).Kernel := To_Vector ((0 => (265, 270, 2, 
False)));
-            Table.States (845).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1013)));
-            Table.States (846).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (846), (24, 25, 28, 29, 40, 46, 50), 
(268, 1), 1, null, null);
-            Table.States (846).Kernel := To_Vector ((0 => (268, 308, 0, 
False)));
-            Table.States (846).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 268, 1)));
+            Add_Action (Table.States (845), 99, (268, 0), 1019);
+            Table.States (845).Kernel := To_Vector ((0 => ((268, 0),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (845).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (268, 0),  99, 1019)));
+            Table.States (846).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (846), 107, (179, 0), 1020);
+            Table.States (846).Kernel := To_Vector ((0 => ((179, 0),  25,  6, 
(2147483647, 0),  0)));
+            Table.States (846).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (179, 0),  107, 1020)));
             Table.States (847).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (847), (24, 25, 28, 29, 40, 46, 50), 
(268, 0), 1, null, null);
-            Table.States (847).Kernel := To_Vector ((0 => (268, 310, 0, 
False)));
-            Table.States (847).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 268, 1)));
-            Table.States (848).Action_List.Set_Capacity (18);
-            Add_Action (Table.States (848), 24, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (848), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (848), 28, 184);
-            Add_Action (Table.States (848), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (848), 30, 8);
-            Add_Action (Table.States (848), 39, 1014);
-            Add_Action (Table.States (848), 40, 12);
-            Add_Action (Table.States (848), 46, 14);
-            Add_Action (Table.States (848), 47, 15);
-            Add_Action (Table.States (848), 48, 16);
-            Add_Action (Table.States (848), 49, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (848), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (848), 51, 19);
-            Add_Action (Table.States (848), 63, 25);
-            Add_Action (Table.States (848), 66, 26);
-            Add_Action (Table.States (848), 69, 27);
-            Add_Action (Table.States (848), 71, 28);
-            Add_Action (Table.States (848), 105, 186);
-            Table.States (848).Goto_List.Set_Capacity (54);
-            Add_Goto (Table.States (848), 113, 36);
-            Add_Goto (Table.States (848), 122, 38);
-            Add_Goto (Table.States (848), 128, 41);
-            Add_Goto (Table.States (848), 135, 46);
-            Add_Goto (Table.States (848), 136, 47);
-            Add_Goto (Table.States (848), 158, 392);
-            Add_Goto (Table.States (848), 159, 393);
-            Add_Goto (Table.States (848), 160, 675);
-            Add_Goto (Table.States (848), 180, 55);
-            Add_Goto (Table.States (848), 183, 56);
-            Add_Goto (Table.States (848), 187, 57);
-            Add_Goto (Table.States (848), 194, 59);
-            Add_Goto (Table.States (848), 207, 61);
-            Add_Goto (Table.States (848), 208, 62);
-            Add_Goto (Table.States (848), 210, 63);
-            Add_Goto (Table.States (848), 211, 64);
-            Add_Goto (Table.States (848), 214, 65);
-            Add_Goto (Table.States (848), 215, 66);
-            Add_Goto (Table.States (848), 216, 67);
-            Add_Goto (Table.States (848), 217, 68);
-            Add_Goto (Table.States (848), 220, 70);
-            Add_Goto (Table.States (848), 224, 72);
-            Add_Goto (Table.States (848), 244, 75);
-            Add_Goto (Table.States (848), 245, 76);
-            Add_Goto (Table.States (848), 246, 77);
-            Add_Goto (Table.States (848), 247, 78);
-            Add_Goto (Table.States (848), 248, 79);
-            Add_Goto (Table.States (848), 249, 80);
-            Add_Goto (Table.States (848), 250, 81);
-            Add_Goto (Table.States (848), 251, 82);
-            Add_Goto (Table.States (848), 252, 83);
-            Add_Goto (Table.States (848), 258, 395);
-            Add_Goto (Table.States (848), 260, 85);
-            Add_Goto (Table.States (848), 261, 86);
-            Add_Goto (Table.States (848), 263, 88);
-            Add_Goto (Table.States (848), 264, 89);
-            Add_Goto (Table.States (848), 265, 90);
-            Add_Goto (Table.States (848), 266, 91);
-            Add_Goto (Table.States (848), 267, 1015);
-            Add_Goto (Table.States (848), 272, 92);
-            Add_Goto (Table.States (848), 282, 95);
-            Add_Goto (Table.States (848), 290, 96);
-            Add_Goto (Table.States (848), 305, 103);
-            Add_Goto (Table.States (848), 306, 104);
-            Add_Goto (Table.States (848), 308, 106);
-            Add_Goto (Table.States (848), 309, 107);
-            Add_Goto (Table.States (848), 310, 108);
-            Add_Goto (Table.States (848), 312, 109);
-            Add_Goto (Table.States (848), 314, 110);
-            Add_Goto (Table.States (848), 317, 112);
-            Add_Goto (Table.States (848), 318, 113);
-            Add_Goto (Table.States (848), 320, 114);
-            Add_Goto (Table.States (848), 326, 116);
-            Add_Goto (Table.States (848), 332, 117);
-            Table.States (848).Kernel := To_Vector (((272, 35, 5, False), 
(272, 35, 2, False)));
-            Table.States (848).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 160, 0)));
-            Table.States (849).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (849), 10, 1016);
-            Add_Action (Table.States (849), 74, 1017);
-            Table.States (849).Kernel := To_Vector (((228, 228, 2, True), 
(305, 228, 3, False)));
-            Table.States (849).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 1017)));
+            Add_Action (Table.States (847), (24, 25, 28, 29, 40, 46, 50), 
(270, 5),  1, null, null);
+            Table.States (847).Kernel := To_Vector ((0 => ((270, 5),  124,  0, 
(270, 5),  1)));
+            Table.States (847).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (270, 5),  1)));
+            Table.States (848).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (848), (24, 25, 28, 29, 40, 46, 50), 
(270, 2),  1, null, null);
+            Table.States (848).Kernel := To_Vector ((0 => ((270, 2),  179,  0, 
(270, 2),  1)));
+            Table.States (848).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (270, 2),  1)));
+            Table.States (849).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (849), (24, 25, 28, 29, 40, 46, 50), 
(270, 3),  1, null, null);
+            Table.States (849).Kernel := To_Vector ((0 => ((270, 3),  196,  0, 
(270, 3),  1)));
+            Table.States (849).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (270, 3),  1)));
             Table.States (850).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (850), 10, Reduce, (228, 1), 1, 
interface_list_1'Access, null);
-            Add_Action (Table.States (850), 74, Reduce, (228, 1), 1, 
interface_list_1'Access, null);
-            Add_Action (Table.States (850), 76, 236);
-            Add_Action (Table.States (850), 85, 238);
-            Add_Action (Table.States (850), 97, Reduce, (228, 1), 1, 
interface_list_1'Access, null);
-            Add_Action (Table.States (850), 102, 240);
-            Add_Action (Table.States (850), 103, 241);
-            Table.States (850).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (850), 116, 242);
-            Add_Goto (Table.States (850), 323, 243);
-            Table.States (850).Kernel := To_Vector (((129, 240, 2, True), 
(228, 240, 0, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (850).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 228, 1)));
+            Add_Action (Table.States (850), (24, 25, 28, 29, 40, 46, 50), 
(270, 4),  1, null, null);
+            Table.States (850).Kernel := To_Vector ((0 => ((270, 4),  246,  0, 
(270, 4),  1)));
+            Table.States (850).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (270, 4),  1)));
             Table.States (851).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (851), 97, Reduce, (221, 1), 0, null, 
null);
-            Add_Action (Table.States (851), 105, 150);
-            Table.States (851).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (851), 221, 1018);
-            Table.States (851).Kernel := To_Vector ((0 => (267, 24, 0, 
False)));
-            Table.States (851).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 0)));
-            Table.States (852).Action_List.Set_Capacity (16);
-            Add_Action (Table.States (852), 24, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (852), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (852), 28, 184);
-            Add_Action (Table.States (852), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (852), 30, 8);
-            Add_Action (Table.States (852), 40, 12);
-            Add_Action (Table.States (852), 46, 14);
-            Add_Action (Table.States (852), 47, 15);
-            Add_Action (Table.States (852), 48, 16);
-            Add_Action (Table.States (852), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (852), 51, 19);
-            Add_Action (Table.States (852), 63, 25);
-            Add_Action (Table.States (852), 66, 26);
-            Add_Action (Table.States (852), 69, 27);
-            Add_Action (Table.States (852), 71, 28);
-            Add_Action (Table.States (852), 105, 186);
-            Table.States (852).Goto_List.Set_Capacity (53);
-            Add_Goto (Table.States (852), 113, 36);
-            Add_Goto (Table.States (852), 122, 38);
-            Add_Goto (Table.States (852), 128, 41);
-            Add_Goto (Table.States (852), 135, 46);
-            Add_Goto (Table.States (852), 136, 47);
-            Add_Goto (Table.States (852), 158, 392);
-            Add_Goto (Table.States (852), 159, 393);
-            Add_Goto (Table.States (852), 160, 1019);
-            Add_Goto (Table.States (852), 180, 55);
-            Add_Goto (Table.States (852), 183, 56);
-            Add_Goto (Table.States (852), 187, 57);
-            Add_Goto (Table.States (852), 194, 59);
-            Add_Goto (Table.States (852), 207, 61);
-            Add_Goto (Table.States (852), 208, 62);
-            Add_Goto (Table.States (852), 210, 63);
-            Add_Goto (Table.States (852), 211, 64);
-            Add_Goto (Table.States (852), 214, 65);
-            Add_Goto (Table.States (852), 215, 66);
-            Add_Goto (Table.States (852), 216, 67);
-            Add_Goto (Table.States (852), 217, 68);
-            Add_Goto (Table.States (852), 220, 70);
-            Add_Goto (Table.States (852), 224, 72);
-            Add_Goto (Table.States (852), 244, 75);
-            Add_Goto (Table.States (852), 245, 76);
-            Add_Goto (Table.States (852), 246, 77);
-            Add_Goto (Table.States (852), 247, 78);
-            Add_Goto (Table.States (852), 248, 79);
-            Add_Goto (Table.States (852), 249, 80);
-            Add_Goto (Table.States (852), 250, 81);
-            Add_Goto (Table.States (852), 251, 82);
-            Add_Goto (Table.States (852), 252, 83);
-            Add_Goto (Table.States (852), 258, 395);
-            Add_Goto (Table.States (852), 260, 85);
-            Add_Goto (Table.States (852), 261, 86);
-            Add_Goto (Table.States (852), 263, 88);
-            Add_Goto (Table.States (852), 264, 89);
-            Add_Goto (Table.States (852), 265, 90);
-            Add_Goto (Table.States (852), 266, 91);
-            Add_Goto (Table.States (852), 272, 92);
-            Add_Goto (Table.States (852), 282, 95);
-            Add_Goto (Table.States (852), 290, 96);
-            Add_Goto (Table.States (852), 305, 103);
-            Add_Goto (Table.States (852), 306, 104);
-            Add_Goto (Table.States (852), 308, 106);
-            Add_Goto (Table.States (852), 309, 107);
-            Add_Goto (Table.States (852), 310, 108);
-            Add_Goto (Table.States (852), 312, 109);
-            Add_Goto (Table.States (852), 314, 110);
-            Add_Goto (Table.States (852), 317, 112);
-            Add_Goto (Table.States (852), 318, 113);
-            Add_Goto (Table.States (852), 320, 114);
-            Add_Goto (Table.States (852), 326, 116);
-            Add_Goto (Table.States (852), 332, 117);
-            Table.States (852).Kernel := To_Vector ((0 => (267, 49, 1, 
False)));
-            Table.States (852).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 160, 0)));
-         end Subr_15;
-         procedure Subr_16
-         is begin
-            Table.States (853).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (853), (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, 
79, 94, 105, 106, 107, 108), (305, 1), 6,
+            Add_Action (Table.States (851), 29, (210, 0), 7);
+            Add_Action (Table.States (851), 50, (265, 0), 18);
+            Table.States (851).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (851), 210, 248);
+            Add_Goto (Table.States (851), 265, 249);
+            Add_Goto (Table.States (851), 315, 1021);
+            Table.States (851).Kernel := To_Vector ((((196, 0),  249,  7, 
(2147483647, 0),  0), ((246, 0),  249,  5,
+            (2147483647, 0),  0), ((310, 0),  249,  6, (2147483647, 0),  0), 
((312, 0),  249,  3, (2147483647, 0),
+            0)));
+            Table.States (851).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (265, 0),  50, 18)));
+            Table.States (852).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (852), (24, 25, 28, 29, 40, 46, 50), 
(271, 1),  1, null, null);
+            Table.States (852).Kernel := To_Vector ((0 => ((271, 1),  270,  0, 
(271, 1),  1)));
+            Table.States (852).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (271, 1),  1)));
+            Table.States (853).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (853), 24, Reduce, (272, 0),  1, null, 
null);
+            Add_Action (Table.States (853), 25, (179, 0), 846);
+            Add_Action (Table.States (853), 28, (124, 0), 185);
+            Add_Action (Table.States (853), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (853), 40, (249, 0), 12);
+            Add_Action (Table.States (853), 46, (249, 1), 14);
+            Add_Action (Table.States (853), 50, Reduce, (249, 2),  0, null, 
null);
+            Table.States (853).Goto_List.Set_Capacity (13);
+            Add_Goto (Table.States (853), 124, 847);
+            Add_Goto (Table.States (853), 130, 41);
+            Add_Goto (Table.States (853), 179, 848);
+            Add_Goto (Table.States (853), 185, 56);
+            Add_Goto (Table.States (853), 196, 849);
+            Add_Goto (Table.States (853), 210, 62);
+            Add_Goto (Table.States (853), 246, 850);
+            Add_Goto (Table.States (853), 249, 851);
+            Add_Goto (Table.States (853), 265, 88);
+            Add_Goto (Table.States (853), 270, 1022);
+            Add_Goto (Table.States (853), 284, 95);
+            Add_Goto (Table.States (853), 310, 855);
+            Add_Goto (Table.States (853), 312, 856);
+            Table.States (853).Kernel := To_Vector ((((271, 0),  271,  3, 
(2147483647, 0),  0), ((272, 0),  271,  0,
+            (272, 0),  1)));
+            Table.States (853).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (272, 0),  1)));
+            Table.States (854).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (854), 24, (267, 0), 1023);
+            Table.States (854).Kernel := To_Vector ((0 => ((267, 0),  272,  2, 
(2147483647, 0),  0)));
+            Table.States (854).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (267, 0),  24, 1023)));
+            Table.States (855).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (855), (24, 25, 28, 29, 40, 46, 50), 
(270, 1),  1, null, null);
+            Table.States (855).Kernel := To_Vector ((0 => ((270, 1),  310,  0, 
(270, 1),  1)));
+            Table.States (855).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (270, 1),  1)));
+            Table.States (856).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (856), (24, 25, 28, 29, 40, 46, 50), 
(270, 0),  1, null, null);
+            Table.States (856).Kernel := To_Vector ((0 => ((270, 0),  312,  0, 
(270, 0),  1)));
+            Table.States (856).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (270, 0),  1)));
+            Table.States (857).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (857), 24, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (857), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (857), 28, (124, 0), 185);
+            Add_Action (Table.States (857), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (857), 30, (213, 0), 8);
+            Add_Action (Table.States (857), 39, (274, 0), 1024);
+            Add_Action (Table.States (857), 40, (249, 0), 12);
+            Add_Action (Table.States (857), 46, (249, 1), 14);
+            Add_Action (Table.States (857), 47, (216, 0), 15);
+            Add_Action (Table.States (857), 48, (260, 0), 16);
+            Add_Action (Table.States (857), 49, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (857), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (857), 51, (267, 0), 19);
+            Add_Action (Table.States (857), 63, (316, 0), 25);
+            Add_Action (Table.States (857), 66, (308, 0), 26);
+            Add_Action (Table.States (857), 69, (209, 0), 27);
+            Add_Action (Table.States (857), 71, (334, 0), 28);
+            Add_Action (Table.States (857), 107, (222, 1), 187);
+            Table.States (857).Goto_List.Set_Capacity (54);
+            Add_Goto (Table.States (857), 115, 36);
+            Add_Goto (Table.States (857), 124, 38);
+            Add_Goto (Table.States (857), 130, 41);
+            Add_Goto (Table.States (857), 137, 46);
+            Add_Goto (Table.States (857), 138, 47);
+            Add_Goto (Table.States (857), 160, 394);
+            Add_Goto (Table.States (857), 161, 395);
+            Add_Goto (Table.States (857), 162, 681);
+            Add_Goto (Table.States (857), 182, 55);
+            Add_Goto (Table.States (857), 185, 56);
+            Add_Goto (Table.States (857), 189, 57);
+            Add_Goto (Table.States (857), 196, 59);
+            Add_Goto (Table.States (857), 209, 61);
+            Add_Goto (Table.States (857), 210, 62);
+            Add_Goto (Table.States (857), 212, 63);
+            Add_Goto (Table.States (857), 213, 64);
+            Add_Goto (Table.States (857), 216, 65);
+            Add_Goto (Table.States (857), 217, 66);
+            Add_Goto (Table.States (857), 218, 67);
+            Add_Goto (Table.States (857), 219, 68);
+            Add_Goto (Table.States (857), 222, 70);
+            Add_Goto (Table.States (857), 226, 72);
+            Add_Goto (Table.States (857), 246, 75);
+            Add_Goto (Table.States (857), 247, 76);
+            Add_Goto (Table.States (857), 248, 77);
+            Add_Goto (Table.States (857), 249, 78);
+            Add_Goto (Table.States (857), 250, 79);
+            Add_Goto (Table.States (857), 251, 80);
+            Add_Goto (Table.States (857), 252, 81);
+            Add_Goto (Table.States (857), 253, 82);
+            Add_Goto (Table.States (857), 254, 83);
+            Add_Goto (Table.States (857), 260, 397);
+            Add_Goto (Table.States (857), 262, 85);
+            Add_Goto (Table.States (857), 263, 86);
+            Add_Goto (Table.States (857), 265, 88);
+            Add_Goto (Table.States (857), 266, 89);
+            Add_Goto (Table.States (857), 267, 90);
+            Add_Goto (Table.States (857), 268, 91);
+            Add_Goto (Table.States (857), 269, 1025);
+            Add_Goto (Table.States (857), 274, 92);
+            Add_Goto (Table.States (857), 284, 95);
+            Add_Goto (Table.States (857), 292, 96);
+            Add_Goto (Table.States (857), 307, 103);
+            Add_Goto (Table.States (857), 308, 104);
+            Add_Goto (Table.States (857), 310, 106);
+            Add_Goto (Table.States (857), 311, 107);
+            Add_Goto (Table.States (857), 312, 108);
+            Add_Goto (Table.States (857), 314, 109);
+            Add_Goto (Table.States (857), 316, 110);
+            Add_Goto (Table.States (857), 319, 112);
+            Add_Goto (Table.States (857), 320, 113);
+            Add_Goto (Table.States (857), 322, 114);
+            Add_Goto (Table.States (857), 328, 116);
+            Add_Goto (Table.States (857), 334, 117);
+            Table.States (857).Kernel := To_Vector ((((274, 0),  35,  5, 
(2147483647, 0),  0), ((274, 1),  35,  2,
+            (2147483647, 0),  0)));
+            Table.States (857).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (162, 1),  0)));
+            Table.States (858).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (858), 10, (230, 0), 1026);
+            Add_Action (Table.States (858), 74, (307, 0), 1027);
+            Table.States (858).Kernel := To_Vector ((((230, 0),  230,  2, 
(2147483647, 0),  0), ((307, 0),  230,  3,
+            (2147483647, 0),  0)));
+            Table.States (858).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (307, 0),  74, 1027)));
+            Table.States (859).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (859), 10, Reduce, (230, 1),  1, 
interface_list_1'Access, null);
+            Add_Action (Table.States (859), 74, Reduce, (230, 1),  1, 
interface_list_1'Access, null);
+            Add_Action (Table.States (859), 76, (118, 0), 237);
+            Add_Action (Table.States (859), 87, (296, 0), 239);
+            Add_Action (Table.States (859), 99, Reduce, (230, 1),  1, 
interface_list_1'Access, null);
+            Add_Action (Table.States (859), 104, (325, 0), 241);
+            Add_Action (Table.States (859), 105, (325, 1), 242);
+            Table.States (859).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (859), 118, 243);
+            Add_Goto (Table.States (859), 325, 244);
+            Table.States (859).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((230, 1),  242,  0,
+            (230, 1),  1), ((242, 0),  242,  5, (2147483647, 0),  0), ((242, 
1),  242,  2, (2147483647, 0),  0), ((275,
+            0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (859).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (230, 1),  1)));
+            Table.States (860).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (860), 99, Reduce, (223, 1),  0, null, 
null);
+            Add_Action (Table.States (860), 107, (223, 0), 151);
+            Table.States (860).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (860), 223, 1028);
+            Table.States (860).Kernel := To_Vector ((0 => ((269, 1),  24,  0, 
(223, 1),  0)));
+            Table.States (860).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (223, 1),  0)));
+            Table.States (861).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (861), 24, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (861), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (861), 28, (124, 0), 185);
+            Add_Action (Table.States (861), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (861), 30, (213, 0), 8);
+            Add_Action (Table.States (861), 40, (249, 0), 12);
+            Add_Action (Table.States (861), 46, (249, 1), 14);
+            Add_Action (Table.States (861), 47, (216, 0), 15);
+            Add_Action (Table.States (861), 48, (260, 0), 16);
+            Add_Action (Table.States (861), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (861), 51, (267, 0), 19);
+            Add_Action (Table.States (861), 63, (316, 0), 25);
+            Add_Action (Table.States (861), 66, (308, 0), 26);
+            Add_Action (Table.States (861), 69, (209, 0), 27);
+            Add_Action (Table.States (861), 71, (334, 0), 28);
+            Add_Action (Table.States (861), 107, (222, 1), 187);
+            Table.States (861).Goto_List.Set_Capacity (53);
+            Add_Goto (Table.States (861), 115, 36);
+            Add_Goto (Table.States (861), 124, 38);
+            Add_Goto (Table.States (861), 130, 41);
+            Add_Goto (Table.States (861), 137, 46);
+            Add_Goto (Table.States (861), 138, 47);
+            Add_Goto (Table.States (861), 160, 394);
+            Add_Goto (Table.States (861), 161, 395);
+            Add_Goto (Table.States (861), 162, 1029);
+            Add_Goto (Table.States (861), 182, 55);
+            Add_Goto (Table.States (861), 185, 56);
+            Add_Goto (Table.States (861), 189, 57);
+            Add_Goto (Table.States (861), 196, 59);
+            Add_Goto (Table.States (861), 209, 61);
+            Add_Goto (Table.States (861), 210, 62);
+            Add_Goto (Table.States (861), 212, 63);
+            Add_Goto (Table.States (861), 213, 64);
+            Add_Goto (Table.States (861), 216, 65);
+            Add_Goto (Table.States (861), 217, 66);
+            Add_Goto (Table.States (861), 218, 67);
+            Add_Goto (Table.States (861), 219, 68);
+            Add_Goto (Table.States (861), 222, 70);
+            Add_Goto (Table.States (861), 226, 72);
+            Add_Goto (Table.States (861), 246, 75);
+            Add_Goto (Table.States (861), 247, 76);
+            Add_Goto (Table.States (861), 248, 77);
+            Add_Goto (Table.States (861), 249, 78);
+            Add_Goto (Table.States (861), 250, 79);
+            Add_Goto (Table.States (861), 251, 80);
+            Add_Goto (Table.States (861), 252, 81);
+            Add_Goto (Table.States (861), 253, 82);
+            Add_Goto (Table.States (861), 254, 83);
+            Add_Goto (Table.States (861), 260, 397);
+            Add_Goto (Table.States (861), 262, 85);
+            Add_Goto (Table.States (861), 263, 86);
+            Add_Goto (Table.States (861), 265, 88);
+            Add_Goto (Table.States (861), 266, 89);
+            Add_Goto (Table.States (861), 267, 90);
+            Add_Goto (Table.States (861), 268, 91);
+            Add_Goto (Table.States (861), 274, 92);
+            Add_Goto (Table.States (861), 284, 95);
+            Add_Goto (Table.States (861), 292, 96);
+            Add_Goto (Table.States (861), 307, 103);
+            Add_Goto (Table.States (861), 308, 104);
+            Add_Goto (Table.States (861), 310, 106);
+            Add_Goto (Table.States (861), 311, 107);
+            Add_Goto (Table.States (861), 312, 108);
+            Add_Goto (Table.States (861), 314, 109);
+            Add_Goto (Table.States (861), 316, 110);
+            Add_Goto (Table.States (861), 319, 112);
+            Add_Goto (Table.States (861), 320, 113);
+            Add_Goto (Table.States (861), 322, 114);
+            Add_Goto (Table.States (861), 328, 116);
+            Add_Goto (Table.States (861), 334, 117);
+            Table.States (861).Kernel := To_Vector ((0 => ((269, 0),  49,  1, 
(2147483647, 0),  0)));
+            Table.States (861).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (162, 1),  0)));
+            Table.States (862).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (862), (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, 
81, 96, 107, 108, 109, 110), (307, 1),  6,
             single_protected_declaration_1'Access, 
single_protected_declaration_1_check'Access);
-            Table.States (853).Kernel := To_Vector ((0 => (305, 97, 0, 
False)));
-            Table.States (853).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 305, 6)));
-            Table.States (854).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (854), (21, 83, 97), (293, 1), 1, null, 
null);
-            Table.States (854).Kernel := To_Vector ((0 => (293, 115, 0, 
False)));
-            Table.States (854).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 293, 1)));
-            Table.States (855).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (855), 21, Reduce, (195, 1), 5, 
extended_return_object_declaration_1'Access,
+            Table.States (862).Kernel := To_Vector ((0 => ((307, 1),  99,  0, 
(307, 1),  6)));
+            Table.States (862).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (307, 1),  6)));
+            Table.States (863).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (863), (21, 85, 99), (295, 1),  1, null, 
null);
+            Table.States (863).Kernel := To_Vector ((0 => ((295, 1),  117,  0, 
(295, 1),  1)));
+            Table.States (863).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (295, 1),  1)));
+            Table.States (864).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (864), 21, Reduce, (197, 1),  5, 
extended_return_object_declaration_1'Access,
             null);
-            Add_Action (Table.States (855), 83, 1020);
-            Add_Action (Table.States (855), 97, Reduce, (195, 1), 5, 
extended_return_object_declaration_1'Access,
+            Add_Action (Table.States (864), 85, (197, 0), 1030);
+            Add_Action (Table.States (864), 99, Reduce, (197, 1),  5, 
extended_return_object_declaration_1'Access,
             null);
-            Table.States (855).Kernel := To_Vector (((195, 293, 1, False), 
(195, 293, 0, False)));
-            Table.States (855).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 195, 5)));
-            Table.States (856).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (856), (21, 83, 97), (293, 0), 1, null, 
null);
-            Table.States (856).Kernel := To_Vector ((0 => (293, 315, 0, 
False)));
-            Table.States (856).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 293, 1)));
-            Table.States (857).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (857), 97, 1021);
-            Table.States (857).Kernel := To_Vector ((0 => (197, 58, 1, 
False)));
-            Table.States (857).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1021)));
-            Table.States (858).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (858), 79, 31);
-            Add_Action (Table.States (858), 105, 120);
-            Add_Action (Table.States (858), 106, 34);
-            Add_Action (Table.States (858), 107, 35);
-            Table.States (858).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (858), 129, 42);
-            Add_Goto (Table.States (858), 240, 1022);
-            Add_Goto (Table.States (858), 273, 93);
-            Add_Goto (Table.States (858), 294, 98);
-            Table.States (858).Kernel := To_Vector (((248, 14, 5, False), 
(248, 14, 4, False)));
-            Table.States (858).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (859).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (859), 105, 1023);
-            Table.States (859).Kernel := To_Vector ((0 => (265, 14, 4, 
False)));
-            Table.States (859).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 1023)));
-            Table.States (860).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (860), 105, 1024);
-            Table.States (860).Kernel := To_Vector ((0 => (317, 14, 5, 
False)));
-            Table.States (860).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 1024)));
-            Table.States (861).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (861), 35, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (861), 74, 338);
-            Table.States (861).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (861), 123, 1025);
-            Table.States (861).Kernel := To_Vector ((0 => (308, 313, 4, 
False)));
-            Table.States (861).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (862).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (862), (22, 24, 43), (296, 1), 5, 
select_alternative_1'Access, null);
-            Table.States (862).Kernel := To_Vector ((0 => (296, 97, 0, 
False)));
-            Table.States (862).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 296, 5)));
-            Table.States (863).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (863), (22, 24, 43), (296, 0), 5, 
select_alternative_0'Access, null);
-            Table.States (863).Kernel := To_Vector ((0 => (296, 301, 0, 
False)));
-            Table.States (863).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 296, 5)));
-            Table.States (864).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (864), 97, 1026);
-            Table.States (864).Kernel := To_Vector ((0 => (153, 61, 1, 
False)));
-            Table.States (864).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1026)));
-            Table.States (865).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (865), 97, 1027);
-            Table.States (865).Kernel := To_Vector ((0 => (324, 61, 1, 
False)));
-            Table.States (865).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1027)));
+            Table.States (864).Kernel := To_Vector ((((197, 0),  295,  1, 
(2147483647, 0),  0), ((197, 1),  295,  0,
+            (197, 1),  5)));
+            Table.States (864).Minimal_Complete_Actions := To_Vector (((Shift, 
(197, 0),  85, 1030), (Reduce, (197, 1),
+             5)));
+            Table.States (865).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (865), (21, 85, 99), (295, 0),  1, null, 
null);
+            Table.States (865).Kernel := To_Vector ((0 => ((295, 0),  317,  0, 
(295, 0),  1)));
+            Table.States (865).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (295, 0),  1)));
             Table.States (866).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (866), 97, 1028);
-            Table.States (866).Kernel := To_Vector ((0 => (295, 61, 1, 
False)));
-            Table.States (866).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1028)));
-            Table.States (867).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (867), 61, 1029);
-            Table.States (867).Kernel := To_Vector ((0 => (127, 24, 2, 
False)));
-            Table.States (867).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 61, 1029)));
-            Table.States (868).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (868), (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, 
79, 94, 105, 106, 107, 108), (314, 0), 6,
-            subtype_declaration_0'Access, null);
-            Table.States (868).Kernel := To_Vector ((0 => (314, 97, 0, 
False)));
-            Table.States (868).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 314, 6)));
+            Add_Action (Table.States (866), 99, (199, 0), 1031);
+            Table.States (866).Kernel := To_Vector ((0 => ((199, 0),  58,  1, 
(2147483647, 0),  0)));
+            Table.States (866).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (199, 0),  99, 1031)));
+            Table.States (867).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (867), 81, (242, 8), 31);
+            Add_Action (Table.States (867), 107, (242, 5), 120);
+            Add_Action (Table.States (867), 108, (242, 7), 34);
+            Add_Action (Table.States (867), 109, (242, 6), 35);
+            Table.States (867).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (867), 131, 42);
+            Add_Goto (Table.States (867), 242, 1032);
+            Add_Goto (Table.States (867), 275, 93);
+            Add_Goto (Table.States (867), 296, 98);
+            Table.States (867).Kernel := To_Vector ((((250, 0),  14,  5, 
(2147483647, 0),  0), ((250, 1),  14,  4,
+            (2147483647, 0),  0)));
+            Table.States (867).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (868).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (868), 107, (267, 0), 1033);
+            Table.States (868).Kernel := To_Vector ((0 => ((267, 0),  14,  4, 
(2147483647, 0),  0)));
+            Table.States (868).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (267, 0),  107, 1033)));
             Table.States (869).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (869), 97, 1030);
-            Table.States (869).Kernel := To_Vector ((0 => (318, 123, 1, 
False)));
-            Table.States (869).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1030)));
-            Table.States (870).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (870), 13, 1031);
-            Table.States (870).Kernel := To_Vector ((0 => (317, 160, 3, 
False)));
-            Table.States (870).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 1031)));
-            Table.States (871).Action_List.Set_Capacity (18);
-            Add_Action (Table.States (871), 24, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (871), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (871), 28, 184);
-            Add_Action (Table.States (871), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (871), 30, 8);
-            Add_Action (Table.States (871), 39, 1032);
-            Add_Action (Table.States (871), 40, 12);
-            Add_Action (Table.States (871), 46, 14);
-            Add_Action (Table.States (871), 47, 15);
-            Add_Action (Table.States (871), 48, 16);
-            Add_Action (Table.States (871), 49, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (871), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (871), 51, 19);
-            Add_Action (Table.States (871), 63, 25);
-            Add_Action (Table.States (871), 66, 26);
-            Add_Action (Table.States (871), 69, 27);
-            Add_Action (Table.States (871), 71, 28);
-            Add_Action (Table.States (871), 105, 186);
-            Table.States (871).Goto_List.Set_Capacity (54);
-            Add_Goto (Table.States (871), 113, 36);
-            Add_Goto (Table.States (871), 122, 38);
-            Add_Goto (Table.States (871), 128, 41);
-            Add_Goto (Table.States (871), 135, 46);
-            Add_Goto (Table.States (871), 136, 47);
-            Add_Goto (Table.States (871), 158, 392);
-            Add_Goto (Table.States (871), 159, 393);
-            Add_Goto (Table.States (871), 160, 700);
-            Add_Goto (Table.States (871), 180, 55);
-            Add_Goto (Table.States (871), 183, 56);
-            Add_Goto (Table.States (871), 187, 57);
-            Add_Goto (Table.States (871), 194, 59);
-            Add_Goto (Table.States (871), 207, 61);
-            Add_Goto (Table.States (871), 208, 62);
-            Add_Goto (Table.States (871), 210, 63);
-            Add_Goto (Table.States (871), 211, 64);
-            Add_Goto (Table.States (871), 214, 65);
-            Add_Goto (Table.States (871), 215, 66);
-            Add_Goto (Table.States (871), 216, 67);
-            Add_Goto (Table.States (871), 217, 68);
-            Add_Goto (Table.States (871), 220, 70);
-            Add_Goto (Table.States (871), 224, 72);
-            Add_Goto (Table.States (871), 244, 75);
-            Add_Goto (Table.States (871), 245, 76);
-            Add_Goto (Table.States (871), 246, 77);
-            Add_Goto (Table.States (871), 247, 78);
-            Add_Goto (Table.States (871), 248, 79);
-            Add_Goto (Table.States (871), 249, 80);
-            Add_Goto (Table.States (871), 250, 81);
-            Add_Goto (Table.States (871), 251, 82);
-            Add_Goto (Table.States (871), 252, 83);
-            Add_Goto (Table.States (871), 258, 395);
-            Add_Goto (Table.States (871), 260, 85);
-            Add_Goto (Table.States (871), 261, 86);
-            Add_Goto (Table.States (871), 263, 88);
-            Add_Goto (Table.States (871), 264, 89);
-            Add_Goto (Table.States (871), 265, 90);
-            Add_Goto (Table.States (871), 266, 91);
-            Add_Goto (Table.States (871), 272, 92);
-            Add_Goto (Table.States (871), 282, 95);
-            Add_Goto (Table.States (871), 290, 96);
-            Add_Goto (Table.States (871), 305, 103);
-            Add_Goto (Table.States (871), 306, 104);
-            Add_Goto (Table.States (871), 308, 106);
-            Add_Goto (Table.States (871), 309, 107);
-            Add_Goto (Table.States (871), 310, 108);
-            Add_Goto (Table.States (871), 312, 109);
-            Add_Goto (Table.States (871), 314, 110);
-            Add_Goto (Table.States (871), 317, 112);
-            Add_Goto (Table.States (871), 318, 113);
-            Add_Goto (Table.States (871), 319, 1033);
-            Add_Goto (Table.States (871), 320, 114);
-            Add_Goto (Table.States (871), 326, 116);
-            Add_Goto (Table.States (871), 332, 117);
-            Table.States (871).Kernel := To_Vector (((320, 35, 5, False), 
(320, 35, 2, False)));
-            Table.States (871).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 319, 0)));
-            Table.States (872).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (872), (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, 
79, 94, 105, 106, 107, 108), (320, 2), 6,
+            Add_Action (Table.States (869), 107, (319, 0), 1034);
+            Table.States (869).Kernel := To_Vector ((0 => ((319, 0),  14,  5, 
(2147483647, 0),  0)));
+            Table.States (869).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (319, 0),  107, 1034)));
+            Table.States (870).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (870), 35, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (870), 74, (125, 0), 340);
+            Table.States (870).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (870), 125, 1035);
+            Table.States (870).Kernel := To_Vector ((0 => ((310, 0),  315,  4, 
(2147483647, 0),  0)));
+            Table.States (870).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (871).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (871), (22, 24, 43), (298, 1),  5, 
select_alternative_1'Access, null);
+            Table.States (871).Kernel := To_Vector ((0 => ((298, 1),  99,  0, 
(298, 1),  5)));
+            Table.States (871).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (298, 1),  5)));
+            Table.States (872).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (872), (22, 24, 43), (298, 0),  5, 
select_alternative_0'Access, null);
+            Table.States (872).Kernel := To_Vector ((0 => ((298, 0),  303,  0, 
(298, 0),  5)));
+            Table.States (872).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (298, 0),  5)));
+            Table.States (873).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (873), 99, (155, 0), 1036);
+            Table.States (873).Kernel := To_Vector ((0 => ((155, 0),  61,  1, 
(2147483647, 0),  0)));
+            Table.States (873).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (155, 0),  99, 1036)));
+            Table.States (874).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (874), 99, (326, 0), 1037);
+            Table.States (874).Kernel := To_Vector ((0 => ((326, 0),  61,  1, 
(2147483647, 0),  0)));
+            Table.States (874).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (326, 0),  99, 1037)));
+            Table.States (875).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (875), 99, (297, 0), 1038);
+            Table.States (875).Kernel := To_Vector ((0 => ((297, 0),  61,  1, 
(2147483647, 0),  0)));
+            Table.States (875).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (297, 0),  99, 1038)));
+            Table.States (876).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (876), 61, (129, 0), 1039);
+            Table.States (876).Kernel := To_Vector ((0 => ((129, 0),  24,  2, 
(2147483647, 0),  0)));
+            Table.States (876).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (129, 0),  61, 1039)));
+            Table.States (877).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (877), (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, 
81, 96, 107, 108, 109, 110), (316, 0),  6,
+            subtype_declaration_0'Access, null);
+            Table.States (877).Kernel := To_Vector ((0 => ((316, 0),  99,  0, 
(316, 0),  6)));
+            Table.States (877).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (316, 0),  6)));
+            Table.States (878).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (878), 99, (320, 0), 1040);
+            Table.States (878).Kernel := To_Vector ((0 => ((320, 0),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (878).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (320, 0),  99, 1040)));
+            Table.States (879).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (879), 13, (319, 0), 1041);
+            Table.States (879).Kernel := To_Vector ((0 => ((319, 0),  162,  3, 
(2147483647, 0),  0)));
+            Table.States (879).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (319, 0),  13, 1041)));
+            Table.States (880).Action_List.Set_Capacity (18);
+            Add_Action (Table.States (880), 24, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (880), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (880), 28, (124, 0), 185);
+            Add_Action (Table.States (880), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (880), 30, (213, 0), 8);
+            Add_Action (Table.States (880), 39, (322, 0), 1042);
+            Add_Action (Table.States (880), 40, (249, 0), 12);
+            Add_Action (Table.States (880), 46, (249, 1), 14);
+            Add_Action (Table.States (880), 47, (216, 0), 15);
+            Add_Action (Table.States (880), 48, (260, 0), 16);
+            Add_Action (Table.States (880), 49, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (880), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (880), 51, (267, 0), 19);
+            Add_Action (Table.States (880), 63, (316, 0), 25);
+            Add_Action (Table.States (880), 66, (308, 0), 26);
+            Add_Action (Table.States (880), 69, (209, 0), 27);
+            Add_Action (Table.States (880), 71, (334, 0), 28);
+            Add_Action (Table.States (880), 107, (222, 1), 187);
+            Table.States (880).Goto_List.Set_Capacity (54);
+            Add_Goto (Table.States (880), 115, 36);
+            Add_Goto (Table.States (880), 124, 38);
+            Add_Goto (Table.States (880), 130, 41);
+            Add_Goto (Table.States (880), 137, 46);
+            Add_Goto (Table.States (880), 138, 47);
+            Add_Goto (Table.States (880), 160, 394);
+            Add_Goto (Table.States (880), 161, 395);
+            Add_Goto (Table.States (880), 162, 706);
+            Add_Goto (Table.States (880), 182, 55);
+            Add_Goto (Table.States (880), 185, 56);
+            Add_Goto (Table.States (880), 189, 57);
+            Add_Goto (Table.States (880), 196, 59);
+            Add_Goto (Table.States (880), 209, 61);
+            Add_Goto (Table.States (880), 210, 62);
+            Add_Goto (Table.States (880), 212, 63);
+            Add_Goto (Table.States (880), 213, 64);
+            Add_Goto (Table.States (880), 216, 65);
+            Add_Goto (Table.States (880), 217, 66);
+            Add_Goto (Table.States (880), 218, 67);
+            Add_Goto (Table.States (880), 219, 68);
+            Add_Goto (Table.States (880), 222, 70);
+            Add_Goto (Table.States (880), 226, 72);
+            Add_Goto (Table.States (880), 246, 75);
+            Add_Goto (Table.States (880), 247, 76);
+            Add_Goto (Table.States (880), 248, 77);
+            Add_Goto (Table.States (880), 249, 78);
+            Add_Goto (Table.States (880), 250, 79);
+            Add_Goto (Table.States (880), 251, 80);
+            Add_Goto (Table.States (880), 252, 81);
+            Add_Goto (Table.States (880), 253, 82);
+            Add_Goto (Table.States (880), 254, 83);
+            Add_Goto (Table.States (880), 260, 397);
+            Add_Goto (Table.States (880), 262, 85);
+            Add_Goto (Table.States (880), 263, 86);
+            Add_Goto (Table.States (880), 265, 88);
+            Add_Goto (Table.States (880), 266, 89);
+            Add_Goto (Table.States (880), 267, 90);
+            Add_Goto (Table.States (880), 268, 91);
+            Add_Goto (Table.States (880), 274, 92);
+            Add_Goto (Table.States (880), 284, 95);
+            Add_Goto (Table.States (880), 292, 96);
+            Add_Goto (Table.States (880), 307, 103);
+            Add_Goto (Table.States (880), 308, 104);
+            Add_Goto (Table.States (880), 310, 106);
+            Add_Goto (Table.States (880), 311, 107);
+            Add_Goto (Table.States (880), 312, 108);
+            Add_Goto (Table.States (880), 314, 109);
+            Add_Goto (Table.States (880), 316, 110);
+            Add_Goto (Table.States (880), 319, 112);
+            Add_Goto (Table.States (880), 320, 113);
+            Add_Goto (Table.States (880), 321, 1043);
+            Add_Goto (Table.States (880), 322, 114);
+            Add_Goto (Table.States (880), 328, 116);
+            Add_Goto (Table.States (880), 334, 117);
+            Table.States (880).Kernel := To_Vector ((((322, 0),  35,  5, 
(2147483647, 0),  0), ((322, 1),  35,  2,
+            (2147483647, 0),  0)));
+            Table.States (880).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (321, 1),  0)));
+            Table.States (881).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (881), (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, 
81, 96, 107, 108, 109, 110), (322, 2),  6,
             task_type_declaration_2'Access, null);
-            Table.States (872).Kernel := To_Vector ((0 => (320, 97, 0, 
False)));
-            Table.States (872).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 320, 6)));
-            Table.States (873).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (873), 10, 1016);
-            Add_Action (Table.States (873), 74, 1034);
-            Table.States (873).Kernel := To_Vector (((228, 228, 2, True), 
(306, 228, 3, False)));
-            Table.States (873).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 1034)));
-            Table.States (874).Action_List.Set_Capacity (16);
-            Add_Action (Table.States (874), 24, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (874), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (874), 28, 184);
-            Add_Action (Table.States (874), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (874), 30, 8);
-            Add_Action (Table.States (874), 40, 12);
-            Add_Action (Table.States (874), 46, 14);
-            Add_Action (Table.States (874), 47, 15);
-            Add_Action (Table.States (874), 48, 16);
-            Add_Action (Table.States (874), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (874), 51, 19);
-            Add_Action (Table.States (874), 63, 25);
-            Add_Action (Table.States (874), 66, 26);
-            Add_Action (Table.States (874), 69, 27);
-            Add_Action (Table.States (874), 71, 28);
-            Add_Action (Table.States (874), 105, 186);
-            Table.States (874).Goto_List.Set_Capacity (53);
-            Add_Goto (Table.States (874), 113, 36);
-            Add_Goto (Table.States (874), 122, 38);
-            Add_Goto (Table.States (874), 128, 41);
-            Add_Goto (Table.States (874), 135, 46);
-            Add_Goto (Table.States (874), 136, 47);
-            Add_Goto (Table.States (874), 158, 392);
-            Add_Goto (Table.States (874), 159, 393);
-            Add_Goto (Table.States (874), 160, 1035);
-            Add_Goto (Table.States (874), 180, 55);
-            Add_Goto (Table.States (874), 183, 56);
-            Add_Goto (Table.States (874), 187, 57);
-            Add_Goto (Table.States (874), 194, 59);
-            Add_Goto (Table.States (874), 207, 61);
-            Add_Goto (Table.States (874), 208, 62);
-            Add_Goto (Table.States (874), 210, 63);
-            Add_Goto (Table.States (874), 211, 64);
-            Add_Goto (Table.States (874), 214, 65);
-            Add_Goto (Table.States (874), 215, 66);
-            Add_Goto (Table.States (874), 216, 67);
-            Add_Goto (Table.States (874), 217, 68);
-            Add_Goto (Table.States (874), 220, 70);
-            Add_Goto (Table.States (874), 224, 72);
-            Add_Goto (Table.States (874), 244, 75);
-            Add_Goto (Table.States (874), 245, 76);
-            Add_Goto (Table.States (874), 246, 77);
-            Add_Goto (Table.States (874), 247, 78);
-            Add_Goto (Table.States (874), 248, 79);
-            Add_Goto (Table.States (874), 249, 80);
-            Add_Goto (Table.States (874), 250, 81);
-            Add_Goto (Table.States (874), 251, 82);
-            Add_Goto (Table.States (874), 252, 83);
-            Add_Goto (Table.States (874), 258, 395);
-            Add_Goto (Table.States (874), 260, 85);
-            Add_Goto (Table.States (874), 261, 86);
-            Add_Goto (Table.States (874), 263, 88);
-            Add_Goto (Table.States (874), 264, 89);
-            Add_Goto (Table.States (874), 265, 90);
-            Add_Goto (Table.States (874), 266, 91);
-            Add_Goto (Table.States (874), 272, 92);
-            Add_Goto (Table.States (874), 282, 95);
-            Add_Goto (Table.States (874), 290, 96);
-            Add_Goto (Table.States (874), 305, 103);
-            Add_Goto (Table.States (874), 306, 104);
-            Add_Goto (Table.States (874), 308, 106);
-            Add_Goto (Table.States (874), 309, 107);
-            Add_Goto (Table.States (874), 310, 108);
-            Add_Goto (Table.States (874), 312, 109);
-            Add_Goto (Table.States (874), 314, 110);
-            Add_Goto (Table.States (874), 317, 112);
-            Add_Goto (Table.States (874), 318, 113);
-            Add_Goto (Table.States (874), 320, 114);
-            Add_Goto (Table.States (874), 326, 116);
-            Add_Goto (Table.States (874), 332, 117);
-            Table.States (874).Kernel := To_Vector ((0 => (319, 49, 0, 
False)));
-            Table.States (874).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 160, 0)));
-            Table.States (875).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (875), 97, Reduce, (221, 1), 0, null, 
null);
-            Add_Action (Table.States (875), 105, 150);
-            Table.States (875).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (875), 221, 1036);
-            Table.States (875).Kernel := To_Vector ((0 => (306, 24, 1, 
False)));
-            Table.States (875).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 0)));
-            Table.States (876).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (876), (77, 97), (172, 0), 3, null, null);
-            Table.States (876).Kernel := To_Vector ((0 => (172, 171, 0, 
True)));
-            Table.States (876).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 172, 3)));
-            Table.States (876).Minimal_Complete_Actions_Recursive := True;
-            Table.States (877).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (877), 41, 1037);
-            Table.States (877).Kernel := To_Vector (((242, 40, 1, False), 
(243, 40, 2, False), (243, 40, 4, False)));
-            Table.States (877).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 41, 1037)));
-            Table.States (878).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (878), 76, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (878), 77, Reduce, (243, 0), 1, 
null_exclusion_opt_name_type_0'Access, null);
-            Add_Action (Table.States (878), 83, Reduce, (243, 0), 1, 
null_exclusion_opt_name_type_0'Access, null);
-            Add_Action (Table.States (878), 85, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (878), 97, Reduce, (243, 0), 1, 
null_exclusion_opt_name_type_0'Access, null);
-            Add_Action (Table.States (878), 102, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (878), 103, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Table.States (878).Kernel := To_Vector (((240, 105, 0, False), 
(243, 105, 0, False)));
-            Table.States (878).Minimal_Complete_Actions := To_Vector 
(((Reduce, 240, 1), (Reduce, 243, 1)));
-            Table.States (879).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (879), 77, Reduce, (171, 3), 3, null, 
null);
-            Add_Action (Table.States (879), 83, 1038);
-            Add_Action (Table.States (879), 97, Reduce, (171, 3), 3, null, 
null);
-            Table.States (879).Kernel := To_Vector (((171, 115, 1, False), 
(171, 115, 0, False)));
-            Table.States (879).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 171, 3)));
-            Table.States (880).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (880), 76, 236);
-            Add_Action (Table.States (880), 85, 238);
-            Add_Action (Table.States (880), 102, 240);
-            Add_Action (Table.States (880), 103, 241);
-            Table.States (880).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (880), 116, 242);
-            Add_Goto (Table.States (880), 323, 243);
-            Table.States (880).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (273, 240, 3, True), (294, 240, 2, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True)));
-            Table.States (880).Minimal_Complete_Actions := To_Vector (((Shift, 
102, 240), (Shift, 76, 236), (Shift, 85,
-            238)));
-            Table.States (880).Minimal_Complete_Actions_Recursive := True;
-            Table.States (881).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (881), 77, Reduce, (171, 2), 3, null, 
null);
-            Add_Action (Table.States (881), 83, 1039);
-            Add_Action (Table.States (881), 97, Reduce, (171, 2), 3, null, 
null);
-            Table.States (881).Kernel := To_Vector (((171, 243, 1, False), 
(171, 243, 0, False)));
-            Table.States (881).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 171, 3)));
-            Table.States (882).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (882), 76, Reduce, (240, 2), 1, null, 
name_2_check'Access);
-            Add_Action (Table.States (882), 77, Reduce, (243, 1), 1, 
null_exclusion_opt_name_type_1'Access, null);
-            Add_Action (Table.States (882), 83, Reduce, (243, 1), 1, 
null_exclusion_opt_name_type_1'Access, null);
-            Add_Action (Table.States (882), 85, Reduce, (240, 2), 1, null, 
name_2_check'Access);
-            Add_Action (Table.States (882), 97, Reduce, (243, 1), 1, 
null_exclusion_opt_name_type_1'Access, null);
-            Add_Action (Table.States (882), 102, Reduce, (240, 2), 1, null, 
name_2_check'Access);
-            Add_Action (Table.States (882), 103, Reduce, (240, 2), 1, null, 
name_2_check'Access);
-            Table.States (882).Kernel := To_Vector (((240, 294, 0, True), 
(243, 294, 0, False)));
-            Table.States (882).Minimal_Complete_Actions := To_Vector 
(((Reduce, 240, 1), (Reduce, 243, 1)));
-            Table.States (882).Minimal_Complete_Actions_Recursive := True;
-            Table.States (883).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (883), 39, Reduce, (110, 0), 2, null, 
null);
-            Add_Conflict (Table.States (883), 39, (111, 0), 2, null, null);
-            Table.States (883).Kernel := To_Vector (((110, 36, 0, False), 
(111, 36, 0, False)));
-            Table.States (883).Minimal_Complete_Actions := To_Vector 
(((Reduce, 110, 2), (Reduce, 111, 2)));
-            Table.States (884).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (884), (1 =>  39), (110, 1), 2, null, 
null);
-            Table.States (884).Kernel := To_Vector ((0 => (110, 64, 0, 
False)));
-            Table.States (884).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 110, 2)));
-            Table.States (885).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (885), 36, 1040);
-            Add_Action (Table.States (885), 41, Reduce, (112, 1), 2, null, 
null);
-            Add_Action (Table.States (885), 49, Reduce, (112, 1), 2, null, 
null);
-            Add_Action (Table.States (885), 54, Reduce, (112, 1), 2, null, 
null);
-            Table.States (885).Kernel := To_Vector (((112, 65, 1, False), 
(112, 65, 0, False)));
-            Table.States (885).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 112, 2)));
-            Table.States (886).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (886), 3, 122);
-            Add_Action (Table.States (886), 39, 123);
-            Add_Action (Table.States (886), 40, 477);
-            Add_Action (Table.States (886), 41, 125);
-            Add_Action (Table.States (886), 76, 127);
-            Add_Action (Table.States (886), 79, 31);
-            Add_Action (Table.States (886), 95, 128);
-            Add_Action (Table.States (886), 96, 129);
-            Add_Action (Table.States (886), 104, 130);
-            Add_Action (Table.States (886), 105, 120);
-            Add_Action (Table.States (886), 106, 34);
-            Add_Action (Table.States (886), 107, 35);
-            Table.States (886).Goto_List.Set_Capacity (17);
-            Add_Goto (Table.States (886), 118, 131);
-            Add_Goto (Table.States (886), 129, 42);
-            Add_Goto (Table.States (886), 168, 784);
-            Add_Goto (Table.States (886), 169, 1041);
-            Add_Goto (Table.States (886), 198, 134);
-            Add_Goto (Table.States (886), 226, 1042);
-            Add_Goto (Table.States (886), 227, 1043);
-            Add_Goto (Table.States (886), 240, 1044);
-            Add_Goto (Table.States (886), 259, 136);
-            Add_Goto (Table.States (886), 273, 93);
-            Add_Goto (Table.States (886), 278, 481);
-            Add_Goto (Table.States (886), 294, 98);
-            Add_Goto (Table.States (886), 302, 482);
-            Add_Goto (Table.States (886), 315, 483);
-            Add_Goto (Table.States (886), 321, 145);
-            Add_Goto (Table.States (886), 322, 146);
-            Add_Goto (Table.States (886), 331, 147);
-            Table.States (886).Kernel := To_Vector (((121, 76, 6, False), 
(121, 76, 6, False)));
-            Table.States (886).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (887).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (887), 20, 1045);
-            Add_Action (Table.States (887), 53, 1046);
-            Add_Action (Table.States (887), 74, Reduce, (280, 1), 0, null, 
null);
-            Add_Action (Table.States (887), 97, Reduce, (280, 1), 0, null, 
null);
-            Table.States (887).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (887), 280, 1047);
-            Table.States (887).Kernel := To_Vector (((327, 193, 1, False), 
(327, 193, 0, False)));
-            Table.States (887).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 280, 0)));
+            Table.States (881).Kernel := To_Vector ((0 => ((322, 2),  99,  0, 
(322, 2),  6)));
+            Table.States (881).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (322, 2),  6)));
+            Table.States (882).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (882), 10, (230, 0), 1026);
+            Add_Action (Table.States (882), 74, (308, 0), 1044);
+            Table.States (882).Kernel := To_Vector ((((230, 0),  230,  2, 
(2147483647, 0),  0), ((308, 0),  230,  3,
+            (2147483647, 0),  0)));
+            Table.States (882).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (308, 0),  74, 1044)));
+         end Subr_16;
+         procedure Subr_17
+         is begin
+            Table.States (883).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (883), 24, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (883), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (883), 28, (124, 0), 185);
+            Add_Action (Table.States (883), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (883), 30, (213, 0), 8);
+            Add_Action (Table.States (883), 40, (249, 0), 12);
+            Add_Action (Table.States (883), 46, (249, 1), 14);
+            Add_Action (Table.States (883), 47, (216, 0), 15);
+            Add_Action (Table.States (883), 48, (260, 0), 16);
+            Add_Action (Table.States (883), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (883), 51, (267, 0), 19);
+            Add_Action (Table.States (883), 63, (316, 0), 25);
+            Add_Action (Table.States (883), 66, (308, 0), 26);
+            Add_Action (Table.States (883), 69, (209, 0), 27);
+            Add_Action (Table.States (883), 71, (334, 0), 28);
+            Add_Action (Table.States (883), 107, (222, 1), 187);
+            Table.States (883).Goto_List.Set_Capacity (53);
+            Add_Goto (Table.States (883), 115, 36);
+            Add_Goto (Table.States (883), 124, 38);
+            Add_Goto (Table.States (883), 130, 41);
+            Add_Goto (Table.States (883), 137, 46);
+            Add_Goto (Table.States (883), 138, 47);
+            Add_Goto (Table.States (883), 160, 394);
+            Add_Goto (Table.States (883), 161, 395);
+            Add_Goto (Table.States (883), 162, 1045);
+            Add_Goto (Table.States (883), 182, 55);
+            Add_Goto (Table.States (883), 185, 56);
+            Add_Goto (Table.States (883), 189, 57);
+            Add_Goto (Table.States (883), 196, 59);
+            Add_Goto (Table.States (883), 209, 61);
+            Add_Goto (Table.States (883), 210, 62);
+            Add_Goto (Table.States (883), 212, 63);
+            Add_Goto (Table.States (883), 213, 64);
+            Add_Goto (Table.States (883), 216, 65);
+            Add_Goto (Table.States (883), 217, 66);
+            Add_Goto (Table.States (883), 218, 67);
+            Add_Goto (Table.States (883), 219, 68);
+            Add_Goto (Table.States (883), 222, 70);
+            Add_Goto (Table.States (883), 226, 72);
+            Add_Goto (Table.States (883), 246, 75);
+            Add_Goto (Table.States (883), 247, 76);
+            Add_Goto (Table.States (883), 248, 77);
+            Add_Goto (Table.States (883), 249, 78);
+            Add_Goto (Table.States (883), 250, 79);
+            Add_Goto (Table.States (883), 251, 80);
+            Add_Goto (Table.States (883), 252, 81);
+            Add_Goto (Table.States (883), 253, 82);
+            Add_Goto (Table.States (883), 254, 83);
+            Add_Goto (Table.States (883), 260, 397);
+            Add_Goto (Table.States (883), 262, 85);
+            Add_Goto (Table.States (883), 263, 86);
+            Add_Goto (Table.States (883), 265, 88);
+            Add_Goto (Table.States (883), 266, 89);
+            Add_Goto (Table.States (883), 267, 90);
+            Add_Goto (Table.States (883), 268, 91);
+            Add_Goto (Table.States (883), 274, 92);
+            Add_Goto (Table.States (883), 284, 95);
+            Add_Goto (Table.States (883), 292, 96);
+            Add_Goto (Table.States (883), 307, 103);
+            Add_Goto (Table.States (883), 308, 104);
+            Add_Goto (Table.States (883), 310, 106);
+            Add_Goto (Table.States (883), 311, 107);
+            Add_Goto (Table.States (883), 312, 108);
+            Add_Goto (Table.States (883), 314, 109);
+            Add_Goto (Table.States (883), 316, 110);
+            Add_Goto (Table.States (883), 319, 112);
+            Add_Goto (Table.States (883), 320, 113);
+            Add_Goto (Table.States (883), 322, 114);
+            Add_Goto (Table.States (883), 328, 116);
+            Add_Goto (Table.States (883), 334, 117);
+            Table.States (883).Kernel := To_Vector ((0 => ((321, 0),  49,  0, 
(162, 1),  0)));
+            Table.States (883).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (162, 1),  0)));
+            Table.States (884).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (884), 99, Reduce, (223, 1),  0, null, 
null);
+            Add_Action (Table.States (884), 107, (223, 0), 151);
+            Table.States (884).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (884), 223, 1046);
+            Table.States (884).Kernel := To_Vector ((0 => ((308, 1),  24,  1, 
(2147483647, 0),  0)));
+            Table.States (884).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (223, 1),  0)));
+            Table.States (885).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (885), (78, 99), (174, 0),  3, null, 
null);
+            Table.States (885).Kernel := To_Vector ((0 => ((174, 0),  173,  0, 
(174, 0),  3)));
+            Table.States (885).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (174, 0),  3)));
+            Table.States (886).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (886), 41, (244, 0), 1047);
+            Table.States (886).Kernel := To_Vector ((((244, 0),  40,  1, 
(2147483647, 0),  0), ((245, 2),  40,  2,
+            (2147483647, 0),  0), ((245, 3),  40,  4, (2147483647, 0),  0)));
+            Table.States (886).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (244, 0),  41, 1047)));
+            Table.States (887).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (887), 76, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (887), 78, Reduce, (245, 0),  1, 
null_exclusion_opt_name_type_0'Access, null);
+            Add_Action (Table.States (887), 85, Reduce, (245, 0),  1, 
null_exclusion_opt_name_type_0'Access, null);
+            Add_Action (Table.States (887), 87, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (887), 99, Reduce, (245, 0),  1, 
null_exclusion_opt_name_type_0'Access, null);
+            Add_Action (Table.States (887), 104, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (887), 105, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Table.States (887).Kernel := To_Vector ((((242, 5),  107,  0, 
(242, 5),  1), ((245, 0),  107,  0, (245, 0),
+             1)));
+            Table.States (887).Minimal_Complete_Actions := To_Vector 
(((Reduce, (242, 5),  1), (Reduce, (245, 0),
+            1)));
             Table.States (888).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (888), 53, 1046);
-            Add_Action (Table.States (888), 74, Reduce, (280, 1), 0, null, 
null);
-            Add_Action (Table.States (888), 97, Reduce, (280, 1), 0, null, 
null);
-            Table.States (888).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (888), 280, 1048);
-            Table.States (888).Kernel := To_Vector ((0 => (327, 193, 0, 
False)));
-            Table.States (888).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 280, 0)));
-            Table.States (889).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (889), 10, 1049);
-            Add_Action (Table.States (889), 74, Reduce, (229, 4), 2, null, 
null);
-            Add_Action (Table.States (889), 97, Reduce, (229, 4), 2, null, 
null);
-            Table.States (889).Kernel := To_Vector (((229, 34, 2, False), 
(229, 34, 0, False)));
-            Table.States (889).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 229, 2)));
-            Table.States (890).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (890), (74, 97), (327, 2), 2, null, null);
-            Table.States (890).Kernel := To_Vector ((0 => (327, 193, 0, 
False)));
-            Table.States (890).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 327, 2)));
-            Table.States (891).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (891), (74, 97), (281, 1), 2, null, null);
-            Table.States (891).Kernel := To_Vector ((0 => (281, 54, 0, 
False)));
-            Table.States (891).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 281, 2)));
-            Table.States (892).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (892), 10, 1050);
-            Add_Action (Table.States (892), 74, Reduce, (229, 6), 2, null, 
null);
-            Add_Action (Table.States (892), 97, Reduce, (229, 6), 2, null, 
null);
-            Table.States (892).Kernel := To_Vector (((229, 34, 2, False), 
(229, 34, 0, False)));
-            Table.States (892).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 229, 2)));
+            Add_Action (Table.States (888), 78, Reduce, (173, 3),  3, null, 
null);
+            Add_Action (Table.States (888), 85, (173, 1), 1048);
+            Add_Action (Table.States (888), 99, Reduce, (173, 3),  3, null, 
null);
+            Table.States (888).Kernel := To_Vector ((((173, 1),  117,  1, 
(2147483647, 0),  0), ((173, 3),  117,  0,
+            (173, 3),  3)));
+            Table.States (888).Minimal_Complete_Actions := To_Vector (((Shift, 
(173, 1),  85, 1048), (Reduce, (173, 3),
+             3)));
+            Table.States (889).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (889), 76, (118, 0), 237);
+            Add_Action (Table.States (889), 87, (296, 0), 239);
+            Add_Action (Table.States (889), 104, (325, 0), 241);
+            Add_Action (Table.States (889), 105, (325, 1), 242);
+            Table.States (889).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (889), 118, 243);
+            Add_Goto (Table.States (889), 325, 244);
+            Table.States (889).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((275, 0),  242,  3, (2147483647, 0),  0),
+            ((296, 0),  242,  2, (2147483647, 0),  0), ((296, 1),  242,  2, 
(2147483647, 0),  0), ((296, 2),  242,  2,
+            (2147483647, 0),  0), ((296, 3),  242,  2, (2147483647, 0),  0)));
+            Table.States (890).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (890), 78, Reduce, (173, 2),  3, null, 
null);
+            Add_Action (Table.States (890), 85, (173, 0), 1049);
+            Add_Action (Table.States (890), 99, Reduce, (173, 2),  3, null, 
null);
+            Table.States (890).Kernel := To_Vector ((((173, 0),  245,  1, 
(2147483647, 0),  0), ((173, 2),  245,  0,
+            (173, 2),  3)));
+            Table.States (890).Minimal_Complete_Actions := To_Vector (((Shift, 
(173, 0),  85, 1049), (Reduce, (173, 2),
+             3)));
+            Table.States (891).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (891), 76, Reduce, (242, 2),  1, null, 
name_2_check'Access);
+            Add_Action (Table.States (891), 78, Reduce, (245, 1),  1, 
null_exclusion_opt_name_type_1'Access, null);
+            Add_Action (Table.States (891), 85, Reduce, (245, 1),  1, 
null_exclusion_opt_name_type_1'Access, null);
+            Add_Action (Table.States (891), 87, Reduce, (242, 2),  1, null, 
name_2_check'Access);
+            Add_Action (Table.States (891), 99, Reduce, (245, 1),  1, 
null_exclusion_opt_name_type_1'Access, null);
+            Add_Action (Table.States (891), 104, Reduce, (242, 2),  1, null, 
name_2_check'Access);
+            Add_Action (Table.States (891), 105, Reduce, (242, 2),  1, null, 
name_2_check'Access);
+            Table.States (891).Kernel := To_Vector ((((242, 2),  296,  0, 
(242, 2),  1), ((245, 1),  296,  0, (245, 1),
+             1)));
+            Table.States (891).Minimal_Complete_Actions := To_Vector 
(((Reduce, (242, 2),  1), (Reduce, (245, 1),
+            1)));
+            Table.States (892).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (892), 39, Reduce, (112, 0),  2, null, 
null);
+            Add_Conflict (Table.States (892), 39, (113, 0),  2, null, null);
+            Table.States (892).Kernel := To_Vector ((((112, 0),  36,  0, (112, 
0),  2), ((113, 0),  36,  0, (113, 0),
+            2)));
+            Table.States (892).Minimal_Complete_Actions := To_Vector 
(((Reduce, (112, 0),  2), (Reduce, (113, 0),
+            2)));
             Table.States (893).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (893), 86, 1051);
-            Table.States (893).Kernel := To_Vector ((0 => (327, 302, 2, 
False)));
-            Table.States (893).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 86, 1051)));
-            Table.States (894).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (894), 35, Reduce, (165, 1), 0, null, 
null);
-            Add_Action (Table.States (894), 105, 1052);
-            Add_Action (Table.States (894), 106, 1053);
-            Table.States (894).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (894), 164, 1054);
-            Add_Goto (Table.States (894), 165, 1055);
-            Table.States (894).Kernel := To_Vector ((0 => (328, 15, 6, 
False)));
-            Table.States (894).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 165, 0)));
-            Table.States (895).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (895), 97, 1056);
-            Table.States (895).Kernel := To_Vector ((0 => (150, 41, 1, 
False)));
-            Table.States (895).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1056)));
-            Table.States (896).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (896), (15, 24, 28, 72, 105), (149, 1), 
1, null, null);
-            Table.States (896).Kernel := To_Vector ((0 => (149, 122, 0, 
False)));
-            Table.States (896).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 149, 1)));
-            Table.States (897).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (897), (15, 24, 28, 72, 105), (149, 0), 
1, null, null);
-            Table.States (897).Kernel := To_Vector ((0 => (149, 147, 0, 
False)));
-            Table.States (897).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 149, 1)));
-            Table.States (898).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (898), (15, 24, 28, 72, 105), (150, 2), 
1, null, null);
-            Table.States (898).Kernel := To_Vector ((0 => (150, 149, 0, 
False)));
-            Table.States (898).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 150, 1)));
-            Table.States (899).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (899), 15, 894);
-            Add_Action (Table.States (899), 24, Reduce, (151, 0), 1, null, 
null);
-            Add_Action (Table.States (899), 28, 184);
-            Add_Action (Table.States (899), 72, Reduce, (151, 0), 1, null, 
null);
-            Add_Action (Table.States (899), 105, 165);
-            Table.States (899).Goto_List.Set_Capacity (8);
-            Add_Goto (Table.States (899), 122, 896);
-            Add_Goto (Table.States (899), 128, 41);
-            Add_Goto (Table.States (899), 147, 897);
-            Add_Goto (Table.States (899), 149, 1057);
-            Add_Goto (Table.States (899), 183, 56);
-            Add_Goto (Table.States (899), 220, 901);
-            Add_Goto (Table.States (899), 282, 95);
-            Add_Goto (Table.States (899), 328, 1058);
-            Table.States (899).Kernel := To_Vector (((150, 150, 4, True), 
(150, 150, 7, True), (151, 150, 0, False)));
-            Table.States (899).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 151, 1)));
-            Table.States (900).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (900), 24, 1059);
-            Table.States (900).Kernel := To_Vector ((0 => (281, 151, 2, 
False)));
-            Table.States (900).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1059)));
-            Table.States (901).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (901), 82, 1060);
-            Add_Action (Table.States (901), 84, 235);
-            Table.States (901).Kernel := To_Vector (((147, 220, 4, False), 
(147, 220, 3, False), (220, 220, 2, True)));
-            Table.States (901).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 82, 1060)));
-            Table.States (902).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (902), (15, 24, 28, 72, 105), (150, 3), 
1, null, null);
-            Table.States (902).Kernel := To_Vector ((0 => (150, 328, 0, 
False)));
-            Table.States (902).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 150, 1)));
+            Add_Action (Table.States (893), (1 =>  39), (112, 1),  2, null, 
null);
+            Table.States (893).Kernel := To_Vector ((0 => ((112, 1),  64,  0, 
(112, 1),  2)));
+            Table.States (893).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (112, 1),  2)));
+            Table.States (894).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (894), 36, (114, 0), 1050);
+            Add_Action (Table.States (894), 41, Reduce, (114, 1),  2, null, 
null);
+            Add_Action (Table.States (894), 49, Reduce, (114, 1),  2, null, 
null);
+            Add_Action (Table.States (894), 54, Reduce, (114, 1),  2, null, 
null);
+            Table.States (894).Kernel := To_Vector ((((114, 0),  65,  1, 
(2147483647, 0),  0), ((114, 1),  65,  0,
+            (114, 1),  2)));
+            Table.States (894).Minimal_Complete_Actions := To_Vector (((Shift, 
(114, 0),  36, 1050), (Reduce, (114, 1),
+             2)));
+            Table.States (895).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (895), 3, (200, 2), 122);
+            Add_Action (Table.States (895), 39, (261, 4), 123);
+            Add_Action (Table.States (895), 40, (200, 3), 481);
+            Add_Action (Table.States (895), 41, (261, 1), 125);
+            Add_Action (Table.States (895), 76, (120, 0), 127);
+            Add_Action (Table.States (895), 77, (120, 5), 128);
+            Add_Action (Table.States (895), 81, (242, 8), 31);
+            Add_Action (Table.States (895), 97, (333, 1), 129);
+            Add_Action (Table.States (895), 98, (333, 0), 130);
+            Add_Action (Table.States (895), 106, (261, 0), 131);
+            Add_Action (Table.States (895), 107, (242, 5), 120);
+            Add_Action (Table.States (895), 108, (242, 7), 34);
+            Add_Action (Table.States (895), 109, (242, 6), 35);
+            Table.States (895).Goto_List.Set_Capacity (17);
+            Add_Goto (Table.States (895), 120, 132);
+            Add_Goto (Table.States (895), 131, 42);
+            Add_Goto (Table.States (895), 170, 793);
+            Add_Goto (Table.States (895), 171, 1051);
+            Add_Goto (Table.States (895), 200, 135);
+            Add_Goto (Table.States (895), 228, 1052);
+            Add_Goto (Table.States (895), 229, 1053);
+            Add_Goto (Table.States (895), 242, 1054);
+            Add_Goto (Table.States (895), 261, 137);
+            Add_Goto (Table.States (895), 275, 93);
+            Add_Goto (Table.States (895), 280, 485);
+            Add_Goto (Table.States (895), 296, 98);
+            Add_Goto (Table.States (895), 304, 486);
+            Add_Goto (Table.States (895), 317, 487);
+            Add_Goto (Table.States (895), 323, 146);
+            Add_Goto (Table.States (895), 324, 147);
+            Add_Goto (Table.States (895), 333, 148);
+            Table.States (895).Kernel := To_Vector ((((123, 0),  76,  6, 
(2147483647, 0),  0), ((123, 1),  76,  6,
+            (2147483647, 0),  0)));
+            Table.States (895).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (896).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (896), 20, (329, 4), 1055);
+            Add_Action (Table.States (896), 53, (282, 0), 1056);
+            Add_Action (Table.States (896), 74, Reduce, (282, 1),  0, null, 
null);
+            Add_Action (Table.States (896), 99, Reduce, (282, 1),  0, null, 
null);
+            Table.States (896).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (896), 282, 1057);
+            Table.States (896).Kernel := To_Vector ((((329, 4),  195,  1, 
(2147483647, 0),  0), ((329, 5),  195,  0,
+            (282, 1),  0)));
+            Table.States (896).Minimal_Complete_Actions := To_Vector (((Shift, 
(329, 4),  20, 1055), (Reduce, (282, 1),
+             0)));
+            Table.States (897).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (897), 53, (282, 0), 1056);
+            Add_Action (Table.States (897), 74, Reduce, (282, 1),  0, null, 
null);
+            Add_Action (Table.States (897), 99, Reduce, (282, 1),  0, null, 
null);
+            Table.States (897).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (897), 282, 1058);
+            Table.States (897).Kernel := To_Vector ((0 => ((329, 3),  195,  0, 
(282, 1),  0)));
+            Table.States (897).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (282, 1),  0)));
+            Table.States (898).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (898), 10, (231, 0), 1059);
+            Add_Action (Table.States (898), 74, Reduce, (231, 4),  2, null, 
null);
+            Add_Action (Table.States (898), 99, Reduce, (231, 4),  2, null, 
null);
+            Table.States (898).Kernel := To_Vector ((((231, 0),  34,  2, 
(2147483647, 0),  0), ((231, 4),  34,  0,
+            (231, 4),  2)));
+            Table.States (898).Minimal_Complete_Actions := To_Vector (((Shift, 
(231, 0),  10, 1059), (Reduce, (231, 4),
+             2)));
+            Table.States (899).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (899), (74, 99), (329, 2),  2, null, 
null);
+            Table.States (899).Kernel := To_Vector ((0 => ((329, 2),  195,  0, 
(329, 2),  2)));
+            Table.States (899).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (329, 2),  2)));
+            Table.States (900).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (900), (74, 99), (283, 1),  2, null, 
null);
+            Table.States (900).Kernel := To_Vector ((0 => ((283, 1),  54,  0, 
(283, 1),  2)));
+            Table.States (900).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (283, 1),  2)));
+            Table.States (901).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (901), 10, (231, 2), 1060);
+            Add_Action (Table.States (901), 74, Reduce, (231, 6),  2, null, 
null);
+            Add_Action (Table.States (901), 99, Reduce, (231, 6),  2, null, 
null);
+            Table.States (901).Kernel := To_Vector ((((231, 2),  34,  2, 
(2147483647, 0),  0), ((231, 6),  34,  0,
+            (231, 6),  2)));
+            Table.States (901).Minimal_Complete_Actions := To_Vector (((Shift, 
(231, 2),  10, 1060), (Reduce, (231, 6),
+             2)));
+            Table.States (902).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (902), 88, (329, 1), 1061);
+            Table.States (902).Kernel := To_Vector ((0 => ((329, 1),  304,  2, 
(2147483647, 0),  0)));
+            Table.States (902).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (329, 1),  88, 1061)));
             Table.States (903).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (903), 10, 1061);
-            Add_Action (Table.States (903), 74, Reduce, (229, 7), 2, null, 
null);
-            Add_Action (Table.States (903), 97, Reduce, (229, 7), 2, null, 
null);
-            Table.States (903).Kernel := To_Vector (((229, 34, 2, False), 
(229, 34, 0, False)));
-            Table.States (903).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 229, 2)));
-            Table.States (904).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (904), (41, 49, 54), (112, 2), 2, null, 
null);
-            Table.States (904).Kernel := To_Vector ((0 => (112, 36, 0, 
False)));
-            Table.States (904).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 112, 2)));
-            Table.States (905).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (905), (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, 
79, 94, 105, 106, 107, 108), (224, 0), 6,
-            incomplete_type_declaration_0'Access, null);
-            Table.States (905).Kernel := To_Vector ((0 => (224, 97, 0, 
False)));
-            Table.States (905).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 224, 6)));
-            Table.States (906).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (906), 10, 1062);
-            Add_Action (Table.States (906), 74, Reduce, (229, 5), 2, null, 
null);
-            Add_Action (Table.States (906), 97, Reduce, (229, 5), 2, null, 
null);
-            Table.States (906).Kernel := To_Vector (((229, 34, 2, False), 
(229, 34, 0, False)));
-            Table.States (906).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 229, 2)));
-            Table.States (907).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (907), (77, 84), (181, 0), 1, null, null);
-            Table.States (907).Kernel := To_Vector ((0 => (181, 105, 0, 
False)));
-            Table.States (907).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 181, 1)));
-            Table.States (908).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (908), (77, 84), (181, 1), 1, null, null);
-            Table.States (908).Kernel := To_Vector ((0 => (181, 107, 0, 
False)));
-            Table.States (908).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 181, 1)));
-            Table.States (909).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (909), (77, 84), (182, 1), 1, null, null);
-            Table.States (909).Kernel := To_Vector ((0 => (182, 181, 0, 
False)));
-            Table.States (909).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 182, 1)));
+            Add_Action (Table.States (903), 35, Reduce, (167, 1),  0, null, 
null);
+            Add_Action (Table.States (903), 107, (166, 0), 1062);
+            Add_Action (Table.States (903), 108, (166, 1), 1063);
+            Table.States (903).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (903), 166, 1064);
+            Add_Goto (Table.States (903), 167, 1065);
+            Table.States (903).Kernel := To_Vector ((0 => ((330, 0),  15,  6, 
(2147483647, 0),  0)));
+            Table.States (903).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (167, 1),  0)));
+            Table.States (904).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (904), 99, (152, 4), 1066);
+            Table.States (904).Kernel := To_Vector ((0 => ((152, 4),  41,  1, 
(2147483647, 0),  0)));
+            Table.States (904).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (152, 4),  99, 1066)));
+            Table.States (905).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (905), (15, 24, 28, 72, 107), (151, 1),  
1, null, null);
+            Table.States (905).Kernel := To_Vector ((0 => ((151, 1),  124,  0, 
(151, 1),  1)));
+            Table.States (905).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (151, 1),  1)));
+            Table.States (906).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (906), (15, 24, 28, 72, 107), (151, 0),  
1, null, null);
+            Table.States (906).Kernel := To_Vector ((0 => ((151, 0),  149,  0, 
(151, 0),  1)));
+            Table.States (906).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (151, 0),  1)));
+            Table.States (907).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (907), (15, 24, 28, 72, 107), (152, 2),  
1, null, null);
+            Table.States (907).Kernel := To_Vector ((0 => ((152, 2),  151,  0, 
(152, 2),  1)));
+            Table.States (907).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (152, 2),  1)));
+            Table.States (908).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (908), 15, (330, 0), 903);
+            Add_Action (Table.States (908), 24, Reduce, (153, 0),  1, null, 
null);
+            Add_Action (Table.States (908), 28, (124, 0), 185);
+            Add_Action (Table.States (908), 72, Reduce, (153, 0),  1, null, 
null);
+            Add_Action (Table.States (908), 107, (222, 1), 166);
+            Table.States (908).Goto_List.Set_Capacity (8);
+            Add_Goto (Table.States (908), 124, 905);
+            Add_Goto (Table.States (908), 130, 41);
+            Add_Goto (Table.States (908), 149, 906);
+            Add_Goto (Table.States (908), 151, 1067);
+            Add_Goto (Table.States (908), 185, 56);
+            Add_Goto (Table.States (908), 222, 910);
+            Add_Goto (Table.States (908), 284, 95);
+            Add_Goto (Table.States (908), 330, 1068);
+            Table.States (908).Kernel := To_Vector ((((152, 0),  152,  4, 
(2147483647, 0),  0), ((152, 1),  152,  7,
+            (2147483647, 0),  0), ((153, 0),  152,  0, (153, 0),  1)));
+            Table.States (908).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (153, 0),  1)));
+            Table.States (909).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (909), 24, (283, 0), 1069);
+            Table.States (909).Kernel := To_Vector ((0 => ((283, 0),  153,  2, 
(2147483647, 0),  0)));
+            Table.States (909).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (283, 0),  24, 1069)));
             Table.States (910).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (910), 77, 1063);
-            Add_Action (Table.States (910), 84, 1064);
-            Table.States (910).Kernel := To_Vector (((182, 182, 2, True), 
(184, 182, 1, False)));
-            Table.States (910).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 1063)));
+            Add_Action (Table.States (910), 84, (149, 0), 1070);
+            Add_Action (Table.States (910), 86, (222, 0), 236);
+            Table.States (910).Kernel := To_Vector ((((149, 0),  222,  4, 
(2147483647, 0),  0), ((149, 1),  222,  3,
+            (2147483647, 0),  0), ((222, 0),  222,  2, (2147483647, 0),  0)));
+            Table.States (910).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (149, 0),  84, 1070)));
             Table.States (911).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (911), 40, 486);
-            Add_Action (Table.States (911), 79, 31);
-            Add_Action (Table.States (911), 105, 120);
-            Add_Action (Table.States (911), 106, 34);
-            Add_Action (Table.States (911), 107, 35);
-            Table.States (911).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (911), 129, 42);
-            Add_Goto (Table.States (911), 240, 487);
-            Add_Goto (Table.States (911), 273, 93);
-            Add_Goto (Table.States (911), 294, 98);
-            Add_Goto (Table.States (911), 315, 1065);
-            Table.States (911).Kernel := To_Vector ((0 => (260, 39, 4, 
False)));
-            Table.States (911).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (912).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (912), 79, 31);
-            Add_Action (Table.States (912), 105, 120);
-            Add_Action (Table.States (912), 106, 34);
-            Add_Action (Table.States (912), 107, 35);
-            Table.States (912).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (912), 129, 42);
-            Add_Goto (Table.States (912), 240, 1066);
-            Add_Goto (Table.States (912), 273, 93);
-            Add_Goto (Table.States (912), 294, 98);
-            Table.States (912).Kernel := To_Vector (((163, 39, 4, False), 
(163, 39, 1, False)));
-            Table.States (912).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (913).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (913), 74, 338);
-            Add_Action (Table.States (913), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (913).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (913), 123, 1067);
-            Table.States (913).Kernel := To_Vector ((0 => (261, 49, 1, 
False)));
-            Table.States (913).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (914).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (914), (74, 97), (327, 7), 2, null, null);
-            Table.States (914).Kernel := To_Vector ((0 => (327, 281, 0, 
False)));
-            Table.States (914).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 327, 2)));
-            Table.States (915).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (915), 97, 1068);
-            Table.States (915).Kernel := To_Vector ((0 => (207, 123, 1, 
False)));
-            Table.States (915).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1068)));
-            Table.States (916).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (916), 97, 1069);
-            Table.States (916).Kernel := To_Vector ((0 => (246, 123, 1, 
False)));
-            Table.States (916).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1069)));
-            Table.States (917).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (917), 97, 1070);
-            Table.States (917).Kernel := To_Vector ((0 => (246, 123, 1, 
False)));
-            Table.States (917).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1070)));
-            Table.States (918).Action_List.Set_Capacity (11);
-            Add_Action (Table.States (918), 21, Reduce, (115, 2), 4, 
access_definition_2'Access, null);
-            Add_Action (Table.States (918), 35, Reduce, (115, 2), 4, 
access_definition_2'Access, null);
-            Add_Action (Table.States (918), 56, Reduce, (115, 2), 4, 
access_definition_2'Access, null);
-            Add_Action (Table.States (918), 74, Reduce, (115, 2), 4, 
access_definition_2'Access, null);
-            Add_Action (Table.States (918), 76, 236);
-            Add_Action (Table.States (918), 77, Reduce, (115, 2), 4, 
access_definition_2'Access, null);
-            Add_Action (Table.States (918), 83, Reduce, (115, 2), 4, 
access_definition_2'Access, null);
-            Add_Action (Table.States (918), 85, 238);
-            Add_Action (Table.States (918), 97, Reduce, (115, 2), 4, 
access_definition_2'Access, null);
-            Add_Action (Table.States (918), 102, 240);
-            Add_Action (Table.States (918), 103, 241);
-            Table.States (918).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (918), 116, 242);
-            Add_Goto (Table.States (918), 323, 243);
-            Table.States (918).Kernel := To_Vector (((115, 240, 0, False), 
(129, 240, 2, True), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (918).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 115, 4)));
+            Add_Action (Table.States (911), (15, 24, 28, 72, 107), (152, 3),  
1, null, null);
+            Table.States (911).Kernel := To_Vector ((0 => ((152, 3),  330,  0, 
(152, 3),  1)));
+            Table.States (911).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (152, 3),  1)));
+            Table.States (912).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (912), 10, (231, 3), 1071);
+            Add_Action (Table.States (912), 74, Reduce, (231, 7),  2, null, 
null);
+            Add_Action (Table.States (912), 99, Reduce, (231, 7),  2, null, 
null);
+            Table.States (912).Kernel := To_Vector ((((231, 3),  34,  2, 
(2147483647, 0),  0), ((231, 7),  34,  0,
+            (231, 7),  2)));
+            Table.States (912).Minimal_Complete_Actions := To_Vector (((Shift, 
(231, 3),  10, 1071), (Reduce, (231, 7),
+             2)));
+            Table.States (913).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (913), (41, 49, 54), (114, 2),  2, null, 
null);
+            Table.States (913).Kernel := To_Vector ((0 => ((114, 2),  36,  0, 
(114, 2),  2)));
+            Table.States (913).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (114, 2),  2)));
+            Table.States (914).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (914), (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, 
81, 96, 107, 108, 109, 110), (226, 0),  6,
+            incomplete_type_declaration_0'Access, null);
+            Table.States (914).Kernel := To_Vector ((0 => ((226, 0),  99,  0, 
(226, 0),  6)));
+            Table.States (914).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (226, 0),  6)));
+            Table.States (915).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (915), 10, (231, 1), 1072);
+            Add_Action (Table.States (915), 74, Reduce, (231, 5),  2, null, 
null);
+            Add_Action (Table.States (915), 99, Reduce, (231, 5),  2, null, 
null);
+            Table.States (915).Kernel := To_Vector ((((231, 1),  34,  2, 
(2147483647, 0),  0), ((231, 5),  34,  0,
+            (231, 5),  2)));
+            Table.States (915).Minimal_Complete_Actions := To_Vector (((Shift, 
(231, 1),  10, 1072), (Reduce, (231, 5),
+             2)));
+            Table.States (916).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (916), (78, 86), (183, 0),  1, null, 
null);
+            Table.States (916).Kernel := To_Vector ((0 => ((183, 0),  107,  0, 
(183, 0),  1)));
+            Table.States (916).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (183, 0),  1)));
+            Table.States (917).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (917), (78, 86), (183, 1),  1, null, 
null);
+            Table.States (917).Kernel := To_Vector ((0 => ((183, 1),  109,  0, 
(183, 1),  1)));
+            Table.States (917).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (183, 1),  1)));
+            Table.States (918).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (918), (78, 86), (184, 1),  1, null, 
null);
+            Table.States (918).Kernel := To_Vector ((0 => ((184, 1),  183,  0, 
(184, 1),  1)));
+            Table.States (918).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (184, 1),  1)));
             Table.States (919).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (919), 58, 318);
-            Add_Action (Table.States (919), 76, 432);
-            Table.States (919).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (919), 200, 320);
-            Add_Goto (Table.States (919), 253, 1071);
-            Add_Goto (Table.States (919), 292, 322);
-            Table.States (919).Kernel := To_Vector ((0 => (115, 29, 1, True)));
-            Table.States (919).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 58, 318)));
-            Table.States (919).Minimal_Complete_Actions_Recursive := True;
-            Table.States (920).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (920), 21, Reduce, (254, 1), 0, null, 
null);
-            Add_Action (Table.States (920), 35, Reduce, (254, 1), 0, null, 
null);
-            Add_Action (Table.States (920), 56, Reduce, (254, 1), 0, null, 
null);
-            Add_Action (Table.States (920), 74, Reduce, (254, 1), 0, null, 
null);
-            Add_Action (Table.States (920), 76, 432);
-            Add_Action (Table.States (920), 77, Reduce, (254, 1), 0, null, 
null);
-            Add_Action (Table.States (920), 83, Reduce, (254, 1), 0, null, 
null);
-            Add_Action (Table.States (920), 97, Reduce, (254, 1), 0, null, 
null);
-            Table.States (920).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (920), 200, 345);
-            Add_Goto (Table.States (920), 254, 1072);
-            Table.States (920).Kernel := To_Vector ((0 => (115, 50, 0, 
False)));
-            Table.States (920).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 254, 0)));
-            Table.States (921).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (921), 74, 338);
-            Add_Action (Table.States (921), 76, 236);
-            Add_Action (Table.States (921), 85, 238);
-            Add_Action (Table.States (921), 97, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (921), 102, 240);
-            Add_Action (Table.States (921), 103, 241);
-            Table.States (921).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (921), 116, 242);
-            Add_Goto (Table.States (921), 123, 1073);
-            Add_Goto (Table.States (921), 323, 243);
-            Table.States (921).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (246, 240, 1, False), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (921).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (922).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (922), (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, 79, 94, 105, 106,
-            107, 108), (134, 1), 6, block_statement_1'Access, 
block_statement_1_check'Access);
-            Table.States (922).Kernel := To_Vector ((0 => (134, 97, 0, 
False)));
-            Table.States (922).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 134, 6)));
+            Add_Action (Table.States (919), 78, (186, 0), 1073);
+            Add_Action (Table.States (919), 86, (184, 0), 1074);
+            Table.States (919).Kernel := To_Vector ((((184, 0),  184,  2, 
(2147483647, 0),  0), ((186, 0),  184,  1,
+            (2147483647, 0),  0)));
+            Table.States (919).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (186, 0),  78, 1073)));
+            Table.States (920).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (920), 40, (317, 0), 490);
+            Add_Action (Table.States (920), 81, (242, 8), 31);
+            Add_Action (Table.States (920), 107, (242, 5), 120);
+            Add_Action (Table.States (920), 108, (242, 7), 34);
+            Add_Action (Table.States (920), 109, (242, 6), 35);
+            Table.States (920).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (920), 131, 42);
+            Add_Goto (Table.States (920), 242, 491);
+            Add_Goto (Table.States (920), 275, 93);
+            Add_Goto (Table.States (920), 296, 98);
+            Add_Goto (Table.States (920), 317, 1075);
+            Table.States (920).Kernel := To_Vector ((0 => ((262, 0),  39,  4, 
(2147483647, 0),  0)));
+            Table.States (920).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (921).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (921), 81, (242, 8), 31);
+            Add_Action (Table.States (921), 107, (242, 5), 120);
+            Add_Action (Table.States (921), 108, (242, 7), 34);
+            Add_Action (Table.States (921), 109, (242, 6), 35);
+            Table.States (921).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (921), 131, 42);
+            Add_Goto (Table.States (921), 242, 1076);
+            Add_Goto (Table.States (921), 275, 93);
+            Add_Goto (Table.States (921), 296, 98);
+            Table.States (921).Kernel := To_Vector ((((165, 0),  39,  4, 
(2147483647, 0),  0), ((165, 1),  39,  1,
+            (2147483647, 0),  0)));
+            Table.States (921).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (922).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (922), 74, (125, 0), 340);
+            Add_Action (Table.States (922), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (922).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (922), 125, 1077);
+            Table.States (922).Kernel := To_Vector ((0 => ((263, 0),  49,  1, 
(2147483647, 0),  0)));
+            Table.States (922).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
             Table.States (923).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (923), (80, 88), (185, 1), 1, null, null);
-            Table.States (923).Kernel := To_Vector ((0 => (185, 44, 0, 
False)));
-            Table.States (923).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 185, 1)));
-            Table.States (924).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (924), 76, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (924), 80, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (924), 82, 1074);
-            Add_Action (Table.States (924), 85, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (924), 88, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (924), 102, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (924), 103, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Table.States (924).Kernel := To_Vector (((188, 105, 3, False), 
(240, 105, 0, False)));
-            Table.States (924).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 240, 1)));
-            Table.States (925).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (925), (80, 88), (186, 1), 1, null, null);
-            Table.States (925).Kernel := To_Vector ((0 => (186, 185, 0, 
False)));
-            Table.States (925).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 186, 1)));
-            Table.States (926).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (926), 80, 1075);
-            Add_Action (Table.States (926), 88, 1076);
-            Table.States (926).Kernel := To_Vector (((186, 186, 2, True), 
(188, 186, 1, False)));
-            Table.States (926).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 88, 1076)));
-            Table.States (927).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (927), 76, 236);
-            Add_Action (Table.States (927), 80, Reduce, (185, 0), 1, null, 
null);
-            Add_Action (Table.States (927), 85, 238);
-            Add_Action (Table.States (927), 88, Reduce, (185, 0), 1, null, 
null);
-            Add_Action (Table.States (927), 102, 240);
-            Add_Action (Table.States (927), 103, 241);
+            Add_Action (Table.States (923), (74, 99), (329, 7),  2, null, 
null);
+            Table.States (923).Kernel := To_Vector ((0 => ((329, 7),  283,  0, 
(329, 7),  2)));
+            Table.States (923).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (329, 7),  2)));
+            Table.States (924).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (924), 99, (209, 0), 1078);
+            Table.States (924).Kernel := To_Vector ((0 => ((209, 0),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (924).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (209, 0),  99, 1078)));
+            Table.States (925).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (925), 99, (248, 2), 1079);
+            Table.States (925).Kernel := To_Vector ((0 => ((248, 2),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (925).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (248, 2),  99, 1079)));
+            Table.States (926).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (926), 99, (248, 1), 1080);
+            Table.States (926).Kernel := To_Vector ((0 => ((248, 1),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (926).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (248, 1),  99, 1080)));
+            Table.States (927).Action_List.Set_Capacity (11);
+            Add_Action (Table.States (927), 21, Reduce, (117, 2),  4, 
access_definition_2'Access, null);
+            Add_Action (Table.States (927), 35, Reduce, (117, 2),  4, 
access_definition_2'Access, null);
+            Add_Action (Table.States (927), 56, Reduce, (117, 2),  4, 
access_definition_2'Access, null);
+            Add_Action (Table.States (927), 74, Reduce, (117, 2),  4, 
access_definition_2'Access, null);
+            Add_Action (Table.States (927), 76, (118, 0), 237);
+            Add_Action (Table.States (927), 78, Reduce, (117, 2),  4, 
access_definition_2'Access, null);
+            Add_Action (Table.States (927), 85, Reduce, (117, 2),  4, 
access_definition_2'Access, null);
+            Add_Action (Table.States (927), 87, (296, 0), 239);
+            Add_Action (Table.States (927), 99, Reduce, (117, 2),  4, 
access_definition_2'Access, null);
+            Add_Action (Table.States (927), 104, (325, 0), 241);
+            Add_Action (Table.States (927), 105, (325, 1), 242);
             Table.States (927).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (927), 116, 242);
-            Add_Goto (Table.States (927), 323, 243);
-            Table.States (927).Kernel := To_Vector (((129, 240, 2, True), 
(185, 240, 0, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (927).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 185, 1)));
+            Add_Goto (Table.States (927), 118, 243);
+            Add_Goto (Table.States (927), 325, 244);
+            Table.States (927).Kernel := To_Vector ((((117, 2),  242,  0, 
(117, 2),  4), ((131, 0),  242,  2,
+            (2147483647, 0),  0), ((242, 0),  242,  5, (2147483647, 0),  0), 
((242, 1),  242,  2, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (927).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (117, 2),  4)));
             Table.States (928).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (928), (24, 72), (189, 0), 2, 
exception_handler_list_0'Access, null);
-            Table.States (928).Kernel := To_Vector ((0 => (189, 188, 0, 
True)));
-            Table.States (928).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 189, 2)));
-            Table.States (928).Minimal_Complete_Actions_Recursive := True;
-            Table.States (929).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (929), 97, Reduce, (221, 1), 0, null, 
null);
-            Add_Action (Table.States (929), 105, 150);
-            Table.States (929).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (929), 221, 1077);
-            Table.States (929).Kernel := To_Vector ((0 => (134, 24, 1, 
False)));
-            Table.States (929).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 0)));
-            Table.States (930).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (930), 97, 1078);
-            Table.States (930).Kernel := To_Vector ((0 => (233, 221, 1, 
False)));
-            Table.States (930).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1078)));
-            Table.States (931).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (931), 97, Reduce, (221, 1), 0, null, 
null);
-            Add_Action (Table.States (931), 105, 150);
-            Table.States (931).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (931), 221, 1079);
-            Table.States (931).Kernel := To_Vector ((0 => (233, 37, 1, 
False)));
-            Table.States (931).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 0)));
-            Table.States (932).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (932), (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, 
79, 94, 105, 106, 107, 108), (158, 9), 6,
-            declaration_9'Access, null);
-            Table.States (932).Kernel := To_Vector ((0 => (158, 97, 0, 
False)));
-            Table.States (932).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 158, 6)));
-            Table.States (933).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (933), 7, Reduce, (242, 0), 2, null, 
null);
-            Add_Action (Table.States (933), 79, 31);
-            Add_Action (Table.States (933), 105, 120);
-            Add_Action (Table.States (933), 106, 34);
-            Add_Action (Table.States (933), 107, 35);
-            Table.States (933).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (933), 129, 42);
-            Add_Goto (Table.States (933), 240, 781);
-            Add_Goto (Table.States (933), 273, 93);
-            Add_Goto (Table.States (933), 294, 98);
-            Table.States (933).Kernel := To_Vector (((242, 41, 0, False), 
(315, 41, 5, False), (315, 41, 1, False)));
-            Table.States (933).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 242, 2)));
-            Table.States (934).Action_List.Set_Capacity (15);
-            Add_Action (Table.States (934), 3, 122);
-            Add_Action (Table.States (934), 39, 123);
-            Add_Action (Table.States (934), 40, 124);
-            Add_Action (Table.States (934), 41, 125);
-            Add_Action (Table.States (934), 52, 126);
-            Add_Action (Table.States (934), 74, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (934), 76, 127);
-            Add_Action (Table.States (934), 79, 31);
-            Add_Action (Table.States (934), 95, 128);
-            Add_Action (Table.States (934), 96, 129);
-            Add_Action (Table.States (934), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (934), 104, 130);
-            Add_Action (Table.States (934), 105, 120);
-            Add_Action (Table.States (934), 106, 34);
-            Add_Action (Table.States (934), 107, 35);
-            Table.States (934).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (934), 118, 131);
-            Add_Goto (Table.States (934), 129, 42);
-            Add_Goto (Table.States (934), 192, 132);
-            Add_Goto (Table.States (934), 193, 1080);
-            Add_Goto (Table.States (934), 198, 134);
-            Add_Goto (Table.States (934), 240, 135);
-            Add_Goto (Table.States (934), 259, 136);
-            Add_Goto (Table.States (934), 273, 93);
-            Add_Goto (Table.States (934), 276, 137);
-            Add_Goto (Table.States (934), 283, 138);
-            Add_Goto (Table.States (934), 284, 139);
-            Add_Goto (Table.States (934), 285, 140);
-            Add_Goto (Table.States (934), 286, 141);
-            Add_Goto (Table.States (934), 287, 142);
-            Add_Goto (Table.States (934), 288, 143);
-            Add_Goto (Table.States (934), 294, 98);
-            Add_Goto (Table.States (934), 302, 144);
-            Add_Goto (Table.States (934), 321, 145);
-            Add_Goto (Table.States (934), 322, 146);
-            Add_Goto (Table.States (934), 331, 147);
-            Table.States (934).Kernel := To_Vector ((0 => (245, 83, 1, 
False)));
-            Table.States (934).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (935).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (935), 97, 1081);
-            Table.States (935).Kernel := To_Vector ((0 => (245, 123, 1, 
False)));
-            Table.States (935).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1081)));
-            Table.States (936).Action_List.Set_Capacity (15);
-            Add_Action (Table.States (936), 3, 122);
-            Add_Action (Table.States (936), 39, 123);
-            Add_Action (Table.States (936), 40, 124);
-            Add_Action (Table.States (936), 41, 125);
-            Add_Action (Table.States (936), 52, 126);
-            Add_Action (Table.States (936), 74, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (936), 76, 127);
-            Add_Action (Table.States (936), 79, 31);
-            Add_Action (Table.States (936), 95, 128);
-            Add_Action (Table.States (936), 96, 129);
-            Add_Action (Table.States (936), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (936), 104, 130);
-            Add_Action (Table.States (936), 105, 120);
-            Add_Action (Table.States (936), 106, 34);
-            Add_Action (Table.States (936), 107, 35);
-            Table.States (936).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (936), 118, 131);
-            Add_Goto (Table.States (936), 129, 42);
-            Add_Goto (Table.States (936), 192, 132);
-            Add_Goto (Table.States (936), 193, 1082);
-            Add_Goto (Table.States (936), 198, 134);
-            Add_Goto (Table.States (936), 240, 135);
-            Add_Goto (Table.States (936), 259, 136);
-            Add_Goto (Table.States (936), 273, 93);
-            Add_Goto (Table.States (936), 276, 137);
-            Add_Goto (Table.States (936), 283, 138);
-            Add_Goto (Table.States (936), 284, 139);
-            Add_Goto (Table.States (936), 285, 140);
-            Add_Goto (Table.States (936), 286, 141);
-            Add_Goto (Table.States (936), 287, 142);
-            Add_Goto (Table.States (936), 288, 143);
-            Add_Goto (Table.States (936), 294, 98);
-            Add_Goto (Table.States (936), 302, 144);
-            Add_Goto (Table.States (936), 321, 145);
-            Add_Goto (Table.States (936), 322, 146);
-            Add_Goto (Table.States (936), 331, 147);
-            Table.States (936).Kernel := To_Vector ((0 => (245, 83, 1, 
False)));
-            Table.States (936).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-         end Subr_16;
-         procedure Subr_17
-         is begin
-            Table.States (937).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (937), 97, 1083);
-            Table.States (937).Kernel := To_Vector ((0 => (245, 123, 1, 
False)));
-            Table.States (937).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1083)));
-            Table.States (938).Action_List.Set_Capacity (15);
-            Add_Action (Table.States (938), 3, 122);
-            Add_Action (Table.States (938), 39, 123);
-            Add_Action (Table.States (938), 40, 124);
-            Add_Action (Table.States (938), 41, 125);
-            Add_Action (Table.States (938), 52, 126);
-            Add_Action (Table.States (938), 74, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (938), 76, 127);
-            Add_Action (Table.States (938), 79, 31);
-            Add_Action (Table.States (938), 95, 128);
-            Add_Action (Table.States (938), 96, 129);
-            Add_Action (Table.States (938), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (938), 104, 130);
-            Add_Action (Table.States (938), 105, 120);
-            Add_Action (Table.States (938), 106, 34);
-            Add_Action (Table.States (938), 107, 35);
-            Table.States (938).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (938), 118, 131);
-            Add_Goto (Table.States (938), 129, 42);
-            Add_Goto (Table.States (938), 192, 132);
-            Add_Goto (Table.States (938), 193, 1084);
-            Add_Goto (Table.States (938), 198, 134);
-            Add_Goto (Table.States (938), 240, 135);
-            Add_Goto (Table.States (938), 259, 136);
-            Add_Goto (Table.States (938), 273, 93);
-            Add_Goto (Table.States (938), 276, 137);
-            Add_Goto (Table.States (938), 283, 138);
-            Add_Goto (Table.States (938), 284, 139);
-            Add_Goto (Table.States (938), 285, 140);
-            Add_Goto (Table.States (938), 286, 141);
-            Add_Goto (Table.States (938), 287, 142);
-            Add_Goto (Table.States (938), 288, 143);
-            Add_Goto (Table.States (938), 294, 98);
-            Add_Goto (Table.States (938), 302, 144);
-            Add_Goto (Table.States (938), 321, 145);
-            Add_Goto (Table.States (938), 322, 146);
-            Add_Goto (Table.States (938), 331, 147);
-            Table.States (938).Kernel := To_Vector ((0 => (245, 83, 1, 
False)));
-            Table.States (938).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
+            Add_Action (Table.States (928), 58, (294, 0), 320);
+            Add_Action (Table.States (928), 76, (202, 0), 434);
+            Table.States (928).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (928), 202, 322);
+            Add_Goto (Table.States (928), 255, 1081);
+            Add_Goto (Table.States (928), 294, 324);
+            Table.States (928).Kernel := To_Vector ((0 => ((117, 1),  29,  1, 
(2147483647, 0),  0)));
+            Table.States (928).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (294, 0),  58, 320)));
+            Table.States (929).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (929), 21, Reduce, (256, 1),  0, null, 
null);
+            Add_Action (Table.States (929), 35, Reduce, (256, 1),  0, null, 
null);
+            Add_Action (Table.States (929), 56, Reduce, (256, 1),  0, null, 
null);
+            Add_Action (Table.States (929), 74, Reduce, (256, 1),  0, null, 
null);
+            Add_Action (Table.States (929), 76, (202, 0), 434);
+            Add_Action (Table.States (929), 78, Reduce, (256, 1),  0, null, 
null);
+            Add_Action (Table.States (929), 85, Reduce, (256, 1),  0, null, 
null);
+            Add_Action (Table.States (929), 99, Reduce, (256, 1),  0, null, 
null);
+            Table.States (929).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (929), 202, 347);
+            Add_Goto (Table.States (929), 256, 1082);
+            Table.States (929).Kernel := To_Vector ((0 => ((117, 0),  50,  0, 
(256, 1),  0)));
+            Table.States (929).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (256, 1),  0)));
+            Table.States (930).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (930), 74, (125, 0), 340);
+            Add_Action (Table.States (930), 76, (118, 0), 237);
+            Add_Action (Table.States (930), 87, (296, 0), 239);
+            Add_Action (Table.States (930), 99, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (930), 104, (325, 0), 241);
+            Add_Action (Table.States (930), 105, (325, 1), 242);
+            Table.States (930).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (930), 118, 243);
+            Add_Goto (Table.States (930), 125, 1083);
+            Add_Goto (Table.States (930), 325, 244);
+            Table.States (930).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((248, 0),  242,  1, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (930).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (931).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (931), (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, 81, 96, 107, 108,
+            109, 110), (136, 1),  6, block_statement_1'Access, 
block_statement_1_check'Access);
+            Table.States (931).Kernel := To_Vector ((0 => ((136, 1),  99,  0, 
(136, 1),  6)));
+            Table.States (931).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (136, 1),  6)));
+            Table.States (932).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (932), (82, 90), (187, 1),  1, null, 
null);
+            Table.States (932).Kernel := To_Vector ((0 => ((187, 1),  44,  0, 
(187, 1),  1)));
+            Table.States (932).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (187, 1),  1)));
+            Table.States (933).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (933), 76, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (933), 82, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (933), 84, (190, 0), 1084);
+            Add_Action (Table.States (933), 87, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (933), 90, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (933), 104, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (933), 105, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Table.States (933).Kernel := To_Vector ((((190, 0),  107,  3, 
(2147483647, 0),  0), ((242, 5),  107,  0,
+            (242, 5),  1)));
+            Table.States (933).Minimal_Complete_Actions := To_Vector (((Shift, 
(190, 0),  84, 1084), (Reduce, (242, 5),
+             1)));
+            Table.States (934).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (934), (82, 90), (188, 1),  1, null, 
null);
+            Table.States (934).Kernel := To_Vector ((0 => ((188, 1),  187,  0, 
(188, 1),  1)));
+            Table.States (934).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (188, 1),  1)));
+            Table.States (935).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (935), 82, (188, 0), 1085);
+            Add_Action (Table.States (935), 90, (190, 1), 1086);
+            Table.States (935).Kernel := To_Vector ((((188, 0),  188,  2, 
(2147483647, 0),  0), ((190, 1),  188,  1,
+            (2147483647, 0),  0)));
+            Table.States (935).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (190, 1),  90, 1086)));
+            Table.States (936).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (936), 76, (118, 0), 237);
+            Add_Action (Table.States (936), 82, Reduce, (187, 0),  1, null, 
null);
+            Add_Action (Table.States (936), 87, (296, 0), 239);
+            Add_Action (Table.States (936), 90, Reduce, (187, 0),  1, null, 
null);
+            Add_Action (Table.States (936), 104, (325, 0), 241);
+            Add_Action (Table.States (936), 105, (325, 1), 242);
+            Table.States (936).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (936), 118, 243);
+            Add_Goto (Table.States (936), 325, 244);
+            Table.States (936).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((187, 0),  242,  0,
+            (187, 0),  1), ((242, 0),  242,  5, (2147483647, 0),  0), ((242, 
1),  242,  2, (2147483647, 0),  0), ((275,
+            0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (936).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (187, 0),  1)));
+            Table.States (937).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (937), (24, 72), (191, 0),  2, 
exception_handler_list_0'Access, null);
+            Table.States (937).Kernel := To_Vector ((0 => ((191, 0),  190,  0, 
(191, 0),  2)));
+            Table.States (937).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (191, 0),  2)));
+            Table.States (938).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (938), 99, Reduce, (223, 1),  0, null, 
null);
+            Add_Action (Table.States (938), 107, (223, 0), 151);
+            Table.States (938).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (938), 223, 1087);
+            Table.States (938).Kernel := To_Vector ((0 => ((136, 0),  24,  1, 
(2147483647, 0),  0)));
+            Table.States (938).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (223, 1),  0)));
             Table.States (939).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (939), 97, 1085);
-            Table.States (939).Kernel := To_Vector ((0 => (245, 123, 1, 
False)));
-            Table.States (939).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1085)));
-            Table.States (940).Action_List.Set_Capacity (64);
-            Add_Action (Table.States (940), (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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (130, 0), 4, null, null);
-            Table.States (940).Kernel := To_Vector ((0 => (130, 77, 0, 
False)));
-            Table.States (940).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 130, 4)));
-            Table.States (941).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (941), 74, Reduce, (254, 1), 0, null, 
null);
-            Add_Action (Table.States (941), 76, 432);
-            Add_Action (Table.States (941), 97, Reduce, (254, 1), 0, null, 
null);
-            Table.States (941).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (941), 200, 345);
-            Add_Goto (Table.States (941), 254, 1086);
-            Table.States (941).Kernel := To_Vector ((0 => (180, 77, 1, 
False)));
-            Table.States (941).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 254, 0)));
-            Table.States (942).Action_List.Set_Capacity (41);
-            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, 
79, 94, 105, 106, 107, 108), (180, 1), 6,
+            Add_Action (Table.States (939), 99, (235, 1), 1088);
+            Table.States (939).Kernel := To_Vector ((0 => ((235, 1),  223,  1, 
(2147483647, 0),  0)));
+            Table.States (939).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (235, 1),  99, 1088)));
+            Table.States (940).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (940), 99, Reduce, (223, 1),  0, null, 
null);
+            Add_Action (Table.States (940), 107, (223, 0), 151);
+            Table.States (940).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (940), 223, 1089);
+            Table.States (940).Kernel := To_Vector ((0 => ((235, 0),  37,  1, 
(2147483647, 0),  0)));
+            Table.States (940).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (223, 1),  0)));
+            Table.States (941).Action_List.Set_Capacity (41);
+            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, 
81, 96, 107, 108, 109, 110), (160, 9),  6,
+            declaration_9'Access, null);
+            Table.States (941).Kernel := To_Vector ((0 => ((160, 9),  99,  0, 
(160, 9),  6)));
+            Table.States (941).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (160, 9),  6)));
+            Table.States (942).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (942), 7, Reduce, (244, 0),  2, null, 
null);
+            Add_Action (Table.States (942), 81, (242, 8), 31);
+            Add_Action (Table.States (942), 107, (242, 5), 120);
+            Add_Action (Table.States (942), 108, (242, 7), 34);
+            Add_Action (Table.States (942), 109, (242, 6), 35);
+            Table.States (942).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (942), 131, 42);
+            Add_Goto (Table.States (942), 242, 791);
+            Add_Goto (Table.States (942), 275, 93);
+            Add_Goto (Table.States (942), 296, 98);
+            Table.States (942).Kernel := To_Vector ((((244, 0),  41,  0, (244, 
0),  2), ((317, 0),  41,  5,
+            (2147483647, 0),  0), ((317, 1),  41,  1, (2147483647, 0),  0)));
+            Table.States (942).Minimal_Complete_Actions := To_Vector 
(((Reduce, (244, 0),  2), (Shift, (242, 5),  107,
+            120)));
+            Table.States (943).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (943), 3, (200, 2), 122);
+            Add_Action (Table.States (943), 39, (261, 4), 123);
+            Add_Action (Table.States (943), 40, (200, 3), 124);
+            Add_Action (Table.States (943), 41, (261, 1), 125);
+            Add_Action (Table.States (943), 52, (278, 0), 126);
+            Add_Action (Table.States (943), 74, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (943), 76, (120, 0), 127);
+            Add_Action (Table.States (943), 77, (120, 5), 128);
+            Add_Action (Table.States (943), 81, (242, 8), 31);
+            Add_Action (Table.States (943), 97, (333, 1), 129);
+            Add_Action (Table.States (943), 98, (333, 0), 130);
+            Add_Action (Table.States (943), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (943), 106, (261, 0), 131);
+            Add_Action (Table.States (943), 107, (242, 5), 120);
+            Add_Action (Table.States (943), 108, (242, 7), 34);
+            Add_Action (Table.States (943), 109, (242, 6), 35);
+            Table.States (943).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (943), 120, 132);
+            Add_Goto (Table.States (943), 131, 42);
+            Add_Goto (Table.States (943), 194, 133);
+            Add_Goto (Table.States (943), 195, 1090);
+            Add_Goto (Table.States (943), 200, 135);
+            Add_Goto (Table.States (943), 242, 136);
+            Add_Goto (Table.States (943), 261, 137);
+            Add_Goto (Table.States (943), 275, 93);
+            Add_Goto (Table.States (943), 278, 138);
+            Add_Goto (Table.States (943), 285, 139);
+            Add_Goto (Table.States (943), 286, 140);
+            Add_Goto (Table.States (943), 287, 141);
+            Add_Goto (Table.States (943), 288, 142);
+            Add_Goto (Table.States (943), 289, 143);
+            Add_Goto (Table.States (943), 290, 144);
+            Add_Goto (Table.States (943), 296, 98);
+            Add_Goto (Table.States (943), 304, 145);
+            Add_Goto (Table.States (943), 323, 146);
+            Add_Goto (Table.States (943), 324, 147);
+            Add_Goto (Table.States (943), 333, 148);
+            Table.States (943).Kernel := To_Vector ((0 => ((247, 1),  85,  1, 
(2147483647, 0),  0)));
+            Table.States (943).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (944).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (944), 99, (247, 4), 1091);
+            Table.States (944).Kernel := To_Vector ((0 => ((247, 4),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (944).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (247, 4),  99, 1091)));
+            Table.States (945).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (945), 3, (200, 2), 122);
+            Add_Action (Table.States (945), 39, (261, 4), 123);
+            Add_Action (Table.States (945), 40, (200, 3), 124);
+            Add_Action (Table.States (945), 41, (261, 1), 125);
+            Add_Action (Table.States (945), 52, (278, 0), 126);
+            Add_Action (Table.States (945), 74, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (945), 76, (120, 0), 127);
+            Add_Action (Table.States (945), 77, (120, 5), 128);
+            Add_Action (Table.States (945), 81, (242, 8), 31);
+            Add_Action (Table.States (945), 97, (333, 1), 129);
+            Add_Action (Table.States (945), 98, (333, 0), 130);
+            Add_Action (Table.States (945), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (945), 106, (261, 0), 131);
+            Add_Action (Table.States (945), 107, (242, 5), 120);
+            Add_Action (Table.States (945), 108, (242, 7), 34);
+            Add_Action (Table.States (945), 109, (242, 6), 35);
+            Table.States (945).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (945), 120, 132);
+            Add_Goto (Table.States (945), 131, 42);
+            Add_Goto (Table.States (945), 194, 133);
+            Add_Goto (Table.States (945), 195, 1092);
+            Add_Goto (Table.States (945), 200, 135);
+            Add_Goto (Table.States (945), 242, 136);
+            Add_Goto (Table.States (945), 261, 137);
+            Add_Goto (Table.States (945), 275, 93);
+            Add_Goto (Table.States (945), 278, 138);
+            Add_Goto (Table.States (945), 285, 139);
+            Add_Goto (Table.States (945), 286, 140);
+            Add_Goto (Table.States (945), 287, 141);
+            Add_Goto (Table.States (945), 288, 142);
+            Add_Goto (Table.States (945), 289, 143);
+            Add_Goto (Table.States (945), 290, 144);
+            Add_Goto (Table.States (945), 296, 98);
+            Add_Goto (Table.States (945), 304, 145);
+            Add_Goto (Table.States (945), 323, 146);
+            Add_Goto (Table.States (945), 324, 147);
+            Add_Goto (Table.States (945), 333, 148);
+            Table.States (945).Kernel := To_Vector ((0 => ((247, 2),  85,  1, 
(2147483647, 0),  0)));
+            Table.States (945).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (946).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (946), 99, (247, 5), 1093);
+            Table.States (946).Kernel := To_Vector ((0 => ((247, 5),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (946).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (247, 5),  99, 1093)));
+            Table.States (947).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (947), 3, (200, 2), 122);
+            Add_Action (Table.States (947), 39, (261, 4), 123);
+            Add_Action (Table.States (947), 40, (200, 3), 124);
+            Add_Action (Table.States (947), 41, (261, 1), 125);
+            Add_Action (Table.States (947), 52, (278, 0), 126);
+            Add_Action (Table.States (947), 74, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (947), 76, (120, 0), 127);
+            Add_Action (Table.States (947), 77, (120, 5), 128);
+            Add_Action (Table.States (947), 81, (242, 8), 31);
+            Add_Action (Table.States (947), 97, (333, 1), 129);
+            Add_Action (Table.States (947), 98, (333, 0), 130);
+            Add_Action (Table.States (947), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (947), 106, (261, 0), 131);
+            Add_Action (Table.States (947), 107, (242, 5), 120);
+            Add_Action (Table.States (947), 108, (242, 7), 34);
+            Add_Action (Table.States (947), 109, (242, 6), 35);
+            Table.States (947).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (947), 120, 132);
+            Add_Goto (Table.States (947), 131, 42);
+            Add_Goto (Table.States (947), 194, 133);
+            Add_Goto (Table.States (947), 195, 1094);
+            Add_Goto (Table.States (947), 200, 135);
+            Add_Goto (Table.States (947), 242, 136);
+            Add_Goto (Table.States (947), 261, 137);
+            Add_Goto (Table.States (947), 275, 93);
+            Add_Goto (Table.States (947), 278, 138);
+            Add_Goto (Table.States (947), 285, 139);
+            Add_Goto (Table.States (947), 286, 140);
+            Add_Goto (Table.States (947), 287, 141);
+            Add_Goto (Table.States (947), 288, 142);
+            Add_Goto (Table.States (947), 289, 143);
+            Add_Goto (Table.States (947), 290, 144);
+            Add_Goto (Table.States (947), 296, 98);
+            Add_Goto (Table.States (947), 304, 145);
+            Add_Goto (Table.States (947), 323, 146);
+            Add_Goto (Table.States (947), 324, 147);
+            Add_Goto (Table.States (947), 333, 148);
+            Table.States (947).Kernel := To_Vector ((0 => ((247, 0),  85,  1, 
(2147483647, 0),  0)));
+            Table.States (947).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (948).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (948), 99, (247, 3), 1095);
+            Table.States (948).Kernel := To_Vector ((0 => ((247, 3),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (948).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (247, 3),  99, 1095)));
+            Table.States (949).Action_List.Set_Capacity (65);
+            Add_Action (Table.States (949), (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, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (132, 0),  4, null,
+            null);
+            Table.States (949).Kernel := To_Vector ((0 => ((132, 0),  78,  0, 
(132, 0),  4)));
+            Table.States (949).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (132, 0),  4)));
+            Table.States (950).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (950), 74, Reduce, (256, 1),  0, null, 
null);
+            Add_Action (Table.States (950), 76, (202, 0), 434);
+            Add_Action (Table.States (950), 99, Reduce, (256, 1),  0, null, 
null);
+            Table.States (950).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (950), 202, 347);
+            Add_Goto (Table.States (950), 256, 1096);
+            Table.States (950).Kernel := To_Vector ((0 => ((182, 0),  78,  1, 
(2147483647, 0),  0)));
+            Table.States (950).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (256, 1),  0)));
+            Table.States (951).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (951), (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, 
81, 96, 107, 108, 109, 110), (182, 1),  6,
             entry_declaration_1'Access, null);
-            Table.States (942).Kernel := To_Vector ((0 => (180, 97, 0, 
False)));
-            Table.States (942).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 180, 6)));
-            Table.States (943).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (943), 74, 338);
-            Add_Action (Table.States (943), 76, 236);
-            Add_Action (Table.States (943), 85, 238);
-            Add_Action (Table.States (943), 97, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (943), 102, 240);
-            Add_Action (Table.States (943), 103, 241);
-            Table.States (943).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (943), 116, 242);
-            Add_Goto (Table.States (943), 123, 1087);
-            Add_Goto (Table.States (943), 323, 243);
-            Table.States (943).Kernel := To_Vector (((129, 240, 2, True), 
(214, 240, 1, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (943).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (944).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (944), 74, 338);
-            Add_Action (Table.States (944), 76, 236);
-            Add_Action (Table.States (944), 85, 238);
-            Add_Action (Table.States (944), 97, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (944), 102, 240);
-            Add_Action (Table.States (944), 103, 241);
-            Table.States (944).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (944), 116, 242);
-            Add_Goto (Table.States (944), 123, 1088);
-            Add_Goto (Table.States (944), 323, 243);
-            Table.States (944).Kernel := To_Vector (((129, 240, 2, True), 
(214, 240, 1, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (944).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (945).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (945), (74, 97), (257, 0), 3, 
paren_expression_0'Access, null);
-            Table.States (945).Kernel := To_Vector ((0 => (257, 77, 0, 
False)));
-            Table.States (945).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 257, 3)));
-            Table.States (946).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (946), (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, 
79, 94, 105, 106, 107, 108), (194, 0), 6,
+            Table.States (951).Kernel := To_Vector ((0 => ((182, 1),  99,  0, 
(182, 1),  6)));
+            Table.States (951).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (182, 1),  6)));
+            Table.States (952).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (952), 74, (125, 0), 340);
+            Add_Action (Table.States (952), 76, (118, 0), 237);
+            Add_Action (Table.States (952), 87, (296, 0), 239);
+            Add_Action (Table.States (952), 99, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (952), 104, (325, 0), 241);
+            Add_Action (Table.States (952), 105, (325, 1), 242);
+            Table.States (952).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (952), 118, 243);
+            Add_Goto (Table.States (952), 125, 1097);
+            Add_Goto (Table.States (952), 325, 244);
+            Table.States (952).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((216, 2),  242,  1,
+            (2147483647, 0),  0), ((242, 0),  242,  5, (2147483647, 0),  0), 
((242, 1),  242,  2, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (952).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (953).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (953), 74, (125, 0), 340);
+            Add_Action (Table.States (953), 76, (118, 0), 237);
+            Add_Action (Table.States (953), 87, (296, 0), 239);
+            Add_Action (Table.States (953), 99, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (953), 104, (325, 0), 241);
+            Add_Action (Table.States (953), 105, (325, 1), 242);
+            Table.States (953).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (953), 118, 243);
+            Add_Goto (Table.States (953), 125, 1098);
+            Add_Goto (Table.States (953), 325, 244);
+            Table.States (953).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((216, 1),  242,  1,
+            (2147483647, 0),  0), ((242, 0),  242,  5, (2147483647, 0),  0), 
((242, 1),  242,  2, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (953).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (954).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (954), (74, 99), (259, 0),  3, 
paren_expression_0'Access, null);
+            Table.States (954).Kernel := To_Vector ((0 => ((259, 0),  78,  0, 
(259, 0),  3)));
+            Table.States (954).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (259, 0),  3)));
+            Table.States (955).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (955), (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, 
81, 96, 107, 108, 109, 110), (196, 0),  6,
             expression_function_declaration_0'Access, null);
-            Table.States (946).Kernel := To_Vector ((0 => (194, 97, 0, 
False)));
-            Table.States (946).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 194, 6)));
-            Table.States (947).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (947), (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, 
79, 94, 105, 106, 107, 108), (244, 0), 6,
+            Table.States (955).Kernel := To_Vector ((0 => ((196, 0),  99,  0, 
(196, 0),  6)));
+            Table.States (955).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (196, 0),  6)));
+            Table.States (956).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (956), (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, 
81, 96, 107, 108, 109, 110), (246, 0),  6,
             null_procedure_declaration_0'Access, null);
-            Table.States (947).Kernel := To_Vector ((0 => (244, 97, 0, 
False)));
-            Table.States (947).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 244, 6)));
-            Table.States (948).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (948), (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, 
79, 94, 105, 106, 107, 108), (113, 0), 6,
+            Table.States (956).Kernel := To_Vector ((0 => ((246, 0),  99,  0, 
(246, 0),  6)));
+            Table.States (956).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (246, 0),  6)));
+         end Subr_17;
+         procedure Subr_18
+         is begin
+            Table.States (957).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (957), (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, 
81, 96, 107, 108, 109, 110), (115, 0),  6,
             abstract_subprogram_declaration_0'Access, null);
-            Table.States (948).Kernel := To_Vector ((0 => (113, 97, 0, 
False)));
-            Table.States (948).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 113, 6)));
-            Table.States (949).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (949), (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, 
79, 94, 105, 106, 107, 108), (309, 0), 6,
+            Table.States (957).Kernel := To_Vector ((0 => ((115, 0),  99,  0, 
(115, 0),  6)));
+            Table.States (957).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (115, 0),  6)));
+            Table.States (958).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (958), (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, 
81, 96, 107, 108, 109, 110), (311, 0),  6,
             subprogram_body_stub_0'Access, null);
-            Table.States (949).Kernel := To_Vector ((0 => (309, 97, 0, 
False)));
-            Table.States (949).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 309, 6)));
-            Table.States (950).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (950), (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, 
79, 94, 105, 106, 107, 108), (312, 0), 6,
+            Table.States (958).Kernel := To_Vector ((0 => ((311, 0),  99,  0, 
(311, 0),  6)));
+            Table.States (958).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (311, 0),  6)));
+            Table.States (959).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (959), (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, 
81, 96, 107, 108, 109, 110), (314, 0),  6,
             subprogram_renaming_declaration_0'Access, null);
-            Table.States (950).Kernel := To_Vector ((0 => (312, 97, 0, 
False)));
-            Table.States (950).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 312, 6)));
-            Table.States (951).Action_List.Set_Capacity (25);
-            Add_Action (Table.States (951), 4, 1);
-            Add_Action (Table.States (951), 5, 2);
-            Add_Action (Table.States (951), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (951), 15, 3);
-            Add_Action (Table.States (951), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (951), 18, 4);
-            Add_Action (Table.States (951), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (951), 26, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (951), 27, 5);
-            Add_Action (Table.States (951), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (951), 31, 9);
-            Add_Action (Table.States (951), 32, 10);
-            Add_Action (Table.States (951), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (951), 41, 13);
-            Add_Action (Table.States (951), 48, 16);
-            Add_Action (Table.States (951), 52, 20);
-            Add_Action (Table.States (951), 57, 21);
-            Add_Action (Table.States (951), 58, 22);
-            Add_Action (Table.States (951), 61, 24);
-            Add_Action (Table.States (951), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (951), 79, 31);
-            Add_Action (Table.States (951), 94, 32);
-            Add_Action (Table.States (951), 105, 361);
-            Add_Action (Table.States (951), 106, 34);
-            Add_Action (Table.States (951), 107, 35);
-            Table.States (951).Goto_List.Set_Capacity (32);
-            Add_Goto (Table.States (951), 114, 37);
-            Add_Goto (Table.States (951), 124, 39);
-            Add_Goto (Table.States (951), 127, 40);
-            Add_Goto (Table.States (951), 129, 42);
-            Add_Goto (Table.States (951), 132, 43);
-            Add_Goto (Table.States (951), 133, 44);
-            Add_Goto (Table.States (951), 134, 45);
-            Add_Goto (Table.States (951), 140, 48);
-            Add_Goto (Table.States (951), 152, 51);
-            Add_Goto (Table.States (951), 153, 52);
-            Add_Goto (Table.States (951), 162, 54);
-            Add_Goto (Table.States (951), 191, 58);
-            Add_Goto (Table.States (951), 197, 60);
-            Add_Goto (Table.States (951), 218, 69);
-            Add_Goto (Table.States (951), 219, 1089);
-            Add_Goto (Table.States (951), 223, 71);
-            Add_Goto (Table.States (951), 233, 73);
-            Add_Goto (Table.States (951), 240, 74);
-            Add_Goto (Table.States (951), 258, 84);
-            Add_Goto (Table.States (951), 262, 87);
-            Add_Goto (Table.States (951), 273, 93);
-            Add_Goto (Table.States (951), 277, 94);
-            Add_Goto (Table.States (951), 291, 97);
-            Add_Goto (Table.States (951), 294, 98);
-            Add_Goto (Table.States (951), 295, 99);
-            Add_Goto (Table.States (951), 299, 100);
-            Add_Goto (Table.States (951), 300, 362);
-            Add_Goto (Table.States (951), 301, 391);
-            Add_Goto (Table.States (951), 303, 101);
-            Add_Goto (Table.States (951), 304, 102);
-            Add_Goto (Table.States (951), 307, 364);
-            Add_Goto (Table.States (951), 324, 115);
-            Table.States (951).Kernel := To_Vector ((0 => (308, 13, 2, 
False)));
-            Table.States (951).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 219, 0)));
-            Table.States (952).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (952), 97, Reduce, (221, 1), 0, null, 
null);
-            Add_Action (Table.States (952), 105, 150);
-            Table.States (952).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (952), 221, 1090);
-            Table.States (952).Kernel := To_Vector ((0 => (114, 24, 1, 
False)));
-            Table.States (952).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 0)));
-            Table.States (953).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (953), 80, 447);
-            Add_Action (Table.States (953), 88, 1091);
-            Table.States (953).Kernel := To_Vector (((138, 167, 1, False), 
(167, 167, 2, True)));
-            Table.States (953).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 88, 1091)));
-            Table.States (954).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (954), 72, 768);
-            Table.States (954).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (954), 138, 1092);
-            Table.States (954).Kernel := To_Vector ((0 => (139, 84, 2, True)));
-            Table.States (954).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 72, 768)));
-            Table.States (954).Minimal_Complete_Actions_Recursive := True;
-            Table.States (955).Action_List.Set_Capacity (13);
-            Add_Action (Table.States (955), 3, 122);
-            Add_Action (Table.States (955), 39, 123);
-            Add_Action (Table.States (955), 40, 124);
-            Add_Action (Table.States (955), 41, 125);
-            Add_Action (Table.States (955), 52, 126);
-            Add_Action (Table.States (955), 76, 127);
-            Add_Action (Table.States (955), 79, 31);
-            Add_Action (Table.States (955), 95, 128);
-            Add_Action (Table.States (955), 96, 129);
-            Add_Action (Table.States (955), 104, 130);
-            Add_Action (Table.States (955), 105, 120);
-            Add_Action (Table.States (955), 106, 34);
-            Add_Action (Table.States (955), 107, 35);
-            Table.States (955).Goto_List.Set_Capacity (19);
-            Add_Goto (Table.States (955), 118, 131);
-            Add_Goto (Table.States (955), 129, 42);
-            Add_Goto (Table.States (955), 192, 1093);
-            Add_Goto (Table.States (955), 198, 134);
-            Add_Goto (Table.States (955), 240, 135);
-            Add_Goto (Table.States (955), 259, 136);
-            Add_Goto (Table.States (955), 273, 93);
-            Add_Goto (Table.States (955), 276, 137);
-            Add_Goto (Table.States (955), 283, 138);
-            Add_Goto (Table.States (955), 284, 139);
-            Add_Goto (Table.States (955), 285, 140);
-            Add_Goto (Table.States (955), 286, 141);
-            Add_Goto (Table.States (955), 287, 142);
-            Add_Goto (Table.States (955), 288, 143);
-            Add_Goto (Table.States (955), 294, 98);
-            Add_Goto (Table.States (955), 302, 144);
-            Add_Goto (Table.States (955), 321, 145);
-            Add_Goto (Table.States (955), 322, 146);
-            Add_Goto (Table.States (955), 331, 147);
-            Table.States (955).Kernel := To_Vector ((0 => (125, 88, 1, 
False)));
-            Table.States (955).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (956).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (956), (1 =>  77), (274, 0), 5, 
quantified_expression_0'Access, null);
-            Table.States (956).Kernel := To_Vector ((0 => (274, 193, 0, 
False)));
-            Table.States (956).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 274, 5)));
-            Table.States (957).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (957), 3, 122);
-            Add_Action (Table.States (957), 39, 123);
-            Add_Action (Table.States (957), 40, 124);
-            Add_Action (Table.States (957), 41, 125);
-            Add_Action (Table.States (957), 52, 126);
-            Add_Action (Table.States (957), 76, 127);
-            Add_Action (Table.States (957), 77, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (957), 79, 31);
-            Add_Action (Table.States (957), 95, 128);
-            Add_Action (Table.States (957), 96, 129);
-            Add_Action (Table.States (957), 104, 130);
-            Add_Action (Table.States (957), 105, 120);
-            Add_Action (Table.States (957), 106, 34);
-            Add_Action (Table.States (957), 107, 35);
-            Table.States (957).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (957), 118, 131);
-            Add_Goto (Table.States (957), 129, 42);
-            Add_Goto (Table.States (957), 192, 132);
-            Add_Goto (Table.States (957), 193, 1094);
-            Add_Goto (Table.States (957), 198, 134);
-            Add_Goto (Table.States (957), 240, 135);
-            Add_Goto (Table.States (957), 259, 136);
-            Add_Goto (Table.States (957), 273, 93);
-            Add_Goto (Table.States (957), 276, 137);
-            Add_Goto (Table.States (957), 283, 138);
-            Add_Goto (Table.States (957), 284, 139);
-            Add_Goto (Table.States (957), 285, 140);
-            Add_Goto (Table.States (957), 286, 141);
-            Add_Goto (Table.States (957), 287, 142);
-            Add_Goto (Table.States (957), 288, 143);
-            Add_Goto (Table.States (957), 294, 98);
-            Add_Goto (Table.States (957), 302, 144);
-            Add_Goto (Table.States (957), 321, 145);
-            Add_Goto (Table.States (957), 322, 146);
-            Add_Goto (Table.States (957), 331, 147);
-            Table.States (957).Kernel := To_Vector ((0 => (222, 22, 0, 
False)));
-            Table.States (957).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (958).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (958), 3, 122);
-            Add_Action (Table.States (958), 39, 123);
-            Add_Action (Table.States (958), 40, 124);
-            Add_Action (Table.States (958), 41, 125);
-            Add_Action (Table.States (958), 52, 126);
-            Add_Action (Table.States (958), 68, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (958), 76, 127);
-            Add_Action (Table.States (958), 79, 31);
-            Add_Action (Table.States (958), 95, 128);
-            Add_Action (Table.States (958), 96, 129);
-            Add_Action (Table.States (958), 104, 130);
-            Add_Action (Table.States (958), 105, 120);
-            Add_Action (Table.States (958), 106, 34);
-            Add_Action (Table.States (958), 107, 35);
-            Table.States (958).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (958), 118, 131);
-            Add_Goto (Table.States (958), 129, 42);
-            Add_Goto (Table.States (958), 192, 132);
-            Add_Goto (Table.States (958), 193, 1095);
-            Add_Goto (Table.States (958), 198, 134);
-            Add_Goto (Table.States (958), 240, 135);
-            Add_Goto (Table.States (958), 259, 136);
-            Add_Goto (Table.States (958), 273, 93);
-            Add_Goto (Table.States (958), 276, 137);
-            Add_Goto (Table.States (958), 283, 138);
-            Add_Goto (Table.States (958), 284, 139);
-            Add_Goto (Table.States (958), 285, 140);
-            Add_Goto (Table.States (958), 286, 141);
-            Add_Goto (Table.States (958), 287, 142);
-            Add_Goto (Table.States (958), 288, 143);
-            Add_Goto (Table.States (958), 294, 98);
-            Add_Goto (Table.States (958), 302, 144);
-            Add_Goto (Table.States (958), 321, 145);
-            Add_Goto (Table.States (958), 322, 146);
-            Add_Goto (Table.States (958), 331, 147);
-            Table.States (958).Kernel := To_Vector ((0 => (173, 23, 1, 
False)));
-            Table.States (958).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (959).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (959), (22, 23, 77), (174, 1), 1, null, 
null);
-            Table.States (959).Kernel := To_Vector ((0 => (174, 173, 0, 
False)));
-            Table.States (959).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 174, 1)));
-            Table.States (960).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (960), 22, 1096);
-            Add_Action (Table.States (960), 23, 958);
-            Add_Action (Table.States (960), 77, Reduce, (222, 2), 5, 
if_expression_2'Access, null);
-            Table.States (960).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (960), 173, 1097);
-            Table.States (960).Kernel := To_Vector (((174, 174, 2, True), 
(222, 174, 1, False), (222, 174, 0, False)));
-            Table.States (960).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 222, 5)));
-            Table.States (961).Action_List.Set_Capacity (64);
-            Add_Action (Table.States (961), (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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (118, 3), 6,
-            aggregate_3'Access, null);
-            Table.States (961).Kernel := To_Vector ((0 => (118, 77, 0, 
False)));
-            Table.States (961).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 118, 6)));
-            Table.States (962).Action_List.Set_Capacity (64);
-            Add_Action (Table.States (962), (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, 80, 83, 84, 85, 86, 87,
-            88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
105, 106, 107), (118, 0), 6,
-            aggregate_0'Access, null);
-            Table.States (962).Kernel := To_Vector ((0 => (118, 77, 0, 
False)));
-            Table.States (962).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 118, 6)));
+            Table.States (959).Kernel := To_Vector ((0 => ((314, 0),  99,  0, 
(314, 0),  6)));
+            Table.States (959).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (314, 0),  6)));
+            Table.States (960).Action_List.Set_Capacity (25);
+            Add_Action (Table.States (960), 4, (116, 0), 1);
+            Add_Action (Table.States (960), 5, (306, 8), 2);
+            Add_Action (Table.States (960), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (960), 15, (142, 0), 3);
+            Add_Action (Table.States (960), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (960), 18, (164, 0), 4);
+            Add_Action (Table.States (960), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (960), 26, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (960), 27, (193, 0), 5);
+            Add_Action (Table.States (960), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (960), 31, (306, 3), 9);
+            Add_Action (Table.States (960), 32, (225, 0), 10);
+            Add_Action (Table.States (960), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (960), 41, (306, 0), 13);
+            Add_Action (Table.States (960), 48, (260, 0), 16);
+            Add_Action (Table.States (960), 52, (279, 0), 20);
+            Add_Action (Table.States (960), 57, (293, 0), 21);
+            Add_Action (Table.States (960), 58, (199, 0), 22);
+            Add_Action (Table.States (960), 61, (129, 0), 24);
+            Add_Action (Table.States (960), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (960), 81, (242, 8), 31);
+            Add_Action (Table.States (960), 96, (220, 0), 32);
+            Add_Action (Table.States (960), 107, (134, 0), 363);
+            Add_Action (Table.States (960), 108, (242, 7), 34);
+            Add_Action (Table.States (960), 109, (242, 6), 35);
+            Table.States (960).Goto_List.Set_Capacity (32);
+            Add_Goto (Table.States (960), 116, 37);
+            Add_Goto (Table.States (960), 126, 39);
+            Add_Goto (Table.States (960), 129, 40);
+            Add_Goto (Table.States (960), 131, 42);
+            Add_Goto (Table.States (960), 134, 43);
+            Add_Goto (Table.States (960), 135, 44);
+            Add_Goto (Table.States (960), 136, 45);
+            Add_Goto (Table.States (960), 142, 48);
+            Add_Goto (Table.States (960), 154, 51);
+            Add_Goto (Table.States (960), 155, 52);
+            Add_Goto (Table.States (960), 164, 54);
+            Add_Goto (Table.States (960), 193, 58);
+            Add_Goto (Table.States (960), 199, 60);
+            Add_Goto (Table.States (960), 220, 69);
+            Add_Goto (Table.States (960), 221, 1099);
+            Add_Goto (Table.States (960), 225, 71);
+            Add_Goto (Table.States (960), 235, 73);
+            Add_Goto (Table.States (960), 242, 74);
+            Add_Goto (Table.States (960), 260, 84);
+            Add_Goto (Table.States (960), 264, 87);
+            Add_Goto (Table.States (960), 275, 93);
+            Add_Goto (Table.States (960), 279, 94);
+            Add_Goto (Table.States (960), 293, 97);
+            Add_Goto (Table.States (960), 296, 98);
+            Add_Goto (Table.States (960), 297, 99);
+            Add_Goto (Table.States (960), 301, 100);
+            Add_Goto (Table.States (960), 302, 364);
+            Add_Goto (Table.States (960), 303, 393);
+            Add_Goto (Table.States (960), 305, 101);
+            Add_Goto (Table.States (960), 306, 102);
+            Add_Goto (Table.States (960), 309, 366);
+            Add_Goto (Table.States (960), 326, 115);
+            Table.States (960).Kernel := To_Vector ((0 => ((310, 0),  13,  2, 
(2147483647, 0),  0)));
+            Table.States (960).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (221, 1),  0)));
+            Table.States (961).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (961), 99, Reduce, (223, 1),  0, null, 
null);
+            Add_Action (Table.States (961), 107, (223, 0), 151);
+            Table.States (961).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (961), 223, 1100);
+            Table.States (961).Kernel := To_Vector ((0 => ((116, 0),  24,  1, 
(2147483647, 0),  0)));
+            Table.States (961).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (223, 1),  0)));
+            Table.States (962).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (962), 82, (169, 0), 450);
+            Add_Action (Table.States (962), 90, (140, 0), 1101);
+            Table.States (962).Kernel := To_Vector ((((140, 0),  169,  1, 
(2147483647, 0),  0), ((169, 0),  169,  2,
+            (2147483647, 0),  0)));
+            Table.States (962).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (140, 0),  90, 1101)));
             Table.States (963).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (963), 77, 1098);
-            Table.States (963).Kernel := To_Vector ((0 => (278, 193, 1, 
False)));
-            Table.States (963).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 1098)));
-            Table.States (964).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (964), (24, 72), (141, 0), 4, 
case_statement_alternative_0'Access, null);
-            Table.States (964).Kernel := To_Vector ((0 => (141, 301, 0, 
False)));
-            Table.States (964).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 141, 4)));
-            Table.States (965).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (965), (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, 79, 94, 105, 106,
-            107, 108), (140, 0), 7, case_statement_0'Access, null);
-            Table.States (965).Kernel := To_Vector ((0 => (140, 97, 0, 
False)));
-            Table.States (965).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 140, 7)));
-            Table.States (966).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (966), (10, 21, 37, 42, 74, 77, 83, 84, 
88, 97), (315, 0), 4,
+            Add_Action (Table.States (963), 72, (140, 0), 774);
+            Table.States (963).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (963), 140, 1102);
+            Table.States (963).Kernel := To_Vector ((0 => ((141, 0),  86,  2, 
(2147483647, 0),  0)));
+            Table.States (963).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (140, 0),  72, 774)));
+            Table.States (964).Action_List.Set_Capacity (27);
+            Add_Action (Table.States (964), 10, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 33, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 38, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 40, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 43, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 55, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 75, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 78, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 80, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 81, (242, 8), 31);
+            Add_Action (Table.States (964), 82, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 86, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 88, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 89, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 90, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 91, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 92, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 94, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 95, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 97, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 98, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 100, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 101, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 102, Reduce, (261, 1),  1, null, 
null);
+            Add_Action (Table.States (964), 107, (242, 5), 120);
+            Add_Action (Table.States (964), 108, (242, 7), 34);
+            Add_Action (Table.States (964), 109, (242, 6), 35);
+            Table.States (964).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (964), 131, 42);
+            Add_Goto (Table.States (964), 242, 1103);
+            Add_Goto (Table.States (964), 275, 93);
+            Add_Goto (Table.States (964), 296, 98);
+            Table.States (964).Kernel := To_Vector ((((168, 1),  41,  1, 
(2147483647, 0),  0), ((261, 1),  41,  0,
+            (261, 1),  1), ((317, 0),  41,  5, (2147483647, 0),  0), ((317, 
1),  41,  1, (2147483647, 0),  0)));
+            Table.States (964).Minimal_Complete_Actions := To_Vector (((Shift, 
(242, 5),  107, 120), (Reduce, (261, 1),
+             1)));
+            Table.States (965).Action_List.Set_Capacity (14);
+            Add_Action (Table.States (965), 3, (200, 2), 122);
+            Add_Action (Table.States (965), 39, (261, 4), 123);
+            Add_Action (Table.States (965), 40, (200, 3), 124);
+            Add_Action (Table.States (965), 41, (261, 1), 125);
+            Add_Action (Table.States (965), 52, (278, 0), 126);
+            Add_Action (Table.States (965), 76, (120, 0), 127);
+            Add_Action (Table.States (965), 77, (120, 5), 128);
+            Add_Action (Table.States (965), 81, (242, 8), 31);
+            Add_Action (Table.States (965), 97, (333, 1), 129);
+            Add_Action (Table.States (965), 98, (333, 0), 130);
+            Add_Action (Table.States (965), 106, (261, 0), 131);
+            Add_Action (Table.States (965), 107, (242, 5), 120);
+            Add_Action (Table.States (965), 108, (242, 7), 34);
+            Add_Action (Table.States (965), 109, (242, 6), 35);
+            Table.States (965).Goto_List.Set_Capacity (19);
+            Add_Goto (Table.States (965), 120, 132);
+            Add_Goto (Table.States (965), 131, 42);
+            Add_Goto (Table.States (965), 194, 1104);
+            Add_Goto (Table.States (965), 200, 135);
+            Add_Goto (Table.States (965), 242, 136);
+            Add_Goto (Table.States (965), 261, 137);
+            Add_Goto (Table.States (965), 275, 93);
+            Add_Goto (Table.States (965), 278, 138);
+            Add_Goto (Table.States (965), 285, 139);
+            Add_Goto (Table.States (965), 286, 140);
+            Add_Goto (Table.States (965), 287, 141);
+            Add_Goto (Table.States (965), 288, 142);
+            Add_Goto (Table.States (965), 289, 143);
+            Add_Goto (Table.States (965), 290, 144);
+            Add_Goto (Table.States (965), 296, 98);
+            Add_Goto (Table.States (965), 304, 145);
+            Add_Goto (Table.States (965), 323, 146);
+            Add_Goto (Table.States (965), 324, 147);
+            Add_Goto (Table.States (965), 333, 148);
+            Table.States (965).Kernel := To_Vector ((0 => ((127, 6),  90,  1, 
(2147483647, 0),  0)));
+            Table.States (965).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (966).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (966), (1 =>  78), (276, 0),  5, 
quantified_expression_0'Access, null);
+            Table.States (966).Kernel := To_Vector ((0 => ((276, 0),  195,  0, 
(276, 0),  5)));
+            Table.States (966).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (276, 0),  5)));
+            Table.States (967).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (967), 3, (200, 2), 122);
+            Add_Action (Table.States (967), 39, (261, 4), 123);
+            Add_Action (Table.States (967), 40, (200, 3), 124);
+            Add_Action (Table.States (967), 41, (261, 1), 125);
+            Add_Action (Table.States (967), 52, (278, 0), 126);
+            Add_Action (Table.States (967), 76, (120, 0), 127);
+            Add_Action (Table.States (967), 77, (120, 5), 128);
+            Add_Action (Table.States (967), 78, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (967), 81, (242, 8), 31);
+            Add_Action (Table.States (967), 97, (333, 1), 129);
+            Add_Action (Table.States (967), 98, (333, 0), 130);
+            Add_Action (Table.States (967), 106, (261, 0), 131);
+            Add_Action (Table.States (967), 107, (242, 5), 120);
+            Add_Action (Table.States (967), 108, (242, 7), 34);
+            Add_Action (Table.States (967), 109, (242, 6), 35);
+            Table.States (967).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (967), 120, 132);
+            Add_Goto (Table.States (967), 131, 42);
+            Add_Goto (Table.States (967), 194, 133);
+            Add_Goto (Table.States (967), 195, 1105);
+            Add_Goto (Table.States (967), 200, 135);
+            Add_Goto (Table.States (967), 242, 136);
+            Add_Goto (Table.States (967), 261, 137);
+            Add_Goto (Table.States (967), 275, 93);
+            Add_Goto (Table.States (967), 278, 138);
+            Add_Goto (Table.States (967), 285, 139);
+            Add_Goto (Table.States (967), 286, 140);
+            Add_Goto (Table.States (967), 287, 141);
+            Add_Goto (Table.States (967), 288, 142);
+            Add_Goto (Table.States (967), 289, 143);
+            Add_Goto (Table.States (967), 290, 144);
+            Add_Goto (Table.States (967), 296, 98);
+            Add_Goto (Table.States (967), 304, 145);
+            Add_Goto (Table.States (967), 323, 146);
+            Add_Goto (Table.States (967), 324, 147);
+            Add_Goto (Table.States (967), 333, 148);
+            Table.States (967).Kernel := To_Vector ((0 => ((224, 1),  22,  0, 
(195, 1),  0)));
+            Table.States (967).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (968).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (968), 3, (200, 2), 122);
+            Add_Action (Table.States (968), 39, (261, 4), 123);
+            Add_Action (Table.States (968), 40, (200, 3), 124);
+            Add_Action (Table.States (968), 41, (261, 1), 125);
+            Add_Action (Table.States (968), 52, (278, 0), 126);
+            Add_Action (Table.States (968), 68, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (968), 76, (120, 0), 127);
+            Add_Action (Table.States (968), 77, (120, 5), 128);
+            Add_Action (Table.States (968), 81, (242, 8), 31);
+            Add_Action (Table.States (968), 97, (333, 1), 129);
+            Add_Action (Table.States (968), 98, (333, 0), 130);
+            Add_Action (Table.States (968), 106, (261, 0), 131);
+            Add_Action (Table.States (968), 107, (242, 5), 120);
+            Add_Action (Table.States (968), 108, (242, 7), 34);
+            Add_Action (Table.States (968), 109, (242, 6), 35);
+            Table.States (968).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (968), 120, 132);
+            Add_Goto (Table.States (968), 131, 42);
+            Add_Goto (Table.States (968), 194, 133);
+            Add_Goto (Table.States (968), 195, 1106);
+            Add_Goto (Table.States (968), 200, 135);
+            Add_Goto (Table.States (968), 242, 136);
+            Add_Goto (Table.States (968), 261, 137);
+            Add_Goto (Table.States (968), 275, 93);
+            Add_Goto (Table.States (968), 278, 138);
+            Add_Goto (Table.States (968), 285, 139);
+            Add_Goto (Table.States (968), 286, 140);
+            Add_Goto (Table.States (968), 287, 141);
+            Add_Goto (Table.States (968), 288, 142);
+            Add_Goto (Table.States (968), 289, 143);
+            Add_Goto (Table.States (968), 290, 144);
+            Add_Goto (Table.States (968), 296, 98);
+            Add_Goto (Table.States (968), 304, 145);
+            Add_Goto (Table.States (968), 323, 146);
+            Add_Goto (Table.States (968), 324, 147);
+            Add_Goto (Table.States (968), 333, 148);
+            Table.States (968).Kernel := To_Vector ((0 => ((175, 0),  23,  1, 
(2147483647, 0),  0)));
+            Table.States (968).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (969).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (969), (22, 23, 78), (176, 1),  1, null, 
null);
+            Table.States (969).Kernel := To_Vector ((0 => ((176, 1),  175,  0, 
(176, 1),  1)));
+            Table.States (969).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (176, 1),  1)));
+            Table.States (970).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (970), 22, (224, 0), 1107);
+            Add_Action (Table.States (970), 23, (175, 0), 968);
+            Add_Action (Table.States (970), 78, Reduce, (224, 2),  5, 
if_expression_2'Access, null);
+            Table.States (970).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (970), 175, 1108);
+            Table.States (970).Kernel := To_Vector ((((176, 0),  176,  2, 
(2147483647, 0),  0), ((224, 0),  176,  1,
+            (2147483647, 0),  0), ((224, 2),  176,  0, (224, 2),  5)));
+            Table.States (970).Minimal_Complete_Actions := To_Vector (((Shift, 
(224, 0),  22, 1107), (Reduce, (224, 2),
+             5)));
+            Table.States (971).Action_List.Set_Capacity (65);
+            Add_Action (Table.States (971), (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, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (120, 4),  6,
+            aggregate_4'Access, null);
+            Table.States (971).Kernel := To_Vector ((0 => ((120, 4),  78,  0, 
(120, 4),  6)));
+            Table.States (971).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (120, 4),  6)));
+            Table.States (972).Action_List.Set_Capacity (65);
+            Add_Action (Table.States (972), (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, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (120, 2),  6,
+            aggregate_2'Access, null);
+            Table.States (972).Kernel := To_Vector ((0 => ((120, 2),  78,  0, 
(120, 2),  6)));
+            Table.States (972).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (120, 2),  6)));
+            Table.States (973).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (973), 78, (280, 0), 1109);
+            Table.States (973).Kernel := To_Vector ((0 => ((280, 0),  195,  1, 
(2147483647, 0),  0)));
+            Table.States (973).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (280, 0),  78, 1109)));
+            Table.States (974).Action_List.Set_Capacity (65);
+            Add_Action (Table.States (974), (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, 78, 79, 80, 81, 82, 85, 86, 87, 88,
+            89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 
105, 107, 108, 109), (120, 5),  6,
+            aggregate_5'Access, null);
+            Table.States (974).Kernel := To_Vector ((0 => ((120, 5),  79,  0, 
(120, 5),  6)));
+            Table.States (974).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (120, 5),  6)));
+            Table.States (975).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (975), (24, 72), (143, 0),  4, 
case_statement_alternative_0'Access, null);
+            Table.States (975).Kernel := To_Vector ((0 => ((143, 0),  303,  0, 
(143, 0),  4)));
+            Table.States (975).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (143, 0),  4)));
+            Table.States (976).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (976), (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, 81, 96, 107, 108,
+            109, 110), (142, 0),  7, case_statement_0'Access, null);
+            Table.States (976).Kernel := To_Vector ((0 => ((142, 0),  99,  0, 
(142, 0),  7)));
+            Table.States (976).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (142, 0),  7)));
+            Table.States (977).Action_List.Set_Capacity (10);
+            Add_Action (Table.States (977), (10, 21, 37, 42, 74, 78, 85, 86, 
90, 99), (317, 0),  4,
             subtype_indication_0'Access, null);
-            Table.States (966).Kernel := To_Vector ((0 => (315, 156, 0, 
False)));
-            Table.States (966).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 315, 4)));
-            Table.States (967).Action_List.Set_Capacity (27);
-            Add_Action (Table.States (967), 10, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 33, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 38, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 40, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 43, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 55, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 75, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 77, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 78, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 79, 31);
-            Add_Action (Table.States (967), 80, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 84, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 86, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 87, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 88, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 89, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 90, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 92, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 93, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 95, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 96, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 98, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 99, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 100, Reduce, (259, 1), 1, null, 
null);
-            Add_Action (Table.States (967), 105, 120);
-            Add_Action (Table.States (967), 106, 34);
-            Add_Action (Table.States (967), 107, 35);
-            Table.States (967).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (967), 129, 42);
-            Add_Goto (Table.States (967), 240, 1099);
-            Add_Goto (Table.States (967), 273, 93);
-            Add_Goto (Table.States (967), 294, 98);
-            Table.States (967).Kernel := To_Vector (((166, 41, 1, False), 
(259, 41, 0, False), (315, 41, 5, False),
-            (315, 41, 1, False)));
-            Table.States (967).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 259, 1)));
-            Table.States (968).Action_List.Set_Capacity (10);
-            Add_Action (Table.States (968), (10, 21, 37, 42, 74, 77, 83, 84, 
88, 97), (225, 0), 3,
+            Table.States (977).Kernel := To_Vector ((0 => ((317, 0),  158,  0, 
(317, 0),  4)));
+            Table.States (977).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (317, 0),  4)));
+            Table.States (978).Action_List.Set_Capacity (10);
+            Add_Action (Table.States (978), (10, 21, 37, 42, 74, 78, 85, 86, 
90, 99), (227, 0),  3,
             index_constraint_0'Access, null);
-            Table.States (968).Kernel := To_Vector ((0 => (225, 77, 0, 
False)));
-            Table.States (968).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 225, 3)));
-            Table.States (969).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (969), 3, 122);
-            Add_Action (Table.States (969), 39, 123);
-            Add_Action (Table.States (969), 40, 477);
-            Add_Action (Table.States (969), 41, 125);
-            Add_Action (Table.States (969), 76, 127);
-            Add_Action (Table.States (969), 79, 31);
-            Add_Action (Table.States (969), 95, 128);
-            Add_Action (Table.States (969), 96, 129);
-            Add_Action (Table.States (969), 104, 130);
-            Add_Action (Table.States (969), 105, 120);
-            Add_Action (Table.States (969), 106, 34);
-            Add_Action (Table.States (969), 107, 35);
-            Table.States (969).Goto_List.Set_Capacity (14);
-            Add_Goto (Table.States (969), 118, 131);
-            Add_Goto (Table.States (969), 129, 42);
-            Add_Goto (Table.States (969), 168, 1100);
-            Add_Goto (Table.States (969), 198, 134);
-            Add_Goto (Table.States (969), 240, 480);
-            Add_Goto (Table.States (969), 259, 136);
-            Add_Goto (Table.States (969), 273, 93);
-            Add_Goto (Table.States (969), 278, 481);
-            Add_Goto (Table.States (969), 294, 98);
-            Add_Goto (Table.States (969), 302, 482);
-            Add_Goto (Table.States (969), 315, 483);
-            Add_Goto (Table.States (969), 321, 145);
-            Add_Goto (Table.States (969), 322, 146);
-            Add_Goto (Table.States (969), 331, 147);
-            Table.States (969).Kernel := To_Vector ((0 => (169, 84, 1, True)));
-            Table.States (969).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (969).Minimal_Complete_Actions_Recursive := True;
-            Table.States (970).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (970), 37, Reduce, (231, 0), 6, null, 
null);
-            Add_Action (Table.States (970), 76, 236);
-            Add_Action (Table.States (970), 85, 238);
-            Add_Action (Table.States (970), 88, Reduce, (231, 0), 6, null, 
null);
-            Add_Action (Table.States (970), 102, 240);
-            Add_Action (Table.States (970), 103, 241);
-            Table.States (970).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (970), 116, 242);
-            Add_Goto (Table.States (970), 323, 243);
-            Table.States (970).Kernel := To_Vector (((129, 240, 2, True), 
(231, 240, 0, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (970).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 231, 6)));
-            Table.States (971).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (971), 97, 1101);
-            Table.States (971).Kernel := To_Vector ((0 => (236, 193, 1, 
False)));
-            Table.States (971).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1101)));
-            Table.States (972).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (972), 3, 122);
-            Add_Action (Table.States (972), 39, 123);
-            Add_Action (Table.States (972), 40, 124);
-            Add_Action (Table.States (972), 41, 125);
-            Add_Action (Table.States (972), 76, 127);
-            Add_Action (Table.States (972), 79, 31);
-            Add_Action (Table.States (972), 95, 128);
-            Add_Action (Table.States (972), 96, 129);
-            Add_Action (Table.States (972), 104, 130);
-            Add_Action (Table.States (972), 105, 120);
-            Add_Action (Table.States (972), 106, 34);
-            Add_Action (Table.States (972), 107, 35);
-            Table.States (972).Goto_List.Set_Capacity (11);
-            Add_Goto (Table.States (972), 118, 131);
-            Add_Goto (Table.States (972), 129, 42);
-            Add_Goto (Table.States (972), 198, 134);
-            Add_Goto (Table.States (972), 240, 135);
-            Add_Goto (Table.States (972), 259, 136);
-            Add_Goto (Table.States (972), 273, 93);
-            Add_Goto (Table.States (972), 294, 98);
-            Add_Goto (Table.States (972), 302, 1102);
-            Add_Goto (Table.States (972), 321, 145);
-            Add_Goto (Table.States (972), 322, 146);
-            Add_Goto (Table.States (972), 331, 147);
-            Table.States (972).Kernel := To_Vector ((0 => (145, 12, 6, 
False)));
-            Table.States (972).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (973).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (973), 54, 1103);
-            Table.States (973).Kernel := To_Vector ((0 => (282, 24, 2, 
False)));
-            Table.States (973).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 54, 1103)));
-            Table.States (974).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (974), (24, 105), (146, 0), 2, null, 
null);
-            Table.States (974).Kernel := To_Vector ((0 => (146, 145, 0, 
True)));
-            Table.States (974).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 146, 2)));
-            Table.States (974).Minimal_Complete_Actions_Recursive := True;
-            Table.States (975).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (975), 77, Reduce, (255, 3), 4, 
parameter_specification_3'Access, null);
-            Add_Action (Table.States (975), 83, 1104);
-            Add_Action (Table.States (975), 97, Reduce, (255, 3), 4, 
parameter_specification_3'Access, null);
-            Table.States (975).Kernel := To_Vector (((255, 115, 1, False), 
(255, 115, 0, False)));
-            Table.States (975).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 255, 4)));
-            Table.States (976).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (976), 40, 387);
-            Add_Action (Table.States (976), 79, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (976), 105, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (976), 106, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (976), 107, Reduce, (242, 1), 0, null, 
null);
-            Table.States (976).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (976), 242, 1105);
-            Table.States (976).Kernel := To_Vector (((255, 237, 2, False), 
(255, 237, 1, False)));
-            Table.States (976).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 242, 0)));
-            Table.States (977).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (977), (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, 
79, 94, 105, 106, 107, 108), (216, 2), 7,
+            Table.States (978).Kernel := To_Vector ((0 => ((227, 0),  78,  0, 
(227, 0),  3)));
+            Table.States (978).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (227, 0),  3)));
+            Table.States (979).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (979), 3, (200, 2), 122);
+            Add_Action (Table.States (979), 39, (261, 4), 123);
+            Add_Action (Table.States (979), 40, (200, 3), 481);
+            Add_Action (Table.States (979), 41, (261, 1), 125);
+            Add_Action (Table.States (979), 76, (120, 0), 127);
+            Add_Action (Table.States (979), 77, (120, 5), 128);
+            Add_Action (Table.States (979), 81, (242, 8), 31);
+            Add_Action (Table.States (979), 97, (333, 1), 129);
+            Add_Action (Table.States (979), 98, (333, 0), 130);
+            Add_Action (Table.States (979), 106, (261, 0), 131);
+            Add_Action (Table.States (979), 107, (242, 5), 120);
+            Add_Action (Table.States (979), 108, (242, 7), 34);
+            Add_Action (Table.States (979), 109, (242, 6), 35);
+            Table.States (979).Goto_List.Set_Capacity (14);
+            Add_Goto (Table.States (979), 120, 132);
+            Add_Goto (Table.States (979), 131, 42);
+            Add_Goto (Table.States (979), 170, 1110);
+            Add_Goto (Table.States (979), 200, 135);
+            Add_Goto (Table.States (979), 242, 484);
+            Add_Goto (Table.States (979), 261, 137);
+            Add_Goto (Table.States (979), 275, 93);
+            Add_Goto (Table.States (979), 280, 485);
+            Add_Goto (Table.States (979), 296, 98);
+            Add_Goto (Table.States (979), 304, 486);
+            Add_Goto (Table.States (979), 317, 487);
+            Add_Goto (Table.States (979), 323, 146);
+            Add_Goto (Table.States (979), 324, 147);
+            Add_Goto (Table.States (979), 333, 148);
+            Table.States (979).Kernel := To_Vector ((0 => ((171, 0),  86,  1, 
(2147483647, 0),  0)));
+            Table.States (979).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (980).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (980), 37, Reduce, (233, 0),  6, null, 
null);
+            Add_Action (Table.States (980), 76, (118, 0), 237);
+            Add_Action (Table.States (980), 87, (296, 0), 239);
+            Add_Action (Table.States (980), 90, Reduce, (233, 0),  6, null, 
null);
+            Add_Action (Table.States (980), 104, (325, 0), 241);
+            Add_Action (Table.States (980), 105, (325, 1), 242);
+            Table.States (980).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (980), 118, 243);
+            Add_Goto (Table.States (980), 325, 244);
+            Table.States (980).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((233, 0),  242,  0,
+            (233, 0),  6), ((242, 0),  242,  5, (2147483647, 0),  0), ((242, 
1),  242,  2, (2147483647, 0),  0), ((275,
+            0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (980).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (233, 0),  6)));
+            Table.States (981).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (981), 99, (238, 0), 1111);
+            Table.States (981).Kernel := To_Vector ((0 => ((238, 0),  195,  1, 
(2147483647, 0),  0)));
+            Table.States (981).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (238, 0),  99, 1111)));
+            Table.States (982).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (982), 3, (200, 2), 122);
+            Add_Action (Table.States (982), 39, (261, 4), 123);
+            Add_Action (Table.States (982), 40, (200, 3), 124);
+            Add_Action (Table.States (982), 41, (261, 1), 125);
+            Add_Action (Table.States (982), 76, (120, 0), 127);
+            Add_Action (Table.States (982), 77, (120, 5), 128);
+            Add_Action (Table.States (982), 81, (242, 8), 31);
+            Add_Action (Table.States (982), 97, (333, 1), 129);
+            Add_Action (Table.States (982), 98, (333, 0), 130);
+            Add_Action (Table.States (982), 106, (261, 0), 131);
+            Add_Action (Table.States (982), 107, (242, 5), 120);
+            Add_Action (Table.States (982), 108, (242, 7), 34);
+            Add_Action (Table.States (982), 109, (242, 6), 35);
+            Table.States (982).Goto_List.Set_Capacity (11);
+            Add_Goto (Table.States (982), 120, 132);
+            Add_Goto (Table.States (982), 131, 42);
+            Add_Goto (Table.States (982), 200, 135);
+            Add_Goto (Table.States (982), 242, 136);
+            Add_Goto (Table.States (982), 261, 137);
+            Add_Goto (Table.States (982), 275, 93);
+            Add_Goto (Table.States (982), 296, 98);
+            Add_Goto (Table.States (982), 304, 1112);
+            Add_Goto (Table.States (982), 323, 146);
+            Add_Goto (Table.States (982), 324, 147);
+            Add_Goto (Table.States (982), 333, 148);
+            Table.States (982).Kernel := To_Vector ((0 => ((147, 0),  12,  6, 
(2147483647, 0),  0)));
+            Table.States (982).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (983).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (983), 54, (284, 0), 1113);
+            Table.States (983).Kernel := To_Vector ((0 => ((284, 0),  24,  2, 
(2147483647, 0),  0)));
+            Table.States (983).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (284, 0),  54, 1113)));
+            Table.States (984).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (984), (24, 107), (148, 0),  2, null, 
null);
+            Table.States (984).Kernel := To_Vector ((0 => ((148, 0),  147,  0, 
(148, 0),  2)));
+            Table.States (984).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (148, 0),  2)));
+            Table.States (985).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (985), 78, Reduce, (257, 3),  4, 
parameter_specification_3'Access, null);
+            Add_Action (Table.States (985), 85, (257, 2), 1114);
+            Add_Action (Table.States (985), 99, Reduce, (257, 3),  4, 
parameter_specification_3'Access, null);
+            Table.States (985).Kernel := To_Vector ((((257, 2),  117,  1, 
(2147483647, 0),  0), ((257, 3),  117,  0,
+            (257, 3),  4)));
+            Table.States (985).Minimal_Complete_Actions := To_Vector (((Shift, 
(257, 2),  85, 1114), (Reduce, (257, 3),
+             4)));
+            Table.States (986).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (986), 40, (244, 0), 389);
+            Add_Action (Table.States (986), 81, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (986), 107, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (986), 108, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (986), 109, Reduce, (244, 1),  0, null, 
null);
+            Table.States (986).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (986), 244, 1115);
+            Table.States (986).Kernel := To_Vector ((((257, 0),  239,  2, 
(2147483647, 0),  0), ((257, 1),  239,  1,
+            (2147483647, 0),  0)));
+            Table.States (986).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (244, 1),  0)));
+            Table.States (987).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (987), (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, 
81, 96, 107, 108, 109, 110), (218, 2),  7,
             generic_renaming_declaration_2'Access, null);
-            Table.States (977).Kernel := To_Vector ((0 => (216, 97, 0, 
False)));
-            Table.States (977).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 216, 7)));
-            Table.States (978).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (978), (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, 
79, 94, 105, 106, 107, 108), (216, 0), 7,
+            Table.States (987).Kernel := To_Vector ((0 => ((218, 2),  99,  0, 
(218, 2),  7)));
+            Table.States (987).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (218, 2),  7)));
+            Table.States (988).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (988), (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, 
81, 96, 107, 108, 109, 110), (218, 0),  7,
             generic_renaming_declaration_0'Access, null);
-            Table.States (978).Kernel := To_Vector ((0 => (216, 97, 0, 
False)));
-            Table.States (978).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 216, 7)));
-            Table.States (979).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (979), (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, 
79, 94, 105, 106, 107, 108), (216, 1), 7,
+            Table.States (988).Kernel := To_Vector ((0 => ((218, 0),  99,  0, 
(218, 0),  7)));
+            Table.States (988).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (218, 0),  7)));
+            Table.States (989).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (989), (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, 
81, 96, 107, 108, 109, 110), (218, 1),  7,
             generic_renaming_declaration_1'Access, null);
-            Table.States (979).Kernel := To_Vector ((0 => (216, 97, 0, 
False)));
-            Table.States (979).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 216, 7)));
-            Table.States (980).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (980), (1 =>  39), (110, 0), 2, null, 
null);
-            Table.States (980).Kernel := To_Vector ((0 => (110, 36, 0, 
False)));
-            Table.States (980).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 110, 2)));
-            Table.States (981).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (981), 20, 1106);
-            Add_Action (Table.States (981), 74, Reduce, (203, 7), 2, null, 
null);
-            Add_Action (Table.States (981), 97, Reduce, (203, 7), 2, null, 
null);
-            Table.States (981).Kernel := To_Vector (((203, 81, 2, False), 
(203, 81, 0, False)));
-            Table.States (981).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 203, 2)));
-            Table.States (982).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (982), (74, 97), (203, 5), 2, null, null);
-            Table.States (982).Kernel := To_Vector ((0 => (203, 81, 0, 
False)));
-            Table.States (982).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 203, 2)));
-            Table.States (983).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (983), (74, 97), (203, 4), 2, null, null);
-            Table.States (983).Kernel := To_Vector ((0 => (203, 81, 0, 
False)));
-            Table.States (983).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 203, 2)));
-            Table.States (984).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (984), (74, 97), (203, 3), 2, null, null);
-            Table.States (984).Kernel := To_Vector ((0 => (203, 81, 0, 
False)));
-            Table.States (984).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 203, 2)));
-            Table.States (985).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (985), 97, 1107);
-            Table.States (985).Kernel := To_Vector ((0 => (202, 123, 1, 
False)));
-            Table.States (985).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1107)));
-            Table.States (986).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (986), 77, 1108);
-            Table.States (986).Kernel := To_Vector ((0 => (203, 81, 1, 
False)));
-            Table.States (986).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 1108)));
-            Table.States (987).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (987), 79, 31);
-            Add_Action (Table.States (987), 105, 120);
-            Add_Action (Table.States (987), 106, 34);
-            Add_Action (Table.States (987), 107, 35);
-            Table.States (987).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (987), 129, 42);
-            Add_Goto (Table.States (987), 240, 1109);
-            Add_Goto (Table.States (987), 273, 93);
-            Add_Goto (Table.States (987), 294, 98);
-            Table.States (987).Kernel := To_Vector (((204, 39, 3, False), 
(204, 39, 1, False)));
-            Table.States (987).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (988).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (988), (74, 97), (203, 0), 2, null, null);
-            Table.States (988).Kernel := To_Vector ((0 => (203, 49, 0, 
False)));
-            Table.States (988).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 203, 2)));
-            Table.States (989).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (989), 97, 1110);
-            Table.States (989).Kernel := To_Vector ((0 => (202, 123, 1, 
False)));
-            Table.States (989).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1110)));
-            Table.States (990).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (990), 74, Reduce, (206, 1), 0, null, 
null);
-            Add_Action (Table.States (990), 76, 1111);
-            Add_Action (Table.States (990), 85, 238);
-            Add_Action (Table.States (990), 97, Reduce, (206, 1), 0, null, 
null);
-            Add_Action (Table.States (990), 102, 240);
-            Add_Action (Table.States (990), 103, 241);
-            Table.States (990).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (990), 116, 242);
-            Add_Goto (Table.States (990), 206, 1112);
-            Add_Goto (Table.States (990), 323, 243);
-            Table.States (990).Kernel := To_Vector (((129, 240, 2, True), 
(205, 240, 1, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (990).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 206, 0)));
-            Table.States (991).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (991), (29, 47, 48, 50, 69, 71, 74, 105), 
(201, 2), 6,
+            Table.States (989).Kernel := To_Vector ((0 => ((218, 1),  99,  0, 
(218, 1),  7)));
+            Table.States (989).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (218, 1),  7)));
+            Table.States (990).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (990), (1 =>  39), (112, 0),  2, null, 
null);
+            Table.States (990).Kernel := To_Vector ((0 => ((112, 0),  36,  0, 
(112, 0),  2)));
+            Table.States (990).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (112, 0),  2)));
+            Table.States (991).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (991), 20, (205, 6), 1116);
+            Add_Action (Table.States (991), 74, Reduce, (205, 7),  2, null, 
null);
+            Add_Action (Table.States (991), 99, Reduce, (205, 7),  2, null, 
null);
+            Table.States (991).Kernel := To_Vector ((((205, 6),  83,  2, 
(2147483647, 0),  0), ((205, 7),  83,  0,
+            (205, 7),  2)));
+            Table.States (991).Minimal_Complete_Actions := To_Vector (((Shift, 
(205, 6),  20, 1116), (Reduce, (205, 7),
+             2)));
+            Table.States (992).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (992), (74, 99), (205, 5),  2, null, 
null);
+            Table.States (992).Kernel := To_Vector ((0 => ((205, 5),  83,  0, 
(205, 5),  2)));
+            Table.States (992).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (205, 5),  2)));
+            Table.States (993).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (993), (74, 99), (205, 4),  2, null, 
null);
+            Table.States (993).Kernel := To_Vector ((0 => ((205, 4),  83,  0, 
(205, 4),  2)));
+            Table.States (993).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (205, 4),  2)));
+            Table.States (994).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (994), (74, 99), (205, 3),  2, null, 
null);
+            Table.States (994).Kernel := To_Vector ((0 => ((205, 3),  83,  0, 
(205, 3),  2)));
+            Table.States (994).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (205, 3),  2)));
+            Table.States (995).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (995), 99, (204, 1), 1117);
+            Table.States (995).Kernel := To_Vector ((0 => ((204, 1),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (995).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (204, 1),  99, 1117)));
+            Table.States (996).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (996), 78, (205, 2), 1118);
+            Table.States (996).Kernel := To_Vector ((0 => ((205, 2),  83,  1, 
(2147483647, 0),  0)));
+            Table.States (996).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (205, 2),  78, 1118)));
+            Table.States (997).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (997), 81, (242, 8), 31);
+            Add_Action (Table.States (997), 107, (242, 5), 120);
+            Add_Action (Table.States (997), 108, (242, 7), 34);
+            Add_Action (Table.States (997), 109, (242, 6), 35);
+            Table.States (997).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (997), 131, 42);
+            Add_Goto (Table.States (997), 242, 1119);
+            Add_Goto (Table.States (997), 275, 93);
+            Add_Goto (Table.States (997), 296, 98);
+            Table.States (997).Kernel := To_Vector ((((206, 0),  39,  3, 
(2147483647, 0),  0), ((206, 1),  39,  1,
+            (2147483647, 0),  0)));
+            Table.States (997).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (998).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (998), (74, 99), (205, 0),  2, null, 
null);
+            Table.States (998).Kernel := To_Vector ((0 => ((205, 0),  49,  0, 
(205, 0),  2)));
+            Table.States (998).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (205, 0),  2)));
+            Table.States (999).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (999), 99, (204, 0), 1120);
+            Table.States (999).Kernel := To_Vector ((0 => ((204, 0),  125,  1, 
(2147483647, 0),  0)));
+            Table.States (999).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (204, 0),  99, 1120)));
+            Table.States (1000).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (1000), 74, Reduce, (208, 1),  0, null, 
null);
+            Add_Action (Table.States (1000), 76, (118, 0), 1121);
+            Add_Action (Table.States (1000), 87, (296, 0), 239);
+            Add_Action (Table.States (1000), 99, Reduce, (208, 1),  0, null, 
null);
+            Add_Action (Table.States (1000), 104, (325, 0), 241);
+            Add_Action (Table.States (1000), 105, (325, 1), 242);
+            Table.States (1000).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (1000), 118, 243);
+            Add_Goto (Table.States (1000), 208, 1122);
+            Add_Goto (Table.States (1000), 325, 244);
+            Table.States (1000).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((207, 0),  242,  1,
+            (2147483647, 0),  0), ((242, 0),  242,  5, (2147483647, 0),  0), 
((242, 1),  242,  2, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (1000).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (208, 1),  0)));
+            Table.States (1001).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (1001), (29, 47, 48, 50, 69, 71, 74, 
107), (203, 2),  6,
             formal_subprogram_declaration_2'Access, null);
-            Table.States (991).Kernel := To_Vector ((0 => (201, 97, 0, 
False)));
-            Table.States (991).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 201, 6)));
-            Table.States (992).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (992), 97, 1113);
-            Table.States (992).Kernel := To_Vector ((0 => (201, 123, 1, 
False)));
-            Table.States (992).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1113)));
-            Table.States (993).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (993), (29, 47, 48, 50, 69, 71, 74, 105), 
(201, 1), 6,
+            Table.States (1001).Kernel := To_Vector ((0 => ((203, 2),  99,  0, 
(203, 2),  6)));
+            Table.States (1001).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (203, 2),  6)));
+            Table.States (1002).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1002), 99, (203, 0), 1123);
+            Table.States (1002).Kernel := To_Vector ((0 => ((203, 0),  125,  
1, (2147483647, 0),  0)));
+            Table.States (1002).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (203, 0),  99, 1123)));
+            Table.States (1003).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (1003), (29, 47, 48, 50, 69, 71, 74, 
107), (203, 1),  6,
             formal_subprogram_declaration_1'Access, null);
-            Table.States (993).Kernel := To_Vector ((0 => (201, 97, 0, 
False)));
-            Table.States (993).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 201, 6)));
-            Table.States (994).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (994), 74, 338);
-            Add_Action (Table.States (994), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (994).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (994), 123, 1114);
-            Table.States (994).Kernel := To_Vector ((0 => (199, 193, 1, 
False)));
-            Table.States (994).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (995).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (995), (29, 47, 48, 50, 69, 71, 74, 105), 
(199, 3), 6,
+            Table.States (1003).Kernel := To_Vector ((0 => ((203, 1),  99,  0, 
(203, 1),  6)));
+            Table.States (1003).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (203, 1),  6)));
+            Table.States (1004).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1004), 74, (125, 0), 340);
+            Add_Action (Table.States (1004), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (1004).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1004), 125, 1124);
+            Table.States (1004).Kernel := To_Vector ((0 => ((201, 1),  195,  
1, (2147483647, 0),  0)));
+            Table.States (1004).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (1005).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (1005), (29, 47, 48, 50, 69, 71, 74, 
107), (201, 3),  6,
             formal_object_declaration_3'Access, null);
-            Table.States (995).Kernel := To_Vector ((0 => (199, 97, 0, 
False)));
-            Table.States (995).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 199, 6)));
-            Table.States (996).Action_List.Set_Capacity (15);
-            Add_Action (Table.States (996), 3, 122);
-            Add_Action (Table.States (996), 39, 123);
-            Add_Action (Table.States (996), 40, 124);
-            Add_Action (Table.States (996), 41, 125);
-            Add_Action (Table.States (996), 52, 126);
-            Add_Action (Table.States (996), 74, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (996), 76, 127);
-            Add_Action (Table.States (996), 79, 31);
-            Add_Action (Table.States (996), 95, 128);
-            Add_Action (Table.States (996), 96, 129);
-            Add_Action (Table.States (996), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (996), 104, 130);
-            Add_Action (Table.States (996), 105, 120);
-            Add_Action (Table.States (996), 106, 34);
-            Add_Action (Table.States (996), 107, 35);
-            Table.States (996).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (996), 118, 131);
-            Add_Goto (Table.States (996), 129, 42);
-            Add_Goto (Table.States (996), 192, 132);
-            Add_Goto (Table.States (996), 193, 1115);
-            Add_Goto (Table.States (996), 198, 134);
-            Add_Goto (Table.States (996), 240, 135);
-            Add_Goto (Table.States (996), 259, 136);
-            Add_Goto (Table.States (996), 273, 93);
-            Add_Goto (Table.States (996), 276, 137);
-            Add_Goto (Table.States (996), 283, 138);
-            Add_Goto (Table.States (996), 284, 139);
-            Add_Goto (Table.States (996), 285, 140);
-            Add_Goto (Table.States (996), 286, 141);
-            Add_Goto (Table.States (996), 287, 142);
-            Add_Goto (Table.States (996), 288, 143);
-            Add_Goto (Table.States (996), 294, 98);
-            Add_Goto (Table.States (996), 302, 144);
-            Add_Goto (Table.States (996), 321, 145);
-            Add_Goto (Table.States (996), 322, 146);
-            Add_Goto (Table.States (996), 331, 147);
-            Table.States (996).Kernel := To_Vector ((0 => (199, 83, 1, 
False)));
-            Table.States (996).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (997).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (997), 97, 1116);
-            Table.States (997).Kernel := To_Vector ((0 => (199, 123, 1, 
False)));
-            Table.States (997).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1116)));
-            Table.States (998).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (998), 32, 1117);
-            Table.States (998).Kernel := To_Vector ((0 => (223, 24, 2, 
False)));
-            Table.States (998).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 32, 1117)));
-            Table.States (999).Action_List.Set_Capacity (26);
-            Add_Action (Table.States (999), 4, 1);
-            Add_Action (Table.States (999), 5, 2);
-            Add_Action (Table.States (999), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (999), 15, 3);
-            Add_Action (Table.States (999), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (999), 18, 4);
-            Add_Action (Table.States (999), 22, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (999), 23, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (999), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (999), 27, 5);
-            Add_Action (Table.States (999), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (999), 31, 9);
-            Add_Action (Table.States (999), 32, 10);
-            Add_Action (Table.States (999), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (999), 41, 13);
-            Add_Action (Table.States (999), 48, 16);
-            Add_Action (Table.States (999), 52, 20);
-            Add_Action (Table.States (999), 57, 21);
-            Add_Action (Table.States (999), 58, 22);
-            Add_Action (Table.States (999), 61, 24);
-            Add_Action (Table.States (999), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (999), 79, 31);
-            Add_Action (Table.States (999), 94, 32);
-            Add_Action (Table.States (999), 105, 361);
-            Add_Action (Table.States (999), 106, 34);
-            Add_Action (Table.States (999), 107, 35);
-            Table.States (999).Goto_List.Set_Capacity (31);
-            Add_Goto (Table.States (999), 114, 37);
-            Add_Goto (Table.States (999), 124, 39);
-            Add_Goto (Table.States (999), 127, 40);
-            Add_Goto (Table.States (999), 129, 42);
-            Add_Goto (Table.States (999), 132, 43);
-            Add_Goto (Table.States (999), 133, 44);
-            Add_Goto (Table.States (999), 134, 45);
-            Add_Goto (Table.States (999), 140, 48);
-            Add_Goto (Table.States (999), 152, 51);
-            Add_Goto (Table.States (999), 153, 52);
-            Add_Goto (Table.States (999), 162, 54);
-            Add_Goto (Table.States (999), 191, 58);
-            Add_Goto (Table.States (999), 197, 60);
-            Add_Goto (Table.States (999), 218, 69);
-            Add_Goto (Table.States (999), 223, 71);
-            Add_Goto (Table.States (999), 233, 73);
-            Add_Goto (Table.States (999), 240, 74);
-            Add_Goto (Table.States (999), 258, 84);
-            Add_Goto (Table.States (999), 262, 87);
-            Add_Goto (Table.States (999), 273, 93);
-            Add_Goto (Table.States (999), 277, 94);
-            Add_Goto (Table.States (999), 291, 97);
-            Add_Goto (Table.States (999), 294, 98);
-            Add_Goto (Table.States (999), 295, 99);
-            Add_Goto (Table.States (999), 299, 100);
-            Add_Goto (Table.States (999), 300, 362);
-            Add_Goto (Table.States (999), 301, 1118);
-            Add_Goto (Table.States (999), 303, 101);
-            Add_Goto (Table.States (999), 304, 102);
-            Add_Goto (Table.States (999), 307, 364);
-            Add_Goto (Table.States (999), 324, 115);
-            Table.States (999).Kernel := To_Vector ((0 => (175, 68, 0, 
False)));
-            Table.States (999).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 0)));
-            Table.States (1000).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (1000), (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, 79, 94, 105, 106,
-            107, 108), (223, 3), 7, if_statement_3'Access, null);
-            Table.States (1000).Kernel := To_Vector ((0 => (223, 97, 0, 
False)));
-            Table.States (1000).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 223, 7)));
-         end Subr_17;
-         procedure Subr_18
-         is begin
-            Table.States (1001).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1001), 24, 1119);
-            Table.States (1001).Kernel := To_Vector ((0 => (223, 301, 3, 
False)));
-            Table.States (1001).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1119)));
-            Table.States (1002).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1002), 97, 1120);
-            Table.States (1002).Kernel := To_Vector ((0 => (223, 32, 1, 
False)));
-            Table.States (1002).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1120)));
-            Table.States (1003).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1003), (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, 
79, 94, 105, 106, 107, 108), (249, 0), 7,
+            Table.States (1005).Kernel := To_Vector ((0 => ((201, 3),  99,  0, 
(201, 3),  6)));
+            Table.States (1005).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (201, 3),  6)));
+            Table.States (1006).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (1006), 3, (200, 2), 122);
+            Add_Action (Table.States (1006), 39, (261, 4), 123);
+            Add_Action (Table.States (1006), 40, (200, 3), 124);
+            Add_Action (Table.States (1006), 41, (261, 1), 125);
+            Add_Action (Table.States (1006), 52, (278, 0), 126);
+            Add_Action (Table.States (1006), 74, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1006), 76, (120, 0), 127);
+            Add_Action (Table.States (1006), 77, (120, 5), 128);
+            Add_Action (Table.States (1006), 81, (242, 8), 31);
+            Add_Action (Table.States (1006), 97, (333, 1), 129);
+            Add_Action (Table.States (1006), 98, (333, 0), 130);
+            Add_Action (Table.States (1006), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1006), 106, (261, 0), 131);
+            Add_Action (Table.States (1006), 107, (242, 5), 120);
+            Add_Action (Table.States (1006), 108, (242, 7), 34);
+            Add_Action (Table.States (1006), 109, (242, 6), 35);
+            Table.States (1006).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (1006), 120, 132);
+            Add_Goto (Table.States (1006), 131, 42);
+            Add_Goto (Table.States (1006), 194, 133);
+            Add_Goto (Table.States (1006), 195, 1125);
+            Add_Goto (Table.States (1006), 200, 135);
+            Add_Goto (Table.States (1006), 242, 136);
+            Add_Goto (Table.States (1006), 261, 137);
+            Add_Goto (Table.States (1006), 275, 93);
+            Add_Goto (Table.States (1006), 278, 138);
+            Add_Goto (Table.States (1006), 285, 139);
+            Add_Goto (Table.States (1006), 286, 140);
+            Add_Goto (Table.States (1006), 287, 141);
+            Add_Goto (Table.States (1006), 288, 142);
+            Add_Goto (Table.States (1006), 289, 143);
+            Add_Goto (Table.States (1006), 290, 144);
+            Add_Goto (Table.States (1006), 296, 98);
+            Add_Goto (Table.States (1006), 304, 145);
+            Add_Goto (Table.States (1006), 323, 146);
+            Add_Goto (Table.States (1006), 324, 147);
+            Add_Goto (Table.States (1006), 333, 148);
+            Table.States (1006).Kernel := To_Vector ((0 => ((201, 0),  85,  1, 
(2147483647, 0),  0)));
+            Table.States (1006).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (1007).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1007), 99, (201, 2), 1126);
+            Table.States (1007).Kernel := To_Vector ((0 => ((201, 2),  125,  
1, (2147483647, 0),  0)));
+            Table.States (1007).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (201, 2),  99, 1126)));
+            Table.States (1008).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1008), 32, (225, 1), 1127);
+            Table.States (1008).Kernel := To_Vector ((0 => ((225, 1),  24,  2, 
(2147483647, 0),  0)));
+            Table.States (1008).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (225, 1),  32, 1127)));
+            Table.States (1009).Action_List.Set_Capacity (26);
+            Add_Action (Table.States (1009), 4, (116, 0), 1);
+            Add_Action (Table.States (1009), 5, (306, 8), 2);
+            Add_Action (Table.States (1009), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1009), 15, (142, 0), 3);
+            Add_Action (Table.States (1009), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1009), 18, (164, 0), 4);
+            Add_Action (Table.States (1009), 22, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (1009), 23, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (1009), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (1009), 27, (193, 0), 5);
+            Add_Action (Table.States (1009), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1009), 31, (306, 3), 9);
+            Add_Action (Table.States (1009), 32, (225, 0), 10);
+            Add_Action (Table.States (1009), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1009), 41, (306, 0), 13);
+            Add_Action (Table.States (1009), 48, (260, 0), 16);
+            Add_Action (Table.States (1009), 52, (279, 0), 20);
+            Add_Action (Table.States (1009), 57, (293, 0), 21);
+            Add_Action (Table.States (1009), 58, (199, 0), 22);
+            Add_Action (Table.States (1009), 61, (129, 0), 24);
+            Add_Action (Table.States (1009), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1009), 81, (242, 8), 31);
+            Add_Action (Table.States (1009), 96, (220, 0), 32);
+            Add_Action (Table.States (1009), 107, (134, 0), 363);
+            Add_Action (Table.States (1009), 108, (242, 7), 34);
+            Add_Action (Table.States (1009), 109, (242, 6), 35);
+            Table.States (1009).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (1009), 116, 37);
+            Add_Goto (Table.States (1009), 126, 39);
+            Add_Goto (Table.States (1009), 129, 40);
+            Add_Goto (Table.States (1009), 131, 42);
+            Add_Goto (Table.States (1009), 134, 43);
+            Add_Goto (Table.States (1009), 135, 44);
+            Add_Goto (Table.States (1009), 136, 45);
+            Add_Goto (Table.States (1009), 142, 48);
+            Add_Goto (Table.States (1009), 154, 51);
+            Add_Goto (Table.States (1009), 155, 52);
+            Add_Goto (Table.States (1009), 164, 54);
+            Add_Goto (Table.States (1009), 193, 58);
+            Add_Goto (Table.States (1009), 199, 60);
+            Add_Goto (Table.States (1009), 220, 69);
+            Add_Goto (Table.States (1009), 225, 71);
+            Add_Goto (Table.States (1009), 235, 73);
+            Add_Goto (Table.States (1009), 242, 74);
+            Add_Goto (Table.States (1009), 260, 84);
+            Add_Goto (Table.States (1009), 264, 87);
+            Add_Goto (Table.States (1009), 275, 93);
+            Add_Goto (Table.States (1009), 279, 94);
+            Add_Goto (Table.States (1009), 293, 97);
+            Add_Goto (Table.States (1009), 296, 98);
+            Add_Goto (Table.States (1009), 297, 99);
+            Add_Goto (Table.States (1009), 301, 100);
+            Add_Goto (Table.States (1009), 302, 364);
+            Add_Goto (Table.States (1009), 303, 1128);
+            Add_Goto (Table.States (1009), 305, 101);
+            Add_Goto (Table.States (1009), 306, 102);
+            Add_Goto (Table.States (1009), 309, 366);
+            Add_Goto (Table.States (1009), 326, 115);
+            Table.States (1009).Kernel := To_Vector ((0 => ((177, 0),  68,  0, 
(303, 1),  0)));
+            Table.States (1009).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (303, 1),  0)));
+            Table.States (1010).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (1010), (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, 81, 96, 107, 108,
+            109, 110), (225, 3),  7, if_statement_3'Access, null);
+            Table.States (1010).Kernel := To_Vector ((0 => ((225, 3),  99,  0, 
(225, 3),  7)));
+            Table.States (1010).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (225, 3),  7)));
+            Table.States (1011).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1011), 24, (225, 0), 1129);
+            Table.States (1011).Kernel := To_Vector ((0 => ((225, 0),  303,  
3, (2147483647, 0),  0)));
+            Table.States (1011).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (225, 0),  24, 1129)));
+            Table.States (1012).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1012), 99, (225, 2), 1130);
+            Table.States (1012).Kernel := To_Vector ((0 => ((225, 2),  32,  1, 
(2147483647, 0),  0)));
+            Table.States (1012).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (225, 2),  99, 1130)));
+            Table.States (1013).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1013), (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, 
81, 96, 107, 108, 109, 110), (251, 0),  7,
             package_body_stub_0'Access, null);
-            Table.States (1003).Kernel := To_Vector ((0 => (249, 97, 0, 
False)));
-            Table.States (1003).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 249, 7)));
-            Table.States (1004).Action_List.Set_Capacity (25);
-            Add_Action (Table.States (1004), 4, 1);
-            Add_Action (Table.States (1004), 5, 2);
-            Add_Action (Table.States (1004), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1004), 15, 3);
-            Add_Action (Table.States (1004), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1004), 18, 4);
-            Add_Action (Table.States (1004), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (1004), 26, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (1004), 27, 5);
-            Add_Action (Table.States (1004), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1004), 31, 9);
-            Add_Action (Table.States (1004), 32, 10);
-            Add_Action (Table.States (1004), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1004), 41, 13);
-            Add_Action (Table.States (1004), 48, 16);
-            Add_Action (Table.States (1004), 52, 20);
-            Add_Action (Table.States (1004), 57, 21);
-            Add_Action (Table.States (1004), 58, 22);
-            Add_Action (Table.States (1004), 61, 24);
-            Add_Action (Table.States (1004), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1004), 79, 31);
-            Add_Action (Table.States (1004), 94, 32);
-            Add_Action (Table.States (1004), 105, 361);
-            Add_Action (Table.States (1004), 106, 34);
-            Add_Action (Table.States (1004), 107, 35);
-            Table.States (1004).Goto_List.Set_Capacity (32);
-            Add_Goto (Table.States (1004), 114, 37);
-            Add_Goto (Table.States (1004), 124, 39);
-            Add_Goto (Table.States (1004), 127, 40);
-            Add_Goto (Table.States (1004), 129, 42);
-            Add_Goto (Table.States (1004), 132, 43);
-            Add_Goto (Table.States (1004), 133, 44);
-            Add_Goto (Table.States (1004), 134, 45);
-            Add_Goto (Table.States (1004), 140, 48);
-            Add_Goto (Table.States (1004), 152, 51);
-            Add_Goto (Table.States (1004), 153, 52);
-            Add_Goto (Table.States (1004), 162, 54);
-            Add_Goto (Table.States (1004), 191, 58);
-            Add_Goto (Table.States (1004), 197, 60);
-            Add_Goto (Table.States (1004), 218, 69);
-            Add_Goto (Table.States (1004), 219, 1121);
-            Add_Goto (Table.States (1004), 223, 71);
-            Add_Goto (Table.States (1004), 233, 73);
-            Add_Goto (Table.States (1004), 240, 74);
-            Add_Goto (Table.States (1004), 258, 84);
-            Add_Goto (Table.States (1004), 262, 87);
-            Add_Goto (Table.States (1004), 273, 93);
-            Add_Goto (Table.States (1004), 277, 94);
-            Add_Goto (Table.States (1004), 291, 97);
-            Add_Goto (Table.States (1004), 294, 98);
-            Add_Goto (Table.States (1004), 295, 99);
-            Add_Goto (Table.States (1004), 299, 100);
-            Add_Goto (Table.States (1004), 300, 362);
-            Add_Goto (Table.States (1004), 301, 391);
-            Add_Goto (Table.States (1004), 303, 101);
-            Add_Goto (Table.States (1004), 304, 102);
-            Add_Goto (Table.States (1004), 307, 364);
-            Add_Goto (Table.States (1004), 324, 115);
-            Table.States (1004).Kernel := To_Vector ((0 => (248, 13, 2, 
False)));
-            Table.States (1004).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 219, 0)));
-            Table.States (1005).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (1005), 79, 31);
-            Add_Action (Table.States (1005), 97, Reduce, (241, 1), 0, null, 
null);
-            Add_Action (Table.States (1005), 105, 120);
-            Add_Action (Table.States (1005), 106, 34);
-            Add_Action (Table.States (1005), 107, 35);
-            Table.States (1005).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (1005), 129, 42);
-            Add_Goto (Table.States (1005), 240, 638);
-            Add_Goto (Table.States (1005), 241, 1122);
-            Add_Goto (Table.States (1005), 273, 93);
-            Add_Goto (Table.States (1005), 294, 98);
-            Table.States (1005).Kernel := To_Vector ((0 => (248, 24, 1, 
False)));
-            Table.States (1005).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 241, 0)));
-            Table.States (1006).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1006), (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, 
79, 94, 105, 106, 107, 108), (214, 0), 7,
+            Table.States (1013).Kernel := To_Vector ((0 => ((251, 0),  99,  0, 
(251, 0),  7)));
+            Table.States (1013).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (251, 0),  7)));
+            Table.States (1014).Action_List.Set_Capacity (25);
+            Add_Action (Table.States (1014), 4, (116, 0), 1);
+            Add_Action (Table.States (1014), 5, (306, 8), 2);
+            Add_Action (Table.States (1014), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1014), 15, (142, 0), 3);
+            Add_Action (Table.States (1014), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1014), 18, (164, 0), 4);
+            Add_Action (Table.States (1014), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (1014), 26, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (1014), 27, (193, 0), 5);
+            Add_Action (Table.States (1014), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1014), 31, (306, 3), 9);
+            Add_Action (Table.States (1014), 32, (225, 0), 10);
+            Add_Action (Table.States (1014), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1014), 41, (306, 0), 13);
+            Add_Action (Table.States (1014), 48, (260, 0), 16);
+            Add_Action (Table.States (1014), 52, (279, 0), 20);
+            Add_Action (Table.States (1014), 57, (293, 0), 21);
+            Add_Action (Table.States (1014), 58, (199, 0), 22);
+            Add_Action (Table.States (1014), 61, (129, 0), 24);
+            Add_Action (Table.States (1014), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1014), 81, (242, 8), 31);
+            Add_Action (Table.States (1014), 96, (220, 0), 32);
+            Add_Action (Table.States (1014), 107, (134, 0), 363);
+            Add_Action (Table.States (1014), 108, (242, 7), 34);
+            Add_Action (Table.States (1014), 109, (242, 6), 35);
+            Table.States (1014).Goto_List.Set_Capacity (32);
+            Add_Goto (Table.States (1014), 116, 37);
+            Add_Goto (Table.States (1014), 126, 39);
+            Add_Goto (Table.States (1014), 129, 40);
+            Add_Goto (Table.States (1014), 131, 42);
+            Add_Goto (Table.States (1014), 134, 43);
+            Add_Goto (Table.States (1014), 135, 44);
+            Add_Goto (Table.States (1014), 136, 45);
+            Add_Goto (Table.States (1014), 142, 48);
+            Add_Goto (Table.States (1014), 154, 51);
+            Add_Goto (Table.States (1014), 155, 52);
+            Add_Goto (Table.States (1014), 164, 54);
+            Add_Goto (Table.States (1014), 193, 58);
+            Add_Goto (Table.States (1014), 199, 60);
+            Add_Goto (Table.States (1014), 220, 69);
+            Add_Goto (Table.States (1014), 221, 1131);
+            Add_Goto (Table.States (1014), 225, 71);
+            Add_Goto (Table.States (1014), 235, 73);
+            Add_Goto (Table.States (1014), 242, 74);
+            Add_Goto (Table.States (1014), 260, 84);
+            Add_Goto (Table.States (1014), 264, 87);
+            Add_Goto (Table.States (1014), 275, 93);
+            Add_Goto (Table.States (1014), 279, 94);
+            Add_Goto (Table.States (1014), 293, 97);
+            Add_Goto (Table.States (1014), 296, 98);
+            Add_Goto (Table.States (1014), 297, 99);
+            Add_Goto (Table.States (1014), 301, 100);
+            Add_Goto (Table.States (1014), 302, 364);
+            Add_Goto (Table.States (1014), 303, 393);
+            Add_Goto (Table.States (1014), 305, 101);
+            Add_Goto (Table.States (1014), 306, 102);
+            Add_Goto (Table.States (1014), 309, 366);
+            Add_Goto (Table.States (1014), 326, 115);
+            Table.States (1014).Kernel := To_Vector ((0 => ((250, 0),  13,  2, 
(2147483647, 0),  0)));
+            Table.States (1014).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (221, 1),  0)));
+            Table.States (1015).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (1015), 81, (242, 8), 31);
+            Add_Action (Table.States (1015), 99, Reduce, (243, 1),  0, null, 
null);
+            Add_Action (Table.States (1015), 107, (242, 5), 120);
+            Add_Action (Table.States (1015), 108, (242, 7), 34);
+            Add_Action (Table.States (1015), 109, (242, 6), 35);
+            Table.States (1015).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (1015), 131, 42);
+            Add_Goto (Table.States (1015), 242, 644);
+            Add_Goto (Table.States (1015), 243, 1132);
+            Add_Goto (Table.States (1015), 275, 93);
+            Add_Goto (Table.States (1015), 296, 98);
+            Table.States (1015).Kernel := To_Vector ((0 => ((250, 1),  24,  1, 
(2147483647, 0),  0)));
+            Table.States (1015).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (243, 1),  0)));
+         end Subr_18;
+         procedure Subr_19
+         is begin
+            Table.States (1016).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1016), (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, 
81, 96, 107, 108, 109, 110), (216, 0),  7,
             generic_instantiation_0'Access, null);
-            Table.States (1006).Kernel := To_Vector ((0 => (214, 97, 0, 
False)));
-            Table.States (1006).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 214, 7)));
-            Table.States (1007).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1007), (1 =>  97), (252, 1), 7, 
package_specification_1'Access,
+            Table.States (1016).Kernel := To_Vector ((0 => ((216, 0),  99,  0, 
(216, 0),  7)));
+            Table.States (1016).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (216, 0),  7)));
+            Table.States (1017).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1017), (1 =>  99), (254, 1),  7, 
package_specification_1'Access,
             package_specification_1_check'Access);
-            Table.States (1007).Kernel := To_Vector ((0 => (252, 241, 0, 
False)));
-            Table.States (1007).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 252, 7)));
-            Table.States (1008).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1008), 24, 1123);
-            Table.States (1008).Kernel := To_Vector ((0 => (252, 160, 1, 
False)));
-            Table.States (1008).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1123)));
-            Table.States (1009).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1009), (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, 
79, 94, 105, 106, 107, 108), (266, 0), 7,
-            protected_body_stub_0'Access, null);
-            Table.States (1009).Kernel := To_Vector ((0 => (266, 97, 0, 
False)));
-            Table.States (1009).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 266, 7)));
-            Table.States (1010).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1010), 72, Reduce, (254, 1), 0, null, 
null);
-            Add_Action (Table.States (1010), 76, 1124);
-            Table.States (1010).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (1010), 178, 1125);
-            Add_Goto (Table.States (1010), 200, 345);
-            Add_Goto (Table.States (1010), 254, 1126);
-            Table.States (1010).Kernel := To_Vector ((0 => (177, 105, 5, 
False)));
-            Table.States (1010).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 178, 0)));
-            Table.States (1011).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (1011), 35, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (1011), 74, 338);
-            Add_Action (Table.States (1011), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (1011).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1011), 123, 431);
-            Table.States (1011).Kernel := To_Vector (((308, 313, 4, False), 
(310, 313, 1, False)));
-            Table.States (1011).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (1012).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (1012), (24, 25, 28, 29, 40, 46, 50), 
(269, 0), 2, null, null);
-            Table.States (1012).Kernel := To_Vector ((0 => (269, 268, 0, 
True)));
-            Table.States (1012).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 269, 2)));
-            Table.States (1012).Minimal_Complete_Actions_Recursive := True;
-            Table.States (1013).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1013), 97, Reduce, (221, 1), 0, null, 
null);
-            Add_Action (Table.States (1013), 105, 150);
-            Table.States (1013).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1013), 221, 1127);
-            Table.States (1013).Kernel := To_Vector ((0 => (265, 24, 1, 
False)));
-            Table.States (1013).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 0)));
-            Table.States (1014).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (1014), 79, 31);
-            Add_Action (Table.States (1014), 105, 120);
-            Add_Action (Table.States (1014), 106, 34);
-            Add_Action (Table.States (1014), 107, 35);
-            Table.States (1014).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (1014), 129, 42);
-            Add_Goto (Table.States (1014), 228, 1128);
-            Add_Goto (Table.States (1014), 240, 850);
-            Add_Goto (Table.States (1014), 273, 93);
-            Add_Goto (Table.States (1014), 294, 98);
-            Table.States (1014).Kernel := To_Vector ((0 => (272, 39, 4, 
False)));
-            Table.States (1014).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (1015).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1015), 97, 1129);
-            Table.States (1015).Kernel := To_Vector ((0 => (272, 267, 1, 
False)));
-            Table.States (1015).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1129)));
-            Table.States (1016).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (1016), 79, 31);
-            Add_Action (Table.States (1016), 105, 120);
-            Add_Action (Table.States (1016), 106, 34);
-            Add_Action (Table.States (1016), 107, 35);
-            Table.States (1016).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (1016), 129, 42);
-            Add_Goto (Table.States (1016), 240, 1130);
-            Add_Goto (Table.States (1016), 273, 93);
-            Add_Goto (Table.States (1016), 294, 98);
-            Table.States (1016).Kernel := To_Vector ((0 => (228, 10, 1, 
True)));
-            Table.States (1016).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (1016).Minimal_Complete_Actions_Recursive := True;
-            Table.States (1017).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (1017), 24, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (1017), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (1017), 28, 184);
-            Add_Action (Table.States (1017), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (1017), 30, 8);
-            Add_Action (Table.States (1017), 40, 12);
-            Add_Action (Table.States (1017), 46, 14);
-            Add_Action (Table.States (1017), 47, 15);
-            Add_Action (Table.States (1017), 48, 16);
-            Add_Action (Table.States (1017), 49, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (1017), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (1017), 51, 19);
-            Add_Action (Table.States (1017), 63, 25);
-            Add_Action (Table.States (1017), 66, 26);
-            Add_Action (Table.States (1017), 69, 27);
-            Add_Action (Table.States (1017), 71, 28);
-            Add_Action (Table.States (1017), 105, 186);
-            Table.States (1017).Goto_List.Set_Capacity (54);
-            Add_Goto (Table.States (1017), 113, 36);
-            Add_Goto (Table.States (1017), 122, 38);
-            Add_Goto (Table.States (1017), 128, 41);
-            Add_Goto (Table.States (1017), 135, 46);
-            Add_Goto (Table.States (1017), 136, 47);
-            Add_Goto (Table.States (1017), 158, 392);
-            Add_Goto (Table.States (1017), 159, 393);
-            Add_Goto (Table.States (1017), 160, 675);
-            Add_Goto (Table.States (1017), 180, 55);
-            Add_Goto (Table.States (1017), 183, 56);
-            Add_Goto (Table.States (1017), 187, 57);
-            Add_Goto (Table.States (1017), 194, 59);
-            Add_Goto (Table.States (1017), 207, 61);
-            Add_Goto (Table.States (1017), 208, 62);
-            Add_Goto (Table.States (1017), 210, 63);
-            Add_Goto (Table.States (1017), 211, 64);
-            Add_Goto (Table.States (1017), 214, 65);
-            Add_Goto (Table.States (1017), 215, 66);
-            Add_Goto (Table.States (1017), 216, 67);
-            Add_Goto (Table.States (1017), 217, 68);
-            Add_Goto (Table.States (1017), 220, 70);
-            Add_Goto (Table.States (1017), 224, 72);
-            Add_Goto (Table.States (1017), 244, 75);
-            Add_Goto (Table.States (1017), 245, 76);
-            Add_Goto (Table.States (1017), 246, 77);
-            Add_Goto (Table.States (1017), 247, 78);
-            Add_Goto (Table.States (1017), 248, 79);
-            Add_Goto (Table.States (1017), 249, 80);
-            Add_Goto (Table.States (1017), 250, 81);
-            Add_Goto (Table.States (1017), 251, 82);
-            Add_Goto (Table.States (1017), 252, 83);
-            Add_Goto (Table.States (1017), 258, 395);
-            Add_Goto (Table.States (1017), 260, 85);
-            Add_Goto (Table.States (1017), 261, 86);
-            Add_Goto (Table.States (1017), 263, 88);
-            Add_Goto (Table.States (1017), 264, 89);
-            Add_Goto (Table.States (1017), 265, 90);
-            Add_Goto (Table.States (1017), 266, 91);
-            Add_Goto (Table.States (1017), 267, 1131);
-            Add_Goto (Table.States (1017), 272, 92);
-            Add_Goto (Table.States (1017), 282, 95);
-            Add_Goto (Table.States (1017), 290, 96);
-            Add_Goto (Table.States (1017), 305, 103);
-            Add_Goto (Table.States (1017), 306, 104);
-            Add_Goto (Table.States (1017), 308, 106);
-            Add_Goto (Table.States (1017), 309, 107);
-            Add_Goto (Table.States (1017), 310, 108);
-            Add_Goto (Table.States (1017), 312, 109);
-            Add_Goto (Table.States (1017), 314, 110);
-            Add_Goto (Table.States (1017), 317, 112);
-            Add_Goto (Table.States (1017), 318, 113);
-            Add_Goto (Table.States (1017), 320, 114);
-            Add_Goto (Table.States (1017), 326, 116);
-            Add_Goto (Table.States (1017), 332, 117);
-            Table.States (1017).Kernel := To_Vector ((0 => (305, 74, 2, 
False)));
-            Table.States (1017).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 160, 0)));
+            Table.States (1017).Kernel := To_Vector ((0 => ((254, 1),  243,  
0, (254, 1),  7)));
+            Table.States (1017).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (254, 1),  7)));
             Table.States (1018).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1018), (1 =>  97), (267, 1), 3, 
protected_definition_1'Access,
-            protected_definition_1_check'Access);
-            Table.States (1018).Kernel := To_Vector ((0 => (267, 221, 0, 
False)));
-            Table.States (1018).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 267, 3)));
-            Table.States (1019).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1019), 24, 1132);
-            Table.States (1019).Kernel := To_Vector ((0 => (267, 160, 1, 
False)));
-            Table.States (1019).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1132)));
-            Table.States (1020).Action_List.Set_Capacity (15);
-            Add_Action (Table.States (1020), 3, 122);
-            Add_Action (Table.States (1020), 21, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1020), 39, 123);
-            Add_Action (Table.States (1020), 40, 124);
-            Add_Action (Table.States (1020), 41, 125);
-            Add_Action (Table.States (1020), 52, 126);
-            Add_Action (Table.States (1020), 76, 127);
-            Add_Action (Table.States (1020), 79, 31);
-            Add_Action (Table.States (1020), 95, 128);
-            Add_Action (Table.States (1020), 96, 129);
-            Add_Action (Table.States (1020), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1020), 104, 130);
-            Add_Action (Table.States (1020), 105, 120);
-            Add_Action (Table.States (1020), 106, 34);
-            Add_Action (Table.States (1020), 107, 35);
-            Table.States (1020).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (1020), 118, 131);
-            Add_Goto (Table.States (1020), 129, 42);
-            Add_Goto (Table.States (1020), 192, 132);
-            Add_Goto (Table.States (1020), 193, 1133);
-            Add_Goto (Table.States (1020), 198, 134);
-            Add_Goto (Table.States (1020), 240, 135);
-            Add_Goto (Table.States (1020), 259, 136);
-            Add_Goto (Table.States (1020), 273, 93);
-            Add_Goto (Table.States (1020), 276, 137);
-            Add_Goto (Table.States (1020), 283, 138);
-            Add_Goto (Table.States (1020), 284, 139);
-            Add_Goto (Table.States (1020), 285, 140);
-            Add_Goto (Table.States (1020), 286, 141);
-            Add_Goto (Table.States (1020), 287, 142);
-            Add_Goto (Table.States (1020), 288, 143);
-            Add_Goto (Table.States (1020), 294, 98);
-            Add_Goto (Table.States (1020), 302, 144);
-            Add_Goto (Table.States (1020), 321, 145);
-            Add_Goto (Table.States (1020), 322, 146);
-            Add_Goto (Table.States (1020), 331, 147);
-            Table.States (1020).Kernel := To_Vector ((0 => (195, 83, 0, 
False)));
-            Table.States (1020).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (1021).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (1021), (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, 79, 94, 105, 106,
-            107, 108), (197, 0), 7, extended_return_statement_0'Access, null);
-            Table.States (1021).Kernel := To_Vector ((0 => (197, 97, 0, 
False)));
-            Table.States (1021).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 197, 7)));
-            Table.States (1022).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (1022), 35, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (1022), 74, 338);
-            Add_Action (Table.States (1022), 76, 236);
-            Add_Action (Table.States (1022), 85, 238);
-            Add_Action (Table.States (1022), 102, 240);
-            Add_Action (Table.States (1022), 103, 241);
-            Table.States (1022).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (1022), 116, 242);
-            Add_Goto (Table.States (1022), 123, 514);
-            Add_Goto (Table.States (1022), 323, 243);
-            Table.States (1022).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (248, 240, 4, False), (248, 240, 3, False), (273, 240, 3, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True), (294, 240, 2, True)));
-            Table.States (1022).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
+            Add_Action (Table.States (1018), 24, (254, 0), 1133);
+            Table.States (1018).Kernel := To_Vector ((0 => ((254, 0),  162,  
1, (2147483647, 0),  0)));
+            Table.States (1018).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (254, 0),  24, 1133)));
+            Table.States (1019).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1019), (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, 
81, 96, 107, 108, 109, 110), (268, 0),  7,
+            protected_body_stub_0'Access, null);
+            Table.States (1019).Kernel := To_Vector ((0 => ((268, 0),  99,  0, 
(268, 0),  7)));
+            Table.States (1019).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (268, 0),  7)));
+            Table.States (1020).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1020), 72, Reduce, (256, 1),  0, null, 
null);
+            Add_Action (Table.States (1020), 76, (180, 0), 1134);
+            Table.States (1020).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (1020), 180, 1135);
+            Add_Goto (Table.States (1020), 202, 347);
+            Add_Goto (Table.States (1020), 256, 1136);
+            Table.States (1020).Kernel := To_Vector ((0 => ((179, 0),  107,  
5, (2147483647, 0),  0)));
+            Table.States (1020).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (180, 1),  0)));
+            Table.States (1021).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (1021), 35, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (1021), 74, (125, 0), 340);
+            Add_Action (Table.States (1021), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (1021).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1021), 125, 433);
+            Table.States (1021).Kernel := To_Vector ((((310, 0),  315,  4, 
(2147483647, 0),  0), ((312, 0),  315,  1,
+            (2147483647, 0),  0)));
+            Table.States (1021).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (1022).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (1022), (24, 25, 28, 29, 40, 46, 50), 
(271, 0),  2, null, null);
+            Table.States (1022).Kernel := To_Vector ((0 => ((271, 0),  270,  
0, (271, 0),  2)));
+            Table.States (1022).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (271, 0),  2)));
             Table.States (1023).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1023), 35, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (1023), 74, 338);
+            Add_Action (Table.States (1023), 99, Reduce, (223, 1),  0, null, 
null);
+            Add_Action (Table.States (1023), 107, (223, 0), 151);
             Table.States (1023).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1023), 123, 524);
-            Table.States (1023).Kernel := To_Vector ((0 => (265, 105, 3, 
False)));
-            Table.States (1023).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (1024).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1024), 35, Reduce, (123, 1), 0, null, 
null);
-            Add_Action (Table.States (1024), 74, 338);
-            Table.States (1024).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1024), 123, 544);
-            Table.States (1024).Kernel := To_Vector ((0 => (317, 105, 4, 
False)));
-            Table.States (1024).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
+            Add_Goto (Table.States (1023), 223, 1137);
+            Table.States (1023).Kernel := To_Vector ((0 => ((267, 0),  24,  1, 
(2147483647, 0),  0)));
+            Table.States (1023).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (223, 1),  0)));
+            Table.States (1024).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (1024), 81, (242, 8), 31);
+            Add_Action (Table.States (1024), 107, (242, 5), 120);
+            Add_Action (Table.States (1024), 108, (242, 7), 34);
+            Add_Action (Table.States (1024), 109, (242, 6), 35);
+            Table.States (1024).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (1024), 131, 42);
+            Add_Goto (Table.States (1024), 230, 1138);
+            Add_Goto (Table.States (1024), 242, 859);
+            Add_Goto (Table.States (1024), 275, 93);
+            Add_Goto (Table.States (1024), 296, 98);
+            Table.States (1024).Kernel := To_Vector ((0 => ((274, 0),  39,  4, 
(2147483647, 0),  0)));
+            Table.States (1024).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
             Table.States (1025).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1025), 35, 591);
-            Table.States (1025).Kernel := To_Vector ((0 => (308, 123, 4, 
False)));
-            Table.States (1025).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 591)));
-            Table.States (1026).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (1026), (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, 79, 94, 105, 106,
-            107, 108), (153, 0), 7, conditional_entry_call_0'Access, null);
-            Table.States (1026).Kernel := To_Vector ((0 => (153, 97, 0, 
False)));
-            Table.States (1026).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 153, 7)));
-            Table.States (1027).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (1027), (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, 79, 94, 105, 106,
-            107, 108), (324, 0), 7, timed_entry_call_0'Access, null);
-            Table.States (1027).Kernel := To_Vector ((0 => (324, 97, 0, 
False)));
-            Table.States (1027).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 324, 7)));
-            Table.States (1028).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (1028), (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, 79, 94, 105, 106,
-            107, 108), (295, 0), 7, selective_accept_0'Access, null);
-            Table.States (1028).Kernel := To_Vector ((0 => (295, 97, 0, 
False)));
-            Table.States (1028).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 295, 7)));
+            Add_Action (Table.States (1025), 99, (274, 1), 1139);
+            Table.States (1025).Kernel := To_Vector ((0 => ((274, 1),  269,  
1, (2147483647, 0),  0)));
+            Table.States (1025).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (274, 1),  99, 1139)));
+            Table.States (1026).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (1026), 81, (242, 8), 31);
+            Add_Action (Table.States (1026), 107, (242, 5), 120);
+            Add_Action (Table.States (1026), 108, (242, 7), 34);
+            Add_Action (Table.States (1026), 109, (242, 6), 35);
+            Table.States (1026).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (1026), 131, 42);
+            Add_Goto (Table.States (1026), 242, 1140);
+            Add_Goto (Table.States (1026), 275, 93);
+            Add_Goto (Table.States (1026), 296, 98);
+            Table.States (1026).Kernel := To_Vector ((0 => ((230, 0),  10,  1, 
(2147483647, 0),  0)));
+            Table.States (1026).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (1027).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (1027), 24, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (1027), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (1027), 28, (124, 0), 185);
+            Add_Action (Table.States (1027), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (1027), 30, (213, 0), 8);
+            Add_Action (Table.States (1027), 40, (249, 0), 12);
+            Add_Action (Table.States (1027), 46, (249, 1), 14);
+            Add_Action (Table.States (1027), 47, (216, 0), 15);
+            Add_Action (Table.States (1027), 48, (260, 0), 16);
+            Add_Action (Table.States (1027), 49, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (1027), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (1027), 51, (267, 0), 19);
+            Add_Action (Table.States (1027), 63, (316, 0), 25);
+            Add_Action (Table.States (1027), 66, (308, 0), 26);
+            Add_Action (Table.States (1027), 69, (209, 0), 27);
+            Add_Action (Table.States (1027), 71, (334, 0), 28);
+            Add_Action (Table.States (1027), 107, (222, 1), 187);
+            Table.States (1027).Goto_List.Set_Capacity (54);
+            Add_Goto (Table.States (1027), 115, 36);
+            Add_Goto (Table.States (1027), 124, 38);
+            Add_Goto (Table.States (1027), 130, 41);
+            Add_Goto (Table.States (1027), 137, 46);
+            Add_Goto (Table.States (1027), 138, 47);
+            Add_Goto (Table.States (1027), 160, 394);
+            Add_Goto (Table.States (1027), 161, 395);
+            Add_Goto (Table.States (1027), 162, 681);
+            Add_Goto (Table.States (1027), 182, 55);
+            Add_Goto (Table.States (1027), 185, 56);
+            Add_Goto (Table.States (1027), 189, 57);
+            Add_Goto (Table.States (1027), 196, 59);
+            Add_Goto (Table.States (1027), 209, 61);
+            Add_Goto (Table.States (1027), 210, 62);
+            Add_Goto (Table.States (1027), 212, 63);
+            Add_Goto (Table.States (1027), 213, 64);
+            Add_Goto (Table.States (1027), 216, 65);
+            Add_Goto (Table.States (1027), 217, 66);
+            Add_Goto (Table.States (1027), 218, 67);
+            Add_Goto (Table.States (1027), 219, 68);
+            Add_Goto (Table.States (1027), 222, 70);
+            Add_Goto (Table.States (1027), 226, 72);
+            Add_Goto (Table.States (1027), 246, 75);
+            Add_Goto (Table.States (1027), 247, 76);
+            Add_Goto (Table.States (1027), 248, 77);
+            Add_Goto (Table.States (1027), 249, 78);
+            Add_Goto (Table.States (1027), 250, 79);
+            Add_Goto (Table.States (1027), 251, 80);
+            Add_Goto (Table.States (1027), 252, 81);
+            Add_Goto (Table.States (1027), 253, 82);
+            Add_Goto (Table.States (1027), 254, 83);
+            Add_Goto (Table.States (1027), 260, 397);
+            Add_Goto (Table.States (1027), 262, 85);
+            Add_Goto (Table.States (1027), 263, 86);
+            Add_Goto (Table.States (1027), 265, 88);
+            Add_Goto (Table.States (1027), 266, 89);
+            Add_Goto (Table.States (1027), 267, 90);
+            Add_Goto (Table.States (1027), 268, 91);
+            Add_Goto (Table.States (1027), 269, 1141);
+            Add_Goto (Table.States (1027), 274, 92);
+            Add_Goto (Table.States (1027), 284, 95);
+            Add_Goto (Table.States (1027), 292, 96);
+            Add_Goto (Table.States (1027), 307, 103);
+            Add_Goto (Table.States (1027), 308, 104);
+            Add_Goto (Table.States (1027), 310, 106);
+            Add_Goto (Table.States (1027), 311, 107);
+            Add_Goto (Table.States (1027), 312, 108);
+            Add_Goto (Table.States (1027), 314, 109);
+            Add_Goto (Table.States (1027), 316, 110);
+            Add_Goto (Table.States (1027), 319, 112);
+            Add_Goto (Table.States (1027), 320, 113);
+            Add_Goto (Table.States (1027), 322, 114);
+            Add_Goto (Table.States (1027), 328, 116);
+            Add_Goto (Table.States (1027), 334, 117);
+            Table.States (1027).Kernel := To_Vector ((0 => ((307, 0),  74,  2, 
(2147483647, 0),  0)));
+            Table.States (1027).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (162, 1),  0)));
+            Table.States (1028).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1028), (1 =>  99), (269, 1),  3, 
protected_definition_1'Access,
+            protected_definition_1_check'Access);
+            Table.States (1028).Kernel := To_Vector ((0 => ((269, 1),  223,  
0, (269, 1),  3)));
+            Table.States (1028).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (269, 1),  3)));
             Table.States (1029).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1029), 97, 1134);
-            Table.States (1029).Kernel := To_Vector ((0 => (127, 61, 1, 
False)));
-            Table.States (1029).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1134)));
-            Table.States (1030).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1030), (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, 
79, 94, 105, 106, 107, 108), (318, 0), 7,
-            task_body_stub_0'Access, null);
-            Table.States (1030).Kernel := To_Vector ((0 => (318, 97, 0, 
False)));
-            Table.States (1030).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 318, 7)));
-            Table.States (1031).Action_List.Set_Capacity (25);
-            Add_Action (Table.States (1031), 4, 1);
-            Add_Action (Table.States (1031), 5, 2);
-            Add_Action (Table.States (1031), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1031), 15, 3);
-            Add_Action (Table.States (1031), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1031), 18, 4);
-            Add_Action (Table.States (1031), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (1031), 26, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (1031), 27, 5);
-            Add_Action (Table.States (1031), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1031), 31, 9);
-            Add_Action (Table.States (1031), 32, 10);
-            Add_Action (Table.States (1031), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1031), 41, 13);
-            Add_Action (Table.States (1031), 48, 16);
-            Add_Action (Table.States (1031), 52, 20);
-            Add_Action (Table.States (1031), 57, 21);
-            Add_Action (Table.States (1031), 58, 22);
-            Add_Action (Table.States (1031), 61, 24);
-            Add_Action (Table.States (1031), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1031), 79, 31);
-            Add_Action (Table.States (1031), 94, 32);
-            Add_Action (Table.States (1031), 105, 361);
-            Add_Action (Table.States (1031), 106, 34);
-            Add_Action (Table.States (1031), 107, 35);
-            Table.States (1031).Goto_List.Set_Capacity (32);
-            Add_Goto (Table.States (1031), 114, 37);
-            Add_Goto (Table.States (1031), 124, 39);
-            Add_Goto (Table.States (1031), 127, 40);
-            Add_Goto (Table.States (1031), 129, 42);
-            Add_Goto (Table.States (1031), 132, 43);
-            Add_Goto (Table.States (1031), 133, 44);
-            Add_Goto (Table.States (1031), 134, 45);
-            Add_Goto (Table.States (1031), 140, 48);
-            Add_Goto (Table.States (1031), 152, 51);
-            Add_Goto (Table.States (1031), 153, 52);
-            Add_Goto (Table.States (1031), 162, 54);
-            Add_Goto (Table.States (1031), 191, 58);
-            Add_Goto (Table.States (1031), 197, 60);
-            Add_Goto (Table.States (1031), 218, 69);
-            Add_Goto (Table.States (1031), 219, 1135);
-            Add_Goto (Table.States (1031), 223, 71);
-            Add_Goto (Table.States (1031), 233, 73);
-            Add_Goto (Table.States (1031), 240, 74);
-            Add_Goto (Table.States (1031), 258, 84);
-            Add_Goto (Table.States (1031), 262, 87);
-            Add_Goto (Table.States (1031), 273, 93);
-            Add_Goto (Table.States (1031), 277, 94);
-            Add_Goto (Table.States (1031), 291, 97);
-            Add_Goto (Table.States (1031), 294, 98);
-            Add_Goto (Table.States (1031), 295, 99);
-            Add_Goto (Table.States (1031), 299, 100);
-            Add_Goto (Table.States (1031), 300, 362);
-            Add_Goto (Table.States (1031), 301, 391);
-            Add_Goto (Table.States (1031), 303, 101);
-            Add_Goto (Table.States (1031), 304, 102);
-            Add_Goto (Table.States (1031), 307, 364);
-            Add_Goto (Table.States (1031), 324, 115);
-            Table.States (1031).Kernel := To_Vector ((0 => (317, 13, 2, 
False)));
-            Table.States (1031).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 219, 0)));
-            Table.States (1032).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (1032), 79, 31);
-            Add_Action (Table.States (1032), 105, 120);
-            Add_Action (Table.States (1032), 106, 34);
-            Add_Action (Table.States (1032), 107, 35);
-            Table.States (1032).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (1032), 129, 42);
-            Add_Goto (Table.States (1032), 228, 1136);
-            Add_Goto (Table.States (1032), 240, 850);
-            Add_Goto (Table.States (1032), 273, 93);
-            Add_Goto (Table.States (1032), 294, 98);
-            Table.States (1032).Kernel := To_Vector ((0 => (320, 39, 4, 
False)));
-            Table.States (1032).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (1033).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1033), 24, 1137);
-            Table.States (1033).Kernel := To_Vector ((0 => (320, 319, 2, 
False)));
-            Table.States (1033).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1137)));
-            Table.States (1034).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (1034), 24, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (1034), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (1034), 28, 184);
-            Add_Action (Table.States (1034), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (1034), 30, 8);
-            Add_Action (Table.States (1034), 40, 12);
-            Add_Action (Table.States (1034), 46, 14);
-            Add_Action (Table.States (1034), 47, 15);
-            Add_Action (Table.States (1034), 48, 16);
-            Add_Action (Table.States (1034), 49, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (1034), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (1034), 51, 19);
-            Add_Action (Table.States (1034), 63, 25);
-            Add_Action (Table.States (1034), 66, 26);
-            Add_Action (Table.States (1034), 69, 27);
-            Add_Action (Table.States (1034), 71, 28);
-            Add_Action (Table.States (1034), 105, 186);
-            Table.States (1034).Goto_List.Set_Capacity (54);
-            Add_Goto (Table.States (1034), 113, 36);
-            Add_Goto (Table.States (1034), 122, 38);
-            Add_Goto (Table.States (1034), 128, 41);
-            Add_Goto (Table.States (1034), 135, 46);
-            Add_Goto (Table.States (1034), 136, 47);
-            Add_Goto (Table.States (1034), 158, 392);
-            Add_Goto (Table.States (1034), 159, 393);
-            Add_Goto (Table.States (1034), 160, 700);
-            Add_Goto (Table.States (1034), 180, 55);
-            Add_Goto (Table.States (1034), 183, 56);
-            Add_Goto (Table.States (1034), 187, 57);
-            Add_Goto (Table.States (1034), 194, 59);
-            Add_Goto (Table.States (1034), 207, 61);
-            Add_Goto (Table.States (1034), 208, 62);
-            Add_Goto (Table.States (1034), 210, 63);
-            Add_Goto (Table.States (1034), 211, 64);
-            Add_Goto (Table.States (1034), 214, 65);
-            Add_Goto (Table.States (1034), 215, 66);
-            Add_Goto (Table.States (1034), 216, 67);
-            Add_Goto (Table.States (1034), 217, 68);
-            Add_Goto (Table.States (1034), 220, 70);
-            Add_Goto (Table.States (1034), 224, 72);
-            Add_Goto (Table.States (1034), 244, 75);
-            Add_Goto (Table.States (1034), 245, 76);
-            Add_Goto (Table.States (1034), 246, 77);
-            Add_Goto (Table.States (1034), 247, 78);
-            Add_Goto (Table.States (1034), 248, 79);
-            Add_Goto (Table.States (1034), 249, 80);
-            Add_Goto (Table.States (1034), 250, 81);
-            Add_Goto (Table.States (1034), 251, 82);
-            Add_Goto (Table.States (1034), 252, 83);
-            Add_Goto (Table.States (1034), 258, 395);
-            Add_Goto (Table.States (1034), 260, 85);
-            Add_Goto (Table.States (1034), 261, 86);
-            Add_Goto (Table.States (1034), 263, 88);
-            Add_Goto (Table.States (1034), 264, 89);
-            Add_Goto (Table.States (1034), 265, 90);
-            Add_Goto (Table.States (1034), 266, 91);
-            Add_Goto (Table.States (1034), 272, 92);
-            Add_Goto (Table.States (1034), 282, 95);
-            Add_Goto (Table.States (1034), 290, 96);
-            Add_Goto (Table.States (1034), 305, 103);
-            Add_Goto (Table.States (1034), 306, 104);
-            Add_Goto (Table.States (1034), 308, 106);
-            Add_Goto (Table.States (1034), 309, 107);
-            Add_Goto (Table.States (1034), 310, 108);
-            Add_Goto (Table.States (1034), 312, 109);
-            Add_Goto (Table.States (1034), 314, 110);
-            Add_Goto (Table.States (1034), 317, 112);
-            Add_Goto (Table.States (1034), 318, 113);
-            Add_Goto (Table.States (1034), 319, 1138);
-            Add_Goto (Table.States (1034), 320, 114);
-            Add_Goto (Table.States (1034), 326, 116);
-            Add_Goto (Table.States (1034), 332, 117);
-            Table.States (1034).Kernel := To_Vector ((0 => (306, 74, 2, 
False)));
-            Table.States (1034).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 319, 0)));
+            Add_Action (Table.States (1029), 24, (269, 0), 1142);
+            Table.States (1029).Kernel := To_Vector ((0 => ((269, 0),  162,  
1, (2147483647, 0),  0)));
+            Table.States (1029).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (269, 0),  24, 1142)));
+            Table.States (1030).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (1030), 3, (200, 2), 122);
+            Add_Action (Table.States (1030), 21, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1030), 39, (261, 4), 123);
+            Add_Action (Table.States (1030), 40, (200, 3), 124);
+            Add_Action (Table.States (1030), 41, (261, 1), 125);
+            Add_Action (Table.States (1030), 52, (278, 0), 126);
+            Add_Action (Table.States (1030), 76, (120, 0), 127);
+            Add_Action (Table.States (1030), 77, (120, 5), 128);
+            Add_Action (Table.States (1030), 81, (242, 8), 31);
+            Add_Action (Table.States (1030), 97, (333, 1), 129);
+            Add_Action (Table.States (1030), 98, (333, 0), 130);
+            Add_Action (Table.States (1030), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1030), 106, (261, 0), 131);
+            Add_Action (Table.States (1030), 107, (242, 5), 120);
+            Add_Action (Table.States (1030), 108, (242, 7), 34);
+            Add_Action (Table.States (1030), 109, (242, 6), 35);
+            Table.States (1030).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (1030), 120, 132);
+            Add_Goto (Table.States (1030), 131, 42);
+            Add_Goto (Table.States (1030), 194, 133);
+            Add_Goto (Table.States (1030), 195, 1143);
+            Add_Goto (Table.States (1030), 200, 135);
+            Add_Goto (Table.States (1030), 242, 136);
+            Add_Goto (Table.States (1030), 261, 137);
+            Add_Goto (Table.States (1030), 275, 93);
+            Add_Goto (Table.States (1030), 278, 138);
+            Add_Goto (Table.States (1030), 285, 139);
+            Add_Goto (Table.States (1030), 286, 140);
+            Add_Goto (Table.States (1030), 287, 141);
+            Add_Goto (Table.States (1030), 288, 142);
+            Add_Goto (Table.States (1030), 289, 143);
+            Add_Goto (Table.States (1030), 290, 144);
+            Add_Goto (Table.States (1030), 296, 98);
+            Add_Goto (Table.States (1030), 304, 145);
+            Add_Goto (Table.States (1030), 323, 146);
+            Add_Goto (Table.States (1030), 324, 147);
+            Add_Goto (Table.States (1030), 333, 148);
+            Table.States (1030).Kernel := To_Vector ((0 => ((197, 0),  85,  0, 
(195, 1),  0)));
+            Table.States (1030).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (1031).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (1031), (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, 81, 96, 107, 108,
+            109, 110), (199, 0),  7, extended_return_statement_0'Access, null);
+            Table.States (1031).Kernel := To_Vector ((0 => ((199, 0),  99,  0, 
(199, 0),  7)));
+            Table.States (1031).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (199, 0),  7)));
+            Table.States (1032).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (1032), 35, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (1032), 74, (125, 0), 340);
+            Add_Action (Table.States (1032), 76, (118, 0), 237);
+            Add_Action (Table.States (1032), 87, (296, 0), 239);
+            Add_Action (Table.States (1032), 104, (325, 0), 241);
+            Add_Action (Table.States (1032), 105, (325, 1), 242);
+            Table.States (1032).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (1032), 118, 243);
+            Add_Goto (Table.States (1032), 125, 518);
+            Add_Goto (Table.States (1032), 325, 244);
+            Table.States (1032).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((250, 0),  242,  4, (2147483647, 0),  0),
+            ((250, 1),  242,  3, (2147483647, 0),  0), ((275, 0),  242,  3, 
(2147483647, 0),  0), ((296, 0),  242,  2,
+            (2147483647, 0),  0), ((296, 1),  242,  2, (2147483647, 0),  0), 
((296, 2),  242,  2, (2147483647, 0),  0),
+            ((296, 3),  242,  2, (2147483647, 0),  0)));
+            Table.States (1032).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (1033).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1033), 35, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (1033), 74, (125, 0), 340);
+            Table.States (1033).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1033), 125, 528);
+            Table.States (1033).Kernel := To_Vector ((0 => ((267, 0),  107,  
3, (2147483647, 0),  0)));
+            Table.States (1033).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (1034).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1034), 35, Reduce, (125, 1),  0, null, 
null);
+            Add_Action (Table.States (1034), 74, (125, 0), 340);
+            Table.States (1034).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1034), 125, 548);
+            Table.States (1034).Kernel := To_Vector ((0 => ((319, 0),  107,  
4, (2147483647, 0),  0)));
+            Table.States (1034).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
             Table.States (1035).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1035), (1 =>  24), (319, 0), 3, 
task_definition_0'Access, null);
-            Table.States (1035).Kernel := To_Vector ((0 => (319, 160, 0, 
False)));
-            Table.States (1035).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 319, 3)));
-            Table.States (1036).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1036), 97, 1139);
-            Table.States (1036).Kernel := To_Vector ((0 => (306, 221, 1, 
False)));
-            Table.States (1036).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1139)));
-            Table.States (1037).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (1037), 7, Reduce, (242, 0), 2, null, 
null);
-            Add_Action (Table.States (1037), 79, 31);
-            Add_Action (Table.States (1037), 105, 1140);
-            Add_Action (Table.States (1037), 106, 34);
-            Add_Action (Table.States (1037), 107, 35);
-            Table.States (1037).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (1037), 129, 42);
-            Add_Goto (Table.States (1037), 240, 880);
-            Add_Goto (Table.States (1037), 273, 93);
-            Add_Goto (Table.States (1037), 294, 1141);
-            Table.States (1037).Kernel := To_Vector (((242, 41, 0, False), 
(243, 41, 1, False), (243, 41, 3, False)));
-            Table.States (1037).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 242, 2)));
-            Table.States (1038).Action_List.Set_Capacity (15);
-            Add_Action (Table.States (1038), 3, 122);
-            Add_Action (Table.States (1038), 39, 123);
-            Add_Action (Table.States (1038), 40, 124);
-            Add_Action (Table.States (1038), 41, 125);
-            Add_Action (Table.States (1038), 52, 126);
-            Add_Action (Table.States (1038), 76, 127);
-            Add_Action (Table.States (1038), 77, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1038), 79, 31);
-            Add_Action (Table.States (1038), 95, 128);
-            Add_Action (Table.States (1038), 96, 129);
-            Add_Action (Table.States (1038), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1038), 104, 130);
-            Add_Action (Table.States (1038), 105, 120);
-            Add_Action (Table.States (1038), 106, 34);
-            Add_Action (Table.States (1038), 107, 35);
-            Table.States (1038).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (1038), 118, 131);
-            Add_Goto (Table.States (1038), 129, 42);
-            Add_Goto (Table.States (1038), 192, 132);
-            Add_Goto (Table.States (1038), 193, 1142);
-            Add_Goto (Table.States (1038), 198, 134);
-            Add_Goto (Table.States (1038), 240, 135);
-            Add_Goto (Table.States (1038), 259, 136);
-            Add_Goto (Table.States (1038), 273, 93);
-            Add_Goto (Table.States (1038), 276, 137);
-            Add_Goto (Table.States (1038), 283, 138);
-            Add_Goto (Table.States (1038), 284, 139);
-            Add_Goto (Table.States (1038), 285, 140);
-            Add_Goto (Table.States (1038), 286, 141);
-            Add_Goto (Table.States (1038), 287, 142);
-            Add_Goto (Table.States (1038), 288, 143);
-            Add_Goto (Table.States (1038), 294, 98);
-            Add_Goto (Table.States (1038), 302, 144);
-            Add_Goto (Table.States (1038), 321, 145);
-            Add_Goto (Table.States (1038), 322, 146);
-            Add_Goto (Table.States (1038), 331, 147);
-            Table.States (1038).Kernel := To_Vector ((0 => (171, 83, 0, 
False)));
-            Table.States (1038).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (1039).Action_List.Set_Capacity (15);
-            Add_Action (Table.States (1039), 3, 122);
-            Add_Action (Table.States (1039), 39, 123);
-            Add_Action (Table.States (1039), 40, 124);
-            Add_Action (Table.States (1039), 41, 125);
-            Add_Action (Table.States (1039), 52, 126);
-            Add_Action (Table.States (1039), 76, 127);
-            Add_Action (Table.States (1039), 77, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1039), 79, 31);
-            Add_Action (Table.States (1039), 95, 128);
-            Add_Action (Table.States (1039), 96, 129);
-            Add_Action (Table.States (1039), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1039), 104, 130);
-            Add_Action (Table.States (1039), 105, 120);
-            Add_Action (Table.States (1039), 106, 34);
-            Add_Action (Table.States (1039), 107, 35);
-            Table.States (1039).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (1039), 118, 131);
-            Add_Goto (Table.States (1039), 129, 42);
-            Add_Goto (Table.States (1039), 192, 132);
-            Add_Goto (Table.States (1039), 193, 1143);
-            Add_Goto (Table.States (1039), 198, 134);
-            Add_Goto (Table.States (1039), 240, 135);
-            Add_Goto (Table.States (1039), 259, 136);
-            Add_Goto (Table.States (1039), 273, 93);
-            Add_Goto (Table.States (1039), 276, 137);
-            Add_Goto (Table.States (1039), 283, 138);
-            Add_Goto (Table.States (1039), 284, 139);
-            Add_Goto (Table.States (1039), 285, 140);
-            Add_Goto (Table.States (1039), 286, 141);
-            Add_Goto (Table.States (1039), 287, 142);
-            Add_Goto (Table.States (1039), 288, 143);
-            Add_Goto (Table.States (1039), 294, 98);
-            Add_Goto (Table.States (1039), 302, 144);
-            Add_Goto (Table.States (1039), 321, 145);
-            Add_Goto (Table.States (1039), 322, 146);
-            Add_Goto (Table.States (1039), 331, 147);
-            Table.States (1039).Kernel := To_Vector ((0 => (171, 83, 0, 
False)));
-            Table.States (1039).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (1040).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (1040), (41, 49, 54), (112, 0), 3, null, 
null);
-            Table.States (1040).Kernel := To_Vector ((0 => (112, 36, 0, 
False)));
-            Table.States (1040).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 112, 3)));
-            Table.States (1041).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1041), 77, 1144);
-            Add_Action (Table.States (1041), 84, 969);
-            Table.States (1041).Kernel := To_Vector (((121, 169, 3, False), 
(169, 169, 2, True)));
-            Table.States (1041).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 1144)));
-            Table.States (1042).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1042), (77, 84), (227, 1), 1, null, 
null);
-            Table.States (1042).Kernel := To_Vector ((0 => (227, 226, 0, 
False)));
-            Table.States (1042).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 227, 1)));
-            Table.States (1043).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1043), 77, 1145);
-            Add_Action (Table.States (1043), 84, 1146);
-            Table.States (1043).Kernel := To_Vector (((121, 227, 3, False), 
(227, 227, 4, True)));
-            Table.States (1043).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 1145)));
-            Table.States (1044).Action_List.Set_Capacity (16);
-            Add_Action (Table.States (1044), 38, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (1044), 53, 1147);
-            Add_Action (Table.States (1044), 55, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (1044), 76, 627);
-            Add_Action (Table.States (1044), 77, Reduce, (315, 3), 1, 
subtype_indication_3'Access, null);
-            Add_Action (Table.States (1044), 78, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (1044), 84, Reduce, (315, 3), 1, 
subtype_indication_3'Access, null);
-            Add_Action (Table.States (1044), 85, 238);
-            Add_Action (Table.States (1044), 86, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (1044), 95, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (1044), 96, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (1044), 98, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (1044), 100, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (1044), 101, Reduce, (259, 3), 1, null, 
null);
-            Add_Action (Table.States (1044), 102, 240);
-            Add_Action (Table.States (1044), 103, 241);
-            Table.States (1044).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (1044), 116, 242);
-            Add_Goto (Table.States (1044), 156, 628);
-            Add_Goto (Table.States (1044), 225, 629);
-            Add_Goto (Table.States (1044), 323, 451);
-            Table.States (1044).Kernel := To_Vector (((129, 240, 2, True), 
(226, 240, 2, False), (240, 240, 5, True),
-            (240, 240, 2, True), (259, 240, 0, False), (273, 240, 3, True), 
(278, 240, 4, False), (278, 240, 2, False),
-            (294, 240, 2, True), (294, 240, 2, True), (294, 240, 2, True), 
(294, 240, 2, True), (315, 240, 4, False),
-            (315, 240, 0, False)));
-            Table.States (1044).Minimal_Complete_Actions := To_Vector 
(((Reduce, 259, 1), (Reduce, 315, 1)));
-            Table.States (1045).Action_List.Set_Capacity (16);
-            Add_Action (Table.States (1045), 3, 122);
-            Add_Action (Table.States (1045), 39, 123);
-            Add_Action (Table.States (1045), 40, 124);
-            Add_Action (Table.States (1045), 41, 125);
-            Add_Action (Table.States (1045), 52, 126);
-            Add_Action (Table.States (1045), 53, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1045), 74, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1045), 76, 127);
-            Add_Action (Table.States (1045), 79, 31);
-            Add_Action (Table.States (1045), 95, 128);
-            Add_Action (Table.States (1045), 96, 129);
-            Add_Action (Table.States (1045), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1045), 104, 130);
-            Add_Action (Table.States (1045), 105, 120);
-            Add_Action (Table.States (1045), 106, 34);
-            Add_Action (Table.States (1045), 107, 35);
-            Table.States (1045).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (1045), 118, 131);
-            Add_Goto (Table.States (1045), 129, 42);
-            Add_Goto (Table.States (1045), 192, 132);
-            Add_Goto (Table.States (1045), 193, 1148);
-            Add_Goto (Table.States (1045), 198, 134);
-            Add_Goto (Table.States (1045), 240, 135);
-            Add_Goto (Table.States (1045), 259, 136);
-            Add_Goto (Table.States (1045), 273, 93);
-            Add_Goto (Table.States (1045), 276, 137);
-            Add_Goto (Table.States (1045), 283, 138);
-            Add_Goto (Table.States (1045), 284, 139);
-            Add_Goto (Table.States (1045), 285, 140);
-            Add_Goto (Table.States (1045), 286, 141);
-            Add_Goto (Table.States (1045), 287, 142);
-            Add_Goto (Table.States (1045), 288, 143);
-            Add_Goto (Table.States (1045), 294, 98);
-            Add_Goto (Table.States (1045), 302, 144);
-            Add_Goto (Table.States (1045), 321, 145);
-            Add_Goto (Table.States (1045), 322, 146);
-            Add_Goto (Table.States (1045), 331, 147);
-            Table.States (1045).Kernel := To_Vector ((0 => (327, 20, 0, 
False)));
-            Table.States (1045).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (1046).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (1046), 3, 122);
-            Add_Action (Table.States (1046), 39, 123);
-            Add_Action (Table.States (1046), 40, 124);
-            Add_Action (Table.States (1046), 41, 125);
-            Add_Action (Table.States (1046), 76, 127);
-            Add_Action (Table.States (1046), 79, 31);
-            Add_Action (Table.States (1046), 95, 128);
-            Add_Action (Table.States (1046), 96, 129);
-            Add_Action (Table.States (1046), 104, 130);
-            Add_Action (Table.States (1046), 105, 120);
-            Add_Action (Table.States (1046), 106, 34);
-            Add_Action (Table.States (1046), 107, 35);
-            Table.States (1046).Goto_List.Set_Capacity (11);
-            Add_Goto (Table.States (1046), 118, 131);
-            Add_Goto (Table.States (1046), 129, 42);
-            Add_Goto (Table.States (1046), 198, 134);
-            Add_Goto (Table.States (1046), 240, 135);
-            Add_Goto (Table.States (1046), 259, 136);
-            Add_Goto (Table.States (1046), 273, 93);
-            Add_Goto (Table.States (1046), 294, 98);
-            Add_Goto (Table.States (1046), 302, 1149);
-            Add_Goto (Table.States (1046), 321, 145);
-            Add_Goto (Table.States (1046), 322, 146);
-            Add_Goto (Table.States (1046), 331, 147);
-            Table.States (1046).Kernel := To_Vector ((0 => (280, 53, 3, 
False)));
-            Table.States (1046).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (1047).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1047), (74, 97), (327, 5), 3, null, 
null);
-            Table.States (1047).Kernel := To_Vector ((0 => (327, 280, 0, 
False)));
-            Table.States (1047).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 327, 3)));
-            Table.States (1048).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1048), (74, 97), (327, 3), 3, null, 
null);
-            Table.States (1048).Kernel := To_Vector ((0 => (327, 280, 0, 
False)));
-            Table.States (1048).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 327, 3)));
-            Table.States (1049).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (1049), 79, 31);
-            Add_Action (Table.States (1049), 105, 120);
-            Add_Action (Table.States (1049), 106, 34);
-            Add_Action (Table.States (1049), 107, 35);
-            Table.States (1049).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (1049), 129, 42);
-            Add_Goto (Table.States (1049), 228, 1150);
-            Add_Goto (Table.States (1049), 240, 850);
-            Add_Goto (Table.States (1049), 273, 93);
-            Add_Goto (Table.States (1049), 294, 98);
-            Table.States (1049).Kernel := To_Vector ((0 => (229, 10, 1, 
False)));
-            Table.States (1049).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (1050).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (1050), 79, 31);
-            Add_Action (Table.States (1050), 105, 120);
-            Add_Action (Table.States (1050), 106, 34);
-            Add_Action (Table.States (1050), 107, 35);
-            Table.States (1050).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (1050), 129, 42);
-            Add_Goto (Table.States (1050), 228, 1151);
-            Add_Goto (Table.States (1050), 240, 850);
-            Add_Goto (Table.States (1050), 273, 93);
-            Add_Goto (Table.States (1050), 294, 98);
-            Table.States (1050).Kernel := To_Vector ((0 => (229, 10, 1, 
False)));
-            Table.States (1050).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-         end Subr_18;
-         procedure Subr_19
+            Add_Action (Table.States (1035), 35, (310, 0), 595);
+            Table.States (1035).Kernel := To_Vector ((0 => ((310, 0),  125,  
4, (2147483647, 0),  0)));
+            Table.States (1035).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (310, 0),  35, 595)));
+            Table.States (1036).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (1036), (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, 81, 96, 107, 108,
+            109, 110), (155, 0),  7, conditional_entry_call_0'Access, null);
+            Table.States (1036).Kernel := To_Vector ((0 => ((155, 0),  99,  0, 
(155, 0),  7)));
+            Table.States (1036).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (155, 0),  7)));
+            Table.States (1037).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (1037), (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, 81, 96, 107, 108,
+            109, 110), (326, 0),  7, timed_entry_call_0'Access, null);
+            Table.States (1037).Kernel := To_Vector ((0 => ((326, 0),  99,  0, 
(326, 0),  7)));
+            Table.States (1037).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (326, 0),  7)));
+            Table.States (1038).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (1038), (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, 81, 96, 107, 108,
+            109, 110), (297, 0),  7, selective_accept_0'Access, null);
+            Table.States (1038).Kernel := To_Vector ((0 => ((297, 0),  99,  0, 
(297, 0),  7)));
+            Table.States (1038).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (297, 0),  7)));
+            Table.States (1039).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1039), 99, (129, 0), 1144);
+            Table.States (1039).Kernel := To_Vector ((0 => ((129, 0),  61,  1, 
(2147483647, 0),  0)));
+            Table.States (1039).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (129, 0),  99, 1144)));
+            Table.States (1040).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1040), (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, 
81, 96, 107, 108, 109, 110), (320, 0),  7,
+            task_body_stub_0'Access, null);
+            Table.States (1040).Kernel := To_Vector ((0 => ((320, 0),  99,  0, 
(320, 0),  7)));
+            Table.States (1040).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (320, 0),  7)));
+            Table.States (1041).Action_List.Set_Capacity (25);
+            Add_Action (Table.States (1041), 4, (116, 0), 1);
+            Add_Action (Table.States (1041), 5, (306, 8), 2);
+            Add_Action (Table.States (1041), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1041), 15, (142, 0), 3);
+            Add_Action (Table.States (1041), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1041), 18, (164, 0), 4);
+            Add_Action (Table.States (1041), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (1041), 26, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (1041), 27, (193, 0), 5);
+            Add_Action (Table.States (1041), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1041), 31, (306, 3), 9);
+            Add_Action (Table.States (1041), 32, (225, 0), 10);
+            Add_Action (Table.States (1041), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1041), 41, (306, 0), 13);
+            Add_Action (Table.States (1041), 48, (260, 0), 16);
+            Add_Action (Table.States (1041), 52, (279, 0), 20);
+            Add_Action (Table.States (1041), 57, (293, 0), 21);
+            Add_Action (Table.States (1041), 58, (199, 0), 22);
+            Add_Action (Table.States (1041), 61, (129, 0), 24);
+            Add_Action (Table.States (1041), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1041), 81, (242, 8), 31);
+            Add_Action (Table.States (1041), 96, (220, 0), 32);
+            Add_Action (Table.States (1041), 107, (134, 0), 363);
+            Add_Action (Table.States (1041), 108, (242, 7), 34);
+            Add_Action (Table.States (1041), 109, (242, 6), 35);
+            Table.States (1041).Goto_List.Set_Capacity (32);
+            Add_Goto (Table.States (1041), 116, 37);
+            Add_Goto (Table.States (1041), 126, 39);
+            Add_Goto (Table.States (1041), 129, 40);
+            Add_Goto (Table.States (1041), 131, 42);
+            Add_Goto (Table.States (1041), 134, 43);
+            Add_Goto (Table.States (1041), 135, 44);
+            Add_Goto (Table.States (1041), 136, 45);
+            Add_Goto (Table.States (1041), 142, 48);
+            Add_Goto (Table.States (1041), 154, 51);
+            Add_Goto (Table.States (1041), 155, 52);
+            Add_Goto (Table.States (1041), 164, 54);
+            Add_Goto (Table.States (1041), 193, 58);
+            Add_Goto (Table.States (1041), 199, 60);
+            Add_Goto (Table.States (1041), 220, 69);
+            Add_Goto (Table.States (1041), 221, 1145);
+            Add_Goto (Table.States (1041), 225, 71);
+            Add_Goto (Table.States (1041), 235, 73);
+            Add_Goto (Table.States (1041), 242, 74);
+            Add_Goto (Table.States (1041), 260, 84);
+            Add_Goto (Table.States (1041), 264, 87);
+            Add_Goto (Table.States (1041), 275, 93);
+            Add_Goto (Table.States (1041), 279, 94);
+            Add_Goto (Table.States (1041), 293, 97);
+            Add_Goto (Table.States (1041), 296, 98);
+            Add_Goto (Table.States (1041), 297, 99);
+            Add_Goto (Table.States (1041), 301, 100);
+            Add_Goto (Table.States (1041), 302, 364);
+            Add_Goto (Table.States (1041), 303, 393);
+            Add_Goto (Table.States (1041), 305, 101);
+            Add_Goto (Table.States (1041), 306, 102);
+            Add_Goto (Table.States (1041), 309, 366);
+            Add_Goto (Table.States (1041), 326, 115);
+            Table.States (1041).Kernel := To_Vector ((0 => ((319, 0),  13,  2, 
(2147483647, 0),  0)));
+            Table.States (1041).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (221, 1),  0)));
+            Table.States (1042).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (1042), 81, (242, 8), 31);
+            Add_Action (Table.States (1042), 107, (242, 5), 120);
+            Add_Action (Table.States (1042), 108, (242, 7), 34);
+            Add_Action (Table.States (1042), 109, (242, 6), 35);
+            Table.States (1042).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (1042), 131, 42);
+            Add_Goto (Table.States (1042), 230, 1146);
+            Add_Goto (Table.States (1042), 242, 859);
+            Add_Goto (Table.States (1042), 275, 93);
+            Add_Goto (Table.States (1042), 296, 98);
+            Table.States (1042).Kernel := To_Vector ((0 => ((322, 0),  39,  4, 
(2147483647, 0),  0)));
+            Table.States (1042).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (1043).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1043), 24, (322, 1), 1147);
+            Table.States (1043).Kernel := To_Vector ((0 => ((322, 1),  321,  
2, (2147483647, 0),  0)));
+            Table.States (1043).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (322, 1),  24, 1147)));
+            Table.States (1044).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (1044), 24, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (1044), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (1044), 28, (124, 0), 185);
+            Add_Action (Table.States (1044), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (1044), 30, (213, 0), 8);
+            Add_Action (Table.States (1044), 40, (249, 0), 12);
+            Add_Action (Table.States (1044), 46, (249, 1), 14);
+            Add_Action (Table.States (1044), 47, (216, 0), 15);
+            Add_Action (Table.States (1044), 48, (260, 0), 16);
+            Add_Action (Table.States (1044), 49, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (1044), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (1044), 51, (267, 0), 19);
+            Add_Action (Table.States (1044), 63, (316, 0), 25);
+            Add_Action (Table.States (1044), 66, (308, 0), 26);
+            Add_Action (Table.States (1044), 69, (209, 0), 27);
+            Add_Action (Table.States (1044), 71, (334, 0), 28);
+            Add_Action (Table.States (1044), 107, (222, 1), 187);
+            Table.States (1044).Goto_List.Set_Capacity (54);
+            Add_Goto (Table.States (1044), 115, 36);
+            Add_Goto (Table.States (1044), 124, 38);
+            Add_Goto (Table.States (1044), 130, 41);
+            Add_Goto (Table.States (1044), 137, 46);
+            Add_Goto (Table.States (1044), 138, 47);
+            Add_Goto (Table.States (1044), 160, 394);
+            Add_Goto (Table.States (1044), 161, 395);
+            Add_Goto (Table.States (1044), 162, 706);
+            Add_Goto (Table.States (1044), 182, 55);
+            Add_Goto (Table.States (1044), 185, 56);
+            Add_Goto (Table.States (1044), 189, 57);
+            Add_Goto (Table.States (1044), 196, 59);
+            Add_Goto (Table.States (1044), 209, 61);
+            Add_Goto (Table.States (1044), 210, 62);
+            Add_Goto (Table.States (1044), 212, 63);
+            Add_Goto (Table.States (1044), 213, 64);
+            Add_Goto (Table.States (1044), 216, 65);
+            Add_Goto (Table.States (1044), 217, 66);
+            Add_Goto (Table.States (1044), 218, 67);
+            Add_Goto (Table.States (1044), 219, 68);
+            Add_Goto (Table.States (1044), 222, 70);
+            Add_Goto (Table.States (1044), 226, 72);
+            Add_Goto (Table.States (1044), 246, 75);
+            Add_Goto (Table.States (1044), 247, 76);
+            Add_Goto (Table.States (1044), 248, 77);
+            Add_Goto (Table.States (1044), 249, 78);
+            Add_Goto (Table.States (1044), 250, 79);
+            Add_Goto (Table.States (1044), 251, 80);
+            Add_Goto (Table.States (1044), 252, 81);
+            Add_Goto (Table.States (1044), 253, 82);
+            Add_Goto (Table.States (1044), 254, 83);
+            Add_Goto (Table.States (1044), 260, 397);
+            Add_Goto (Table.States (1044), 262, 85);
+            Add_Goto (Table.States (1044), 263, 86);
+            Add_Goto (Table.States (1044), 265, 88);
+            Add_Goto (Table.States (1044), 266, 89);
+            Add_Goto (Table.States (1044), 267, 90);
+            Add_Goto (Table.States (1044), 268, 91);
+            Add_Goto (Table.States (1044), 274, 92);
+            Add_Goto (Table.States (1044), 284, 95);
+            Add_Goto (Table.States (1044), 292, 96);
+            Add_Goto (Table.States (1044), 307, 103);
+            Add_Goto (Table.States (1044), 308, 104);
+            Add_Goto (Table.States (1044), 310, 106);
+            Add_Goto (Table.States (1044), 311, 107);
+            Add_Goto (Table.States (1044), 312, 108);
+            Add_Goto (Table.States (1044), 314, 109);
+            Add_Goto (Table.States (1044), 316, 110);
+            Add_Goto (Table.States (1044), 319, 112);
+            Add_Goto (Table.States (1044), 320, 113);
+            Add_Goto (Table.States (1044), 321, 1148);
+            Add_Goto (Table.States (1044), 322, 114);
+            Add_Goto (Table.States (1044), 328, 116);
+            Add_Goto (Table.States (1044), 334, 117);
+            Table.States (1044).Kernel := To_Vector ((0 => ((308, 0),  74,  2, 
(2147483647, 0),  0)));
+            Table.States (1044).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (321, 1),  0)));
+            Table.States (1045).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1045), (1 =>  24), (321, 0),  3, 
task_definition_0'Access, null);
+            Table.States (1045).Kernel := To_Vector ((0 => ((321, 0),  162,  
0, (321, 0),  3)));
+            Table.States (1045).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (321, 0),  3)));
+            Table.States (1046).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1046), 99, (308, 1), 1149);
+            Table.States (1046).Kernel := To_Vector ((0 => ((308, 1),  223,  
1, (2147483647, 0),  0)));
+            Table.States (1046).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (308, 1),  99, 1149)));
+            Table.States (1047).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (1047), 7, Reduce, (244, 0),  2, null, 
null);
+            Add_Action (Table.States (1047), 81, (242, 8), 31);
+            Add_Action (Table.States (1047), 107, (242, 5), 1150);
+            Add_Action (Table.States (1047), 108, (242, 7), 34);
+            Add_Action (Table.States (1047), 109, (242, 6), 35);
+            Table.States (1047).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (1047), 131, 42);
+            Add_Goto (Table.States (1047), 242, 889);
+            Add_Goto (Table.States (1047), 275, 93);
+            Add_Goto (Table.States (1047), 296, 1151);
+            Table.States (1047).Kernel := To_Vector ((((244, 0),  41,  0, 
(244, 0),  2), ((245, 2),  41,  1,
+            (2147483647, 0),  0), ((245, 3),  41,  3, (2147483647, 0),  0)));
+            Table.States (1047).Minimal_Complete_Actions := To_Vector 
(((Reduce, (244, 0),  2), (Shift, (242, 5),  107,
+            1150)));
+            Table.States (1048).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (1048), 3, (200, 2), 122);
+            Add_Action (Table.States (1048), 39, (261, 4), 123);
+            Add_Action (Table.States (1048), 40, (200, 3), 124);
+            Add_Action (Table.States (1048), 41, (261, 1), 125);
+            Add_Action (Table.States (1048), 52, (278, 0), 126);
+            Add_Action (Table.States (1048), 76, (120, 0), 127);
+            Add_Action (Table.States (1048), 77, (120, 5), 128);
+            Add_Action (Table.States (1048), 78, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1048), 81, (242, 8), 31);
+            Add_Action (Table.States (1048), 97, (333, 1), 129);
+            Add_Action (Table.States (1048), 98, (333, 0), 130);
+            Add_Action (Table.States (1048), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1048), 106, (261, 0), 131);
+            Add_Action (Table.States (1048), 107, (242, 5), 120);
+            Add_Action (Table.States (1048), 108, (242, 7), 34);
+            Add_Action (Table.States (1048), 109, (242, 6), 35);
+            Table.States (1048).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (1048), 120, 132);
+            Add_Goto (Table.States (1048), 131, 42);
+            Add_Goto (Table.States (1048), 194, 133);
+            Add_Goto (Table.States (1048), 195, 1152);
+            Add_Goto (Table.States (1048), 200, 135);
+            Add_Goto (Table.States (1048), 242, 136);
+            Add_Goto (Table.States (1048), 261, 137);
+            Add_Goto (Table.States (1048), 275, 93);
+            Add_Goto (Table.States (1048), 278, 138);
+            Add_Goto (Table.States (1048), 285, 139);
+            Add_Goto (Table.States (1048), 286, 140);
+            Add_Goto (Table.States (1048), 287, 141);
+            Add_Goto (Table.States (1048), 288, 142);
+            Add_Goto (Table.States (1048), 289, 143);
+            Add_Goto (Table.States (1048), 290, 144);
+            Add_Goto (Table.States (1048), 296, 98);
+            Add_Goto (Table.States (1048), 304, 145);
+            Add_Goto (Table.States (1048), 323, 146);
+            Add_Goto (Table.States (1048), 324, 147);
+            Add_Goto (Table.States (1048), 333, 148);
+            Table.States (1048).Kernel := To_Vector ((0 => ((173, 1),  85,  0, 
(195, 1),  0)));
+            Table.States (1048).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (1049).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (1049), 3, (200, 2), 122);
+            Add_Action (Table.States (1049), 39, (261, 4), 123);
+            Add_Action (Table.States (1049), 40, (200, 3), 124);
+            Add_Action (Table.States (1049), 41, (261, 1), 125);
+            Add_Action (Table.States (1049), 52, (278, 0), 126);
+            Add_Action (Table.States (1049), 76, (120, 0), 127);
+            Add_Action (Table.States (1049), 77, (120, 5), 128);
+            Add_Action (Table.States (1049), 78, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1049), 81, (242, 8), 31);
+            Add_Action (Table.States (1049), 97, (333, 1), 129);
+            Add_Action (Table.States (1049), 98, (333, 0), 130);
+            Add_Action (Table.States (1049), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1049), 106, (261, 0), 131);
+            Add_Action (Table.States (1049), 107, (242, 5), 120);
+            Add_Action (Table.States (1049), 108, (242, 7), 34);
+            Add_Action (Table.States (1049), 109, (242, 6), 35);
+            Table.States (1049).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (1049), 120, 132);
+            Add_Goto (Table.States (1049), 131, 42);
+            Add_Goto (Table.States (1049), 194, 133);
+            Add_Goto (Table.States (1049), 195, 1153);
+            Add_Goto (Table.States (1049), 200, 135);
+            Add_Goto (Table.States (1049), 242, 136);
+            Add_Goto (Table.States (1049), 261, 137);
+            Add_Goto (Table.States (1049), 275, 93);
+            Add_Goto (Table.States (1049), 278, 138);
+            Add_Goto (Table.States (1049), 285, 139);
+            Add_Goto (Table.States (1049), 286, 140);
+            Add_Goto (Table.States (1049), 287, 141);
+            Add_Goto (Table.States (1049), 288, 142);
+            Add_Goto (Table.States (1049), 289, 143);
+            Add_Goto (Table.States (1049), 290, 144);
+            Add_Goto (Table.States (1049), 296, 98);
+            Add_Goto (Table.States (1049), 304, 145);
+            Add_Goto (Table.States (1049), 323, 146);
+            Add_Goto (Table.States (1049), 324, 147);
+            Add_Goto (Table.States (1049), 333, 148);
+            Table.States (1049).Kernel := To_Vector ((0 => ((173, 0),  85,  0, 
(195, 1),  0)));
+            Table.States (1049).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (1050).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (1050), (41, 49, 54), (114, 0),  3, null, 
null);
+            Table.States (1050).Kernel := To_Vector ((0 => ((114, 0),  36,  0, 
(114, 0),  3)));
+            Table.States (1050).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (114, 0),  3)));
+            Table.States (1051).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1051), 78, (123, 1), 1154);
+            Add_Action (Table.States (1051), 86, (171, 0), 979);
+            Table.States (1051).Kernel := To_Vector ((((123, 1),  171,  3, 
(2147483647, 0),  0), ((171, 0),  171,  2,
+            (2147483647, 0),  0)));
+            Table.States (1051).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (123, 1),  78, 1154)));
+            Table.States (1052).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1052), (78, 86), (229, 1),  1, null, 
null);
+            Table.States (1052).Kernel := To_Vector ((0 => ((229, 1),  228,  
0, (229, 1),  1)));
+            Table.States (1052).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (229, 1),  1)));
+            Table.States (1053).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1053), 78, (123, 0), 1155);
+            Add_Action (Table.States (1053), 86, (229, 0), 1156);
+            Table.States (1053).Kernel := To_Vector ((((123, 0),  229,  3, 
(2147483647, 0),  0), ((229, 0),  229,  4,
+            (2147483647, 0),  0)));
+            Table.States (1053).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (123, 0),  78, 1155)));
+            Table.States (1054).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (1054), 38, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (1054), 53, (158, 0), 1157);
+            Add_Action (Table.States (1054), 55, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (1054), 76, (118, 0), 633);
+            Add_Action (Table.States (1054), 78, Reduce, (317, 3),  1, 
subtype_indication_3'Access, null);
+            Add_Action (Table.States (1054), 80, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (1054), 86, Reduce, (317, 3),  1, 
subtype_indication_3'Access, null);
+            Add_Action (Table.States (1054), 87, (296, 0), 239);
+            Add_Action (Table.States (1054), 88, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (1054), 97, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (1054), 98, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (1054), 100, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (1054), 102, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (1054), 103, Reduce, (261, 3),  1, null, 
null);
+            Add_Action (Table.States (1054), 104, (325, 0), 241);
+            Add_Action (Table.States (1054), 105, (325, 1), 242);
+            Table.States (1054).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (1054), 118, 243);
+            Add_Goto (Table.States (1054), 158, 634);
+            Add_Goto (Table.States (1054), 227, 635);
+            Add_Goto (Table.States (1054), 325, 454);
+            Table.States (1054).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((228, 0),  242,  2,
+            (2147483647, 0),  0), ((242, 0),  242,  5, (2147483647, 0),  0), 
((242, 1),  242,  2, (2147483647, 0),  0),
+            ((261, 3),  242,  0, (261, 3),  1), ((275, 0),  242,  3, 
(2147483647, 0),  0), ((280, 0),  242,  4,
+            (2147483647, 0),  0), ((280, 1),  242,  2, (2147483647, 0),  0), 
((296, 0),  242,  2, (2147483647, 0),  0),
+            ((296, 1),  242,  2, (2147483647, 0),  0), ((296, 2),  242,  2, 
(2147483647, 0),  0), ((296, 3),  242,  2,
+            (2147483647, 0),  0), ((317, 2),  242,  4, (2147483647, 0),  0), 
((317, 3),  242,  0, (317, 3),  1)));
+            Table.States (1054).Minimal_Complete_Actions := To_Vector 
(((Shift, (158, 0),  53, 1157), (Reduce, (261,
+            3),  1), (Reduce, (317, 3),  1)));
+            Table.States (1055).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (1055), 3, (200, 2), 122);
+            Add_Action (Table.States (1055), 39, (261, 4), 123);
+            Add_Action (Table.States (1055), 40, (200, 3), 124);
+            Add_Action (Table.States (1055), 41, (261, 1), 125);
+            Add_Action (Table.States (1055), 52, (278, 0), 126);
+            Add_Action (Table.States (1055), 53, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1055), 74, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1055), 76, (120, 0), 127);
+            Add_Action (Table.States (1055), 77, (120, 5), 128);
+            Add_Action (Table.States (1055), 81, (242, 8), 31);
+            Add_Action (Table.States (1055), 97, (333, 1), 129);
+            Add_Action (Table.States (1055), 98, (333, 0), 130);
+            Add_Action (Table.States (1055), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1055), 106, (261, 0), 131);
+            Add_Action (Table.States (1055), 107, (242, 5), 120);
+            Add_Action (Table.States (1055), 108, (242, 7), 34);
+            Add_Action (Table.States (1055), 109, (242, 6), 35);
+            Table.States (1055).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (1055), 120, 132);
+            Add_Goto (Table.States (1055), 131, 42);
+            Add_Goto (Table.States (1055), 194, 133);
+            Add_Goto (Table.States (1055), 195, 1158);
+            Add_Goto (Table.States (1055), 200, 135);
+            Add_Goto (Table.States (1055), 242, 136);
+            Add_Goto (Table.States (1055), 261, 137);
+            Add_Goto (Table.States (1055), 275, 93);
+            Add_Goto (Table.States (1055), 278, 138);
+            Add_Goto (Table.States (1055), 285, 139);
+            Add_Goto (Table.States (1055), 286, 140);
+            Add_Goto (Table.States (1055), 287, 141);
+            Add_Goto (Table.States (1055), 288, 142);
+            Add_Goto (Table.States (1055), 289, 143);
+            Add_Goto (Table.States (1055), 290, 144);
+            Add_Goto (Table.States (1055), 296, 98);
+            Add_Goto (Table.States (1055), 304, 145);
+            Add_Goto (Table.States (1055), 323, 146);
+            Add_Goto (Table.States (1055), 324, 147);
+            Add_Goto (Table.States (1055), 333, 148);
+            Table.States (1055).Kernel := To_Vector ((0 => ((329, 4),  20,  0, 
(195, 1),  0)));
+            Table.States (1055).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (1056).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (1056), 3, (200, 2), 122);
+            Add_Action (Table.States (1056), 39, (261, 4), 123);
+            Add_Action (Table.States (1056), 40, (200, 3), 124);
+            Add_Action (Table.States (1056), 41, (261, 1), 125);
+            Add_Action (Table.States (1056), 76, (120, 0), 127);
+            Add_Action (Table.States (1056), 77, (120, 5), 128);
+            Add_Action (Table.States (1056), 81, (242, 8), 31);
+            Add_Action (Table.States (1056), 97, (333, 1), 129);
+            Add_Action (Table.States (1056), 98, (333, 0), 130);
+            Add_Action (Table.States (1056), 106, (261, 0), 131);
+            Add_Action (Table.States (1056), 107, (242, 5), 120);
+            Add_Action (Table.States (1056), 108, (242, 7), 34);
+            Add_Action (Table.States (1056), 109, (242, 6), 35);
+            Table.States (1056).Goto_List.Set_Capacity (11);
+            Add_Goto (Table.States (1056), 120, 132);
+            Add_Goto (Table.States (1056), 131, 42);
+            Add_Goto (Table.States (1056), 200, 135);
+            Add_Goto (Table.States (1056), 242, 136);
+            Add_Goto (Table.States (1056), 261, 137);
+            Add_Goto (Table.States (1056), 275, 93);
+            Add_Goto (Table.States (1056), 296, 98);
+            Add_Goto (Table.States (1056), 304, 1159);
+            Add_Goto (Table.States (1056), 323, 146);
+            Add_Goto (Table.States (1056), 324, 147);
+            Add_Goto (Table.States (1056), 333, 148);
+            Table.States (1056).Kernel := To_Vector ((0 => ((282, 0),  53,  3, 
(2147483647, 0),  0)));
+            Table.States (1056).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (1057).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1057), (74, 99), (329, 5),  3, null, 
null);
+            Table.States (1057).Kernel := To_Vector ((0 => ((329, 5),  282,  
0, (329, 5),  3)));
+            Table.States (1057).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (329, 5),  3)));
+            Table.States (1058).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1058), (74, 99), (329, 3),  3, null, 
null);
+            Table.States (1058).Kernel := To_Vector ((0 => ((329, 3),  282,  
0, (329, 3),  3)));
+            Table.States (1058).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (329, 3),  3)));
+            Table.States (1059).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (1059), 81, (242, 8), 31);
+            Add_Action (Table.States (1059), 107, (242, 5), 120);
+            Add_Action (Table.States (1059), 108, (242, 7), 34);
+            Add_Action (Table.States (1059), 109, (242, 6), 35);
+            Table.States (1059).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (1059), 131, 42);
+            Add_Goto (Table.States (1059), 230, 1160);
+            Add_Goto (Table.States (1059), 242, 859);
+            Add_Goto (Table.States (1059), 275, 93);
+            Add_Goto (Table.States (1059), 296, 98);
+            Table.States (1059).Kernel := To_Vector ((0 => ((231, 0),  10,  1, 
(2147483647, 0),  0)));
+            Table.States (1059).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (1060).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (1060), 81, (242, 8), 31);
+            Add_Action (Table.States (1060), 107, (242, 5), 120);
+            Add_Action (Table.States (1060), 108, (242, 7), 34);
+            Add_Action (Table.States (1060), 109, (242, 6), 35);
+            Table.States (1060).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (1060), 131, 42);
+            Add_Goto (Table.States (1060), 230, 1161);
+            Add_Goto (Table.States (1060), 242, 859);
+            Add_Goto (Table.States (1060), 275, 93);
+            Add_Goto (Table.States (1060), 296, 98);
+            Table.States (1060).Kernel := To_Vector ((0 => ((231, 2),  10,  1, 
(2147483647, 0),  0)));
+            Table.States (1060).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (1061).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (1061), 3, (200, 2), 122);
+            Add_Action (Table.States (1061), 39, (261, 4), 123);
+            Add_Action (Table.States (1061), 40, (200, 3), 124);
+            Add_Action (Table.States (1061), 41, (261, 1), 125);
+            Add_Action (Table.States (1061), 76, (120, 0), 127);
+            Add_Action (Table.States (1061), 77, (120, 5), 128);
+            Add_Action (Table.States (1061), 81, (242, 8), 31);
+            Add_Action (Table.States (1061), 97, (333, 1), 129);
+            Add_Action (Table.States (1061), 98, (333, 0), 130);
+            Add_Action (Table.States (1061), 106, (261, 0), 131);
+            Add_Action (Table.States (1061), 107, (242, 5), 120);
+            Add_Action (Table.States (1061), 108, (242, 7), 34);
+            Add_Action (Table.States (1061), 109, (242, 6), 35);
+            Table.States (1061).Goto_List.Set_Capacity (11);
+            Add_Goto (Table.States (1061), 120, 132);
+            Add_Goto (Table.States (1061), 131, 42);
+            Add_Goto (Table.States (1061), 200, 135);
+            Add_Goto (Table.States (1061), 242, 136);
+            Add_Goto (Table.States (1061), 261, 137);
+            Add_Goto (Table.States (1061), 275, 93);
+            Add_Goto (Table.States (1061), 296, 98);
+            Add_Goto (Table.States (1061), 304, 1162);
+            Add_Goto (Table.States (1061), 323, 146);
+            Add_Goto (Table.States (1061), 324, 147);
+            Add_Goto (Table.States (1061), 333, 148);
+            Table.States (1061).Kernel := To_Vector ((0 => ((329, 1),  88,  1, 
(2147483647, 0),  0)));
+            Table.States (1061).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (1062).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1062), (1 =>  35), (166, 0),  1, null, 
null);
+            Table.States (1062).Kernel := To_Vector ((0 => ((166, 0),  107,  
0, (166, 0),  1)));
+            Table.States (1062).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (166, 0),  1)));
+            Table.States (1063).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1063), (1 =>  35), (166, 1),  1, null, 
null);
+            Table.States (1063).Kernel := To_Vector ((0 => ((166, 1),  108,  
0, (166, 1),  1)));
+            Table.States (1063).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (166, 1),  1)));
+            Table.States (1064).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1064), (1 =>  35), (167, 0),  1, null, 
null);
+            Table.States (1064).Kernel := To_Vector ((0 => ((167, 0),  166,  
0, (167, 0),  1)));
+            Table.States (1064).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (167, 0),  1)));
+            Table.States (1065).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1065), 35, (330, 0), 1163);
+            Table.States (1065).Kernel := To_Vector ((0 => ((330, 0),  167,  
6, (2147483647, 0),  0)));
+            Table.States (1065).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (330, 0),  35, 1163)));
+            Table.States (1066).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (1066), (15, 24, 28, 72, 107), (152, 4),  
2, component_list_4'Access, null);
+            Table.States (1066).Kernel := To_Vector ((0 => ((152, 4),  99,  0, 
(152, 4),  2)));
+            Table.States (1066).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (152, 4),  2)));
+            Table.States (1067).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (1067), (15, 24, 28, 72, 107), (152, 0),  
2, null, null);
+            Table.States (1067).Kernel := To_Vector ((0 => ((152, 0),  151,  
0, (152, 0),  2)));
+            Table.States (1067).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (152, 0),  2)));
+            Table.States (1068).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (1068), (15, 24, 28, 72, 107), (152, 1),  
2, null, null);
+            Table.States (1068).Kernel := To_Vector ((0 => ((152, 1),  330,  
0, (152, 1),  2)));
+            Table.States (1068).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (152, 1),  2)));
+            Table.States (1069).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1069), 54, (283, 0), 1164);
+            Table.States (1069).Kernel := To_Vector ((0 => ((283, 0),  24,  1, 
(2147483647, 0),  0)));
+            Table.States (1069).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (283, 0),  54, 1164)));
+            Table.States (1070).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (1070), 7, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (1070), 8, (150, 0), 1165);
+            Add_Action (Table.States (1070), 40, (244, 0), 756);
+            Add_Action (Table.States (1070), 81, (242, 8), 31);
+            Add_Action (Table.States (1070), 107, (242, 5), 120);
+            Add_Action (Table.States (1070), 108, (242, 7), 34);
+            Add_Action (Table.States (1070), 109, (242, 6), 35);
+            Table.States (1070).Goto_List.Set_Capacity (8);
+            Add_Goto (Table.States (1070), 117, 1166);
+            Add_Goto (Table.States (1070), 131, 42);
+            Add_Goto (Table.States (1070), 150, 1167);
+            Add_Goto (Table.States (1070), 242, 491);
+            Add_Goto (Table.States (1070), 244, 735);
+            Add_Goto (Table.States (1070), 275, 93);
+            Add_Goto (Table.States (1070), 296, 98);
+            Add_Goto (Table.States (1070), 317, 1168);
+            Table.States (1070).Kernel := To_Vector ((((149, 0),  84,  3, 
(2147483647, 0),  0), ((149, 1),  84,  2,
+            (2147483647, 0),  0)));
+            Table.States (1070).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+         end Subr_19;
+         procedure Subr_20
          is begin
-            Table.States (1051).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (1051), 3, 122);
-            Add_Action (Table.States (1051), 39, 123);
-            Add_Action (Table.States (1051), 40, 124);
-            Add_Action (Table.States (1051), 41, 125);
-            Add_Action (Table.States (1051), 76, 127);
-            Add_Action (Table.States (1051), 79, 31);
-            Add_Action (Table.States (1051), 95, 128);
-            Add_Action (Table.States (1051), 96, 129);
-            Add_Action (Table.States (1051), 104, 130);
-            Add_Action (Table.States (1051), 105, 120);
-            Add_Action (Table.States (1051), 106, 34);
-            Add_Action (Table.States (1051), 107, 35);
-            Table.States (1051).Goto_List.Set_Capacity (11);
-            Add_Goto (Table.States (1051), 118, 131);
-            Add_Goto (Table.States (1051), 129, 42);
-            Add_Goto (Table.States (1051), 198, 134);
-            Add_Goto (Table.States (1051), 240, 135);
-            Add_Goto (Table.States (1051), 259, 136);
-            Add_Goto (Table.States (1051), 273, 93);
-            Add_Goto (Table.States (1051), 294, 98);
-            Add_Goto (Table.States (1051), 302, 1152);
-            Add_Goto (Table.States (1051), 321, 145);
-            Add_Goto (Table.States (1051), 322, 146);
-            Add_Goto (Table.States (1051), 331, 147);
-            Table.States (1051).Kernel := To_Vector ((0 => (327, 86, 1, 
False)));
-            Table.States (1051).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (1052).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1052), (1 =>  35), (164, 0), 1, null, 
null);
-            Table.States (1052).Kernel := To_Vector ((0 => (164, 105, 0, 
False)));
-            Table.States (1052).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 164, 1)));
-            Table.States (1053).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1053), (1 =>  35), (164, 1), 1, null, 
null);
-            Table.States (1053).Kernel := To_Vector ((0 => (164, 106, 0, 
False)));
-            Table.States (1053).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 164, 1)));
-            Table.States (1054).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1054), (1 =>  35), (165, 0), 1, null, 
null);
-            Table.States (1054).Kernel := To_Vector ((0 => (165, 164, 0, 
False)));
-            Table.States (1054).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 165, 1)));
-            Table.States (1055).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1055), 35, 1153);
-            Table.States (1055).Kernel := To_Vector ((0 => (328, 165, 6, 
False)));
-            Table.States (1055).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 1153)));
-            Table.States (1056).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (1056), (15, 24, 28, 72, 105), (150, 4), 
2, component_list_4'Access, null);
-            Table.States (1056).Kernel := To_Vector ((0 => (150, 97, 0, 
False)));
-            Table.States (1056).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 150, 2)));
-            Table.States (1057).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (1057), (15, 24, 28, 72, 105), (150, 0), 
2, null, null);
-            Table.States (1057).Kernel := To_Vector ((0 => (150, 149, 0, 
True)));
-            Table.States (1057).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 150, 2)));
-            Table.States (1057).Minimal_Complete_Actions_Recursive := True;
-            Table.States (1058).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (1058), (15, 24, 28, 72, 105), (150, 1), 
2, null, null);
-            Table.States (1058).Kernel := To_Vector ((0 => (150, 328, 0, 
True)));
-            Table.States (1058).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 150, 2)));
-            Table.States (1058).Minimal_Complete_Actions_Recursive := True;
-            Table.States (1059).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1059), 54, 1154);
-            Table.States (1059).Kernel := To_Vector ((0 => (281, 24, 1, 
False)));
-            Table.States (1059).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 54, 1154)));
-            Table.States (1060).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (1060), 7, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (1060), 8, 1155);
-            Add_Action (Table.States (1060), 40, 750);
-            Add_Action (Table.States (1060), 79, 31);
-            Add_Action (Table.States (1060), 105, 120);
-            Add_Action (Table.States (1060), 106, 34);
-            Add_Action (Table.States (1060), 107, 35);
-            Table.States (1060).Goto_List.Set_Capacity (8);
-            Add_Goto (Table.States (1060), 115, 1156);
-            Add_Goto (Table.States (1060), 129, 42);
-            Add_Goto (Table.States (1060), 148, 1157);
-            Add_Goto (Table.States (1060), 240, 487);
-            Add_Goto (Table.States (1060), 242, 729);
-            Add_Goto (Table.States (1060), 273, 93);
-            Add_Goto (Table.States (1060), 294, 98);
-            Add_Goto (Table.States (1060), 315, 1158);
-            Table.States (1060).Kernel := To_Vector (((147, 82, 3, False), 
(147, 82, 2, False)));
-            Table.States (1060).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (1061).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (1061), 79, 31);
-            Add_Action (Table.States (1061), 105, 120);
-            Add_Action (Table.States (1061), 106, 34);
-            Add_Action (Table.States (1061), 107, 35);
-            Table.States (1061).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (1061), 129, 42);
-            Add_Goto (Table.States (1061), 228, 1159);
-            Add_Goto (Table.States (1061), 240, 850);
-            Add_Goto (Table.States (1061), 273, 93);
-            Add_Goto (Table.States (1061), 294, 98);
-            Table.States (1061).Kernel := To_Vector ((0 => (229, 10, 1, 
False)));
-            Table.States (1061).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (1062).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (1062), 79, 31);
-            Add_Action (Table.States (1062), 105, 120);
-            Add_Action (Table.States (1062), 106, 34);
-            Add_Action (Table.States (1062), 107, 35);
-            Table.States (1062).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (1062), 129, 42);
-            Add_Goto (Table.States (1062), 228, 1160);
-            Add_Goto (Table.States (1062), 240, 850);
-            Add_Goto (Table.States (1062), 273, 93);
-            Add_Goto (Table.States (1062), 294, 98);
-            Table.States (1062).Kernel := To_Vector ((0 => (229, 10, 1, 
False)));
-            Table.States (1062).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (1063).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1063), (74, 97), (184, 0), 3, 
enumeration_type_definition_0'Access, null);
-            Table.States (1063).Kernel := To_Vector ((0 => (184, 77, 0, 
False)));
-            Table.States (1063).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 184, 3)));
-            Table.States (1064).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1064), 105, 907);
-            Add_Action (Table.States (1064), 107, 908);
-            Table.States (1064).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1064), 181, 1161);
-            Table.States (1064).Kernel := To_Vector ((0 => (182, 84, 1, 
True)));
-            Table.States (1064).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 907)));
-            Table.States (1064).Minimal_Complete_Actions_Recursive := True;
-            Table.States (1065).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1065), 10, 1162);
-            Add_Action (Table.States (1065), 74, Reduce, (120, 1), 0, null, 
null);
-            Table.States (1065).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1065), 120, 1163);
-            Table.States (1065).Kernel := To_Vector ((0 => (260, 315, 3, 
False)));
-            Table.States (1065).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 120, 0)));
-            Table.States (1066).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (1066), 10, 1162);
-            Add_Action (Table.States (1066), 53, 626);
-            Add_Action (Table.States (1066), 74, Reduce, (120, 1), 0, null, 
null);
-            Add_Conflict (Table.States (1066), 74, (157, 1), 0, null, null);
-            Add_Action (Table.States (1066), 76, 627);
-            Add_Action (Table.States (1066), 85, 238);
-            Add_Action (Table.States (1066), 97, Reduce, (157, 1), 0, null, 
null);
-            Add_Action (Table.States (1066), 102, 240);
-            Add_Action (Table.States (1066), 103, 241);
-            Table.States (1066).Goto_List.Set_Capacity (6);
-            Add_Goto (Table.States (1066), 116, 242);
-            Add_Goto (Table.States (1066), 120, 1164);
-            Add_Goto (Table.States (1066), 156, 1165);
-            Add_Goto (Table.States (1066), 157, 1166);
-            Add_Goto (Table.States (1066), 225, 629);
-            Add_Goto (Table.States (1066), 323, 243);
-            Table.States (1066).Kernel := To_Vector (((129, 240, 2, True), 
(163, 240, 3, False), (163, 240, 0, False),
-            (240, 240, 5, True), (240, 240, 2, True), (273, 240, 3, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True), (294, 240, 2, True)));
-            Table.States (1066).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 0)));
-            Table.States (1067).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1067), 97, 1167);
-            Table.States (1067).Kernel := To_Vector ((0 => (261, 123, 1, 
False)));
-            Table.States (1067).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1167)));
-            Table.States (1068).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1068), (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, 
79, 94, 105, 106, 107, 108), (207, 0), 7,
+            Table.States (1071).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (1071), 81, (242, 8), 31);
+            Add_Action (Table.States (1071), 107, (242, 5), 120);
+            Add_Action (Table.States (1071), 108, (242, 7), 34);
+            Add_Action (Table.States (1071), 109, (242, 6), 35);
+            Table.States (1071).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (1071), 131, 42);
+            Add_Goto (Table.States (1071), 230, 1169);
+            Add_Goto (Table.States (1071), 242, 859);
+            Add_Goto (Table.States (1071), 275, 93);
+            Add_Goto (Table.States (1071), 296, 98);
+            Table.States (1071).Kernel := To_Vector ((0 => ((231, 3),  10,  1, 
(2147483647, 0),  0)));
+            Table.States (1071).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (1072).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (1072), 81, (242, 8), 31);
+            Add_Action (Table.States (1072), 107, (242, 5), 120);
+            Add_Action (Table.States (1072), 108, (242, 7), 34);
+            Add_Action (Table.States (1072), 109, (242, 6), 35);
+            Table.States (1072).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (1072), 131, 42);
+            Add_Goto (Table.States (1072), 230, 1170);
+            Add_Goto (Table.States (1072), 242, 859);
+            Add_Goto (Table.States (1072), 275, 93);
+            Add_Goto (Table.States (1072), 296, 98);
+            Table.States (1072).Kernel := To_Vector ((0 => ((231, 1),  10,  1, 
(2147483647, 0),  0)));
+            Table.States (1072).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (1073).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1073), (74, 99), (186, 0),  3, 
enumeration_type_definition_0'Access, null);
+            Table.States (1073).Kernel := To_Vector ((0 => ((186, 0),  78,  0, 
(186, 0),  3)));
+            Table.States (1073).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (186, 0),  3)));
+            Table.States (1074).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1074), 107, (183, 0), 916);
+            Add_Action (Table.States (1074), 109, (183, 1), 917);
+            Table.States (1074).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1074), 183, 1171);
+            Table.States (1074).Kernel := To_Vector ((0 => ((184, 0),  86,  1, 
(2147483647, 0),  0)));
+            Table.States (1074).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (183, 0),  107, 916)));
+            Table.States (1075).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1075), 10, (122, 0), 1172);
+            Add_Action (Table.States (1075), 74, Reduce, (122, 1),  0, null, 
null);
+            Table.States (1075).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1075), 122, 1173);
+            Table.States (1075).Kernel := To_Vector ((0 => ((262, 0),  317,  
3, (2147483647, 0),  0)));
+            Table.States (1075).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (122, 1),  0)));
+            Table.States (1076).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (1076), 10, (122, 0), 1172);
+            Add_Action (Table.States (1076), 53, (158, 0), 632);
+            Add_Action (Table.States (1076), 74, Reduce, (122, 1),  0, null, 
null);
+            Add_Conflict (Table.States (1076), 74, (159, 1),  0, null, null);
+            Add_Action (Table.States (1076), 76, (118, 0), 633);
+            Add_Action (Table.States (1076), 87, (296, 0), 239);
+            Add_Action (Table.States (1076), 99, Reduce, (159, 1),  0, null, 
null);
+            Add_Action (Table.States (1076), 104, (325, 0), 241);
+            Add_Action (Table.States (1076), 105, (325, 1), 242);
+            Table.States (1076).Goto_List.Set_Capacity (6);
+            Add_Goto (Table.States (1076), 118, 243);
+            Add_Goto (Table.States (1076), 122, 1174);
+            Add_Goto (Table.States (1076), 158, 1175);
+            Add_Goto (Table.States (1076), 159, 1176);
+            Add_Goto (Table.States (1076), 227, 635);
+            Add_Goto (Table.States (1076), 325, 244);
+            Table.States (1076).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((165, 0),  242,  3,
+            (2147483647, 0),  0), ((165, 1),  242,  0, (159, 1),  0), ((242, 
0),  242,  5, (2147483647, 0),  0), ((242,
+            1),  242,  2, (2147483647, 0),  0), ((275, 0),  242,  3, 
(2147483647, 0),  0), ((296, 0),  242,  2,
+            (2147483647, 0),  0), ((296, 1),  242,  2, (2147483647, 0),  0), 
((296, 2),  242,  2, (2147483647, 0),  0),
+            ((296, 3),  242,  2, (2147483647, 0),  0)));
+            Table.States (1076).Minimal_Complete_Actions := To_Vector 
(((Reduce, (122, 1),  0), (Reduce, (159, 1),
+            0)));
+            Table.States (1077).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1077), 99, (263, 0), 1177);
+            Table.States (1077).Kernel := To_Vector ((0 => ((263, 0),  125,  
1, (2147483647, 0),  0)));
+            Table.States (1077).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (263, 0),  99, 1177)));
+            Table.States (1078).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1078), (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, 
81, 96, 107, 108, 109, 110), (209, 0),  7,
             full_type_declaration_0'Access, null);
-            Table.States (1068).Kernel := To_Vector ((0 => (207, 97, 0, 
False)));
-            Table.States (1068).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 207, 7)));
-            Table.States (1069).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1069), (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, 
79, 94, 105, 106, 107, 108), (246, 2), 7,
+            Table.States (1078).Kernel := To_Vector ((0 => ((209, 0),  99,  0, 
(209, 0),  7)));
+            Table.States (1078).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (209, 0),  7)));
+            Table.States (1079).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1079), (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, 
81, 96, 107, 108, 109, 110), (248, 2),  7,
             object_renaming_declaration_2'Access, null);
-            Table.States (1069).Kernel := To_Vector ((0 => (246, 97, 0, 
False)));
-            Table.States (1069).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 246, 7)));
-            Table.States (1070).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1070), (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, 
79, 94, 105, 106, 107, 108), (246, 1), 7,
+            Table.States (1079).Kernel := To_Vector ((0 => ((248, 2),  99,  0, 
(248, 2),  7)));
+            Table.States (1079).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (248, 2),  7)));
+            Table.States (1080).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1080), (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, 
81, 96, 107, 108, 109, 110), (248, 1),  7,
             object_renaming_declaration_1'Access, null);
-            Table.States (1070).Kernel := To_Vector ((0 => (246, 97, 0, 
False)));
-            Table.States (1070).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 246, 7)));
-            Table.States (1071).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (1071), (21, 35, 56, 74, 77, 83, 97), 
(115, 1), 5, access_definition_1'Access,
+            Table.States (1080).Kernel := To_Vector ((0 => ((248, 1),  99,  0, 
(248, 1),  7)));
+            Table.States (1080).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (248, 1),  7)));
+            Table.States (1081).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (1081), (21, 35, 56, 74, 78, 85, 99), 
(117, 1),  5, access_definition_1'Access,
             null);
-            Table.States (1071).Kernel := To_Vector ((0 => (115, 253, 0, 
True)));
-            Table.States (1071).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 115, 5)));
-            Table.States (1071).Minimal_Complete_Actions_Recursive := True;
-            Table.States (1072).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (1072), (21, 35, 56, 74, 77, 83, 97), 
(115, 0), 5, access_definition_0'Access,
+            Table.States (1081).Kernel := To_Vector ((0 => ((117, 1),  255,  
0, (117, 1),  5)));
+            Table.States (1081).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (117, 1),  5)));
+            Table.States (1082).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (1082), (21, 35, 56, 74, 78, 85, 99), 
(117, 0),  5, access_definition_0'Access,
             null);
-            Table.States (1072).Kernel := To_Vector ((0 => (115, 254, 0, 
False)));
-            Table.States (1072).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 115, 5)));
-            Table.States (1073).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1073), 97, 1168);
-            Table.States (1073).Kernel := To_Vector ((0 => (246, 123, 1, 
False)));
-            Table.States (1073).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1168)));
-            Table.States (1074).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (1074), 44, 923);
-            Add_Action (Table.States (1074), 79, 31);
-            Add_Action (Table.States (1074), 105, 120);
-            Add_Action (Table.States (1074), 106, 34);
-            Add_Action (Table.States (1074), 107, 35);
-            Table.States (1074).Goto_List.Set_Capacity (6);
-            Add_Goto (Table.States (1074), 129, 42);
-            Add_Goto (Table.States (1074), 185, 925);
-            Add_Goto (Table.States (1074), 186, 1169);
-            Add_Goto (Table.States (1074), 240, 927);
-            Add_Goto (Table.States (1074), 273, 93);
-            Add_Goto (Table.States (1074), 294, 98);
-            Table.States (1074).Kernel := To_Vector ((0 => (188, 82, 2, 
False)));
-            Table.States (1074).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (1075).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (1075), 44, 923);
-            Add_Action (Table.States (1075), 79, 31);
-            Add_Action (Table.States (1075), 105, 120);
-            Add_Action (Table.States (1075), 106, 34);
-            Add_Action (Table.States (1075), 107, 35);
-            Table.States (1075).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (1075), 129, 42);
-            Add_Goto (Table.States (1075), 185, 1170);
-            Add_Goto (Table.States (1075), 240, 927);
-            Add_Goto (Table.States (1075), 273, 93);
-            Add_Goto (Table.States (1075), 294, 98);
-            Table.States (1075).Kernel := To_Vector ((0 => (186, 80, 1, 
True)));
-            Table.States (1075).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (1075).Minimal_Complete_Actions_Recursive := True;
-            Table.States (1076).Action_List.Set_Capacity (25);
-            Add_Action (Table.States (1076), 4, 1);
-            Add_Action (Table.States (1076), 5, 2);
-            Add_Action (Table.States (1076), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1076), 15, 3);
-            Add_Action (Table.States (1076), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1076), 18, 4);
-            Add_Action (Table.States (1076), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (1076), 27, 5);
-            Add_Action (Table.States (1076), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1076), 31, 9);
-            Add_Action (Table.States (1076), 32, 10);
-            Add_Action (Table.States (1076), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1076), 41, 13);
-            Add_Action (Table.States (1076), 48, 16);
-            Add_Action (Table.States (1076), 52, 20);
-            Add_Action (Table.States (1076), 57, 21);
-            Add_Action (Table.States (1076), 58, 22);
-            Add_Action (Table.States (1076), 61, 24);
-            Add_Action (Table.States (1076), 72, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (1076), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1076), 79, 31);
-            Add_Action (Table.States (1076), 94, 32);
-            Add_Action (Table.States (1076), 105, 361);
-            Add_Action (Table.States (1076), 106, 34);
-            Add_Action (Table.States (1076), 107, 35);
-            Table.States (1076).Goto_List.Set_Capacity (31);
-            Add_Goto (Table.States (1076), 114, 37);
-            Add_Goto (Table.States (1076), 124, 39);
-            Add_Goto (Table.States (1076), 127, 40);
-            Add_Goto (Table.States (1076), 129, 42);
-            Add_Goto (Table.States (1076), 132, 43);
-            Add_Goto (Table.States (1076), 133, 44);
-            Add_Goto (Table.States (1076), 134, 45);
-            Add_Goto (Table.States (1076), 140, 48);
-            Add_Goto (Table.States (1076), 152, 51);
-            Add_Goto (Table.States (1076), 153, 52);
-            Add_Goto (Table.States (1076), 162, 54);
-            Add_Goto (Table.States (1076), 191, 58);
-            Add_Goto (Table.States (1076), 197, 60);
-            Add_Goto (Table.States (1076), 218, 69);
-            Add_Goto (Table.States (1076), 223, 71);
-            Add_Goto (Table.States (1076), 233, 73);
-            Add_Goto (Table.States (1076), 240, 74);
-            Add_Goto (Table.States (1076), 258, 84);
-            Add_Goto (Table.States (1076), 262, 87);
-            Add_Goto (Table.States (1076), 273, 93);
-            Add_Goto (Table.States (1076), 277, 94);
-            Add_Goto (Table.States (1076), 291, 97);
-            Add_Goto (Table.States (1076), 294, 98);
-            Add_Goto (Table.States (1076), 295, 99);
-            Add_Goto (Table.States (1076), 299, 100);
-            Add_Goto (Table.States (1076), 300, 362);
-            Add_Goto (Table.States (1076), 301, 1171);
-            Add_Goto (Table.States (1076), 303, 101);
-            Add_Goto (Table.States (1076), 304, 102);
-            Add_Goto (Table.States (1076), 307, 364);
-            Add_Goto (Table.States (1076), 324, 115);
-            Table.States (1076).Kernel := To_Vector ((0 => (188, 88, 0, 
False)));
-            Table.States (1076).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 0)));
-            Table.States (1077).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1077), 97, 1172);
-            Table.States (1077).Kernel := To_Vector ((0 => (134, 221, 1, 
False)));
-            Table.States (1077).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1172)));
-            Table.States (1078).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (1078), (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, 79, 94, 105, 106,
-            107, 108), (233, 1), 7, loop_statement_1'Access, 
loop_statement_1_check'Access);
-            Table.States (1078).Kernel := To_Vector ((0 => (233, 97, 0, 
False)));
-            Table.States (1078).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 233, 7)));
-            Table.States (1079).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1079), 97, 1173);
-            Table.States (1079).Kernel := To_Vector ((0 => (233, 221, 1, 
False)));
-            Table.States (1079).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1173)));
-            Table.States (1080).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1080), 74, 338);
-            Add_Action (Table.States (1080), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (1080).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1080), 123, 1174);
-            Table.States (1080).Kernel := To_Vector ((0 => (245, 193, 1, 
False)));
-            Table.States (1080).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (1081).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1081), (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, 
79, 94, 105, 106, 107, 108), (245, 4), 7,
-            object_declaration_4'Access, null);
-            Table.States (1081).Kernel := To_Vector ((0 => (245, 97, 0, 
False)));
-            Table.States (1081).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 245, 7)));
-            Table.States (1082).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1082), 74, 338);
-            Add_Action (Table.States (1082), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (1082).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1082), 123, 1175);
-            Table.States (1082).Kernel := To_Vector ((0 => (245, 193, 1, 
False)));
-            Table.States (1082).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (1083).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1083), (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, 
79, 94, 105, 106, 107, 108), (245, 5), 7,
-            object_declaration_5'Access, null);
-            Table.States (1083).Kernel := To_Vector ((0 => (245, 97, 0, 
False)));
-            Table.States (1083).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 245, 7)));
-            Table.States (1084).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1084), 74, 338);
-            Add_Action (Table.States (1084), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (1084).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1084), 123, 1176);
-            Table.States (1084).Kernel := To_Vector ((0 => (245, 193, 1, 
False)));
-            Table.States (1084).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (1085).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1085), (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, 
79, 94, 105, 106, 107, 108), (245, 3), 7,
-            object_declaration_3'Access, null);
-            Table.States (1085).Kernel := To_Vector ((0 => (245, 97, 0, 
False)));
-            Table.States (1085).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 245, 7)));
-            Table.States (1086).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1086), 74, 338);
-            Add_Action (Table.States (1086), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (1086).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1086), 123, 1177);
-            Table.States (1086).Kernel := To_Vector ((0 => (180, 254, 1, 
False)));
-            Table.States (1086).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
+            Table.States (1082).Kernel := To_Vector ((0 => ((117, 0),  256,  
0, (117, 0),  5)));
+            Table.States (1082).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (117, 0),  5)));
+            Table.States (1083).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1083), 99, (248, 0), 1178);
+            Table.States (1083).Kernel := To_Vector ((0 => ((248, 0),  125,  
1, (2147483647, 0),  0)));
+            Table.States (1083).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (248, 0),  99, 1178)));
+            Table.States (1084).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (1084), 44, (187, 1), 932);
+            Add_Action (Table.States (1084), 81, (242, 8), 31);
+            Add_Action (Table.States (1084), 107, (242, 5), 120);
+            Add_Action (Table.States (1084), 108, (242, 7), 34);
+            Add_Action (Table.States (1084), 109, (242, 6), 35);
+            Table.States (1084).Goto_List.Set_Capacity (6);
+            Add_Goto (Table.States (1084), 131, 42);
+            Add_Goto (Table.States (1084), 187, 934);
+            Add_Goto (Table.States (1084), 188, 1179);
+            Add_Goto (Table.States (1084), 242, 936);
+            Add_Goto (Table.States (1084), 275, 93);
+            Add_Goto (Table.States (1084), 296, 98);
+            Table.States (1084).Kernel := To_Vector ((0 => ((190, 0),  84,  2, 
(2147483647, 0),  0)));
+            Table.States (1084).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (1085).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (1085), 44, (187, 1), 932);
+            Add_Action (Table.States (1085), 81, (242, 8), 31);
+            Add_Action (Table.States (1085), 107, (242, 5), 120);
+            Add_Action (Table.States (1085), 108, (242, 7), 34);
+            Add_Action (Table.States (1085), 109, (242, 6), 35);
+            Table.States (1085).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (1085), 131, 42);
+            Add_Goto (Table.States (1085), 187, 1180);
+            Add_Goto (Table.States (1085), 242, 936);
+            Add_Goto (Table.States (1085), 275, 93);
+            Add_Goto (Table.States (1085), 296, 98);
+            Table.States (1085).Kernel := To_Vector ((0 => ((188, 0),  82,  1, 
(2147483647, 0),  0)));
+            Table.States (1085).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (1086).Action_List.Set_Capacity (25);
+            Add_Action (Table.States (1086), 4, (116, 0), 1);
+            Add_Action (Table.States (1086), 5, (306, 8), 2);
+            Add_Action (Table.States (1086), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1086), 15, (142, 0), 3);
+            Add_Action (Table.States (1086), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1086), 18, (164, 0), 4);
+            Add_Action (Table.States (1086), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (1086), 27, (193, 0), 5);
+            Add_Action (Table.States (1086), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1086), 31, (306, 3), 9);
+            Add_Action (Table.States (1086), 32, (225, 0), 10);
+            Add_Action (Table.States (1086), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1086), 41, (306, 0), 13);
+            Add_Action (Table.States (1086), 48, (260, 0), 16);
+            Add_Action (Table.States (1086), 52, (279, 0), 20);
+            Add_Action (Table.States (1086), 57, (293, 0), 21);
+            Add_Action (Table.States (1086), 58, (199, 0), 22);
+            Add_Action (Table.States (1086), 61, (129, 0), 24);
+            Add_Action (Table.States (1086), 72, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (1086), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1086), 81, (242, 8), 31);
+            Add_Action (Table.States (1086), 96, (220, 0), 32);
+            Add_Action (Table.States (1086), 107, (134, 0), 363);
+            Add_Action (Table.States (1086), 108, (242, 7), 34);
+            Add_Action (Table.States (1086), 109, (242, 6), 35);
+            Table.States (1086).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (1086), 116, 37);
+            Add_Goto (Table.States (1086), 126, 39);
+            Add_Goto (Table.States (1086), 129, 40);
+            Add_Goto (Table.States (1086), 131, 42);
+            Add_Goto (Table.States (1086), 134, 43);
+            Add_Goto (Table.States (1086), 135, 44);
+            Add_Goto (Table.States (1086), 136, 45);
+            Add_Goto (Table.States (1086), 142, 48);
+            Add_Goto (Table.States (1086), 154, 51);
+            Add_Goto (Table.States (1086), 155, 52);
+            Add_Goto (Table.States (1086), 164, 54);
+            Add_Goto (Table.States (1086), 193, 58);
+            Add_Goto (Table.States (1086), 199, 60);
+            Add_Goto (Table.States (1086), 220, 69);
+            Add_Goto (Table.States (1086), 225, 71);
+            Add_Goto (Table.States (1086), 235, 73);
+            Add_Goto (Table.States (1086), 242, 74);
+            Add_Goto (Table.States (1086), 260, 84);
+            Add_Goto (Table.States (1086), 264, 87);
+            Add_Goto (Table.States (1086), 275, 93);
+            Add_Goto (Table.States (1086), 279, 94);
+            Add_Goto (Table.States (1086), 293, 97);
+            Add_Goto (Table.States (1086), 296, 98);
+            Add_Goto (Table.States (1086), 297, 99);
+            Add_Goto (Table.States (1086), 301, 100);
+            Add_Goto (Table.States (1086), 302, 364);
+            Add_Goto (Table.States (1086), 303, 1181);
+            Add_Goto (Table.States (1086), 305, 101);
+            Add_Goto (Table.States (1086), 306, 102);
+            Add_Goto (Table.States (1086), 309, 366);
+            Add_Goto (Table.States (1086), 326, 115);
+            Table.States (1086).Kernel := To_Vector ((0 => ((190, 1),  90,  0, 
(303, 1),  0)));
+            Table.States (1086).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (303, 1),  0)));
             Table.States (1087).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1087), 97, 1178);
-            Table.States (1087).Kernel := To_Vector ((0 => (214, 123, 1, 
False)));
-            Table.States (1087).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1178)));
-            Table.States (1088).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1088), 97, 1179);
-            Table.States (1088).Kernel := To_Vector ((0 => (214, 123, 1, 
False)));
-            Table.States (1088).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1179)));
+            Add_Action (Table.States (1087), 99, (136, 0), 1182);
+            Table.States (1087).Kernel := To_Vector ((0 => ((136, 0),  223,  
1, (2147483647, 0),  0)));
+            Table.States (1087).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (136, 0),  99, 1182)));
+            Table.States (1088).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (1088), (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, 81, 96, 107, 108,
+            109, 110), (235, 1),  7, loop_statement_1'Access, 
loop_statement_1_check'Access);
+            Table.States (1088).Kernel := To_Vector ((0 => ((235, 1),  99,  0, 
(235, 1),  7)));
+            Table.States (1088).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (235, 1),  7)));
             Table.States (1089).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1089), 24, 1180);
-            Table.States (1089).Kernel := To_Vector ((0 => (308, 219, 2, 
False)));
-            Table.States (1089).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1180)));
-            Table.States (1090).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1090), 97, 1181);
-            Table.States (1090).Kernel := To_Vector ((0 => (114, 221, 1, 
False)));
-            Table.States (1090).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1181)));
-            Table.States (1091).Action_List.Set_Capacity (15);
-            Add_Action (Table.States (1091), 3, 122);
-            Add_Action (Table.States (1091), 39, 123);
-            Add_Action (Table.States (1091), 40, 124);
-            Add_Action (Table.States (1091), 41, 125);
-            Add_Action (Table.States (1091), 52, 126);
-            Add_Action (Table.States (1091), 76, 127);
-            Add_Action (Table.States (1091), 77, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1091), 79, 31);
-            Add_Action (Table.States (1091), 84, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1091), 95, 128);
-            Add_Action (Table.States (1091), 96, 129);
-            Add_Action (Table.States (1091), 104, 130);
-            Add_Action (Table.States (1091), 105, 120);
-            Add_Action (Table.States (1091), 106, 34);
-            Add_Action (Table.States (1091), 107, 35);
-            Table.States (1091).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (1091), 118, 131);
-            Add_Goto (Table.States (1091), 129, 42);
-            Add_Goto (Table.States (1091), 192, 132);
-            Add_Goto (Table.States (1091), 193, 1182);
-            Add_Goto (Table.States (1091), 198, 134);
-            Add_Goto (Table.States (1091), 240, 135);
-            Add_Goto (Table.States (1091), 259, 136);
-            Add_Goto (Table.States (1091), 273, 93);
-            Add_Goto (Table.States (1091), 276, 137);
-            Add_Goto (Table.States (1091), 283, 138);
-            Add_Goto (Table.States (1091), 284, 139);
-            Add_Goto (Table.States (1091), 285, 140);
-            Add_Goto (Table.States (1091), 286, 141);
-            Add_Goto (Table.States (1091), 287, 142);
-            Add_Goto (Table.States (1091), 288, 143);
-            Add_Goto (Table.States (1091), 294, 98);
-            Add_Goto (Table.States (1091), 302, 144);
-            Add_Goto (Table.States (1091), 321, 145);
-            Add_Goto (Table.States (1091), 322, 146);
-            Add_Goto (Table.States (1091), 331, 147);
-            Table.States (1091).Kernel := To_Vector ((0 => (138, 88, 0, 
False)));
-            Table.States (1091).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
+            Add_Action (Table.States (1089), 99, (235, 0), 1183);
+            Table.States (1089).Kernel := To_Vector ((0 => ((235, 0),  223,  
1, (2147483647, 0),  0)));
+            Table.States (1089).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (235, 0),  99, 1183)));
+            Table.States (1090).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1090), 74, (125, 0), 340);
+            Add_Action (Table.States (1090), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (1090).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1090), 125, 1184);
+            Table.States (1090).Kernel := To_Vector ((0 => ((247, 1),  195,  
1, (2147483647, 0),  0)));
+            Table.States (1090).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (1091).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1091), (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, 
81, 96, 107, 108, 109, 110), (247, 4),  7,
+            object_declaration_4'Access, null);
+            Table.States (1091).Kernel := To_Vector ((0 => ((247, 4),  99,  0, 
(247, 4),  7)));
+            Table.States (1091).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (247, 4),  7)));
             Table.States (1092).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1092), (77, 84), (139, 0), 3, 
case_expression_alternative_list_0'Access, null);
-            Table.States (1092).Kernel := To_Vector ((0 => (139, 138, 0, 
True)));
-            Table.States (1092).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 139, 3)));
-            Table.States (1092).Minimal_Complete_Actions_Recursive := True;
-            Table.States (1093).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (1093), (35, 77, 84, 97), (125, 4), 6, 
association_opt_4'Access, null);
-            Table.States (1093).Kernel := To_Vector ((0 => (125, 192, 0, 
False)));
-            Table.States (1093).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 125, 6)));
-            Table.States (1094).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1094), (1 =>  77), (222, 1), 6, 
if_expression_1'Access, null);
-            Table.States (1094).Kernel := To_Vector ((0 => (222, 193, 0, 
False)));
-            Table.States (1094).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 222, 6)));
-            Table.States (1095).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1095), 68, 1183);
-            Table.States (1095).Kernel := To_Vector ((0 => (173, 193, 1, 
False)));
-            Table.States (1095).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 68, 1183)));
-            Table.States (1096).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (1096), 3, 122);
-            Add_Action (Table.States (1096), 39, 123);
-            Add_Action (Table.States (1096), 40, 124);
-            Add_Action (Table.States (1096), 41, 125);
-            Add_Action (Table.States (1096), 52, 126);
-            Add_Action (Table.States (1096), 76, 127);
-            Add_Action (Table.States (1096), 77, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1096), 79, 31);
-            Add_Action (Table.States (1096), 95, 128);
-            Add_Action (Table.States (1096), 96, 129);
-            Add_Action (Table.States (1096), 104, 130);
-            Add_Action (Table.States (1096), 105, 120);
-            Add_Action (Table.States (1096), 106, 34);
-            Add_Action (Table.States (1096), 107, 35);
-            Table.States (1096).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (1096), 118, 131);
-            Add_Goto (Table.States (1096), 129, 42);
-            Add_Goto (Table.States (1096), 192, 132);
-            Add_Goto (Table.States (1096), 193, 1184);
-            Add_Goto (Table.States (1096), 198, 134);
-            Add_Goto (Table.States (1096), 240, 135);
-            Add_Goto (Table.States (1096), 259, 136);
-            Add_Goto (Table.States (1096), 273, 93);
-            Add_Goto (Table.States (1096), 276, 137);
-            Add_Goto (Table.States (1096), 283, 138);
-            Add_Goto (Table.States (1096), 284, 139);
-            Add_Goto (Table.States (1096), 285, 140);
-            Add_Goto (Table.States (1096), 286, 141);
-            Add_Goto (Table.States (1096), 287, 142);
-            Add_Goto (Table.States (1096), 288, 143);
-            Add_Goto (Table.States (1096), 294, 98);
-            Add_Goto (Table.States (1096), 302, 144);
-            Add_Goto (Table.States (1096), 321, 145);
-            Add_Goto (Table.States (1096), 322, 146);
-            Add_Goto (Table.States (1096), 331, 147);
-            Table.States (1096).Kernel := To_Vector ((0 => (222, 22, 0, 
False)));
-            Table.States (1096).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (1097).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (1097), (22, 23, 77), (174, 0), 2, 
elsif_expression_list_0'Access, null);
-            Table.States (1097).Kernel := To_Vector ((0 => (174, 173, 0, 
True)));
-            Table.States (1097).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 174, 2)));
-            Table.States (1097).Minimal_Complete_Actions_Recursive := True;
-            Table.States (1098).Action_List.Set_Capacity (19);
-            Add_Action (Table.States (1098), (10, 20, 21, 22, 23, 35, 37, 42, 
43, 53, 68, 74, 75, 77, 80, 83, 84, 88,
-            97), (278, 0), 6, range_g_0'Access, null);
-            Table.States (1098).Kernel := To_Vector ((0 => (278, 77, 0, 
False)));
-            Table.States (1098).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 278, 6)));
-            Table.States (1099).Action_List.Set_Capacity (9);
-            Add_Action (Table.States (1099), 53, 626);
-            Add_Action (Table.States (1099), 76, 627);
-            Add_Action (Table.States (1099), 77, Reduce, (315, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (1099), 80, Reduce, (166, 1), 3, null, 
null);
-            Add_Action (Table.States (1099), 84, Reduce, (315, 1), 3, 
subtype_indication_1'Access, null);
-            Add_Action (Table.States (1099), 85, 238);
-            Add_Action (Table.States (1099), 88, Reduce, (166, 1), 3, null, 
null);
-            Add_Action (Table.States (1099), 102, 240);
-            Add_Action (Table.States (1099), 103, 241);
-            Table.States (1099).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (1099), 116, 242);
-            Add_Goto (Table.States (1099), 156, 966);
-            Add_Goto (Table.States (1099), 225, 629);
-            Add_Goto (Table.States (1099), 323, 243);
-            Table.States (1099).Kernel := To_Vector (((129, 240, 2, True), 
(166, 240, 0, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True), (315, 240, 4, False), (315, 240, 0, False)));
-            Table.States (1099).Minimal_Complete_Actions := To_Vector 
(((Reduce, 166, 3), (Reduce, 315, 3)));
-            Table.States (1100).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1100), (77, 84), (169, 0), 3, null, 
null);
-            Table.States (1100).Kernel := To_Vector ((0 => (169, 168, 0, 
True)));
-            Table.States (1100).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 169, 3)));
-            Table.States (1100).Minimal_Complete_Actions_Recursive := True;
-            Table.States (1101).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1101), (1 =>  105), (236, 0), 4, null, 
null);
-            Table.States (1101).Kernel := To_Vector ((0 => (236, 97, 0, 
False)));
-            Table.States (1101).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 236, 4)));
-            Table.States (1102).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1102), 53, 1185);
-            Table.States (1102).Kernel := To_Vector ((0 => (145, 302, 5, 
False)));
-            Table.States (1102).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 53, 1185)));
-            Table.States (1103).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1103), 97, 1186);
-            Table.States (1103).Kernel := To_Vector ((0 => (282, 54, 1, 
False)));
-            Table.States (1103).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1186)));
-            Table.States (1104).Action_List.Set_Capacity (15);
-            Add_Action (Table.States (1104), 3, 122);
-            Add_Action (Table.States (1104), 39, 123);
-            Add_Action (Table.States (1104), 40, 124);
-            Add_Action (Table.States (1104), 41, 125);
-            Add_Action (Table.States (1104), 52, 126);
-            Add_Action (Table.States (1104), 76, 127);
-            Add_Action (Table.States (1104), 77, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1104), 79, 31);
-            Add_Action (Table.States (1104), 95, 128);
-            Add_Action (Table.States (1104), 96, 129);
-            Add_Action (Table.States (1104), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1104), 104, 130);
-            Add_Action (Table.States (1104), 105, 120);
-            Add_Action (Table.States (1104), 106, 34);
-            Add_Action (Table.States (1104), 107, 35);
-            Table.States (1104).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (1104), 118, 131);
-            Add_Goto (Table.States (1104), 129, 42);
-            Add_Goto (Table.States (1104), 192, 132);
-            Add_Goto (Table.States (1104), 193, 1187);
-            Add_Goto (Table.States (1104), 198, 134);
-            Add_Goto (Table.States (1104), 240, 135);
-            Add_Goto (Table.States (1104), 259, 136);
-            Add_Goto (Table.States (1104), 273, 93);
-            Add_Goto (Table.States (1104), 276, 137);
-            Add_Goto (Table.States (1104), 283, 138);
-            Add_Goto (Table.States (1104), 284, 139);
-            Add_Goto (Table.States (1104), 285, 140);
-            Add_Goto (Table.States (1104), 286, 141);
-            Add_Goto (Table.States (1104), 287, 142);
-            Add_Goto (Table.States (1104), 288, 143);
-            Add_Goto (Table.States (1104), 294, 98);
-            Add_Goto (Table.States (1104), 302, 144);
-            Add_Goto (Table.States (1104), 321, 145);
-            Add_Goto (Table.States (1104), 322, 146);
-            Add_Goto (Table.States (1104), 331, 147);
-            Table.States (1104).Kernel := To_Vector ((0 => (255, 83, 0, 
False)));
-            Table.States (1104).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (1105).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (1105), 79, 31);
-            Add_Action (Table.States (1105), 105, 120);
-            Add_Action (Table.States (1105), 106, 34);
-            Add_Action (Table.States (1105), 107, 35);
-            Table.States (1105).Goto_List.Set_Capacity (4);
-            Add_Goto (Table.States (1105), 129, 42);
-            Add_Goto (Table.States (1105), 240, 1188);
-            Add_Goto (Table.States (1105), 273, 93);
-            Add_Goto (Table.States (1105), 294, 98);
-            Table.States (1105).Kernel := To_Vector (((255, 242, 2, False), 
(255, 242, 1, False)));
-            Table.States (1105).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
+            Add_Action (Table.States (1092), 74, (125, 0), 340);
+            Add_Action (Table.States (1092), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (1092).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1092), 125, 1185);
+            Table.States (1092).Kernel := To_Vector ((0 => ((247, 2),  195,  
1, (2147483647, 0),  0)));
+            Table.States (1092).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (1093).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1093), (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, 
81, 96, 107, 108, 109, 110), (247, 5),  7,
+            object_declaration_5'Access, null);
+            Table.States (1093).Kernel := To_Vector ((0 => ((247, 5),  99,  0, 
(247, 5),  7)));
+            Table.States (1093).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (247, 5),  7)));
+            Table.States (1094).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1094), 74, (125, 0), 340);
+            Add_Action (Table.States (1094), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (1094).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1094), 125, 1186);
+            Table.States (1094).Kernel := To_Vector ((0 => ((247, 0),  195,  
1, (2147483647, 0),  0)));
+            Table.States (1094).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (1095).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1095), (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, 
81, 96, 107, 108, 109, 110), (247, 3),  7,
+            object_declaration_3'Access, null);
+            Table.States (1095).Kernel := To_Vector ((0 => ((247, 3),  99,  0, 
(247, 3),  7)));
+            Table.States (1095).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (247, 3),  7)));
+            Table.States (1096).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1096), 74, (125, 0), 340);
+            Add_Action (Table.States (1096), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (1096).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1096), 125, 1187);
+            Table.States (1096).Kernel := To_Vector ((0 => ((182, 0),  256,  
1, (2147483647, 0),  0)));
+            Table.States (1096).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (1097).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1097), 99, (216, 2), 1188);
+            Table.States (1097).Kernel := To_Vector ((0 => ((216, 2),  125,  
1, (2147483647, 0),  0)));
+            Table.States (1097).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (216, 2),  99, 1188)));
+            Table.States (1098).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1098), 99, (216, 1), 1189);
+            Table.States (1098).Kernel := To_Vector ((0 => ((216, 1),  125,  
1, (2147483647, 0),  0)));
+            Table.States (1098).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (216, 1),  99, 1189)));
+            Table.States (1099).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1099), 24, (310, 0), 1190);
+            Table.States (1099).Kernel := To_Vector ((0 => ((310, 0),  221,  
2, (2147483647, 0),  0)));
+            Table.States (1099).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (310, 0),  24, 1190)));
+            Table.States (1100).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1100), 99, (116, 0), 1191);
+            Table.States (1100).Kernel := To_Vector ((0 => ((116, 0),  223,  
1, (2147483647, 0),  0)));
+            Table.States (1100).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (116, 0),  99, 1191)));
+            Table.States (1101).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (1101), 3, (200, 2), 122);
+            Add_Action (Table.States (1101), 39, (261, 4), 123);
+            Add_Action (Table.States (1101), 40, (200, 3), 124);
+            Add_Action (Table.States (1101), 41, (261, 1), 125);
+            Add_Action (Table.States (1101), 52, (278, 0), 126);
+            Add_Action (Table.States (1101), 76, (120, 0), 127);
+            Add_Action (Table.States (1101), 77, (120, 5), 128);
+            Add_Action (Table.States (1101), 78, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1101), 81, (242, 8), 31);
+            Add_Action (Table.States (1101), 86, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1101), 97, (333, 1), 129);
+            Add_Action (Table.States (1101), 98, (333, 0), 130);
+            Add_Action (Table.States (1101), 106, (261, 0), 131);
+            Add_Action (Table.States (1101), 107, (242, 5), 120);
+            Add_Action (Table.States (1101), 108, (242, 7), 34);
+            Add_Action (Table.States (1101), 109, (242, 6), 35);
+            Table.States (1101).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (1101), 120, 132);
+            Add_Goto (Table.States (1101), 131, 42);
+            Add_Goto (Table.States (1101), 194, 133);
+            Add_Goto (Table.States (1101), 195, 1192);
+            Add_Goto (Table.States (1101), 200, 135);
+            Add_Goto (Table.States (1101), 242, 136);
+            Add_Goto (Table.States (1101), 261, 137);
+            Add_Goto (Table.States (1101), 275, 93);
+            Add_Goto (Table.States (1101), 278, 138);
+            Add_Goto (Table.States (1101), 285, 139);
+            Add_Goto (Table.States (1101), 286, 140);
+            Add_Goto (Table.States (1101), 287, 141);
+            Add_Goto (Table.States (1101), 288, 142);
+            Add_Goto (Table.States (1101), 289, 143);
+            Add_Goto (Table.States (1101), 290, 144);
+            Add_Goto (Table.States (1101), 296, 98);
+            Add_Goto (Table.States (1101), 304, 145);
+            Add_Goto (Table.States (1101), 323, 146);
+            Add_Goto (Table.States (1101), 324, 147);
+            Add_Goto (Table.States (1101), 333, 148);
+            Table.States (1101).Kernel := To_Vector ((0 => ((140, 0),  90,  0, 
(195, 1),  0)));
+            Table.States (1101).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (1102).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1102), (78, 86), (141, 0),  3, 
case_expression_alternative_list_0'Access, null);
+            Table.States (1102).Kernel := To_Vector ((0 => ((141, 0),  140,  
0, (141, 0),  3)));
+            Table.States (1102).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (141, 0),  3)));
+            Table.States (1103).Action_List.Set_Capacity (9);
+            Add_Action (Table.States (1103), 53, (158, 0), 632);
+            Add_Action (Table.States (1103), 76, (118, 0), 633);
+            Add_Action (Table.States (1103), 78, Reduce, (317, 1),  3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (1103), 82, Reduce, (168, 1),  3, null, 
null);
+            Add_Action (Table.States (1103), 86, Reduce, (317, 1),  3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (1103), 87, (296, 0), 239);
+            Add_Action (Table.States (1103), 90, Reduce, (168, 1),  3, null, 
null);
+            Add_Conflict (Table.States (1103), 90, (317, 1),  3, 
subtype_indication_1'Access, null);
+            Add_Action (Table.States (1103), 104, (325, 0), 241);
+            Add_Action (Table.States (1103), 105, (325, 1), 242);
+            Table.States (1103).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (1103), 118, 243);
+            Add_Goto (Table.States (1103), 158, 977);
+            Add_Goto (Table.States (1103), 227, 635);
+            Add_Goto (Table.States (1103), 325, 244);
+            Table.States (1103).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((168, 1),  242,  0,
+            (168, 1),  3), ((242, 0),  242,  5, (2147483647, 0),  0), ((242, 
1),  242,  2, (2147483647, 0),  0), ((275,
+            0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),  0),
+            ((317, 0),  242,  4, (2147483647, 0),  0), ((317, 1),  242,  0, 
(317, 1),  3)));
+            Table.States (1103).Minimal_Complete_Actions := To_Vector 
(((Reduce, (168, 1),  3), (Shift, (158, 0),  53,
+            632), (Reduce, (317, 1),  3)));
+            Table.States (1104).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (1104), (35, 78, 79, 86, 99), (127, 6),  
6, association_opt_6'Access, null);
+            Table.States (1104).Kernel := To_Vector ((0 => ((127, 6),  194,  
0, (127, 6),  6)));
+            Table.States (1104).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (127, 6),  6)));
+            Table.States (1105).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1105), (1 =>  78), (224, 1),  6, 
if_expression_1'Access, null);
+            Table.States (1105).Kernel := To_Vector ((0 => ((224, 1),  195,  
0, (224, 1),  6)));
+            Table.States (1105).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (224, 1),  6)));
             Table.States (1106).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1106), 81, 1189);
-            Table.States (1106).Kernel := To_Vector ((0 => (203, 20, 1, 
False)));
-            Table.States (1106).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 81, 1189)));
-            Table.States (1107).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (1107), (29, 47, 48, 50, 69, 71, 74, 
105), (202, 1), 7,
+            Add_Action (Table.States (1106), 68, (175, 0), 1193);
+            Table.States (1106).Kernel := To_Vector ((0 => ((175, 0),  195,  
1, (2147483647, 0),  0)));
+            Table.States (1106).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (175, 0),  68, 1193)));
+            Table.States (1107).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (1107), 3, (200, 2), 122);
+            Add_Action (Table.States (1107), 39, (261, 4), 123);
+            Add_Action (Table.States (1107), 40, (200, 3), 124);
+            Add_Action (Table.States (1107), 41, (261, 1), 125);
+            Add_Action (Table.States (1107), 52, (278, 0), 126);
+            Add_Action (Table.States (1107), 76, (120, 0), 127);
+            Add_Action (Table.States (1107), 77, (120, 5), 128);
+            Add_Action (Table.States (1107), 78, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1107), 81, (242, 8), 31);
+            Add_Action (Table.States (1107), 97, (333, 1), 129);
+            Add_Action (Table.States (1107), 98, (333, 0), 130);
+            Add_Action (Table.States (1107), 106, (261, 0), 131);
+            Add_Action (Table.States (1107), 107, (242, 5), 120);
+            Add_Action (Table.States (1107), 108, (242, 7), 34);
+            Add_Action (Table.States (1107), 109, (242, 6), 35);
+            Table.States (1107).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (1107), 120, 132);
+            Add_Goto (Table.States (1107), 131, 42);
+            Add_Goto (Table.States (1107), 194, 133);
+            Add_Goto (Table.States (1107), 195, 1194);
+            Add_Goto (Table.States (1107), 200, 135);
+            Add_Goto (Table.States (1107), 242, 136);
+            Add_Goto (Table.States (1107), 261, 137);
+            Add_Goto (Table.States (1107), 275, 93);
+            Add_Goto (Table.States (1107), 278, 138);
+            Add_Goto (Table.States (1107), 285, 139);
+            Add_Goto (Table.States (1107), 286, 140);
+            Add_Goto (Table.States (1107), 287, 141);
+            Add_Goto (Table.States (1107), 288, 142);
+            Add_Goto (Table.States (1107), 289, 143);
+            Add_Goto (Table.States (1107), 290, 144);
+            Add_Goto (Table.States (1107), 296, 98);
+            Add_Goto (Table.States (1107), 304, 145);
+            Add_Goto (Table.States (1107), 323, 146);
+            Add_Goto (Table.States (1107), 324, 147);
+            Add_Goto (Table.States (1107), 333, 148);
+            Table.States (1107).Kernel := To_Vector ((0 => ((224, 0),  22,  0, 
(195, 1),  0)));
+            Table.States (1107).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (1108).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (1108), (22, 23, 78), (176, 0),  2, 
elsif_expression_list_0'Access, null);
+            Table.States (1108).Kernel := To_Vector ((0 => ((176, 0),  175,  
0, (176, 0),  2)));
+            Table.States (1108).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (176, 0),  2)));
+            Table.States (1109).Action_List.Set_Capacity (20);
+            Add_Action (Table.States (1109), (10, 20, 21, 22, 23, 35, 37, 42, 
43, 53, 68, 74, 75, 78, 79, 82, 85, 86,
+            90, 99), (280, 0),  6, range_g_0'Access, null);
+            Table.States (1109).Kernel := To_Vector ((0 => ((280, 0),  78,  0, 
(280, 0),  6)));
+            Table.States (1109).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (280, 0),  6)));
+            Table.States (1110).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1110), (78, 86), (171, 0),  3, null, 
null);
+            Table.States (1110).Kernel := To_Vector ((0 => ((171, 0),  170,  
0, (171, 0),  3)));
+            Table.States (1110).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (171, 0),  3)));
+            Table.States (1111).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1111), (1 =>  107), (238, 0),  4, null, 
null);
+            Table.States (1111).Kernel := To_Vector ((0 => ((238, 0),  99,  0, 
(238, 0),  4)));
+            Table.States (1111).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (238, 0),  4)));
+            Table.States (1112).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1112), 53, (147, 0), 1195);
+            Table.States (1112).Kernel := To_Vector ((0 => ((147, 0),  304,  
5, (2147483647, 0),  0)));
+            Table.States (1112).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (147, 0),  53, 1195)));
+            Table.States (1113).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1113), 99, (284, 0), 1196);
+            Table.States (1113).Kernel := To_Vector ((0 => ((284, 0),  54,  1, 
(2147483647, 0),  0)));
+            Table.States (1113).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (284, 0),  99, 1196)));
+            Table.States (1114).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (1114), 3, (200, 2), 122);
+            Add_Action (Table.States (1114), 39, (261, 4), 123);
+            Add_Action (Table.States (1114), 40, (200, 3), 124);
+            Add_Action (Table.States (1114), 41, (261, 1), 125);
+            Add_Action (Table.States (1114), 52, (278, 0), 126);
+            Add_Action (Table.States (1114), 76, (120, 0), 127);
+            Add_Action (Table.States (1114), 77, (120, 5), 128);
+            Add_Action (Table.States (1114), 78, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1114), 81, (242, 8), 31);
+            Add_Action (Table.States (1114), 97, (333, 1), 129);
+            Add_Action (Table.States (1114), 98, (333, 0), 130);
+            Add_Action (Table.States (1114), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1114), 106, (261, 0), 131);
+            Add_Action (Table.States (1114), 107, (242, 5), 120);
+            Add_Action (Table.States (1114), 108, (242, 7), 34);
+            Add_Action (Table.States (1114), 109, (242, 6), 35);
+            Table.States (1114).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (1114), 120, 132);
+            Add_Goto (Table.States (1114), 131, 42);
+            Add_Goto (Table.States (1114), 194, 133);
+            Add_Goto (Table.States (1114), 195, 1197);
+            Add_Goto (Table.States (1114), 200, 135);
+            Add_Goto (Table.States (1114), 242, 136);
+            Add_Goto (Table.States (1114), 261, 137);
+            Add_Goto (Table.States (1114), 275, 93);
+            Add_Goto (Table.States (1114), 278, 138);
+            Add_Goto (Table.States (1114), 285, 139);
+            Add_Goto (Table.States (1114), 286, 140);
+            Add_Goto (Table.States (1114), 287, 141);
+            Add_Goto (Table.States (1114), 288, 142);
+            Add_Goto (Table.States (1114), 289, 143);
+            Add_Goto (Table.States (1114), 290, 144);
+            Add_Goto (Table.States (1114), 296, 98);
+            Add_Goto (Table.States (1114), 304, 145);
+            Add_Goto (Table.States (1114), 323, 146);
+            Add_Goto (Table.States (1114), 324, 147);
+            Add_Goto (Table.States (1114), 333, 148);
+            Table.States (1114).Kernel := To_Vector ((0 => ((257, 2),  85,  0, 
(195, 1),  0)));
+            Table.States (1114).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (1115).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (1115), 81, (242, 8), 31);
+            Add_Action (Table.States (1115), 107, (242, 5), 120);
+            Add_Action (Table.States (1115), 108, (242, 7), 34);
+            Add_Action (Table.States (1115), 109, (242, 6), 35);
+            Table.States (1115).Goto_List.Set_Capacity (4);
+            Add_Goto (Table.States (1115), 131, 42);
+            Add_Goto (Table.States (1115), 242, 1198);
+            Add_Goto (Table.States (1115), 275, 93);
+            Add_Goto (Table.States (1115), 296, 98);
+            Table.States (1115).Kernel := To_Vector ((((257, 0),  244,  2, 
(2147483647, 0),  0), ((257, 1),  244,  1,
+            (2147483647, 0),  0)));
+            Table.States (1115).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (1116).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1116), 83, (205, 6), 1199);
+            Table.States (1116).Kernel := To_Vector ((0 => ((205, 6),  20,  1, 
(2147483647, 0),  0)));
+            Table.States (1116).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (205, 6),  83, 1199)));
+            Table.States (1117).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (1117), (29, 47, 48, 50, 69, 71, 74, 
107), (204, 1),  7,
             formal_type_declaration_1'Access, null);
-            Table.States (1107).Kernel := To_Vector ((0 => (202, 97, 0, 
False)));
-            Table.States (1107).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 202, 7)));
-            Table.States (1108).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1108), (74, 97), (203, 2), 3, null, 
null);
-            Table.States (1108).Kernel := To_Vector ((0 => (203, 77, 0, 
False)));
-            Table.States (1108).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 203, 3)));
-            Table.States (1109).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (1109), 10, 1162);
-            Add_Action (Table.States (1109), 74, Reduce, (120, 1), 0, null, 
null);
-            Add_Action (Table.States (1109), 76, 236);
-            Add_Action (Table.States (1109), 85, 238);
-            Add_Action (Table.States (1109), 97, Reduce, (120, 1), 0, null, 
null);
-            Add_Action (Table.States (1109), 102, 240);
-            Add_Action (Table.States (1109), 103, 241);
-            Table.States (1109).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (1109), 116, 242);
-            Add_Goto (Table.States (1109), 120, 1190);
-            Add_Goto (Table.States (1109), 323, 243);
-            Table.States (1109).Kernel := To_Vector (((129, 240, 2, True), 
(204, 240, 2, False), (204, 240, 0, False),
-            (240, 240, 5, True), (240, 240, 2, True), (273, 240, 3, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True), (294, 240, 2, True)));
-            Table.States (1109).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 120, 0)));
-            Table.States (1110).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (1110), (29, 47, 48, 50, 69, 71, 74, 
105), (202, 0), 7,
+            Table.States (1117).Kernel := To_Vector ((0 => ((204, 1),  99,  0, 
(204, 1),  7)));
+            Table.States (1117).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (204, 1),  7)));
+            Table.States (1118).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1118), (74, 99), (205, 2),  3, null, 
null);
+            Table.States (1118).Kernel := To_Vector ((0 => ((205, 2),  78,  0, 
(205, 2),  3)));
+            Table.States (1118).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (205, 2),  3)));
+            Table.States (1119).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (1119), 10, (122, 0), 1172);
+            Add_Action (Table.States (1119), 74, Reduce, (122, 1),  0, null, 
null);
+            Add_Action (Table.States (1119), 76, (118, 0), 237);
+            Add_Action (Table.States (1119), 87, (296, 0), 239);
+            Add_Action (Table.States (1119), 99, Reduce, (122, 1),  0, null, 
null);
+            Add_Action (Table.States (1119), 104, (325, 0), 241);
+            Add_Action (Table.States (1119), 105, (325, 1), 242);
+            Table.States (1119).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (1119), 118, 243);
+            Add_Goto (Table.States (1119), 122, 1200);
+            Add_Goto (Table.States (1119), 325, 244);
+            Table.States (1119).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((206, 0),  242,  2,
+            (2147483647, 0),  0), ((206, 1),  242,  0, (122, 1),  0), ((242, 
0),  242,  5, (2147483647, 0),  0), ((242,
+            1),  242,  2, (2147483647, 0),  0), ((275, 0),  242,  3, 
(2147483647, 0),  0), ((296, 0),  242,  2,
+            (2147483647, 0),  0), ((296, 1),  242,  2, (2147483647, 0),  0), 
((296, 2),  242,  2, (2147483647, 0),  0),
+            ((296, 3),  242,  2, (2147483647, 0),  0)));
+            Table.States (1119).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (122, 1),  0)));
+            Table.States (1120).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (1120), (29, 47, 48, 50, 69, 71, 74, 
107), (204, 0),  7,
             formal_type_declaration_0'Access, null);
-            Table.States (1110).Kernel := To_Vector ((0 => (202, 97, 0, 
False)));
-            Table.States (1110).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 202, 7)));
-            Table.States (1111).Action_List.Set_Capacity (22);
-            Add_Action (Table.States (1111), 3, 122);
-            Add_Action (Table.States (1111), 15, 259);
-            Add_Action (Table.States (1111), 28, 260);
-            Add_Action (Table.States (1111), 32, 261);
-            Add_Action (Table.States (1111), 39, 123);
-            Add_Action (Table.States (1111), 40, 262);
-            Add_Action (Table.States (1111), 41, 125);
-            Add_Action (Table.States (1111), 44, 264);
-            Add_Action (Table.States (1111), 52, 126);
-            Add_Action (Table.States (1111), 76, 127);
-            Add_Action (Table.States (1111), 77, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (1111), 79, 31);
-            Add_Action (Table.States (1111), 80, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (1111), 81, 1191);
-            Add_Action (Table.States (1111), 84, Reduce, (125, 6), 0, null, 
null);
-            Add_Action (Table.States (1111), 88, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (1111), 95, 128);
-            Add_Action (Table.States (1111), 96, 129);
-            Add_Action (Table.States (1111), 104, 130);
-            Add_Action (Table.States (1111), 105, 120);
-            Add_Action (Table.States (1111), 106, 34);
-            Add_Action (Table.States (1111), 107, 265);
-            Table.States (1111).Goto_List.Set_Capacity (29);
-            Add_Goto (Table.States (1111), 118, 131);
-            Add_Goto (Table.States (1111), 125, 266);
-            Add_Goto (Table.States (1111), 126, 407);
-            Add_Goto (Table.States (1111), 129, 42);
-            Add_Goto (Table.States (1111), 137, 268);
-            Add_Goto (Table.States (1111), 154, 408);
-            Add_Goto (Table.States (1111), 166, 270);
-            Add_Goto (Table.States (1111), 167, 271);
-            Add_Goto (Table.States (1111), 192, 409);
-            Add_Goto (Table.States (1111), 198, 134);
-            Add_Goto (Table.States (1111), 222, 274);
-            Add_Goto (Table.States (1111), 240, 275);
-            Add_Goto (Table.States (1111), 259, 136);
-            Add_Goto (Table.States (1111), 273, 93);
-            Add_Goto (Table.States (1111), 274, 276);
-            Add_Goto (Table.States (1111), 276, 137);
-            Add_Goto (Table.States (1111), 278, 410);
-            Add_Goto (Table.States (1111), 279, 411);
-            Add_Goto (Table.States (1111), 283, 138);
-            Add_Goto (Table.States (1111), 284, 139);
-            Add_Goto (Table.States (1111), 285, 140);
-            Add_Goto (Table.States (1111), 286, 141);
-            Add_Goto (Table.States (1111), 287, 142);
-            Add_Goto (Table.States (1111), 288, 143);
-            Add_Goto (Table.States (1111), 294, 98);
-            Add_Goto (Table.States (1111), 302, 278);
-            Add_Goto (Table.States (1111), 321, 145);
-            Add_Goto (Table.States (1111), 322, 146);
-            Add_Goto (Table.States (1111), 331, 147);
-            Table.States (1111).Kernel := To_Vector (((116, 76, 1, False), 
(116, 76, 3, False), (206, 76, 2, False),
-            (240, 76, 4, True)));
-            Table.States (1111).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 126, 0)));
-            Table.States (1111).Minimal_Complete_Actions_Recursive := True;
-            Table.States (1112).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1112), 74, 338);
-            Add_Action (Table.States (1112), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (1112).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1112), 123, 1192);
-            Table.States (1112).Kernel := To_Vector ((0 => (205, 206, 1, 
False)));
-            Table.States (1112).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (1113).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (1113), (29, 47, 48, 50, 69, 71, 74, 
105), (201, 0), 7,
+            Table.States (1120).Kernel := To_Vector ((0 => ((204, 0),  99,  0, 
(204, 0),  7)));
+            Table.States (1120).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (204, 0),  7)));
+            Table.States (1121).Action_List.Set_Capacity (23);
+            Add_Action (Table.States (1121), 3, (200, 2), 122);
+            Add_Action (Table.States (1121), 15, (139, 0), 260);
+            Add_Action (Table.States (1121), 28, (127, 6), 261);
+            Add_Action (Table.States (1121), 32, (224, 0), 262);
+            Add_Action (Table.States (1121), 39, (261, 4), 123);
+            Add_Action (Table.States (1121), 40, (168, 1), 263);
+            Add_Action (Table.States (1121), 41, (261, 1), 125);
+            Add_Action (Table.States (1121), 44, (168, 3), 265);
+            Add_Action (Table.States (1121), 52, (278, 0), 126);
+            Add_Action (Table.States (1121), 76, (120, 0), 127);
+            Add_Action (Table.States (1121), 77, (120, 5), 128);
+            Add_Action (Table.States (1121), 78, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (1121), 81, (242, 8), 31);
+            Add_Action (Table.States (1121), 82, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (1121), 83, (208, 0), 1201);
+            Add_Action (Table.States (1121), 86, Reduce, (127, 5),  0, null, 
null);
+            Add_Action (Table.States (1121), 90, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (1121), 97, (333, 1), 129);
+            Add_Action (Table.States (1121), 98, (333, 0), 130);
+            Add_Action (Table.States (1121), 106, (261, 0), 131);
+            Add_Action (Table.States (1121), 107, (242, 5), 120);
+            Add_Action (Table.States (1121), 108, (242, 7), 34);
+            Add_Action (Table.States (1121), 109, (127, 0), 266);
+            Table.States (1121).Goto_List.Set_Capacity (29);
+            Add_Goto (Table.States (1121), 120, 132);
+            Add_Goto (Table.States (1121), 127, 267);
+            Add_Goto (Table.States (1121), 128, 409);
+            Add_Goto (Table.States (1121), 131, 42);
+            Add_Goto (Table.States (1121), 139, 269);
+            Add_Goto (Table.States (1121), 156, 410);
+            Add_Goto (Table.States (1121), 168, 271);
+            Add_Goto (Table.States (1121), 169, 272);
+            Add_Goto (Table.States (1121), 194, 411);
+            Add_Goto (Table.States (1121), 200, 135);
+            Add_Goto (Table.States (1121), 224, 275);
+            Add_Goto (Table.States (1121), 242, 276);
+            Add_Goto (Table.States (1121), 261, 137);
+            Add_Goto (Table.States (1121), 275, 93);
+            Add_Goto (Table.States (1121), 276, 277);
+            Add_Goto (Table.States (1121), 278, 138);
+            Add_Goto (Table.States (1121), 280, 412);
+            Add_Goto (Table.States (1121), 281, 413);
+            Add_Goto (Table.States (1121), 285, 139);
+            Add_Goto (Table.States (1121), 286, 140);
+            Add_Goto (Table.States (1121), 287, 141);
+            Add_Goto (Table.States (1121), 288, 142);
+            Add_Goto (Table.States (1121), 289, 143);
+            Add_Goto (Table.States (1121), 290, 144);
+            Add_Goto (Table.States (1121), 296, 98);
+            Add_Goto (Table.States (1121), 304, 279);
+            Add_Goto (Table.States (1121), 323, 146);
+            Add_Goto (Table.States (1121), 324, 147);
+            Add_Goto (Table.States (1121), 333, 148);
+            Table.States (1121).Kernel := To_Vector ((((118, 0),  76,  1, 
(2147483647, 0),  0), ((118, 1),  76,  3,
+            (2147483647, 0),  0), ((208, 0),  76,  2, (2147483647, 0),  0), 
((242, 0),  76,  4, (2147483647, 0),  0)));
+            Table.States (1121).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (128, 1),  0)));
+            Table.States (1122).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1122), 74, (125, 0), 340);
+            Add_Action (Table.States (1122), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (1122).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1122), 125, 1202);
+            Table.States (1122).Kernel := To_Vector ((0 => ((207, 0),  208,  
1, (2147483647, 0),  0)));
+            Table.States (1122).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (1123).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (1123), (29, 47, 48, 50, 69, 71, 74, 
107), (203, 0),  7,
             formal_subprogram_declaration_0'Access, null);
-            Table.States (1113).Kernel := To_Vector ((0 => (201, 97, 0, 
False)));
-            Table.States (1113).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 201, 7)));
-            Table.States (1114).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1114), 97, 1193);
-            Table.States (1114).Kernel := To_Vector ((0 => (199, 123, 1, 
False)));
-            Table.States (1114).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1193)));
-            Table.States (1115).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1115), 74, 338);
-            Add_Action (Table.States (1115), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (1115).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1115), 123, 1194);
-            Table.States (1115).Kernel := To_Vector ((0 => (199, 193, 1, 
False)));
-            Table.States (1115).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (1116).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (1116), (29, 47, 48, 50, 69, 71, 74, 
105), (199, 2), 7,
+            Table.States (1123).Kernel := To_Vector ((0 => ((203, 0),  99,  0, 
(203, 0),  7)));
+            Table.States (1123).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (203, 0),  7)));
+            Table.States (1124).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1124), 99, (201, 1), 1203);
+            Table.States (1124).Kernel := To_Vector ((0 => ((201, 1),  125,  
1, (2147483647, 0),  0)));
+            Table.States (1124).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (201, 1),  99, 1203)));
+            Table.States (1125).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1125), 74, (125, 0), 340);
+            Add_Action (Table.States (1125), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (1125).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1125), 125, 1204);
+            Table.States (1125).Kernel := To_Vector ((0 => ((201, 0),  195,  
1, (2147483647, 0),  0)));
+            Table.States (1125).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (1126).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (1126), (29, 47, 48, 50, 69, 71, 74, 
107), (201, 2),  7,
             formal_object_declaration_2'Access, null);
-            Table.States (1116).Kernel := To_Vector ((0 => (199, 97, 0, 
False)));
-            Table.States (1116).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 199, 7)));
-            Table.States (1117).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1117), 97, 1195);
-            Table.States (1117).Kernel := To_Vector ((0 => (223, 32, 1, 
False)));
-            Table.States (1117).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1195)));
-            Table.States (1118).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (1118), (22, 23, 24), (175, 0), 4, 
elsif_statement_item_0'Access, null);
-            Table.States (1118).Kernel := To_Vector ((0 => (175, 301, 0, 
False)));
-            Table.States (1118).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 175, 4)));
-            Table.States (1119).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1119), 32, 1196);
-            Table.States (1119).Kernel := To_Vector ((0 => (223, 24, 2, 
False)));
-            Table.States (1119).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 32, 1196)));
-            Table.States (1120).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (1120), (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, 79, 94, 105, 106,
-            107, 108), (223, 2), 8, if_statement_2'Access, null);
-            Table.States (1120).Kernel := To_Vector ((0 => (223, 97, 0, 
False)));
-            Table.States (1120).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 223, 8)));
-            Table.States (1121).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1121), 24, 1197);
-            Table.States (1121).Kernel := To_Vector ((0 => (248, 219, 2, 
False)));
-            Table.States (1121).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1197)));
-            Table.States (1122).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1122), 97, 1198);
-            Table.States (1122).Kernel := To_Vector ((0 => (248, 241, 1, 
False)));
-            Table.States (1122).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1198)));
-            Table.States (1123).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (1123), 79, 31);
-            Add_Action (Table.States (1123), 97, Reduce, (241, 1), 0, null, 
null);
-            Add_Action (Table.States (1123), 105, 120);
-            Add_Action (Table.States (1123), 106, 34);
-            Add_Action (Table.States (1123), 107, 35);
-            Table.States (1123).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (1123), 129, 42);
-            Add_Goto (Table.States (1123), 240, 638);
-            Add_Goto (Table.States (1123), 241, 1199);
-            Add_Goto (Table.States (1123), 273, 93);
-            Add_Goto (Table.States (1123), 294, 98);
-            Table.States (1123).Kernel := To_Vector ((0 => (252, 24, 0, 
False)));
-            Table.States (1123).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 241, 0)));
-            Table.States (1124).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (1124), 28, 1200);
-            Add_Action (Table.States (1124), 77, Reduce, (255, 4), 0, null, 
null);
-            Add_Action (Table.States (1124), 97, Reduce, (255, 4), 0, null, 
null);
-            Add_Action (Table.States (1124), 105, 165);
-            Table.States (1124).Goto_List.Set_Capacity (3);
-            Add_Goto (Table.States (1124), 220, 496);
-            Add_Goto (Table.States (1124), 255, 497);
-            Add_Goto (Table.States (1124), 256, 498);
-            Table.States (1124).Kernel := To_Vector (((178, 76, 5, False), 
(200, 76, 1, False)));
-            Table.States (1124).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 256, 0)));
-            Table.States (1125).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1125), 72, 1201);
-            Table.States (1125).Kernel := To_Vector ((0 => (177, 178, 5, 
False)));
-            Table.States (1125).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 72, 1201)));
-            Table.States (1126).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1126), (1 =>  72), (178, 1), 1, null, 
null);
-            Table.States (1126).Kernel := To_Vector ((0 => (178, 254, 0, 
False)));
-            Table.States (1126).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 178, 1)));
+            Table.States (1126).Kernel := To_Vector ((0 => ((201, 2),  99,  0, 
(201, 2),  7)));
+            Table.States (1126).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (201, 2),  7)));
             Table.States (1127).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1127), 97, 1202);
-            Table.States (1127).Kernel := To_Vector ((0 => (265, 221, 1, 
False)));
-            Table.States (1127).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1202)));
-            Table.States (1128).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1128), 10, 1016);
-            Add_Action (Table.States (1128), 74, 1203);
-            Table.States (1128).Kernel := To_Vector (((228, 228, 2, True), 
(272, 228, 3, False)));
-            Table.States (1128).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 1203)));
-            Table.States (1129).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1129), (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, 
79, 94, 105, 106, 107, 108), (272, 1), 8,
-            protected_type_declaration_1'Access, 
protected_type_declaration_1_check'Access);
-            Table.States (1129).Kernel := To_Vector ((0 => (272, 97, 0, 
False)));
-            Table.States (1129).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 272, 8)));
-            Table.States (1130).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (1130), 10, Reduce, (228, 0), 3, 
interface_list_0'Access, null);
-            Add_Action (Table.States (1130), 74, Reduce, (228, 0), 3, 
interface_list_0'Access, null);
-            Add_Action (Table.States (1130), 76, 236);
-            Add_Action (Table.States (1130), 85, 238);
-            Add_Action (Table.States (1130), 97, Reduce, (228, 0), 3, 
interface_list_0'Access, null);
-            Add_Action (Table.States (1130), 102, 240);
-            Add_Action (Table.States (1130), 103, 241);
-            Table.States (1130).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (1130), 116, 242);
-            Add_Goto (Table.States (1130), 323, 243);
-            Table.States (1130).Kernel := To_Vector (((129, 240, 2, True), 
(228, 240, 0, True), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (1130).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 228, 3)));
-            Table.States (1130).Minimal_Complete_Actions_Recursive := True;
+            Add_Action (Table.States (1127), 99, (225, 1), 1205);
+            Table.States (1127).Kernel := To_Vector ((0 => ((225, 1),  32,  1, 
(2147483647, 0),  0)));
+            Table.States (1127).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (225, 1),  99, 1205)));
+            Table.States (1128).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (1128), (22, 23, 24), (177, 0),  4, 
elsif_statement_item_0'Access, null);
+            Table.States (1128).Kernel := To_Vector ((0 => ((177, 0),  303,  
0, (177, 0),  4)));
+            Table.States (1128).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (177, 0),  4)));
+            Table.States (1129).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1129), 32, (225, 0), 1206);
+            Table.States (1129).Kernel := To_Vector ((0 => ((225, 0),  24,  2, 
(2147483647, 0),  0)));
+            Table.States (1129).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (225, 0),  32, 1206)));
+            Table.States (1130).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (1130), (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, 81, 96, 107, 108,
+            109, 110), (225, 2),  8, if_statement_2'Access, null);
+            Table.States (1130).Kernel := To_Vector ((0 => ((225, 2),  99,  0, 
(225, 2),  8)));
+            Table.States (1130).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (225, 2),  8)));
             Table.States (1131).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1131), 97, 1204);
-            Table.States (1131).Kernel := To_Vector ((0 => (305, 267, 1, 
False)));
-            Table.States (1131).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1204)));
-         end Subr_19;
-         procedure Subr_20
-         is begin
-            Table.States (1132).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1132), 97, Reduce, (221, 1), 0, null, 
null);
-            Add_Action (Table.States (1132), 105, 150);
-            Table.States (1132).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1132), 221, 1205);
-            Table.States (1132).Kernel := To_Vector ((0 => (267, 24, 0, 
False)));
-            Table.States (1132).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 0)));
-            Table.States (1133).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1133), (21, 97), (195, 0), 7, 
extended_return_object_declaration_0'Access, null);
-            Table.States (1133).Kernel := To_Vector ((0 => (195, 193, 0, 
False)));
-            Table.States (1133).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 195, 7)));
-            Table.States (1134).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (1134), (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, 79, 94, 105, 106,
-            107, 108), (127, 0), 8, asynchronous_select_0'Access, null);
-            Table.States (1134).Kernel := To_Vector ((0 => (127, 97, 0, 
False)));
-            Table.States (1134).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 127, 8)));
+            Add_Action (Table.States (1131), 24, (250, 0), 1207);
+            Table.States (1131).Kernel := To_Vector ((0 => ((250, 0),  221,  
2, (2147483647, 0),  0)));
+            Table.States (1131).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (250, 0),  24, 1207)));
+            Table.States (1132).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1132), 99, (250, 1), 1208);
+            Table.States (1132).Kernel := To_Vector ((0 => ((250, 1),  243,  
1, (2147483647, 0),  0)));
+            Table.States (1132).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (250, 1),  99, 1208)));
+            Table.States (1133).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (1133), 81, (242, 8), 31);
+            Add_Action (Table.States (1133), 99, Reduce, (243, 1),  0, null, 
null);
+            Add_Action (Table.States (1133), 107, (242, 5), 120);
+            Add_Action (Table.States (1133), 108, (242, 7), 34);
+            Add_Action (Table.States (1133), 109, (242, 6), 35);
+            Table.States (1133).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (1133), 131, 42);
+            Add_Goto (Table.States (1133), 242, 644);
+            Add_Goto (Table.States (1133), 243, 1209);
+            Add_Goto (Table.States (1133), 275, 93);
+            Add_Goto (Table.States (1133), 296, 98);
+            Table.States (1133).Kernel := To_Vector ((0 => ((254, 0),  24,  0, 
(243, 1),  0)));
+            Table.States (1133).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (243, 1),  0)));
+            Table.States (1134).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (1134), 28, (180, 0), 1210);
+            Add_Action (Table.States (1134), 78, Reduce, (257, 4),  0, null, 
null);
+            Add_Action (Table.States (1134), 99, Reduce, (257, 4),  0, null, 
null);
+            Add_Action (Table.States (1134), 107, (222, 1), 166);
+            Table.States (1134).Goto_List.Set_Capacity (3);
+            Add_Goto (Table.States (1134), 222, 500);
+            Add_Goto (Table.States (1134), 257, 501);
+            Add_Goto (Table.States (1134), 258, 502);
+            Table.States (1134).Kernel := To_Vector ((((180, 0),  76,  5, 
(2147483647, 0),  0), ((202, 0),  76,  1,
+            (2147483647, 0),  0)));
+            Table.States (1134).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (258, 1),  0)));
             Table.States (1135).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1135), 24, 1206);
-            Table.States (1135).Kernel := To_Vector ((0 => (317, 219, 2, 
False)));
-            Table.States (1135).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1206)));
-            Table.States (1136).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1136), 10, 1016);
-            Add_Action (Table.States (1136), 74, 1207);
-            Table.States (1136).Kernel := To_Vector (((228, 228, 2, True), 
(320, 228, 3, False)));
-            Table.States (1136).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 1207)));
-            Table.States (1137).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1137), 97, Reduce, (221, 1), 0, null, 
null);
-            Add_Action (Table.States (1137), 105, 150);
-            Table.States (1137).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1137), 221, 1208);
-            Table.States (1137).Kernel := To_Vector ((0 => (320, 24, 1, 
False)));
-            Table.States (1137).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 0)));
-            Table.States (1138).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1138), 24, 1209);
-            Table.States (1138).Kernel := To_Vector ((0 => (306, 319, 2, 
False)));
-            Table.States (1138).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1209)));
+            Add_Action (Table.States (1135), 72, (179, 0), 1211);
+            Table.States (1135).Kernel := To_Vector ((0 => ((179, 0),  180,  
5, (2147483647, 0),  0)));
+            Table.States (1135).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (179, 0),  72, 1211)));
+            Table.States (1136).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1136), (1 =>  72), (180, 1),  1, null, 
null);
+            Table.States (1136).Kernel := To_Vector ((0 => ((180, 1),  256,  
0, (180, 1),  1)));
+            Table.States (1136).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (180, 1),  1)));
+            Table.States (1137).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1137), 99, (267, 0), 1212);
+            Table.States (1137).Kernel := To_Vector ((0 => ((267, 0),  223,  
1, (2147483647, 0),  0)));
+            Table.States (1137).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (267, 0),  99, 1212)));
+            Table.States (1138).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1138), 10, (230, 0), 1026);
+            Add_Action (Table.States (1138), 74, (274, 0), 1213);
+            Table.States (1138).Kernel := To_Vector ((((230, 0),  230,  2, 
(2147483647, 0),  0), ((274, 0),  230,  3,
+            (2147483647, 0),  0)));
+            Table.States (1138).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (274, 0),  74, 1213)));
             Table.States (1139).Action_List.Set_Capacity (41);
             Add_Action (Table.States (1139), (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, 
79, 94, 105, 106, 107, 108), (306, 1), 8,
-            single_task_declaration_1'Access, 
single_task_declaration_1_check'Access);
-            Table.States (1139).Kernel := To_Vector ((0 => (306, 97, 0, 
False)));
-            Table.States (1139).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 306, 8)));
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (274, 1),  8,
+            protected_type_declaration_1'Access, 
protected_type_declaration_1_check'Access);
+            Table.States (1139).Kernel := To_Vector ((0 => ((274, 1),  99,  0, 
(274, 1),  8)));
+            Table.States (1139).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (274, 1),  8)));
             Table.States (1140).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (1140), 76, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (1140), 77, Reduce, (243, 2), 3, 
null_exclusion_opt_name_type_2'Access, null);
-            Add_Action (Table.States (1140), 83, Reduce, (243, 2), 3, 
null_exclusion_opt_name_type_2'Access, null);
-            Add_Action (Table.States (1140), 85, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (1140), 97, Reduce, (243, 2), 3, 
null_exclusion_opt_name_type_2'Access, null);
-            Add_Action (Table.States (1140), 102, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Add_Action (Table.States (1140), 103, Reduce, (240, 5), 1, 
name_5'Access, name_5_check'Access);
-            Table.States (1140).Kernel := To_Vector (((240, 105, 0, False), 
(243, 105, 0, False)));
-            Table.States (1140).Minimal_Complete_Actions := To_Vector 
(((Reduce, 240, 1), (Reduce, 243, 3)));
-            Table.States (1141).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (1141), 76, Reduce, (240, 2), 1, null, 
name_2_check'Access);
-            Add_Action (Table.States (1141), 77, Reduce, (243, 3), 3, 
null_exclusion_opt_name_type_3'Access, null);
-            Add_Action (Table.States (1141), 83, Reduce, (243, 3), 3, 
null_exclusion_opt_name_type_3'Access, null);
-            Add_Action (Table.States (1141), 85, Reduce, (240, 2), 1, null, 
name_2_check'Access);
-            Add_Action (Table.States (1141), 97, Reduce, (243, 3), 3, 
null_exclusion_opt_name_type_3'Access, null);
-            Add_Action (Table.States (1141), 102, Reduce, (240, 2), 1, null, 
name_2_check'Access);
-            Add_Action (Table.States (1141), 103, Reduce, (240, 2), 1, null, 
name_2_check'Access);
-            Table.States (1141).Kernel := To_Vector (((240, 294, 0, True), 
(243, 294, 0, False)));
-            Table.States (1141).Minimal_Complete_Actions := To_Vector 
(((Reduce, 240, 1), (Reduce, 243, 3)));
-            Table.States (1141).Minimal_Complete_Actions_Recursive := True;
+            Add_Action (Table.States (1140), 10, Reduce, (230, 0),  3, 
interface_list_0'Access, null);
+            Add_Action (Table.States (1140), 74, Reduce, (230, 0),  3, 
interface_list_0'Access, null);
+            Add_Action (Table.States (1140), 76, (118, 0), 237);
+            Add_Action (Table.States (1140), 87, (296, 0), 239);
+            Add_Action (Table.States (1140), 99, Reduce, (230, 0),  3, 
interface_list_0'Access, null);
+            Add_Action (Table.States (1140), 104, (325, 0), 241);
+            Add_Action (Table.States (1140), 105, (325, 1), 242);
+            Table.States (1140).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (1140), 118, 243);
+            Add_Goto (Table.States (1140), 325, 244);
+            Table.States (1140).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((230, 0),  242,  0,
+            (230, 0),  3), ((242, 0),  242,  5, (2147483647, 0),  0), ((242, 
1),  242,  2, (2147483647, 0),  0), ((275,
+            0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (1140).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (230, 0),  3)));
+            Table.States (1141).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1141), 99, (307, 0), 1214);
+            Table.States (1141).Kernel := To_Vector ((0 => ((307, 0),  269,  
1, (2147483647, 0),  0)));
+            Table.States (1141).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (307, 0),  99, 1214)));
             Table.States (1142).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1142), (77, 97), (171, 1), 5, null, 
null);
-            Table.States (1142).Kernel := To_Vector ((0 => (171, 193, 0, 
False)));
-            Table.States (1142).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 171, 5)));
+            Add_Action (Table.States (1142), 99, Reduce, (223, 1),  0, null, 
null);
+            Add_Action (Table.States (1142), 107, (223, 0), 151);
+            Table.States (1142).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1142), 223, 1215);
+            Table.States (1142).Kernel := To_Vector ((0 => ((269, 0),  24,  0, 
(223, 1),  0)));
+            Table.States (1142).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (223, 1),  0)));
             Table.States (1143).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1143), (77, 97), (171, 0), 5, null, 
null);
-            Table.States (1143).Kernel := To_Vector ((0 => (171, 193, 0, 
False)));
-            Table.States (1143).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 171, 5)));
-            Table.States (1144).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1144), 42, 1210);
-            Table.States (1144).Kernel := To_Vector ((0 => (121, 77, 2, 
False)));
-            Table.States (1144).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 42, 1210)));
+            Add_Action (Table.States (1143), (21, 99), (197, 0),  7, 
extended_return_object_declaration_0'Access,
+            null);
+            Table.States (1143).Kernel := To_Vector ((0 => ((197, 0),  195,  
0, (197, 0),  7)));
+            Table.States (1143).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (197, 0),  7)));
+            Table.States (1144).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (1144), (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, 81, 96, 107, 108,
+            109, 110), (129, 0),  8, asynchronous_select_0'Access, null);
+            Table.States (1144).Kernel := To_Vector ((0 => ((129, 0),  99,  0, 
(129, 0),  8)));
+            Table.States (1144).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (129, 0),  8)));
             Table.States (1145).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1145), 42, 1211);
-            Table.States (1145).Kernel := To_Vector ((0 => (121, 77, 2, 
False)));
-            Table.States (1145).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 42, 1211)));
-            Table.States (1146).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (1146), 79, 31);
-            Add_Action (Table.States (1146), 105, 120);
-            Add_Action (Table.States (1146), 106, 34);
-            Add_Action (Table.States (1146), 107, 35);
-            Table.States (1146).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (1146), 129, 42);
-            Add_Goto (Table.States (1146), 226, 1212);
-            Add_Goto (Table.States (1146), 240, 1213);
-            Add_Goto (Table.States (1146), 273, 93);
-            Add_Goto (Table.States (1146), 294, 98);
-            Table.States (1146).Kernel := To_Vector ((0 => (227, 84, 3, 
True)));
-            Table.States (1146).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (1146).Minimal_Complete_Actions_Recursive := True;
-            Table.States (1147).Action_List.Set_Capacity (13);
-            Add_Action (Table.States (1147), 3, 122);
-            Add_Action (Table.States (1147), 39, 123);
-            Add_Action (Table.States (1147), 40, 124);
-            Add_Action (Table.States (1147), 41, 125);
-            Add_Action (Table.States (1147), 76, 127);
-            Add_Action (Table.States (1147), 79, 31);
-            Add_Action (Table.States (1147), 81, 1214);
-            Add_Action (Table.States (1147), 95, 128);
-            Add_Action (Table.States (1147), 96, 129);
-            Add_Action (Table.States (1147), 104, 130);
-            Add_Action (Table.States (1147), 105, 120);
-            Add_Action (Table.States (1147), 106, 34);
-            Add_Action (Table.States (1147), 107, 35);
-            Table.States (1147).Goto_List.Set_Capacity (12);
-            Add_Goto (Table.States (1147), 118, 131);
-            Add_Goto (Table.States (1147), 129, 42);
-            Add_Goto (Table.States (1147), 198, 134);
-            Add_Goto (Table.States (1147), 240, 275);
-            Add_Goto (Table.States (1147), 259, 136);
-            Add_Goto (Table.States (1147), 273, 93);
-            Add_Goto (Table.States (1147), 278, 782);
-            Add_Goto (Table.States (1147), 294, 98);
-            Add_Goto (Table.States (1147), 302, 482);
-            Add_Goto (Table.States (1147), 321, 145);
-            Add_Goto (Table.States (1147), 322, 146);
-            Add_Goto (Table.States (1147), 331, 147);
-            Table.States (1147).Kernel := To_Vector (((156, 53, 3, False), 
(226, 53, 1, False)));
-            Table.States (1147).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 81, 1214)));
-            Table.States (1148).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (1148), 53, 1046);
-            Add_Action (Table.States (1148), 74, Reduce, (280, 1), 0, null, 
null);
-            Add_Action (Table.States (1148), 97, Reduce, (280, 1), 0, null, 
null);
-            Table.States (1148).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1148), 280, 1215);
-            Table.States (1148).Kernel := To_Vector ((0 => (327, 193, 0, 
False)));
-            Table.States (1148).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 280, 0)));
-            Table.States (1149).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1149), 86, 1216);
-            Table.States (1149).Kernel := To_Vector ((0 => (280, 302, 2, 
False)));
-            Table.States (1149).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 86, 1216)));
-            Table.States (1150).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (1150), 10, 1016);
-            Add_Action (Table.States (1150), 74, Reduce, (229, 0), 4, null, 
null);
-            Add_Action (Table.States (1150), 97, Reduce, (229, 0), 4, null, 
null);
-            Table.States (1150).Kernel := To_Vector (((228, 228, 2, True), 
(229, 228, 0, False)));
-            Table.States (1150).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 229, 4)));
-            Table.States (1151).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (1151), 10, 1016);
-            Add_Action (Table.States (1151), 74, Reduce, (229, 2), 4, null, 
null);
-            Add_Action (Table.States (1151), 97, Reduce, (229, 2), 4, null, 
null);
-            Table.States (1151).Kernel := To_Vector (((228, 228, 2, True), 
(229, 228, 0, False)));
-            Table.States (1151).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 229, 4)));
+            Add_Action (Table.States (1145), 24, (319, 0), 1216);
+            Table.States (1145).Kernel := To_Vector ((0 => ((319, 0),  221,  
2, (2147483647, 0),  0)));
+            Table.States (1145).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (319, 0),  24, 1216)));
+            Table.States (1146).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1146), 10, (230, 0), 1026);
+            Add_Action (Table.States (1146), 74, (322, 0), 1217);
+            Table.States (1146).Kernel := To_Vector ((((230, 0),  230,  2, 
(2147483647, 0),  0), ((322, 0),  230,  3,
+            (2147483647, 0),  0)));
+            Table.States (1146).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (322, 0),  74, 1217)));
+            Table.States (1147).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1147), 99, Reduce, (223, 1),  0, null, 
null);
+            Add_Action (Table.States (1147), 107, (223, 0), 151);
+            Table.States (1147).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1147), 223, 1218);
+            Table.States (1147).Kernel := To_Vector ((0 => ((322, 1),  24,  1, 
(2147483647, 0),  0)));
+            Table.States (1147).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (223, 1),  0)));
+            Table.States (1148).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1148), 24, (308, 0), 1219);
+            Table.States (1148).Kernel := To_Vector ((0 => ((308, 0),  321,  
2, (2147483647, 0),  0)));
+            Table.States (1148).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (308, 0),  24, 1219)));
+            Table.States (1149).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1149), (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, 
81, 96, 107, 108, 109, 110), (308, 1),  8,
+            single_task_declaration_1'Access, 
single_task_declaration_1_check'Access);
+            Table.States (1149).Kernel := To_Vector ((0 => ((308, 1),  99,  0, 
(308, 1),  8)));
+            Table.States (1149).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (308, 1),  8)));
+            Table.States (1150).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (1150), 76, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (1150), 78, Reduce, (245, 2),  3, 
null_exclusion_opt_name_type_2'Access, null);
+            Add_Action (Table.States (1150), 85, Reduce, (245, 2),  3, 
null_exclusion_opt_name_type_2'Access, null);
+            Add_Action (Table.States (1150), 87, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (1150), 99, Reduce, (245, 2),  3, 
null_exclusion_opt_name_type_2'Access, null);
+            Add_Action (Table.States (1150), 104, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Add_Action (Table.States (1150), 105, Reduce, (242, 5),  1, 
name_5'Access, name_5_check'Access);
+            Table.States (1150).Kernel := To_Vector ((((242, 5),  107,  0, 
(242, 5),  1), ((245, 2),  107,  0, (245,
+            2),  3)));
+            Table.States (1150).Minimal_Complete_Actions := To_Vector 
(((Reduce, (242, 5),  1), (Reduce, (245, 2),
+            3)));
+            Table.States (1151).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (1151), 76, Reduce, (242, 2),  1, null, 
name_2_check'Access);
+            Add_Action (Table.States (1151), 78, Reduce, (245, 3),  3, 
null_exclusion_opt_name_type_3'Access, null);
+            Add_Action (Table.States (1151), 85, Reduce, (245, 3),  3, 
null_exclusion_opt_name_type_3'Access, null);
+            Add_Action (Table.States (1151), 87, Reduce, (242, 2),  1, null, 
name_2_check'Access);
+            Add_Action (Table.States (1151), 99, Reduce, (245, 3),  3, 
null_exclusion_opt_name_type_3'Access, null);
+            Add_Action (Table.States (1151), 104, Reduce, (242, 2),  1, null, 
name_2_check'Access);
+            Add_Action (Table.States (1151), 105, Reduce, (242, 2),  1, null, 
name_2_check'Access);
+            Table.States (1151).Kernel := To_Vector ((((242, 2),  296,  0, 
(242, 2),  1), ((245, 3),  296,  0, (245,
+            3),  3)));
+            Table.States (1151).Minimal_Complete_Actions := To_Vector 
(((Reduce, (242, 2),  1), (Reduce, (245, 3),
+            3)));
+         end Subr_20;
+         procedure Subr_21
+         is begin
             Table.States (1152).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1152), (74, 97), (327, 1), 4, null, 
null);
-            Table.States (1152).Kernel := To_Vector ((0 => (327, 302, 0, 
False)));
-            Table.States (1152).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 327, 4)));
-            Table.States (1153).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1153), 72, 1217);
-            Table.States (1153).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (1153), 329, 1218);
-            Add_Goto (Table.States (1153), 330, 1219);
-            Table.States (1153).Kernel := To_Vector ((0 => (328, 35, 5, 
False)));
-            Table.States (1153).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 72, 1217)));
-            Table.States (1154).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1154), (74, 97), (281, 0), 4, 
record_definition_0'Access, null);
-            Table.States (1154).Kernel := To_Vector ((0 => (281, 54, 0, 
False)));
-            Table.States (1154).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 281, 4)));
-            Table.States (1155).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (1155), 7, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (1155), 40, 750);
-            Add_Action (Table.States (1155), 79, 31);
-            Add_Action (Table.States (1155), 105, 120);
-            Add_Action (Table.States (1155), 106, 34);
-            Add_Action (Table.States (1155), 107, 35);
-            Table.States (1155).Goto_List.Set_Capacity (7);
-            Add_Goto (Table.States (1155), 115, 1220);
-            Add_Goto (Table.States (1155), 129, 42);
-            Add_Goto (Table.States (1155), 240, 487);
-            Add_Goto (Table.States (1155), 242, 729);
-            Add_Goto (Table.States (1155), 273, 93);
-            Add_Goto (Table.States (1155), 294, 98);
-            Add_Goto (Table.States (1155), 315, 1221);
-            Table.States (1155).Kernel := To_Vector (((148, 8, 1, False), 
(148, 8, 2, False)));
-            Table.States (1155).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (1156).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (1156), (74, 83, 97), (148, 3), 1, null, 
null);
-            Table.States (1156).Kernel := To_Vector ((0 => (148, 115, 0, 
False)));
-            Table.States (1156).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 148, 1)));
-            Table.States (1157).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (1157), 74, 338);
-            Add_Action (Table.States (1157), 83, 1222);
-            Add_Action (Table.States (1157), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (1157).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1157), 123, 1223);
-            Table.States (1157).Kernel := To_Vector (((147, 148, 2, False), 
(147, 148, 1, False)));
-            Table.States (1157).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
+            Add_Action (Table.States (1152), (78, 99), (173, 1),  5, null, 
null);
+            Table.States (1152).Kernel := To_Vector ((0 => ((173, 1),  195,  
0, (173, 1),  5)));
+            Table.States (1152).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (173, 1),  5)));
+            Table.States (1153).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1153), (78, 99), (173, 0),  5, null, 
null);
+            Table.States (1153).Kernel := To_Vector ((0 => ((173, 0),  195,  
0, (173, 0),  5)));
+            Table.States (1153).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (173, 0),  5)));
+            Table.States (1154).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1154), 42, (123, 1), 1220);
+            Table.States (1154).Kernel := To_Vector ((0 => ((123, 1),  78,  2, 
(2147483647, 0),  0)));
+            Table.States (1154).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (123, 1),  42, 1220)));
+            Table.States (1155).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1155), 42, (123, 0), 1221);
+            Table.States (1155).Kernel := To_Vector ((0 => ((123, 0),  78,  2, 
(2147483647, 0),  0)));
+            Table.States (1155).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (123, 0),  42, 1221)));
+            Table.States (1156).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (1156), 81, (242, 8), 31);
+            Add_Action (Table.States (1156), 107, (242, 5), 120);
+            Add_Action (Table.States (1156), 108, (242, 7), 34);
+            Add_Action (Table.States (1156), 109, (242, 6), 35);
+            Table.States (1156).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (1156), 131, 42);
+            Add_Goto (Table.States (1156), 228, 1222);
+            Add_Goto (Table.States (1156), 242, 1223);
+            Add_Goto (Table.States (1156), 275, 93);
+            Add_Goto (Table.States (1156), 296, 98);
+            Table.States (1156).Kernel := To_Vector ((0 => ((229, 0),  86,  3, 
(2147483647, 0),  0)));
+            Table.States (1156).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (1157).Action_List.Set_Capacity (14);
+            Add_Action (Table.States (1157), 3, (200, 2), 122);
+            Add_Action (Table.States (1157), 39, (261, 4), 123);
+            Add_Action (Table.States (1157), 40, (200, 3), 124);
+            Add_Action (Table.States (1157), 41, (261, 1), 125);
+            Add_Action (Table.States (1157), 76, (120, 0), 127);
+            Add_Action (Table.States (1157), 77, (120, 5), 128);
+            Add_Action (Table.States (1157), 81, (242, 8), 31);
+            Add_Action (Table.States (1157), 83, (228, 0), 1224);
+            Add_Action (Table.States (1157), 97, (333, 1), 129);
+            Add_Action (Table.States (1157), 98, (333, 0), 130);
+            Add_Action (Table.States (1157), 106, (261, 0), 131);
+            Add_Action (Table.States (1157), 107, (242, 5), 120);
+            Add_Action (Table.States (1157), 108, (242, 7), 34);
+            Add_Action (Table.States (1157), 109, (242, 6), 35);
+            Table.States (1157).Goto_List.Set_Capacity (12);
+            Add_Goto (Table.States (1157), 120, 132);
+            Add_Goto (Table.States (1157), 131, 42);
+            Add_Goto (Table.States (1157), 200, 135);
+            Add_Goto (Table.States (1157), 242, 276);
+            Add_Goto (Table.States (1157), 261, 137);
+            Add_Goto (Table.States (1157), 275, 93);
+            Add_Goto (Table.States (1157), 280, 792);
+            Add_Goto (Table.States (1157), 296, 98);
+            Add_Goto (Table.States (1157), 304, 486);
+            Add_Goto (Table.States (1157), 323, 146);
+            Add_Goto (Table.States (1157), 324, 147);
+            Add_Goto (Table.States (1157), 333, 148);
+            Table.States (1157).Kernel := To_Vector ((((158, 0),  53,  3, 
(2147483647, 0),  0), ((228, 0),  53,  1,
+            (2147483647, 0),  0)));
+            Table.States (1157).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (228, 0),  83, 1224)));
             Table.States (1158).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (1158), (74, 83, 97), (148, 1), 1, null, 
null);
-            Table.States (1158).Kernel := To_Vector ((0 => (148, 315, 0, 
False)));
-            Table.States (1158).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 148, 1)));
-            Table.States (1159).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (1159), 10, 1016);
-            Add_Action (Table.States (1159), 74, Reduce, (229, 3), 4, null, 
null);
-            Add_Action (Table.States (1159), 97, Reduce, (229, 3), 4, null, 
null);
-            Table.States (1159).Kernel := To_Vector (((228, 228, 2, True), 
(229, 228, 0, False)));
-            Table.States (1159).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 229, 4)));
+            Add_Action (Table.States (1158), 53, (282, 0), 1056);
+            Add_Action (Table.States (1158), 74, Reduce, (282, 1),  0, null, 
null);
+            Add_Action (Table.States (1158), 99, Reduce, (282, 1),  0, null, 
null);
+            Table.States (1158).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1158), 282, 1225);
+            Table.States (1158).Kernel := To_Vector ((0 => ((329, 4),  195,  
0, (282, 1),  0)));
+            Table.States (1158).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (282, 1),  0)));
+            Table.States (1159).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1159), 88, (282, 0), 1226);
+            Table.States (1159).Kernel := To_Vector ((0 => ((282, 0),  304,  
2, (2147483647, 0),  0)));
+            Table.States (1159).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (282, 0),  88, 1226)));
             Table.States (1160).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (1160), 10, 1016);
-            Add_Action (Table.States (1160), 74, Reduce, (229, 1), 4, null, 
null);
-            Add_Action (Table.States (1160), 97, Reduce, (229, 1), 4, null, 
null);
-            Table.States (1160).Kernel := To_Vector (((228, 228, 2, True), 
(229, 228, 0, False)));
-            Table.States (1160).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 229, 4)));
-            Table.States (1161).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1161), (77, 84), (182, 0), 3, null, 
null);
-            Table.States (1161).Kernel := To_Vector ((0 => (182, 181, 0, 
True)));
-            Table.States (1161).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 182, 3)));
-            Table.States (1161).Minimal_Complete_Actions_Recursive := True;
-            Table.States (1162).Action_List.Set_Capacity (4);
-            Add_Action (Table.States (1162), 79, 31);
-            Add_Action (Table.States (1162), 105, 120);
-            Add_Action (Table.States (1162), 106, 34);
-            Add_Action (Table.States (1162), 107, 35);
-            Table.States (1162).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (1162), 129, 42);
-            Add_Goto (Table.States (1162), 228, 1224);
-            Add_Goto (Table.States (1162), 240, 850);
-            Add_Goto (Table.States (1162), 273, 93);
-            Add_Goto (Table.States (1162), 294, 98);
-            Table.States (1162).Kernel := To_Vector ((0 => (120, 10, 1, 
False)));
-            Table.States (1162).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
+            Add_Action (Table.States (1160), 10, (230, 0), 1026);
+            Add_Action (Table.States (1160), 74, Reduce, (231, 0),  4, null, 
null);
+            Add_Action (Table.States (1160), 99, Reduce, (231, 0),  4, null, 
null);
+            Table.States (1160).Kernel := To_Vector ((((230, 0),  230,  2, 
(2147483647, 0),  0), ((231, 0),  230,  0,
+            (231, 0),  4)));
+            Table.States (1160).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (231, 0),  4)));
+            Table.States (1161).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (1161), 10, (230, 0), 1026);
+            Add_Action (Table.States (1161), 74, Reduce, (231, 2),  4, null, 
null);
+            Add_Action (Table.States (1161), 99, Reduce, (231, 2),  4, null, 
null);
+            Table.States (1161).Kernel := To_Vector ((((230, 0),  230,  2, 
(2147483647, 0),  0), ((231, 2),  230,  0,
+            (231, 2),  4)));
+            Table.States (1161).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (231, 2),  4)));
+            Table.States (1162).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1162), (74, 99), (329, 1),  4, null, 
null);
+            Table.States (1162).Kernel := To_Vector ((0 => ((329, 1),  304,  
0, (329, 1),  4)));
+            Table.States (1162).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (329, 1),  4)));
             Table.States (1163).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1163), 74, 1225);
-            Table.States (1163).Kernel := To_Vector ((0 => (260, 120, 3, 
False)));
-            Table.States (1163).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 1225)));
-            Table.States (1164).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1164), 74, 1226);
-            Table.States (1164).Kernel := To_Vector ((0 => (163, 120, 3, 
False)));
-            Table.States (1164).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 74, 1226)));
-            Table.States (1165).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1165), (74, 97), (157, 0), 1, null, 
null);
-            Table.States (1165).Kernel := To_Vector ((0 => (157, 156, 0, 
False)));
-            Table.States (1165).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 157, 1)));
-            Table.States (1166).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1166), (74, 97), (163, 1), 4, 
derived_type_definition_1'Access, null);
-            Table.States (1166).Kernel := To_Vector ((0 => (163, 157, 0, 
False)));
-            Table.States (1166).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 163, 4)));
-            Table.States (1167).Action_List.Set_Capacity (41);
-            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, 
79, 94, 105, 106, 107, 108), (261, 0), 8,
-            private_type_declaration_0'Access, null);
-            Table.States (1167).Kernel := To_Vector ((0 => (261, 97, 0, 
False)));
-            Table.States (1167).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 261, 8)));
-            Table.States (1168).Action_List.Set_Capacity (41);
-            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, 
79, 94, 105, 106, 107, 108), (246, 0), 8,
-            object_renaming_declaration_0'Access, null);
-            Table.States (1168).Kernel := To_Vector ((0 => (246, 97, 0, 
False)));
-            Table.States (1168).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 246, 8)));
-            Table.States (1169).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1169), 80, 1075);
-            Add_Action (Table.States (1169), 88, 1227);
-            Table.States (1169).Kernel := To_Vector (((186, 186, 2, True), 
(188, 186, 1, False)));
-            Table.States (1169).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 88, 1227)));
-            Table.States (1170).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1170), (80, 88), (186, 0), 3, null, 
null);
-            Table.States (1170).Kernel := To_Vector ((0 => (186, 185, 0, 
True)));
-            Table.States (1170).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 186, 3)));
-            Table.States (1170).Minimal_Complete_Actions_Recursive := True;
+            Add_Action (Table.States (1163), 72, (332, 0), 1227);
+            Table.States (1163).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (1163), 331, 1228);
+            Add_Goto (Table.States (1163), 332, 1229);
+            Table.States (1163).Kernel := To_Vector ((0 => ((330, 0),  35,  5, 
(2147483647, 0),  0)));
+            Table.States (1163).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (332, 0),  72, 1227)));
+            Table.States (1164).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1164), (74, 99), (283, 0),  4, 
record_definition_0'Access, null);
+            Table.States (1164).Kernel := To_Vector ((0 => ((283, 0),  54,  0, 
(283, 0),  4)));
+            Table.States (1164).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (283, 0),  4)));
+            Table.States (1165).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (1165), 7, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (1165), 40, (244, 0), 756);
+            Add_Action (Table.States (1165), 81, (242, 8), 31);
+            Add_Action (Table.States (1165), 107, (242, 5), 120);
+            Add_Action (Table.States (1165), 108, (242, 7), 34);
+            Add_Action (Table.States (1165), 109, (242, 6), 35);
+            Table.States (1165).Goto_List.Set_Capacity (7);
+            Add_Goto (Table.States (1165), 117, 1230);
+            Add_Goto (Table.States (1165), 131, 42);
+            Add_Goto (Table.States (1165), 242, 491);
+            Add_Goto (Table.States (1165), 244, 735);
+            Add_Goto (Table.States (1165), 275, 93);
+            Add_Goto (Table.States (1165), 296, 98);
+            Add_Goto (Table.States (1165), 317, 1231);
+            Table.States (1165).Kernel := To_Vector ((((150, 0),  8,  1, 
(2147483647, 0),  0), ((150, 2),  8,  2,
+            (2147483647, 0),  0)));
+            Table.States (1165).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (1166).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (1166), (74, 85, 99), (150, 3),  1, null, 
null);
+            Table.States (1166).Kernel := To_Vector ((0 => ((150, 3),  117,  
0, (150, 3),  1)));
+            Table.States (1166).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (150, 3),  1)));
+            Table.States (1167).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (1167), 74, (125, 0), 340);
+            Add_Action (Table.States (1167), 85, (149, 0), 1232);
+            Add_Action (Table.States (1167), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (1167).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1167), 125, 1233);
+            Table.States (1167).Kernel := To_Vector ((((149, 0),  150,  2, 
(2147483647, 0),  0), ((149, 1),  150,  1,
+            (2147483647, 0),  0)));
+            Table.States (1167).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (1168).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (1168), (74, 85, 99), (150, 1),  1, null, 
null);
+            Table.States (1168).Kernel := To_Vector ((0 => ((150, 1),  317,  
0, (150, 1),  1)));
+            Table.States (1168).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (150, 1),  1)));
+            Table.States (1169).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (1169), 10, (230, 0), 1026);
+            Add_Action (Table.States (1169), 74, Reduce, (231, 3),  4, null, 
null);
+            Add_Action (Table.States (1169), 99, Reduce, (231, 3),  4, null, 
null);
+            Table.States (1169).Kernel := To_Vector ((((230, 0),  230,  2, 
(2147483647, 0),  0), ((231, 3),  230,  0,
+            (231, 3),  4)));
+            Table.States (1169).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (231, 3),  4)));
+            Table.States (1170).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (1170), 10, (230, 0), 1026);
+            Add_Action (Table.States (1170), 74, Reduce, (231, 1),  4, null, 
null);
+            Add_Action (Table.States (1170), 99, Reduce, (231, 1),  4, null, 
null);
+            Table.States (1170).Kernel := To_Vector ((((230, 0),  230,  2, 
(2147483647, 0),  0), ((231, 1),  230,  0,
+            (231, 1),  4)));
+            Table.States (1170).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (231, 1),  4)));
             Table.States (1171).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1171), (24, 72), (188, 1), 4, 
exception_handler_1'Access, null);
-            Table.States (1171).Kernel := To_Vector ((0 => (188, 301, 0, 
False)));
-            Table.States (1171).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 188, 4)));
-            Table.States (1172).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (1172), (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, 79, 94, 105, 106,
-            107, 108), (134, 0), 8, block_statement_0'Access, 
block_statement_0_check'Access);
-            Table.States (1172).Kernel := To_Vector ((0 => (134, 97, 0, 
False)));
-            Table.States (1172).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 134, 8)));
-            Table.States (1173).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (1173), (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, 79, 94, 105, 106,
-            107, 108), (233, 0), 8, loop_statement_0'Access, 
loop_statement_0_check'Access);
-            Table.States (1173).Kernel := To_Vector ((0 => (233, 97, 0, 
False)));
-            Table.States (1173).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 233, 8)));
+            Add_Action (Table.States (1171), (78, 86), (184, 0),  3, null, 
null);
+            Table.States (1171).Kernel := To_Vector ((0 => ((184, 0),  183,  
0, (184, 0),  3)));
+            Table.States (1171).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (184, 0),  3)));
+            Table.States (1172).Action_List.Set_Capacity (4);
+            Add_Action (Table.States (1172), 81, (242, 8), 31);
+            Add_Action (Table.States (1172), 107, (242, 5), 120);
+            Add_Action (Table.States (1172), 108, (242, 7), 34);
+            Add_Action (Table.States (1172), 109, (242, 6), 35);
+            Table.States (1172).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (1172), 131, 42);
+            Add_Goto (Table.States (1172), 230, 1234);
+            Add_Goto (Table.States (1172), 242, 859);
+            Add_Goto (Table.States (1172), 275, 93);
+            Add_Goto (Table.States (1172), 296, 98);
+            Table.States (1172).Kernel := To_Vector ((0 => ((122, 0),  10,  1, 
(2147483647, 0),  0)));
+            Table.States (1172).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (1173).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1173), 74, (262, 0), 1235);
+            Table.States (1173).Kernel := To_Vector ((0 => ((262, 0),  122,  
3, (2147483647, 0),  0)));
+            Table.States (1173).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (262, 0),  74, 1235)));
             Table.States (1174).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1174), 97, 1228);
-            Table.States (1174).Kernel := To_Vector ((0 => (245, 123, 1, 
False)));
-            Table.States (1174).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1228)));
-            Table.States (1175).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1175), 97, 1229);
-            Table.States (1175).Kernel := To_Vector ((0 => (245, 123, 1, 
False)));
-            Table.States (1175).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1229)));
-            Table.States (1176).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1176), 97, 1230);
-            Table.States (1176).Kernel := To_Vector ((0 => (245, 123, 1, 
False)));
-            Table.States (1176).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1230)));
-            Table.States (1177).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1177), 97, 1231);
-            Table.States (1177).Kernel := To_Vector ((0 => (180, 123, 1, 
False)));
-            Table.States (1177).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1231)));
+            Add_Action (Table.States (1174), 74, (165, 0), 1236);
+            Table.States (1174).Kernel := To_Vector ((0 => ((165, 0),  122,  
3, (2147483647, 0),  0)));
+            Table.States (1174).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (165, 0),  74, 1236)));
+            Table.States (1175).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1175), (74, 99), (159, 0),  1, null, 
null);
+            Table.States (1175).Kernel := To_Vector ((0 => ((159, 0),  158,  
0, (159, 0),  1)));
+            Table.States (1175).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (159, 0),  1)));
+            Table.States (1176).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1176), (74, 99), (165, 1),  4, 
derived_type_definition_1'Access, null);
+            Table.States (1176).Kernel := To_Vector ((0 => ((165, 1),  159,  
0, (165, 1),  4)));
+            Table.States (1176).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (165, 1),  4)));
+            Table.States (1177).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1177), (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, 
81, 96, 107, 108, 109, 110), (263, 0),  8,
+            private_type_declaration_0'Access, null);
+            Table.States (1177).Kernel := To_Vector ((0 => ((263, 0),  99,  0, 
(263, 0),  8)));
+            Table.States (1177).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (263, 0),  8)));
             Table.States (1178).Action_List.Set_Capacity (41);
             Add_Action (Table.States (1178), (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, 
79, 94, 105, 106, 107, 108), (214, 2), 8,
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (248, 0),  8,
+            object_renaming_declaration_0'Access, null);
+            Table.States (1178).Kernel := To_Vector ((0 => ((248, 0),  99,  0, 
(248, 0),  8)));
+            Table.States (1178).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (248, 0),  8)));
+            Table.States (1179).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1179), 82, (188, 0), 1085);
+            Add_Action (Table.States (1179), 90, (190, 0), 1237);
+            Table.States (1179).Kernel := To_Vector ((((188, 0),  188,  2, 
(2147483647, 0),  0), ((190, 0),  188,  1,
+            (2147483647, 0),  0)));
+            Table.States (1179).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (190, 0),  90, 1237)));
+            Table.States (1180).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1180), (82, 90), (188, 0),  3, null, 
null);
+            Table.States (1180).Kernel := To_Vector ((0 => ((188, 0),  187,  
0, (188, 0),  3)));
+            Table.States (1180).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (188, 0),  3)));
+            Table.States (1181).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1181), (24, 72), (190, 1),  4, 
exception_handler_1'Access, null);
+            Table.States (1181).Kernel := To_Vector ((0 => ((190, 1),  303,  
0, (190, 1),  4)));
+            Table.States (1181).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (190, 1),  4)));
+            Table.States (1182).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (1182), (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, 81, 96, 107, 108,
+            109, 110), (136, 0),  8, block_statement_0'Access, 
block_statement_0_check'Access);
+            Table.States (1182).Kernel := To_Vector ((0 => ((136, 0),  99,  0, 
(136, 0),  8)));
+            Table.States (1182).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (136, 0),  8)));
+            Table.States (1183).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (1183), (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, 81, 96, 107, 108,
+            109, 110), (235, 0),  8, loop_statement_0'Access, 
loop_statement_0_check'Access);
+            Table.States (1183).Kernel := To_Vector ((0 => ((235, 0),  99,  0, 
(235, 0),  8)));
+            Table.States (1183).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (235, 0),  8)));
+            Table.States (1184).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1184), 99, (247, 1), 1238);
+            Table.States (1184).Kernel := To_Vector ((0 => ((247, 1),  125,  
1, (2147483647, 0),  0)));
+            Table.States (1184).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (247, 1),  99, 1238)));
+            Table.States (1185).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1185), 99, (247, 2), 1239);
+            Table.States (1185).Kernel := To_Vector ((0 => ((247, 2),  125,  
1, (2147483647, 0),  0)));
+            Table.States (1185).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (247, 2),  99, 1239)));
+            Table.States (1186).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1186), 99, (247, 0), 1240);
+            Table.States (1186).Kernel := To_Vector ((0 => ((247, 0),  125,  
1, (2147483647, 0),  0)));
+            Table.States (1186).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (247, 0),  99, 1240)));
+            Table.States (1187).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1187), 99, (182, 0), 1241);
+            Table.States (1187).Kernel := To_Vector ((0 => ((182, 0),  125,  
1, (2147483647, 0),  0)));
+            Table.States (1187).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (182, 0),  99, 1241)));
+            Table.States (1188).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1188), (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, 
81, 96, 107, 108, 109, 110), (216, 2),  8,
             generic_instantiation_2'Access, null);
-            Table.States (1178).Kernel := To_Vector ((0 => (214, 97, 0, 
False)));
-            Table.States (1178).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 214, 8)));
-            Table.States (1179).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1179), (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, 
79, 94, 105, 106, 107, 108), (214, 1), 8,
+            Table.States (1188).Kernel := To_Vector ((0 => ((216, 2),  99,  0, 
(216, 2),  8)));
+            Table.States (1188).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (216, 2),  8)));
+            Table.States (1189).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1189), (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, 
81, 96, 107, 108, 109, 110), (216, 1),  8,
             generic_instantiation_1'Access, null);
-            Table.States (1179).Kernel := To_Vector ((0 => (214, 97, 0, 
False)));
-            Table.States (1179).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 214, 8)));
-            Table.States (1180).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (1180), 79, 31);
-            Add_Action (Table.States (1180), 97, Reduce, (241, 1), 0, null, 
null);
-            Add_Action (Table.States (1180), 105, 120);
-            Add_Action (Table.States (1180), 106, 34);
-            Add_Action (Table.States (1180), 107, 35);
-            Table.States (1180).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (1180), 129, 42);
-            Add_Goto (Table.States (1180), 240, 638);
-            Add_Goto (Table.States (1180), 241, 1232);
-            Add_Goto (Table.States (1180), 273, 93);
-            Add_Goto (Table.States (1180), 294, 98);
-            Table.States (1180).Kernel := To_Vector ((0 => (308, 24, 1, 
False)));
-            Table.States (1180).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 241, 0)));
-            Table.States (1181).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (1181), (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, 79, 94, 105, 106,
-            107, 108), (114, 0), 9, accept_statement_0'Access, 
accept_statement_0_check'Access);
-            Table.States (1181).Kernel := To_Vector ((0 => (114, 97, 0, 
False)));
-            Table.States (1181).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 114, 9)));
-            Table.States (1182).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1182), (77, 84), (138, 0), 4, 
case_expression_alternative_0'Access, null);
-            Table.States (1182).Kernel := To_Vector ((0 => (138, 193, 0, 
False)));
-            Table.States (1182).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 138, 4)));
-            Table.States (1183).Action_List.Set_Capacity (16);
-            Add_Action (Table.States (1183), 3, 122);
-            Add_Action (Table.States (1183), 22, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1183), 23, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1183), 39, 123);
-            Add_Action (Table.States (1183), 40, 124);
-            Add_Action (Table.States (1183), 41, 125);
-            Add_Action (Table.States (1183), 52, 126);
-            Add_Action (Table.States (1183), 76, 127);
-            Add_Action (Table.States (1183), 77, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1183), 79, 31);
-            Add_Action (Table.States (1183), 95, 128);
-            Add_Action (Table.States (1183), 96, 129);
-            Add_Action (Table.States (1183), 104, 130);
-            Add_Action (Table.States (1183), 105, 120);
-            Add_Action (Table.States (1183), 106, 34);
-            Add_Action (Table.States (1183), 107, 35);
-            Table.States (1183).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (1183), 118, 131);
-            Add_Goto (Table.States (1183), 129, 42);
-            Add_Goto (Table.States (1183), 192, 132);
-            Add_Goto (Table.States (1183), 193, 1233);
-            Add_Goto (Table.States (1183), 198, 134);
-            Add_Goto (Table.States (1183), 240, 135);
-            Add_Goto (Table.States (1183), 259, 136);
-            Add_Goto (Table.States (1183), 273, 93);
-            Add_Goto (Table.States (1183), 276, 137);
-            Add_Goto (Table.States (1183), 283, 138);
-            Add_Goto (Table.States (1183), 284, 139);
-            Add_Goto (Table.States (1183), 285, 140);
-            Add_Goto (Table.States (1183), 286, 141);
-            Add_Goto (Table.States (1183), 287, 142);
-            Add_Goto (Table.States (1183), 288, 143);
-            Add_Goto (Table.States (1183), 294, 98);
-            Add_Goto (Table.States (1183), 302, 144);
-            Add_Goto (Table.States (1183), 321, 145);
-            Add_Goto (Table.States (1183), 322, 146);
-            Add_Goto (Table.States (1183), 331, 147);
-            Table.States (1183).Kernel := To_Vector ((0 => (173, 68, 0, 
False)));
-            Table.States (1183).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (1184).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1184), (1 =>  77), (222, 0), 7, 
if_expression_0'Access, null);
-            Table.States (1184).Kernel := To_Vector ((0 => (222, 193, 0, 
False)));
-            Table.States (1184).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 222, 7)));
-            Table.States (1185).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (1185), 3, 122);
-            Add_Action (Table.States (1185), 39, 123);
-            Add_Action (Table.States (1185), 40, 124);
-            Add_Action (Table.States (1185), 41, 125);
-            Add_Action (Table.States (1185), 76, 127);
-            Add_Action (Table.States (1185), 79, 31);
-            Add_Action (Table.States (1185), 95, 128);
-            Add_Action (Table.States (1185), 96, 129);
-            Add_Action (Table.States (1185), 104, 130);
-            Add_Action (Table.States (1185), 105, 120);
-            Add_Action (Table.States (1185), 106, 34);
-            Add_Action (Table.States (1185), 107, 35);
-            Table.States (1185).Goto_List.Set_Capacity (11);
-            Add_Goto (Table.States (1185), 118, 131);
-            Add_Goto (Table.States (1185), 129, 42);
-            Add_Goto (Table.States (1185), 198, 134);
-            Add_Goto (Table.States (1185), 240, 135);
-            Add_Goto (Table.States (1185), 259, 136);
-            Add_Goto (Table.States (1185), 273, 93);
-            Add_Goto (Table.States (1185), 294, 98);
-            Add_Goto (Table.States (1185), 302, 1234);
-            Add_Goto (Table.States (1185), 321, 145);
-            Add_Goto (Table.States (1185), 322, 146);
-            Add_Goto (Table.States (1185), 331, 147);
-            Table.States (1185).Kernel := To_Vector ((0 => (145, 53, 4, 
False)));
-            Table.States (1185).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (1186).Action_List.Set_Capacity (42);
-            Add_Action (Table.States (1186), (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, 79, 94, 105, 106, 107, 108), (282, 0),
+            Table.States (1189).Kernel := To_Vector ((0 => ((216, 1),  99,  0, 
(216, 1),  8)));
+            Table.States (1189).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (216, 1),  8)));
+            Table.States (1190).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (1190), 81, (242, 8), 31);
+            Add_Action (Table.States (1190), 99, Reduce, (243, 1),  0, null, 
null);
+            Add_Action (Table.States (1190), 107, (242, 5), 120);
+            Add_Action (Table.States (1190), 108, (242, 7), 34);
+            Add_Action (Table.States (1190), 109, (242, 6), 35);
+            Table.States (1190).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (1190), 131, 42);
+            Add_Goto (Table.States (1190), 242, 644);
+            Add_Goto (Table.States (1190), 243, 1242);
+            Add_Goto (Table.States (1190), 275, 93);
+            Add_Goto (Table.States (1190), 296, 98);
+            Table.States (1190).Kernel := To_Vector ((0 => ((310, 0),  24,  1, 
(2147483647, 0),  0)));
+            Table.States (1190).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (243, 1),  0)));
+            Table.States (1191).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (1191), (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, 81, 96, 107, 108,
+            109, 110), (116, 0),  9, accept_statement_0'Access, 
accept_statement_0_check'Access);
+            Table.States (1191).Kernel := To_Vector ((0 => ((116, 0),  99,  0, 
(116, 0),  9)));
+            Table.States (1191).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (116, 0),  9)));
+            Table.States (1192).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1192), (78, 86), (140, 0),  4, 
case_expression_alternative_0'Access, null);
+            Table.States (1192).Kernel := To_Vector ((0 => ((140, 0),  195,  
0, (140, 0),  4)));
+            Table.States (1192).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (140, 0),  4)));
+            Table.States (1193).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (1193), 3, (200, 2), 122);
+            Add_Action (Table.States (1193), 22, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1193), 23, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1193), 39, (261, 4), 123);
+            Add_Action (Table.States (1193), 40, (200, 3), 124);
+            Add_Action (Table.States (1193), 41, (261, 1), 125);
+            Add_Action (Table.States (1193), 52, (278, 0), 126);
+            Add_Action (Table.States (1193), 76, (120, 0), 127);
+            Add_Action (Table.States (1193), 77, (120, 5), 128);
+            Add_Action (Table.States (1193), 78, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1193), 81, (242, 8), 31);
+            Add_Action (Table.States (1193), 97, (333, 1), 129);
+            Add_Action (Table.States (1193), 98, (333, 0), 130);
+            Add_Action (Table.States (1193), 106, (261, 0), 131);
+            Add_Action (Table.States (1193), 107, (242, 5), 120);
+            Add_Action (Table.States (1193), 108, (242, 7), 34);
+            Add_Action (Table.States (1193), 109, (242, 6), 35);
+            Table.States (1193).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (1193), 120, 132);
+            Add_Goto (Table.States (1193), 131, 42);
+            Add_Goto (Table.States (1193), 194, 133);
+            Add_Goto (Table.States (1193), 195, 1243);
+            Add_Goto (Table.States (1193), 200, 135);
+            Add_Goto (Table.States (1193), 242, 136);
+            Add_Goto (Table.States (1193), 261, 137);
+            Add_Goto (Table.States (1193), 275, 93);
+            Add_Goto (Table.States (1193), 278, 138);
+            Add_Goto (Table.States (1193), 285, 139);
+            Add_Goto (Table.States (1193), 286, 140);
+            Add_Goto (Table.States (1193), 287, 141);
+            Add_Goto (Table.States (1193), 288, 142);
+            Add_Goto (Table.States (1193), 289, 143);
+            Add_Goto (Table.States (1193), 290, 144);
+            Add_Goto (Table.States (1193), 296, 98);
+            Add_Goto (Table.States (1193), 304, 145);
+            Add_Goto (Table.States (1193), 323, 146);
+            Add_Goto (Table.States (1193), 324, 147);
+            Add_Goto (Table.States (1193), 333, 148);
+            Table.States (1193).Kernel := To_Vector ((0 => ((175, 0),  68,  0, 
(195, 1),  0)));
+            Table.States (1193).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (1194).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1194), (1 =>  78), (224, 0),  7, 
if_expression_0'Access, null);
+            Table.States (1194).Kernel := To_Vector ((0 => ((224, 0),  195,  
0, (224, 0),  7)));
+            Table.States (1194).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (224, 0),  7)));
+            Table.States (1195).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (1195), 3, (200, 2), 122);
+            Add_Action (Table.States (1195), 39, (261, 4), 123);
+            Add_Action (Table.States (1195), 40, (200, 3), 124);
+            Add_Action (Table.States (1195), 41, (261, 1), 125);
+            Add_Action (Table.States (1195), 76, (120, 0), 127);
+            Add_Action (Table.States (1195), 77, (120, 5), 128);
+            Add_Action (Table.States (1195), 81, (242, 8), 31);
+            Add_Action (Table.States (1195), 97, (333, 1), 129);
+            Add_Action (Table.States (1195), 98, (333, 0), 130);
+            Add_Action (Table.States (1195), 106, (261, 0), 131);
+            Add_Action (Table.States (1195), 107, (242, 5), 120);
+            Add_Action (Table.States (1195), 108, (242, 7), 34);
+            Add_Action (Table.States (1195), 109, (242, 6), 35);
+            Table.States (1195).Goto_List.Set_Capacity (11);
+            Add_Goto (Table.States (1195), 120, 132);
+            Add_Goto (Table.States (1195), 131, 42);
+            Add_Goto (Table.States (1195), 200, 135);
+            Add_Goto (Table.States (1195), 242, 136);
+            Add_Goto (Table.States (1195), 261, 137);
+            Add_Goto (Table.States (1195), 275, 93);
+            Add_Goto (Table.States (1195), 296, 98);
+            Add_Goto (Table.States (1195), 304, 1244);
+            Add_Goto (Table.States (1195), 323, 146);
+            Add_Goto (Table.States (1195), 324, 147);
+            Add_Goto (Table.States (1195), 333, 148);
+            Table.States (1195).Kernel := To_Vector ((0 => ((147, 0),  53,  4, 
(2147483647, 0),  0)));
+            Table.States (1195).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (1196).Action_List.Set_Capacity (42);
+            Add_Action (Table.States (1196), (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, 81, 96, 107, 108, 109, 110), (284, 0),
             9, record_representation_clause_0'Access, null);
-            Table.States (1186).Kernel := To_Vector ((0 => (282, 97, 0, 
False)));
-            Table.States (1186).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 282, 9)));
-            Table.States (1187).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1187), (77, 97), (255, 2), 6, 
parameter_specification_2'Access, null);
-            Table.States (1187).Kernel := To_Vector ((0 => (255, 193, 0, 
False)));
-            Table.States (1187).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 255, 6)));
-            Table.States (1188).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (1188), 76, 236);
-            Add_Action (Table.States (1188), 77, Reduce, (255, 1), 6, 
parameter_specification_1'Access, null);
-            Add_Action (Table.States (1188), 83, 1235);
-            Add_Action (Table.States (1188), 85, 238);
-            Add_Action (Table.States (1188), 97, Reduce, (255, 1), 6, 
parameter_specification_1'Access, null);
-            Add_Action (Table.States (1188), 102, 240);
-            Add_Action (Table.States (1188), 103, 241);
-            Table.States (1188).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (1188), 116, 242);
-            Add_Goto (Table.States (1188), 323, 243);
-            Table.States (1188).Kernel := To_Vector (((129, 240, 2, True), 
(240, 240, 5, True), (240, 240, 2, True),
-            (255, 240, 1, False), (255, 240, 0, False), (273, 240, 3, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True), (294, 240, 2, True)));
-            Table.States (1188).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 255, 6)));
-            Table.States (1189).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1189), (74, 97), (203, 6), 4, null, 
null);
-            Table.States (1189).Kernel := To_Vector ((0 => (203, 81, 0, 
False)));
-            Table.States (1189).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 203, 4)));
-            Table.States (1190).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1190), 74, 1236);
-            Add_Conflict (Table.States (1190), 74, (204, 1), 4, 
formal_derived_type_definition_1'Access, null);
-            Add_Action (Table.States (1190), 97, Reduce, (204, 1), 4, 
formal_derived_type_definition_1'Access, null);
-            Table.States (1190).Kernel := To_Vector (((204, 120, 2, False), 
(204, 120, 0, False)));
-            Table.States (1190).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 204, 4)));
-            Table.States (1191).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1191), 77, 1237);
-            Table.States (1191).Kernel := To_Vector ((0 => (206, 81, 1, 
False)));
-            Table.States (1191).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 1237)));
-            Table.States (1192).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1192), 97, 1238);
-            Table.States (1192).Kernel := To_Vector ((0 => (205, 123, 1, 
False)));
-            Table.States (1192).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1238)));
-            Table.States (1193).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (1193), (29, 47, 48, 50, 69, 71, 74, 
105), (199, 1), 8,
+            Table.States (1196).Kernel := To_Vector ((0 => ((284, 0),  99,  0, 
(284, 0),  9)));
+            Table.States (1196).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (284, 0),  9)));
+            Table.States (1197).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1197), (78, 99), (257, 2),  6, 
parameter_specification_2'Access, null);
+            Table.States (1197).Kernel := To_Vector ((0 => ((257, 2),  195,  
0, (257, 2),  6)));
+            Table.States (1197).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (257, 2),  6)));
+            Table.States (1198).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (1198), 76, (118, 0), 237);
+            Add_Action (Table.States (1198), 78, Reduce, (257, 1),  6, 
parameter_specification_1'Access, null);
+            Add_Action (Table.States (1198), 85, (257, 0), 1245);
+            Add_Action (Table.States (1198), 87, (296, 0), 239);
+            Add_Action (Table.States (1198), 99, Reduce, (257, 1),  6, 
parameter_specification_1'Access, null);
+            Add_Action (Table.States (1198), 104, (325, 0), 241);
+            Add_Action (Table.States (1198), 105, (325, 1), 242);
+            Table.States (1198).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (1198), 118, 243);
+            Add_Goto (Table.States (1198), 325, 244);
+            Table.States (1198).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((242, 0),  242,  5,
+            (2147483647, 0),  0), ((242, 1),  242,  2, (2147483647, 0),  0), 
((257, 0),  242,  1, (2147483647, 0),  0),
+            ((257, 1),  242,  0, (257, 1),  6), ((275, 0),  242,  3, 
(2147483647, 0),  0), ((296, 0),  242,  2,
+            (2147483647, 0),  0), ((296, 1),  242,  2, (2147483647, 0),  0), 
((296, 2),  242,  2, (2147483647, 0),  0),
+            ((296, 3),  242,  2, (2147483647, 0),  0)));
+            Table.States (1198).Minimal_Complete_Actions := To_Vector 
(((Shift, (257, 0),  85, 1245), (Reduce, (257,
+            1),  6)));
+            Table.States (1199).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1199), (74, 99), (205, 6),  4, null, 
null);
+            Table.States (1199).Kernel := To_Vector ((0 => ((205, 6),  83,  0, 
(205, 6),  4)));
+            Table.States (1199).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (205, 6),  4)));
+            Table.States (1200).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1200), 74, (206, 0), 1246);
+            Add_Conflict (Table.States (1200), 74, (206, 1),  4, 
formal_derived_type_definition_1'Access, null);
+            Add_Action (Table.States (1200), 99, Reduce, (206, 1),  4, 
formal_derived_type_definition_1'Access, null);
+            Table.States (1200).Kernel := To_Vector ((((206, 0),  122,  2, 
(2147483647, 0),  0), ((206, 1),  122,  0,
+            (206, 1),  4)));
+            Table.States (1200).Minimal_Complete_Actions := To_Vector 
(((Shift, (206, 0),  74, 1246), (Reduce, (206,
+            1),  4)));
+            Table.States (1201).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1201), 78, (208, 0), 1247);
+            Table.States (1201).Kernel := To_Vector ((0 => ((208, 0),  83,  1, 
(2147483647, 0),  0)));
+            Table.States (1201).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (208, 0),  78, 1247)));
+            Table.States (1202).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1202), 99, (207, 0), 1248);
+            Table.States (1202).Kernel := To_Vector ((0 => ((207, 0),  125,  
1, (2147483647, 0),  0)));
+            Table.States (1202).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (207, 0),  99, 1248)));
+            Table.States (1203).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (1203), (29, 47, 48, 50, 69, 71, 74, 
107), (201, 1),  8,
             formal_object_declaration_1'Access, null);
-            Table.States (1193).Kernel := To_Vector ((0 => (199, 97, 0, 
False)));
-            Table.States (1193).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 199, 8)));
-            Table.States (1194).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1194), 97, 1239);
-            Table.States (1194).Kernel := To_Vector ((0 => (199, 123, 1, 
False)));
-            Table.States (1194).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1239)));
-            Table.States (1195).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (1195), (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, 79, 94, 105, 106,
-            107, 108), (223, 1), 9, if_statement_1'Access, null);
-            Table.States (1195).Kernel := To_Vector ((0 => (223, 97, 0, 
False)));
-            Table.States (1195).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 223, 9)));
-            Table.States (1196).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1196), 97, 1240);
-            Table.States (1196).Kernel := To_Vector ((0 => (223, 32, 1, 
False)));
-            Table.States (1196).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1240)));
-            Table.States (1197).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (1197), 79, 31);
-            Add_Action (Table.States (1197), 97, Reduce, (241, 1), 0, null, 
null);
-            Add_Action (Table.States (1197), 105, 120);
-            Add_Action (Table.States (1197), 106, 34);
-            Add_Action (Table.States (1197), 107, 35);
-            Table.States (1197).Goto_List.Set_Capacity (5);
-            Add_Goto (Table.States (1197), 129, 42);
-            Add_Goto (Table.States (1197), 240, 638);
-            Add_Goto (Table.States (1197), 241, 1241);
-            Add_Goto (Table.States (1197), 273, 93);
-            Add_Goto (Table.States (1197), 294, 98);
-            Table.States (1197).Kernel := To_Vector ((0 => (248, 24, 1, 
False)));
-            Table.States (1197).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 241, 0)));
-            Table.States (1198).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1198), (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, 
79, 94, 105, 106, 107, 108), (248, 1), 9,
+            Table.States (1203).Kernel := To_Vector ((0 => ((201, 1),  99,  0, 
(201, 1),  8)));
+            Table.States (1203).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (201, 1),  8)));
+            Table.States (1204).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1204), 99, (201, 0), 1249);
+            Table.States (1204).Kernel := To_Vector ((0 => ((201, 0),  125,  
1, (2147483647, 0),  0)));
+            Table.States (1204).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (201, 0),  99, 1249)));
+            Table.States (1205).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (1205), (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, 81, 96, 107, 108,
+            109, 110), (225, 1),  9, if_statement_1'Access, null);
+            Table.States (1205).Kernel := To_Vector ((0 => ((225, 1),  99,  0, 
(225, 1),  9)));
+            Table.States (1205).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (225, 1),  9)));
+            Table.States (1206).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1206), 99, (225, 0), 1250);
+            Table.States (1206).Kernel := To_Vector ((0 => ((225, 0),  32,  1, 
(2147483647, 0),  0)));
+            Table.States (1206).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (225, 0),  99, 1250)));
+            Table.States (1207).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (1207), 81, (242, 8), 31);
+            Add_Action (Table.States (1207), 99, Reduce, (243, 1),  0, null, 
null);
+            Add_Action (Table.States (1207), 107, (242, 5), 120);
+            Add_Action (Table.States (1207), 108, (242, 7), 34);
+            Add_Action (Table.States (1207), 109, (242, 6), 35);
+            Table.States (1207).Goto_List.Set_Capacity (5);
+            Add_Goto (Table.States (1207), 131, 42);
+            Add_Goto (Table.States (1207), 242, 644);
+            Add_Goto (Table.States (1207), 243, 1251);
+            Add_Goto (Table.States (1207), 275, 93);
+            Add_Goto (Table.States (1207), 296, 98);
+            Table.States (1207).Kernel := To_Vector ((0 => ((250, 0),  24,  1, 
(2147483647, 0),  0)));
+            Table.States (1207).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (243, 1),  0)));
+            Table.States (1208).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1208), (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, 
81, 96, 107, 108, 109, 110), (250, 1),  9,
             package_body_1'Access, package_body_1_check'Access);
-            Table.States (1198).Kernel := To_Vector ((0 => (248, 97, 0, 
False)));
-            Table.States (1198).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 248, 9)));
-            Table.States (1199).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1199), (1 =>  97), (252, 0), 9, 
package_specification_0'Access,
+            Table.States (1208).Kernel := To_Vector ((0 => ((250, 1),  99,  0, 
(250, 1),  9)));
+            Table.States (1208).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (250, 1),  9)));
+            Table.States (1209).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1209), (1 =>  99), (254, 0),  9, 
package_specification_0'Access,
             package_specification_0_check'Access);
-            Table.States (1199).Kernel := To_Vector ((0 => (252, 241, 0, 
False)));
-            Table.States (1199).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 252, 9)));
-            Table.States (1200).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1200), 105, 1242);
-            Table.States (1200).Kernel := To_Vector ((0 => (178, 28, 4, 
False)));
-            Table.States (1200).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 1242)));
-            Table.States (1201).Action_List.Set_Capacity (14);
-            Add_Action (Table.States (1201), 3, 122);
-            Add_Action (Table.States (1201), 35, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1201), 39, 123);
-            Add_Action (Table.States (1201), 40, 124);
-            Add_Action (Table.States (1201), 41, 125);
-            Add_Action (Table.States (1201), 52, 126);
-            Add_Action (Table.States (1201), 76, 127);
-            Add_Action (Table.States (1201), 79, 31);
-            Add_Action (Table.States (1201), 95, 128);
-            Add_Action (Table.States (1201), 96, 129);
-            Add_Action (Table.States (1201), 104, 130);
-            Add_Action (Table.States (1201), 105, 120);
-            Add_Action (Table.States (1201), 106, 34);
-            Add_Action (Table.States (1201), 107, 35);
-            Table.States (1201).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (1201), 118, 131);
-            Add_Goto (Table.States (1201), 129, 42);
-            Add_Goto (Table.States (1201), 192, 132);
-            Add_Goto (Table.States (1201), 193, 1243);
-            Add_Goto (Table.States (1201), 198, 134);
-            Add_Goto (Table.States (1201), 240, 135);
-            Add_Goto (Table.States (1201), 259, 136);
-            Add_Goto (Table.States (1201), 273, 93);
-            Add_Goto (Table.States (1201), 276, 137);
-            Add_Goto (Table.States (1201), 283, 138);
-            Add_Goto (Table.States (1201), 284, 139);
-            Add_Goto (Table.States (1201), 285, 140);
-            Add_Goto (Table.States (1201), 286, 141);
-            Add_Goto (Table.States (1201), 287, 142);
-            Add_Goto (Table.States (1201), 288, 143);
-            Add_Goto (Table.States (1201), 294, 98);
-            Add_Goto (Table.States (1201), 302, 144);
-            Add_Goto (Table.States (1201), 321, 145);
-            Add_Goto (Table.States (1201), 322, 146);
-            Add_Goto (Table.States (1201), 331, 147);
-            Table.States (1201).Kernel := To_Vector ((0 => (177, 72, 4, 
False)));
-            Table.States (1201).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (1202).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1202), (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, 
79, 94, 105, 106, 107, 108), (265, 0), 9,
+            Table.States (1209).Kernel := To_Vector ((0 => ((254, 0),  243,  
0, (254, 0),  9)));
+            Table.States (1209).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (254, 0),  9)));
+            Table.States (1210).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1210), 107, (180, 0), 1252);
+            Table.States (1210).Kernel := To_Vector ((0 => ((180, 0),  28,  4, 
(2147483647, 0),  0)));
+            Table.States (1210).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (180, 0),  107, 1252)));
+            Table.States (1211).Action_List.Set_Capacity (15);
+            Add_Action (Table.States (1211), 3, (200, 2), 122);
+            Add_Action (Table.States (1211), 35, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1211), 39, (261, 4), 123);
+            Add_Action (Table.States (1211), 40, (200, 3), 124);
+            Add_Action (Table.States (1211), 41, (261, 1), 125);
+            Add_Action (Table.States (1211), 52, (278, 0), 126);
+            Add_Action (Table.States (1211), 76, (120, 0), 127);
+            Add_Action (Table.States (1211), 77, (120, 5), 128);
+            Add_Action (Table.States (1211), 81, (242, 8), 31);
+            Add_Action (Table.States (1211), 97, (333, 1), 129);
+            Add_Action (Table.States (1211), 98, (333, 0), 130);
+            Add_Action (Table.States (1211), 106, (261, 0), 131);
+            Add_Action (Table.States (1211), 107, (242, 5), 120);
+            Add_Action (Table.States (1211), 108, (242, 7), 34);
+            Add_Action (Table.States (1211), 109, (242, 6), 35);
+            Table.States (1211).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (1211), 120, 132);
+            Add_Goto (Table.States (1211), 131, 42);
+            Add_Goto (Table.States (1211), 194, 133);
+            Add_Goto (Table.States (1211), 195, 1253);
+            Add_Goto (Table.States (1211), 200, 135);
+            Add_Goto (Table.States (1211), 242, 136);
+            Add_Goto (Table.States (1211), 261, 137);
+            Add_Goto (Table.States (1211), 275, 93);
+            Add_Goto (Table.States (1211), 278, 138);
+            Add_Goto (Table.States (1211), 285, 139);
+            Add_Goto (Table.States (1211), 286, 140);
+            Add_Goto (Table.States (1211), 287, 141);
+            Add_Goto (Table.States (1211), 288, 142);
+            Add_Goto (Table.States (1211), 289, 143);
+            Add_Goto (Table.States (1211), 290, 144);
+            Add_Goto (Table.States (1211), 296, 98);
+            Add_Goto (Table.States (1211), 304, 145);
+            Add_Goto (Table.States (1211), 323, 146);
+            Add_Goto (Table.States (1211), 324, 147);
+            Add_Goto (Table.States (1211), 333, 148);
+            Table.States (1211).Kernel := To_Vector ((0 => ((179, 0),  72,  4, 
(2147483647, 0),  0)));
+            Table.States (1211).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (1212).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1212), (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, 
81, 96, 107, 108, 109, 110), (267, 0),  9,
             protected_body_0'Access, protected_body_0_check'Access);
-            Table.States (1202).Kernel := To_Vector ((0 => (265, 97, 0, 
False)));
-            Table.States (1202).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 265, 9)));
-            Table.States (1203).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (1203), 24, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (1203), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (1203), 28, 184);
-            Add_Action (Table.States (1203), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (1203), 30, 8);
-            Add_Action (Table.States (1203), 40, 12);
-            Add_Action (Table.States (1203), 46, 14);
-            Add_Action (Table.States (1203), 47, 15);
-            Add_Action (Table.States (1203), 48, 16);
-            Add_Action (Table.States (1203), 49, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (1203), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (1203), 51, 19);
-            Add_Action (Table.States (1203), 63, 25);
-            Add_Action (Table.States (1203), 66, 26);
-            Add_Action (Table.States (1203), 69, 27);
-            Add_Action (Table.States (1203), 71, 28);
-            Add_Action (Table.States (1203), 105, 186);
-            Table.States (1203).Goto_List.Set_Capacity (54);
-            Add_Goto (Table.States (1203), 113, 36);
-            Add_Goto (Table.States (1203), 122, 38);
-            Add_Goto (Table.States (1203), 128, 41);
-            Add_Goto (Table.States (1203), 135, 46);
-            Add_Goto (Table.States (1203), 136, 47);
-            Add_Goto (Table.States (1203), 158, 392);
-            Add_Goto (Table.States (1203), 159, 393);
-            Add_Goto (Table.States (1203), 160, 675);
-            Add_Goto (Table.States (1203), 180, 55);
-            Add_Goto (Table.States (1203), 183, 56);
-            Add_Goto (Table.States (1203), 187, 57);
-            Add_Goto (Table.States (1203), 194, 59);
-            Add_Goto (Table.States (1203), 207, 61);
-            Add_Goto (Table.States (1203), 208, 62);
-            Add_Goto (Table.States (1203), 210, 63);
-            Add_Goto (Table.States (1203), 211, 64);
-            Add_Goto (Table.States (1203), 214, 65);
-            Add_Goto (Table.States (1203), 215, 66);
-            Add_Goto (Table.States (1203), 216, 67);
-            Add_Goto (Table.States (1203), 217, 68);
-            Add_Goto (Table.States (1203), 220, 70);
-            Add_Goto (Table.States (1203), 224, 72);
-            Add_Goto (Table.States (1203), 244, 75);
-            Add_Goto (Table.States (1203), 245, 76);
-            Add_Goto (Table.States (1203), 246, 77);
-            Add_Goto (Table.States (1203), 247, 78);
-            Add_Goto (Table.States (1203), 248, 79);
-            Add_Goto (Table.States (1203), 249, 80);
-            Add_Goto (Table.States (1203), 250, 81);
-            Add_Goto (Table.States (1203), 251, 82);
-            Add_Goto (Table.States (1203), 252, 83);
-            Add_Goto (Table.States (1203), 258, 395);
-            Add_Goto (Table.States (1203), 260, 85);
-            Add_Goto (Table.States (1203), 261, 86);
-            Add_Goto (Table.States (1203), 263, 88);
-            Add_Goto (Table.States (1203), 264, 89);
-            Add_Goto (Table.States (1203), 265, 90);
-            Add_Goto (Table.States (1203), 266, 91);
-            Add_Goto (Table.States (1203), 267, 1244);
-            Add_Goto (Table.States (1203), 272, 92);
-            Add_Goto (Table.States (1203), 282, 95);
-            Add_Goto (Table.States (1203), 290, 96);
-            Add_Goto (Table.States (1203), 305, 103);
-            Add_Goto (Table.States (1203), 306, 104);
-            Add_Goto (Table.States (1203), 308, 106);
-            Add_Goto (Table.States (1203), 309, 107);
-            Add_Goto (Table.States (1203), 310, 108);
-            Add_Goto (Table.States (1203), 312, 109);
-            Add_Goto (Table.States (1203), 314, 110);
-            Add_Goto (Table.States (1203), 317, 112);
-            Add_Goto (Table.States (1203), 318, 113);
-            Add_Goto (Table.States (1203), 320, 114);
-            Add_Goto (Table.States (1203), 326, 116);
-            Add_Goto (Table.States (1203), 332, 117);
-            Table.States (1203).Kernel := To_Vector ((0 => (272, 74, 2, 
False)));
-            Table.States (1203).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 160, 0)));
-            Table.States (1204).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1204), (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, 
79, 94, 105, 106, 107, 108), (305, 0), 9,
+            Table.States (1212).Kernel := To_Vector ((0 => ((267, 0),  99,  0, 
(267, 0),  9)));
+            Table.States (1212).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (267, 0),  9)));
+            Table.States (1213).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (1213), 24, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (1213), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (1213), 28, (124, 0), 185);
+            Add_Action (Table.States (1213), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (1213), 30, (213, 0), 8);
+            Add_Action (Table.States (1213), 40, (249, 0), 12);
+            Add_Action (Table.States (1213), 46, (249, 1), 14);
+            Add_Action (Table.States (1213), 47, (216, 0), 15);
+            Add_Action (Table.States (1213), 48, (260, 0), 16);
+            Add_Action (Table.States (1213), 49, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (1213), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (1213), 51, (267, 0), 19);
+            Add_Action (Table.States (1213), 63, (316, 0), 25);
+            Add_Action (Table.States (1213), 66, (308, 0), 26);
+            Add_Action (Table.States (1213), 69, (209, 0), 27);
+            Add_Action (Table.States (1213), 71, (334, 0), 28);
+            Add_Action (Table.States (1213), 107, (222, 1), 187);
+            Table.States (1213).Goto_List.Set_Capacity (54);
+            Add_Goto (Table.States (1213), 115, 36);
+            Add_Goto (Table.States (1213), 124, 38);
+            Add_Goto (Table.States (1213), 130, 41);
+            Add_Goto (Table.States (1213), 137, 46);
+            Add_Goto (Table.States (1213), 138, 47);
+            Add_Goto (Table.States (1213), 160, 394);
+            Add_Goto (Table.States (1213), 161, 395);
+            Add_Goto (Table.States (1213), 162, 681);
+            Add_Goto (Table.States (1213), 182, 55);
+            Add_Goto (Table.States (1213), 185, 56);
+            Add_Goto (Table.States (1213), 189, 57);
+            Add_Goto (Table.States (1213), 196, 59);
+            Add_Goto (Table.States (1213), 209, 61);
+            Add_Goto (Table.States (1213), 210, 62);
+            Add_Goto (Table.States (1213), 212, 63);
+            Add_Goto (Table.States (1213), 213, 64);
+            Add_Goto (Table.States (1213), 216, 65);
+            Add_Goto (Table.States (1213), 217, 66);
+            Add_Goto (Table.States (1213), 218, 67);
+            Add_Goto (Table.States (1213), 219, 68);
+            Add_Goto (Table.States (1213), 222, 70);
+            Add_Goto (Table.States (1213), 226, 72);
+            Add_Goto (Table.States (1213), 246, 75);
+            Add_Goto (Table.States (1213), 247, 76);
+            Add_Goto (Table.States (1213), 248, 77);
+            Add_Goto (Table.States (1213), 249, 78);
+            Add_Goto (Table.States (1213), 250, 79);
+            Add_Goto (Table.States (1213), 251, 80);
+            Add_Goto (Table.States (1213), 252, 81);
+            Add_Goto (Table.States (1213), 253, 82);
+            Add_Goto (Table.States (1213), 254, 83);
+            Add_Goto (Table.States (1213), 260, 397);
+            Add_Goto (Table.States (1213), 262, 85);
+            Add_Goto (Table.States (1213), 263, 86);
+            Add_Goto (Table.States (1213), 265, 88);
+            Add_Goto (Table.States (1213), 266, 89);
+            Add_Goto (Table.States (1213), 267, 90);
+            Add_Goto (Table.States (1213), 268, 91);
+            Add_Goto (Table.States (1213), 269, 1254);
+            Add_Goto (Table.States (1213), 274, 92);
+            Add_Goto (Table.States (1213), 284, 95);
+            Add_Goto (Table.States (1213), 292, 96);
+            Add_Goto (Table.States (1213), 307, 103);
+            Add_Goto (Table.States (1213), 308, 104);
+            Add_Goto (Table.States (1213), 310, 106);
+            Add_Goto (Table.States (1213), 311, 107);
+            Add_Goto (Table.States (1213), 312, 108);
+            Add_Goto (Table.States (1213), 314, 109);
+            Add_Goto (Table.States (1213), 316, 110);
+            Add_Goto (Table.States (1213), 319, 112);
+            Add_Goto (Table.States (1213), 320, 113);
+            Add_Goto (Table.States (1213), 322, 114);
+            Add_Goto (Table.States (1213), 328, 116);
+            Add_Goto (Table.States (1213), 334, 117);
+            Table.States (1213).Kernel := To_Vector ((0 => ((274, 0),  74,  2, 
(2147483647, 0),  0)));
+            Table.States (1213).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (162, 1),  0)));
+            Table.States (1214).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1214), (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, 
81, 96, 107, 108, 109, 110), (307, 0),  9,
             single_protected_declaration_0'Access, 
single_protected_declaration_0_check'Access);
-            Table.States (1204).Kernel := To_Vector ((0 => (305, 97, 0, 
False)));
-            Table.States (1204).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 305, 9)));
-            Table.States (1205).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1205), (1 =>  97), (267, 0), 5, 
protected_definition_0'Access,
+            Table.States (1214).Kernel := To_Vector ((0 => ((307, 0),  99,  0, 
(307, 0),  9)));
+            Table.States (1214).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (307, 0),  9)));
+            Table.States (1215).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1215), (1 =>  99), (269, 0),  5, 
protected_definition_0'Access,
             protected_definition_0_check'Access);
-            Table.States (1205).Kernel := To_Vector ((0 => (267, 221, 0, 
False)));
-            Table.States (1205).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 267, 5)));
-            Table.States (1206).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1206), 97, Reduce, (221, 1), 0, null, 
null);
-            Add_Action (Table.States (1206), 105, 150);
-            Table.States (1206).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1206), 221, 1245);
-            Table.States (1206).Kernel := To_Vector ((0 => (317, 24, 1, 
False)));
-            Table.States (1206).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 0)));
-            Table.States (1207).Action_List.Set_Capacity (17);
-            Add_Action (Table.States (1207), 24, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (1207), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (1207), 28, 184);
-            Add_Action (Table.States (1207), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (1207), 30, 8);
-            Add_Action (Table.States (1207), 40, 12);
-            Add_Action (Table.States (1207), 46, 14);
-            Add_Action (Table.States (1207), 47, 15);
-            Add_Action (Table.States (1207), 48, 16);
-            Add_Action (Table.States (1207), 49, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (1207), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (1207), 51, 19);
-            Add_Action (Table.States (1207), 63, 25);
-            Add_Action (Table.States (1207), 66, 26);
-            Add_Action (Table.States (1207), 69, 27);
-            Add_Action (Table.States (1207), 71, 28);
-            Add_Action (Table.States (1207), 105, 186);
-            Table.States (1207).Goto_List.Set_Capacity (54);
-            Add_Goto (Table.States (1207), 113, 36);
-            Add_Goto (Table.States (1207), 122, 38);
-            Add_Goto (Table.States (1207), 128, 41);
-            Add_Goto (Table.States (1207), 135, 46);
-            Add_Goto (Table.States (1207), 136, 47);
-            Add_Goto (Table.States (1207), 158, 392);
-            Add_Goto (Table.States (1207), 159, 393);
-            Add_Goto (Table.States (1207), 160, 700);
-            Add_Goto (Table.States (1207), 180, 55);
-            Add_Goto (Table.States (1207), 183, 56);
-            Add_Goto (Table.States (1207), 187, 57);
-            Add_Goto (Table.States (1207), 194, 59);
-            Add_Goto (Table.States (1207), 207, 61);
-            Add_Goto (Table.States (1207), 208, 62);
-            Add_Goto (Table.States (1207), 210, 63);
-            Add_Goto (Table.States (1207), 211, 64);
-            Add_Goto (Table.States (1207), 214, 65);
-            Add_Goto (Table.States (1207), 215, 66);
-            Add_Goto (Table.States (1207), 216, 67);
-            Add_Goto (Table.States (1207), 217, 68);
-            Add_Goto (Table.States (1207), 220, 70);
-            Add_Goto (Table.States (1207), 224, 72);
-            Add_Goto (Table.States (1207), 244, 75);
-            Add_Goto (Table.States (1207), 245, 76);
-            Add_Goto (Table.States (1207), 246, 77);
-            Add_Goto (Table.States (1207), 247, 78);
-            Add_Goto (Table.States (1207), 248, 79);
-            Add_Goto (Table.States (1207), 249, 80);
-            Add_Goto (Table.States (1207), 250, 81);
-            Add_Goto (Table.States (1207), 251, 82);
-            Add_Goto (Table.States (1207), 252, 83);
-            Add_Goto (Table.States (1207), 258, 395);
-            Add_Goto (Table.States (1207), 260, 85);
-            Add_Goto (Table.States (1207), 261, 86);
-            Add_Goto (Table.States (1207), 263, 88);
-            Add_Goto (Table.States (1207), 264, 89);
-            Add_Goto (Table.States (1207), 265, 90);
-            Add_Goto (Table.States (1207), 266, 91);
-            Add_Goto (Table.States (1207), 272, 92);
-            Add_Goto (Table.States (1207), 282, 95);
-            Add_Goto (Table.States (1207), 290, 96);
-            Add_Goto (Table.States (1207), 305, 103);
-            Add_Goto (Table.States (1207), 306, 104);
-            Add_Goto (Table.States (1207), 308, 106);
-            Add_Goto (Table.States (1207), 309, 107);
-            Add_Goto (Table.States (1207), 310, 108);
-            Add_Goto (Table.States (1207), 312, 109);
-            Add_Goto (Table.States (1207), 314, 110);
-            Add_Goto (Table.States (1207), 317, 112);
-            Add_Goto (Table.States (1207), 318, 113);
-            Add_Goto (Table.States (1207), 319, 1246);
-            Add_Goto (Table.States (1207), 320, 114);
-            Add_Goto (Table.States (1207), 326, 116);
-            Add_Goto (Table.States (1207), 332, 117);
-            Table.States (1207).Kernel := To_Vector ((0 => (320, 74, 2, 
False)));
-            Table.States (1207).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 319, 0)));
-            Table.States (1208).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1208), 97, 1247);
-            Table.States (1208).Kernel := To_Vector ((0 => (320, 221, 1, 
False)));
-            Table.States (1208).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1247)));
-            Table.States (1209).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1209), 97, Reduce, (221, 1), 0, null, 
null);
-            Add_Action (Table.States (1209), 105, 150);
-            Table.States (1209).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1209), 221, 1248);
-            Table.States (1209).Kernel := To_Vector ((0 => (306, 24, 1, 
False)));
-            Table.States (1209).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 0)));
-            Table.States (1210).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (1210), 7, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (1210), 8, 1155);
-            Add_Action (Table.States (1210), 40, 750);
-            Add_Action (Table.States (1210), 79, 31);
-            Add_Action (Table.States (1210), 105, 120);
-            Add_Action (Table.States (1210), 106, 34);
-            Add_Action (Table.States (1210), 107, 35);
-            Table.States (1210).Goto_List.Set_Capacity (8);
-            Add_Goto (Table.States (1210), 115, 1156);
-            Add_Goto (Table.States (1210), 129, 42);
-            Add_Goto (Table.States (1210), 148, 1249);
-            Add_Goto (Table.States (1210), 240, 487);
-            Add_Goto (Table.States (1210), 242, 729);
-            Add_Goto (Table.States (1210), 273, 93);
-            Add_Goto (Table.States (1210), 294, 98);
-            Add_Goto (Table.States (1210), 315, 1158);
-            Table.States (1210).Kernel := To_Vector ((0 => (121, 42, 1, 
False)));
-            Table.States (1210).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (1211).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (1211), 7, Reduce, (242, 1), 0, null, 
null);
-            Add_Action (Table.States (1211), 8, 1155);
-            Add_Action (Table.States (1211), 40, 750);
-            Add_Action (Table.States (1211), 79, 31);
-            Add_Action (Table.States (1211), 105, 120);
-            Add_Action (Table.States (1211), 106, 34);
-            Add_Action (Table.States (1211), 107, 35);
-            Table.States (1211).Goto_List.Set_Capacity (8);
-            Add_Goto (Table.States (1211), 115, 1156);
-            Add_Goto (Table.States (1211), 129, 42);
-            Add_Goto (Table.States (1211), 148, 1250);
-            Add_Goto (Table.States (1211), 240, 487);
-            Add_Goto (Table.States (1211), 242, 729);
-            Add_Goto (Table.States (1211), 273, 93);
-            Add_Goto (Table.States (1211), 294, 98);
-            Add_Goto (Table.States (1211), 315, 1158);
-            Table.States (1211).Kernel := To_Vector ((0 => (121, 42, 1, 
False)));
-            Table.States (1211).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (1212).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1212), (77, 84), (227, 0), 3, null, 
null);
-            Table.States (1212).Kernel := To_Vector ((0 => (227, 226, 0, 
True)));
-            Table.States (1212).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 227, 3)));
-            Table.States (1212).Minimal_Complete_Actions_Recursive := True;
-            Table.States (1213).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (1213), 53, 1251);
-            Add_Action (Table.States (1213), 76, 236);
-            Add_Action (Table.States (1213), 85, 238);
-            Add_Action (Table.States (1213), 102, 240);
-            Add_Action (Table.States (1213), 103, 241);
-            Table.States (1213).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (1213), 116, 242);
-            Add_Goto (Table.States (1213), 323, 243);
-            Table.States (1213).Kernel := To_Vector (((129, 240, 2, True), 
(226, 240, 2, False), (240, 240, 5, True),
-            (240, 240, 2, True), (273, 240, 3, True), (294, 240, 2, True), 
(294, 240, 2, True), (294, 240, 2, True),
-            (294, 240, 2, True)));
-            Table.States (1213).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 53, 1251)));
-         end Subr_20;
-         procedure Subr_21
-         is begin
-            Table.States (1214).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1214), (77, 84), (226, 0), 3, null, 
null);
-            Table.States (1214).Kernel := To_Vector ((0 => (226, 81, 0, 
False)));
-            Table.States (1214).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 226, 3)));
-            Table.States (1215).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1215), (74, 97), (327, 4), 5, null, 
null);
-            Table.States (1215).Kernel := To_Vector ((0 => (327, 280, 0, 
False)));
-            Table.States (1215).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 327, 5)));
-            Table.States (1216).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (1216), 3, 122);
-            Add_Action (Table.States (1216), 39, 123);
-            Add_Action (Table.States (1216), 40, 124);
-            Add_Action (Table.States (1216), 41, 125);
-            Add_Action (Table.States (1216), 76, 127);
-            Add_Action (Table.States (1216), 79, 31);
-            Add_Action (Table.States (1216), 95, 128);
-            Add_Action (Table.States (1216), 96, 129);
-            Add_Action (Table.States (1216), 104, 130);
-            Add_Action (Table.States (1216), 105, 120);
-            Add_Action (Table.States (1216), 106, 34);
-            Add_Action (Table.States (1216), 107, 35);
-            Table.States (1216).Goto_List.Set_Capacity (11);
-            Add_Goto (Table.States (1216), 118, 131);
-            Add_Goto (Table.States (1216), 129, 42);
-            Add_Goto (Table.States (1216), 198, 134);
-            Add_Goto (Table.States (1216), 240, 135);
-            Add_Goto (Table.States (1216), 259, 136);
-            Add_Goto (Table.States (1216), 273, 93);
-            Add_Goto (Table.States (1216), 294, 98);
-            Add_Goto (Table.States (1216), 302, 1252);
-            Add_Goto (Table.States (1216), 321, 145);
-            Add_Goto (Table.States (1216), 322, 146);
-            Add_Goto (Table.States (1216), 331, 147);
-            Table.States (1216).Kernel := To_Vector ((0 => (280, 86, 1, 
False)));
-            Table.States (1216).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
-            Table.States (1217).Action_List.Set_Capacity (16);
-            Add_Action (Table.States (1217), 3, 122);
-            Add_Action (Table.States (1217), 39, 123);
-            Add_Action (Table.States (1217), 40, 262);
-            Add_Action (Table.States (1217), 41, 125);
-            Add_Action (Table.States (1217), 44, 264);
-            Add_Action (Table.States (1217), 52, 126);
-            Add_Action (Table.States (1217), 76, 127);
-            Add_Action (Table.States (1217), 79, 31);
-            Add_Action (Table.States (1217), 80, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (1217), 88, Reduce, (167, 2), 0, null, 
null);
-            Add_Action (Table.States (1217), 95, 128);
-            Add_Action (Table.States (1217), 96, 129);
-            Add_Action (Table.States (1217), 104, 130);
-            Add_Action (Table.States (1217), 105, 120);
-            Add_Action (Table.States (1217), 106, 34);
-            Add_Action (Table.States (1217), 107, 35);
-            Table.States (1217).Goto_List.Set_Capacity (22);
-            Add_Goto (Table.States (1217), 118, 131);
-            Add_Goto (Table.States (1217), 129, 42);
-            Add_Goto (Table.States (1217), 166, 270);
-            Add_Goto (Table.States (1217), 167, 1253);
-            Add_Goto (Table.States (1217), 192, 606);
-            Add_Goto (Table.States (1217), 198, 134);
-            Add_Goto (Table.States (1217), 240, 275);
-            Add_Goto (Table.States (1217), 259, 136);
-            Add_Goto (Table.States (1217), 273, 93);
-            Add_Goto (Table.States (1217), 276, 137);
-            Add_Goto (Table.States (1217), 278, 277);
-            Add_Goto (Table.States (1217), 283, 138);
-            Add_Goto (Table.States (1217), 284, 139);
-            Add_Goto (Table.States (1217), 285, 140);
-            Add_Goto (Table.States (1217), 286, 141);
-            Add_Goto (Table.States (1217), 287, 142);
-            Add_Goto (Table.States (1217), 288, 143);
-            Add_Goto (Table.States (1217), 294, 98);
-            Add_Goto (Table.States (1217), 302, 278);
-            Add_Goto (Table.States (1217), 321, 145);
-            Add_Goto (Table.States (1217), 322, 146);
-            Add_Goto (Table.States (1217), 331, 147);
-            Table.States (1217).Kernel := To_Vector ((0 => (330, 72, 1, 
False)));
-            Table.States (1217).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 167, 0)));
-            Table.States (1218).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1218), 24, 1254);
-            Add_Action (Table.States (1218), 72, 1217);
-            Table.States (1218).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1218), 330, 1255);
-            Table.States (1218).Kernel := To_Vector (((328, 329, 3, False), 
(329, 329, 2, True)));
-            Table.States (1218).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1254)));
+            Table.States (1215).Kernel := To_Vector ((0 => ((269, 0),  223,  
0, (269, 0),  5)));
+            Table.States (1215).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (269, 0),  5)));
+            Table.States (1216).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1216), 99, Reduce, (223, 1),  0, null, 
null);
+            Add_Action (Table.States (1216), 107, (223, 0), 151);
+            Table.States (1216).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1216), 223, 1255);
+            Table.States (1216).Kernel := To_Vector ((0 => ((319, 0),  24,  1, 
(2147483647, 0),  0)));
+            Table.States (1216).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (223, 1),  0)));
+            Table.States (1217).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (1217), 24, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (1217), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (1217), 28, (124, 0), 185);
+            Add_Action (Table.States (1217), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (1217), 30, (213, 0), 8);
+            Add_Action (Table.States (1217), 40, (249, 0), 12);
+            Add_Action (Table.States (1217), 46, (249, 1), 14);
+            Add_Action (Table.States (1217), 47, (216, 0), 15);
+            Add_Action (Table.States (1217), 48, (260, 0), 16);
+            Add_Action (Table.States (1217), 49, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (1217), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (1217), 51, (267, 0), 19);
+            Add_Action (Table.States (1217), 63, (316, 0), 25);
+            Add_Action (Table.States (1217), 66, (308, 0), 26);
+            Add_Action (Table.States (1217), 69, (209, 0), 27);
+            Add_Action (Table.States (1217), 71, (334, 0), 28);
+            Add_Action (Table.States (1217), 107, (222, 1), 187);
+            Table.States (1217).Goto_List.Set_Capacity (54);
+            Add_Goto (Table.States (1217), 115, 36);
+            Add_Goto (Table.States (1217), 124, 38);
+            Add_Goto (Table.States (1217), 130, 41);
+            Add_Goto (Table.States (1217), 137, 46);
+            Add_Goto (Table.States (1217), 138, 47);
+            Add_Goto (Table.States (1217), 160, 394);
+            Add_Goto (Table.States (1217), 161, 395);
+            Add_Goto (Table.States (1217), 162, 706);
+            Add_Goto (Table.States (1217), 182, 55);
+            Add_Goto (Table.States (1217), 185, 56);
+            Add_Goto (Table.States (1217), 189, 57);
+            Add_Goto (Table.States (1217), 196, 59);
+            Add_Goto (Table.States (1217), 209, 61);
+            Add_Goto (Table.States (1217), 210, 62);
+            Add_Goto (Table.States (1217), 212, 63);
+            Add_Goto (Table.States (1217), 213, 64);
+            Add_Goto (Table.States (1217), 216, 65);
+            Add_Goto (Table.States (1217), 217, 66);
+            Add_Goto (Table.States (1217), 218, 67);
+            Add_Goto (Table.States (1217), 219, 68);
+            Add_Goto (Table.States (1217), 222, 70);
+            Add_Goto (Table.States (1217), 226, 72);
+            Add_Goto (Table.States (1217), 246, 75);
+            Add_Goto (Table.States (1217), 247, 76);
+            Add_Goto (Table.States (1217), 248, 77);
+            Add_Goto (Table.States (1217), 249, 78);
+            Add_Goto (Table.States (1217), 250, 79);
+            Add_Goto (Table.States (1217), 251, 80);
+            Add_Goto (Table.States (1217), 252, 81);
+            Add_Goto (Table.States (1217), 253, 82);
+            Add_Goto (Table.States (1217), 254, 83);
+            Add_Goto (Table.States (1217), 260, 397);
+            Add_Goto (Table.States (1217), 262, 85);
+            Add_Goto (Table.States (1217), 263, 86);
+            Add_Goto (Table.States (1217), 265, 88);
+            Add_Goto (Table.States (1217), 266, 89);
+            Add_Goto (Table.States (1217), 267, 90);
+            Add_Goto (Table.States (1217), 268, 91);
+            Add_Goto (Table.States (1217), 274, 92);
+            Add_Goto (Table.States (1217), 284, 95);
+            Add_Goto (Table.States (1217), 292, 96);
+            Add_Goto (Table.States (1217), 307, 103);
+            Add_Goto (Table.States (1217), 308, 104);
+            Add_Goto (Table.States (1217), 310, 106);
+            Add_Goto (Table.States (1217), 311, 107);
+            Add_Goto (Table.States (1217), 312, 108);
+            Add_Goto (Table.States (1217), 314, 109);
+            Add_Goto (Table.States (1217), 316, 110);
+            Add_Goto (Table.States (1217), 319, 112);
+            Add_Goto (Table.States (1217), 320, 113);
+            Add_Goto (Table.States (1217), 321, 1256);
+            Add_Goto (Table.States (1217), 322, 114);
+            Add_Goto (Table.States (1217), 328, 116);
+            Add_Goto (Table.States (1217), 334, 117);
+            Table.States (1217).Kernel := To_Vector ((0 => ((322, 0),  74,  2, 
(2147483647, 0),  0)));
+            Table.States (1217).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (321, 1),  0)));
+            Table.States (1218).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1218), 99, (322, 1), 1257);
+            Table.States (1218).Kernel := To_Vector ((0 => ((322, 1),  223,  
1, (2147483647, 0),  0)));
+            Table.States (1218).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (322, 1),  99, 1257)));
             Table.States (1219).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1219), (24, 72), (329, 1), 1, null, 
null);
-            Table.States (1219).Kernel := To_Vector ((0 => (329, 330, 0, 
False)));
-            Table.States (1219).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 329, 1)));
-            Table.States (1220).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (1220), (74, 83, 97), (148, 2), 2, null, 
null);
-            Table.States (1220).Kernel := To_Vector ((0 => (148, 115, 0, 
False)));
-            Table.States (1220).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 148, 2)));
-            Table.States (1221).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (1221), (74, 83, 97), (148, 0), 2, null, 
null);
-            Table.States (1221).Kernel := To_Vector ((0 => (148, 315, 0, 
False)));
-            Table.States (1221).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 148, 2)));
-            Table.States (1222).Action_List.Set_Capacity (15);
-            Add_Action (Table.States (1222), 3, 122);
-            Add_Action (Table.States (1222), 39, 123);
-            Add_Action (Table.States (1222), 40, 124);
-            Add_Action (Table.States (1222), 41, 125);
-            Add_Action (Table.States (1222), 52, 126);
-            Add_Action (Table.States (1222), 74, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1222), 76, 127);
-            Add_Action (Table.States (1222), 79, 31);
-            Add_Action (Table.States (1222), 95, 128);
-            Add_Action (Table.States (1222), 96, 129);
-            Add_Action (Table.States (1222), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1222), 104, 130);
-            Add_Action (Table.States (1222), 105, 120);
-            Add_Action (Table.States (1222), 106, 34);
-            Add_Action (Table.States (1222), 107, 35);
-            Table.States (1222).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (1222), 118, 131);
-            Add_Goto (Table.States (1222), 129, 42);
-            Add_Goto (Table.States (1222), 192, 132);
-            Add_Goto (Table.States (1222), 193, 1256);
-            Add_Goto (Table.States (1222), 198, 134);
-            Add_Goto (Table.States (1222), 240, 135);
-            Add_Goto (Table.States (1222), 259, 136);
-            Add_Goto (Table.States (1222), 273, 93);
-            Add_Goto (Table.States (1222), 276, 137);
-            Add_Goto (Table.States (1222), 283, 138);
-            Add_Goto (Table.States (1222), 284, 139);
-            Add_Goto (Table.States (1222), 285, 140);
-            Add_Goto (Table.States (1222), 286, 141);
-            Add_Goto (Table.States (1222), 287, 142);
-            Add_Goto (Table.States (1222), 288, 143);
-            Add_Goto (Table.States (1222), 294, 98);
-            Add_Goto (Table.States (1222), 302, 144);
-            Add_Goto (Table.States (1222), 321, 145);
-            Add_Goto (Table.States (1222), 322, 146);
-            Add_Goto (Table.States (1222), 331, 147);
-            Table.States (1222).Kernel := To_Vector ((0 => (147, 83, 1, 
False)));
-            Table.States (1222).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (1223).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1223), 97, 1257);
-            Table.States (1223).Kernel := To_Vector ((0 => (147, 123, 1, 
False)));
-            Table.States (1223).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1257)));
-            Table.States (1224).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (1224), 10, 1016);
-            Add_Action (Table.States (1224), 74, Reduce, (120, 0), 2, null, 
null);
-            Add_Action (Table.States (1224), 97, Reduce, (120, 0), 2, null, 
null);
-            Table.States (1224).Kernel := To_Vector (((120, 228, 0, False), 
(228, 228, 2, True)));
-            Table.States (1224).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 120, 2)));
-            Table.States (1225).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1225), 49, 1258);
-            Table.States (1225).Kernel := To_Vector ((0 => (260, 74, 2, 
False)));
-            Table.States (1225).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 49, 1258)));
-            Table.States (1226).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1226), 41, 713);
-            Add_Action (Table.States (1226), 54, 716);
-            Table.States (1226).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1226), 281, 1259);
-            Table.States (1226).Kernel := To_Vector ((0 => (163, 74, 2, 
False)));
-            Table.States (1226).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 41, 713)));
-            Table.States (1227).Action_List.Set_Capacity (25);
-            Add_Action (Table.States (1227), 4, 1);
-            Add_Action (Table.States (1227), 5, 2);
-            Add_Action (Table.States (1227), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1227), 15, 3);
-            Add_Action (Table.States (1227), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1227), 18, 4);
-            Add_Action (Table.States (1227), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (1227), 27, 5);
-            Add_Action (Table.States (1227), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1227), 31, 9);
-            Add_Action (Table.States (1227), 32, 10);
-            Add_Action (Table.States (1227), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1227), 41, 13);
-            Add_Action (Table.States (1227), 48, 16);
-            Add_Action (Table.States (1227), 52, 20);
-            Add_Action (Table.States (1227), 57, 21);
-            Add_Action (Table.States (1227), 58, 22);
-            Add_Action (Table.States (1227), 61, 24);
-            Add_Action (Table.States (1227), 72, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (1227), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1227), 79, 31);
-            Add_Action (Table.States (1227), 94, 32);
-            Add_Action (Table.States (1227), 105, 361);
-            Add_Action (Table.States (1227), 106, 34);
-            Add_Action (Table.States (1227), 107, 35);
-            Table.States (1227).Goto_List.Set_Capacity (31);
-            Add_Goto (Table.States (1227), 114, 37);
-            Add_Goto (Table.States (1227), 124, 39);
-            Add_Goto (Table.States (1227), 127, 40);
-            Add_Goto (Table.States (1227), 129, 42);
-            Add_Goto (Table.States (1227), 132, 43);
-            Add_Goto (Table.States (1227), 133, 44);
-            Add_Goto (Table.States (1227), 134, 45);
-            Add_Goto (Table.States (1227), 140, 48);
-            Add_Goto (Table.States (1227), 152, 51);
-            Add_Goto (Table.States (1227), 153, 52);
-            Add_Goto (Table.States (1227), 162, 54);
-            Add_Goto (Table.States (1227), 191, 58);
-            Add_Goto (Table.States (1227), 197, 60);
-            Add_Goto (Table.States (1227), 218, 69);
-            Add_Goto (Table.States (1227), 223, 71);
-            Add_Goto (Table.States (1227), 233, 73);
-            Add_Goto (Table.States (1227), 240, 74);
-            Add_Goto (Table.States (1227), 258, 84);
-            Add_Goto (Table.States (1227), 262, 87);
-            Add_Goto (Table.States (1227), 273, 93);
-            Add_Goto (Table.States (1227), 277, 94);
-            Add_Goto (Table.States (1227), 291, 97);
-            Add_Goto (Table.States (1227), 294, 98);
-            Add_Goto (Table.States (1227), 295, 99);
-            Add_Goto (Table.States (1227), 299, 100);
-            Add_Goto (Table.States (1227), 300, 362);
-            Add_Goto (Table.States (1227), 301, 1260);
-            Add_Goto (Table.States (1227), 303, 101);
-            Add_Goto (Table.States (1227), 304, 102);
-            Add_Goto (Table.States (1227), 307, 364);
-            Add_Goto (Table.States (1227), 324, 115);
-            Table.States (1227).Kernel := To_Vector ((0 => (188, 88, 0, 
False)));
-            Table.States (1227).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 301, 0)));
-            Table.States (1228).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1228), (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, 
79, 94, 105, 106, 107, 108), (245, 1), 9,
+            Add_Action (Table.States (1219), 99, Reduce, (223, 1),  0, null, 
null);
+            Add_Action (Table.States (1219), 107, (223, 0), 151);
+            Table.States (1219).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1219), 223, 1258);
+            Table.States (1219).Kernel := To_Vector ((0 => ((308, 0),  24,  1, 
(2147483647, 0),  0)));
+            Table.States (1219).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (223, 1),  0)));
+            Table.States (1220).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (1220), 7, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (1220), 8, (150, 0), 1165);
+            Add_Action (Table.States (1220), 40, (244, 0), 756);
+            Add_Action (Table.States (1220), 81, (242, 8), 31);
+            Add_Action (Table.States (1220), 107, (242, 5), 120);
+            Add_Action (Table.States (1220), 108, (242, 7), 34);
+            Add_Action (Table.States (1220), 109, (242, 6), 35);
+            Table.States (1220).Goto_List.Set_Capacity (8);
+            Add_Goto (Table.States (1220), 117, 1166);
+            Add_Goto (Table.States (1220), 131, 42);
+            Add_Goto (Table.States (1220), 150, 1259);
+            Add_Goto (Table.States (1220), 242, 491);
+            Add_Goto (Table.States (1220), 244, 735);
+            Add_Goto (Table.States (1220), 275, 93);
+            Add_Goto (Table.States (1220), 296, 98);
+            Add_Goto (Table.States (1220), 317, 1168);
+            Table.States (1220).Kernel := To_Vector ((0 => ((123, 1),  42,  1, 
(2147483647, 0),  0)));
+            Table.States (1220).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (1221).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (1221), 7, Reduce, (244, 1),  0, null, 
null);
+            Add_Action (Table.States (1221), 8, (150, 0), 1165);
+            Add_Action (Table.States (1221), 40, (244, 0), 756);
+            Add_Action (Table.States (1221), 81, (242, 8), 31);
+            Add_Action (Table.States (1221), 107, (242, 5), 120);
+            Add_Action (Table.States (1221), 108, (242, 7), 34);
+            Add_Action (Table.States (1221), 109, (242, 6), 35);
+            Table.States (1221).Goto_List.Set_Capacity (8);
+            Add_Goto (Table.States (1221), 117, 1166);
+            Add_Goto (Table.States (1221), 131, 42);
+            Add_Goto (Table.States (1221), 150, 1260);
+            Add_Goto (Table.States (1221), 242, 491);
+            Add_Goto (Table.States (1221), 244, 735);
+            Add_Goto (Table.States (1221), 275, 93);
+            Add_Goto (Table.States (1221), 296, 98);
+            Add_Goto (Table.States (1221), 317, 1168);
+            Table.States (1221).Kernel := To_Vector ((0 => ((123, 0),  42,  1, 
(2147483647, 0),  0)));
+            Table.States (1221).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (1222).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1222), (78, 86), (229, 0),  3, null, 
null);
+            Table.States (1222).Kernel := To_Vector ((0 => ((229, 0),  228,  
0, (229, 0),  3)));
+            Table.States (1222).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (229, 0),  3)));
+            Table.States (1223).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (1223), 53, (228, 0), 1261);
+            Add_Action (Table.States (1223), 76, (118, 0), 237);
+            Add_Action (Table.States (1223), 87, (296, 0), 239);
+            Add_Action (Table.States (1223), 104, (325, 0), 241);
+            Add_Action (Table.States (1223), 105, (325, 1), 242);
+            Table.States (1223).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (1223), 118, 243);
+            Add_Goto (Table.States (1223), 325, 244);
+            Table.States (1223).Kernel := To_Vector ((((131, 0),  242,  2, 
(2147483647, 0),  0), ((228, 0),  242,  2,
+            (2147483647, 0),  0), ((242, 0),  242,  5, (2147483647, 0),  0), 
((242, 1),  242,  2, (2147483647, 0),  0),
+            ((275, 0),  242,  3, (2147483647, 0),  0), ((296, 0),  242,  2, 
(2147483647, 0),  0), ((296, 1),  242,  2,
+            (2147483647, 0),  0), ((296, 2),  242,  2, (2147483647, 0),  0), 
((296, 3),  242,  2, (2147483647, 0),
+            0)));
+            Table.States (1223).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (228, 0),  53, 1261)));
+            Table.States (1224).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1224), (78, 86), (228, 0),  3, null, 
null);
+            Table.States (1224).Kernel := To_Vector ((0 => ((228, 0),  83,  0, 
(228, 0),  3)));
+            Table.States (1224).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (228, 0),  3)));
+            Table.States (1225).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1225), (74, 99), (329, 4),  5, null, 
null);
+            Table.States (1225).Kernel := To_Vector ((0 => ((329, 4),  282,  
0, (329, 4),  5)));
+            Table.States (1225).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (329, 4),  5)));
+            Table.States (1226).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (1226), 3, (200, 2), 122);
+            Add_Action (Table.States (1226), 39, (261, 4), 123);
+            Add_Action (Table.States (1226), 40, (200, 3), 124);
+            Add_Action (Table.States (1226), 41, (261, 1), 125);
+            Add_Action (Table.States (1226), 76, (120, 0), 127);
+            Add_Action (Table.States (1226), 77, (120, 5), 128);
+            Add_Action (Table.States (1226), 81, (242, 8), 31);
+            Add_Action (Table.States (1226), 97, (333, 1), 129);
+            Add_Action (Table.States (1226), 98, (333, 0), 130);
+            Add_Action (Table.States (1226), 106, (261, 0), 131);
+            Add_Action (Table.States (1226), 107, (242, 5), 120);
+            Add_Action (Table.States (1226), 108, (242, 7), 34);
+            Add_Action (Table.States (1226), 109, (242, 6), 35);
+            Table.States (1226).Goto_List.Set_Capacity (11);
+            Add_Goto (Table.States (1226), 120, 132);
+            Add_Goto (Table.States (1226), 131, 42);
+            Add_Goto (Table.States (1226), 200, 135);
+            Add_Goto (Table.States (1226), 242, 136);
+            Add_Goto (Table.States (1226), 261, 137);
+            Add_Goto (Table.States (1226), 275, 93);
+            Add_Goto (Table.States (1226), 296, 98);
+            Add_Goto (Table.States (1226), 304, 1262);
+            Add_Goto (Table.States (1226), 323, 146);
+            Add_Goto (Table.States (1226), 324, 147);
+            Add_Goto (Table.States (1226), 333, 148);
+            Table.States (1226).Kernel := To_Vector ((0 => ((282, 0),  88,  1, 
(2147483647, 0),  0)));
+            Table.States (1226).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (1227).Action_List.Set_Capacity (17);
+            Add_Action (Table.States (1227), 3, (200, 2), 122);
+            Add_Action (Table.States (1227), 39, (261, 4), 123);
+            Add_Action (Table.States (1227), 40, (168, 1), 263);
+            Add_Action (Table.States (1227), 41, (261, 1), 125);
+            Add_Action (Table.States (1227), 44, (168, 3), 265);
+            Add_Action (Table.States (1227), 52, (278, 0), 126);
+            Add_Action (Table.States (1227), 76, (120, 0), 127);
+            Add_Action (Table.States (1227), 77, (120, 5), 128);
+            Add_Action (Table.States (1227), 81, (242, 8), 31);
+            Add_Action (Table.States (1227), 82, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (1227), 90, Reduce, (169, 2),  0, null, 
null);
+            Add_Action (Table.States (1227), 97, (333, 1), 129);
+            Add_Action (Table.States (1227), 98, (333, 0), 130);
+            Add_Action (Table.States (1227), 106, (261, 0), 131);
+            Add_Action (Table.States (1227), 107, (242, 5), 120);
+            Add_Action (Table.States (1227), 108, (242, 7), 34);
+            Add_Action (Table.States (1227), 109, (242, 6), 35);
+            Table.States (1227).Goto_List.Set_Capacity (22);
+            Add_Goto (Table.States (1227), 120, 132);
+            Add_Goto (Table.States (1227), 131, 42);
+            Add_Goto (Table.States (1227), 168, 271);
+            Add_Goto (Table.States (1227), 169, 1263);
+            Add_Goto (Table.States (1227), 194, 611);
+            Add_Goto (Table.States (1227), 200, 135);
+            Add_Goto (Table.States (1227), 242, 276);
+            Add_Goto (Table.States (1227), 261, 137);
+            Add_Goto (Table.States (1227), 275, 93);
+            Add_Goto (Table.States (1227), 278, 138);
+            Add_Goto (Table.States (1227), 280, 278);
+            Add_Goto (Table.States (1227), 285, 139);
+            Add_Goto (Table.States (1227), 286, 140);
+            Add_Goto (Table.States (1227), 287, 141);
+            Add_Goto (Table.States (1227), 288, 142);
+            Add_Goto (Table.States (1227), 289, 143);
+            Add_Goto (Table.States (1227), 290, 144);
+            Add_Goto (Table.States (1227), 296, 98);
+            Add_Goto (Table.States (1227), 304, 279);
+            Add_Goto (Table.States (1227), 323, 146);
+            Add_Goto (Table.States (1227), 324, 147);
+            Add_Goto (Table.States (1227), 333, 148);
+            Table.States (1227).Kernel := To_Vector ((0 => ((332, 0),  72,  1, 
(2147483647, 0),  0)));
+            Table.States (1227).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (169, 2),  0)));
+         end Subr_21;
+         procedure Subr_22
+         is begin
+            Table.States (1228).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1228), 24, (330, 0), 1264);
+            Add_Action (Table.States (1228), 72, (332, 0), 1227);
+            Table.States (1228).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1228), 332, 1265);
+            Table.States (1228).Kernel := To_Vector ((((330, 0),  331,  3, 
(2147483647, 0),  0), ((331, 0),  331,  2,
+            (2147483647, 0),  0)));
+            Table.States (1228).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (330, 0),  24, 1264)));
+            Table.States (1229).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1229), (24, 72), (331, 1),  1, null, 
null);
+            Table.States (1229).Kernel := To_Vector ((0 => ((331, 1),  332,  
0, (331, 1),  1)));
+            Table.States (1229).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (331, 1),  1)));
+            Table.States (1230).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (1230), (74, 85, 99), (150, 2),  2, null, 
null);
+            Table.States (1230).Kernel := To_Vector ((0 => ((150, 2),  117,  
0, (150, 2),  2)));
+            Table.States (1230).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (150, 2),  2)));
+            Table.States (1231).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (1231), (74, 85, 99), (150, 0),  2, null, 
null);
+            Table.States (1231).Kernel := To_Vector ((0 => ((150, 0),  317,  
0, (150, 0),  2)));
+            Table.States (1231).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (150, 0),  2)));
+            Table.States (1232).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (1232), 3, (200, 2), 122);
+            Add_Action (Table.States (1232), 39, (261, 4), 123);
+            Add_Action (Table.States (1232), 40, (200, 3), 124);
+            Add_Action (Table.States (1232), 41, (261, 1), 125);
+            Add_Action (Table.States (1232), 52, (278, 0), 126);
+            Add_Action (Table.States (1232), 74, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1232), 76, (120, 0), 127);
+            Add_Action (Table.States (1232), 77, (120, 5), 128);
+            Add_Action (Table.States (1232), 81, (242, 8), 31);
+            Add_Action (Table.States (1232), 97, (333, 1), 129);
+            Add_Action (Table.States (1232), 98, (333, 0), 130);
+            Add_Action (Table.States (1232), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1232), 106, (261, 0), 131);
+            Add_Action (Table.States (1232), 107, (242, 5), 120);
+            Add_Action (Table.States (1232), 108, (242, 7), 34);
+            Add_Action (Table.States (1232), 109, (242, 6), 35);
+            Table.States (1232).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (1232), 120, 132);
+            Add_Goto (Table.States (1232), 131, 42);
+            Add_Goto (Table.States (1232), 194, 133);
+            Add_Goto (Table.States (1232), 195, 1266);
+            Add_Goto (Table.States (1232), 200, 135);
+            Add_Goto (Table.States (1232), 242, 136);
+            Add_Goto (Table.States (1232), 261, 137);
+            Add_Goto (Table.States (1232), 275, 93);
+            Add_Goto (Table.States (1232), 278, 138);
+            Add_Goto (Table.States (1232), 285, 139);
+            Add_Goto (Table.States (1232), 286, 140);
+            Add_Goto (Table.States (1232), 287, 141);
+            Add_Goto (Table.States (1232), 288, 142);
+            Add_Goto (Table.States (1232), 289, 143);
+            Add_Goto (Table.States (1232), 290, 144);
+            Add_Goto (Table.States (1232), 296, 98);
+            Add_Goto (Table.States (1232), 304, 145);
+            Add_Goto (Table.States (1232), 323, 146);
+            Add_Goto (Table.States (1232), 324, 147);
+            Add_Goto (Table.States (1232), 333, 148);
+            Table.States (1232).Kernel := To_Vector ((0 => ((149, 0),  85,  1, 
(2147483647, 0),  0)));
+            Table.States (1232).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
+            Table.States (1233).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1233), 99, (149, 1), 1267);
+            Table.States (1233).Kernel := To_Vector ((0 => ((149, 1),  125,  
1, (2147483647, 0),  0)));
+            Table.States (1233).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (149, 1),  99, 1267)));
+            Table.States (1234).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (1234), 10, (230, 0), 1026);
+            Add_Action (Table.States (1234), 74, Reduce, (122, 0),  2, null, 
null);
+            Add_Action (Table.States (1234), 99, Reduce, (122, 0),  2, null, 
null);
+            Table.States (1234).Kernel := To_Vector ((((122, 0),  230,  0, 
(122, 0),  2), ((230, 0),  230,  2,
+            (2147483647, 0),  0)));
+            Table.States (1234).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (122, 0),  2)));
+            Table.States (1235).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1235), 49, (262, 0), 1268);
+            Table.States (1235).Kernel := To_Vector ((0 => ((262, 0),  74,  2, 
(2147483647, 0),  0)));
+            Table.States (1235).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (262, 0),  49, 1268)));
+            Table.States (1236).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1236), 41, (283, 1), 719);
+            Add_Action (Table.States (1236), 54, (283, 0), 722);
+            Table.States (1236).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1236), 283, 1269);
+            Table.States (1236).Kernel := To_Vector ((0 => ((165, 0),  74,  2, 
(2147483647, 0),  0)));
+            Table.States (1236).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (283, 1),  41, 719)));
+            Table.States (1237).Action_List.Set_Capacity (25);
+            Add_Action (Table.States (1237), 4, (116, 0), 1);
+            Add_Action (Table.States (1237), 5, (306, 8), 2);
+            Add_Action (Table.States (1237), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1237), 15, (142, 0), 3);
+            Add_Action (Table.States (1237), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1237), 18, (164, 0), 4);
+            Add_Action (Table.States (1237), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (1237), 27, (193, 0), 5);
+            Add_Action (Table.States (1237), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1237), 31, (306, 3), 9);
+            Add_Action (Table.States (1237), 32, (225, 0), 10);
+            Add_Action (Table.States (1237), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1237), 41, (306, 0), 13);
+            Add_Action (Table.States (1237), 48, (260, 0), 16);
+            Add_Action (Table.States (1237), 52, (279, 0), 20);
+            Add_Action (Table.States (1237), 57, (293, 0), 21);
+            Add_Action (Table.States (1237), 58, (199, 0), 22);
+            Add_Action (Table.States (1237), 61, (129, 0), 24);
+            Add_Action (Table.States (1237), 72, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (1237), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1237), 81, (242, 8), 31);
+            Add_Action (Table.States (1237), 96, (220, 0), 32);
+            Add_Action (Table.States (1237), 107, (134, 0), 363);
+            Add_Action (Table.States (1237), 108, (242, 7), 34);
+            Add_Action (Table.States (1237), 109, (242, 6), 35);
+            Table.States (1237).Goto_List.Set_Capacity (31);
+            Add_Goto (Table.States (1237), 116, 37);
+            Add_Goto (Table.States (1237), 126, 39);
+            Add_Goto (Table.States (1237), 129, 40);
+            Add_Goto (Table.States (1237), 131, 42);
+            Add_Goto (Table.States (1237), 134, 43);
+            Add_Goto (Table.States (1237), 135, 44);
+            Add_Goto (Table.States (1237), 136, 45);
+            Add_Goto (Table.States (1237), 142, 48);
+            Add_Goto (Table.States (1237), 154, 51);
+            Add_Goto (Table.States (1237), 155, 52);
+            Add_Goto (Table.States (1237), 164, 54);
+            Add_Goto (Table.States (1237), 193, 58);
+            Add_Goto (Table.States (1237), 199, 60);
+            Add_Goto (Table.States (1237), 220, 69);
+            Add_Goto (Table.States (1237), 225, 71);
+            Add_Goto (Table.States (1237), 235, 73);
+            Add_Goto (Table.States (1237), 242, 74);
+            Add_Goto (Table.States (1237), 260, 84);
+            Add_Goto (Table.States (1237), 264, 87);
+            Add_Goto (Table.States (1237), 275, 93);
+            Add_Goto (Table.States (1237), 279, 94);
+            Add_Goto (Table.States (1237), 293, 97);
+            Add_Goto (Table.States (1237), 296, 98);
+            Add_Goto (Table.States (1237), 297, 99);
+            Add_Goto (Table.States (1237), 301, 100);
+            Add_Goto (Table.States (1237), 302, 364);
+            Add_Goto (Table.States (1237), 303, 1270);
+            Add_Goto (Table.States (1237), 305, 101);
+            Add_Goto (Table.States (1237), 306, 102);
+            Add_Goto (Table.States (1237), 309, 366);
+            Add_Goto (Table.States (1237), 326, 115);
+            Table.States (1237).Kernel := To_Vector ((0 => ((190, 0),  90,  0, 
(303, 1),  0)));
+            Table.States (1237).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (303, 1),  0)));
+            Table.States (1238).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1238), (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, 
81, 96, 107, 108, 109, 110), (247, 1),  9,
             object_declaration_1'Access, null);
-            Table.States (1228).Kernel := To_Vector ((0 => (245, 97, 0, 
False)));
-            Table.States (1228).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 245, 9)));
-            Table.States (1229).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1229), (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, 
79, 94, 105, 106, 107, 108), (245, 2), 9,
+            Table.States (1238).Kernel := To_Vector ((0 => ((247, 1),  99,  0, 
(247, 1),  9)));
+            Table.States (1238).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (247, 1),  9)));
+            Table.States (1239).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1239), (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, 
81, 96, 107, 108, 109, 110), (247, 2),  9,
             object_declaration_2'Access, null);
-            Table.States (1229).Kernel := To_Vector ((0 => (245, 97, 0, 
False)));
-            Table.States (1229).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 245, 9)));
-            Table.States (1230).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1230), (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, 
79, 94, 105, 106, 107, 108), (245, 0), 9,
+            Table.States (1239).Kernel := To_Vector ((0 => ((247, 2),  99,  0, 
(247, 2),  9)));
+            Table.States (1239).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (247, 2),  9)));
+            Table.States (1240).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1240), (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, 
81, 96, 107, 108, 109, 110), (247, 0),  9,
             object_declaration_0'Access, null);
-            Table.States (1230).Kernel := To_Vector ((0 => (245, 97, 0, 
False)));
-            Table.States (1230).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 245, 9)));
-            Table.States (1231).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1231), (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, 
79, 94, 105, 106, 107, 108), (180, 0), 9,
+            Table.States (1240).Kernel := To_Vector ((0 => ((247, 0),  99,  0, 
(247, 0),  9)));
+            Table.States (1240).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (247, 0),  9)));
+            Table.States (1241).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1241), (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, 
81, 96, 107, 108, 109, 110), (182, 0),  9,
             entry_declaration_0'Access, null);
-            Table.States (1231).Kernel := To_Vector ((0 => (180, 97, 0, 
False)));
-            Table.States (1231).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 180, 9)));
-            Table.States (1232).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1232), 97, 1261);
-            Table.States (1232).Kernel := To_Vector ((0 => (308, 241, 1, 
False)));
-            Table.States (1232).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1261)));
-            Table.States (1233).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (1233), (22, 23, 77), (173, 0), 4, 
elsif_expression_item_0'Access, null);
-            Table.States (1233).Kernel := To_Vector ((0 => (173, 193, 0, 
False)));
-            Table.States (1233).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 173, 4)));
-            Table.States (1234).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1234), 86, 1262);
-            Table.States (1234).Kernel := To_Vector ((0 => (145, 302, 3, 
False)));
-            Table.States (1234).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 86, 1262)));
-            Table.States (1235).Action_List.Set_Capacity (15);
-            Add_Action (Table.States (1235), 3, 122);
-            Add_Action (Table.States (1235), 39, 123);
-            Add_Action (Table.States (1235), 40, 124);
-            Add_Action (Table.States (1235), 41, 125);
-            Add_Action (Table.States (1235), 52, 126);
-            Add_Action (Table.States (1235), 76, 127);
-            Add_Action (Table.States (1235), 77, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1235), 79, 31);
-            Add_Action (Table.States (1235), 95, 128);
-            Add_Action (Table.States (1235), 96, 129);
-            Add_Action (Table.States (1235), 97, Reduce, (193, 1), 0, null, 
null);
-            Add_Action (Table.States (1235), 104, 130);
-            Add_Action (Table.States (1235), 105, 120);
-            Add_Action (Table.States (1235), 106, 34);
-            Add_Action (Table.States (1235), 107, 35);
-            Table.States (1235).Goto_List.Set_Capacity (20);
-            Add_Goto (Table.States (1235), 118, 131);
-            Add_Goto (Table.States (1235), 129, 42);
-            Add_Goto (Table.States (1235), 192, 132);
-            Add_Goto (Table.States (1235), 193, 1263);
-            Add_Goto (Table.States (1235), 198, 134);
-            Add_Goto (Table.States (1235), 240, 135);
-            Add_Goto (Table.States (1235), 259, 136);
-            Add_Goto (Table.States (1235), 273, 93);
-            Add_Goto (Table.States (1235), 276, 137);
-            Add_Goto (Table.States (1235), 283, 138);
-            Add_Goto (Table.States (1235), 284, 139);
-            Add_Goto (Table.States (1235), 285, 140);
-            Add_Goto (Table.States (1235), 286, 141);
-            Add_Goto (Table.States (1235), 287, 142);
-            Add_Goto (Table.States (1235), 288, 143);
-            Add_Goto (Table.States (1235), 294, 98);
-            Add_Goto (Table.States (1235), 302, 144);
-            Add_Goto (Table.States (1235), 321, 145);
-            Add_Goto (Table.States (1235), 322, 146);
-            Add_Goto (Table.States (1235), 331, 147);
-            Table.States (1235).Kernel := To_Vector ((0 => (255, 83, 0, 
False)));
-            Table.States (1235).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 193, 0)));
-            Table.States (1236).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1236), 49, 1264);
-            Table.States (1236).Kernel := To_Vector ((0 => (204, 74, 1, 
False)));
-            Table.States (1236).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 49, 1264)));
-            Table.States (1237).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1237), (74, 97), (206, 0), 3, null, 
null);
-            Table.States (1237).Kernel := To_Vector ((0 => (206, 77, 0, 
False)));
-            Table.States (1237).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 206, 3)));
-            Table.States (1238).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (1238), (29, 47, 48, 50, 69, 71, 74, 
105), (205, 0), 9,
-            formal_package_declaration_0'Access, null);
-            Table.States (1238).Kernel := To_Vector ((0 => (205, 97, 0, 
False)));
-            Table.States (1238).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 205, 9)));
-            Table.States (1239).Action_List.Set_Capacity (8);
-            Add_Action (Table.States (1239), (29, 47, 48, 50, 69, 71, 74, 
105), (199, 0), 9,
-            formal_object_declaration_0'Access, null);
-            Table.States (1239).Kernel := To_Vector ((0 => (199, 97, 0, 
False)));
-            Table.States (1239).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 199, 9)));
-            Table.States (1240).Action_List.Set_Capacity (47);
-            Add_Action (Table.States (1240), (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, 79, 94, 105, 106,
-            107, 108), (223, 0), 10, if_statement_0'Access, null);
-            Table.States (1240).Kernel := To_Vector ((0 => (223, 97, 0, 
False)));
-            Table.States (1240).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 223, 10)));
-            Table.States (1241).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1241), 97, 1265);
-            Table.States (1241).Kernel := To_Vector ((0 => (248, 241, 1, 
False)));
-            Table.States (1241).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1265)));
+            Table.States (1241).Kernel := To_Vector ((0 => ((182, 0),  99,  0, 
(182, 0),  9)));
+            Table.States (1241).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (182, 0),  9)));
             Table.States (1242).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1242), 33, 1266);
-            Table.States (1242).Kernel := To_Vector ((0 => (178, 105, 3, 
False)));
-            Table.States (1242).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 33, 1266)));
-            Table.States (1243).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1243), 35, 1267);
-            Table.States (1243).Kernel := To_Vector ((0 => (177, 193, 4, 
False)));
-            Table.States (1243).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 35, 1267)));
+            Add_Action (Table.States (1242), 99, (310, 0), 1271);
+            Table.States (1242).Kernel := To_Vector ((0 => ((310, 0),  243,  
1, (2147483647, 0),  0)));
+            Table.States (1242).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (310, 0),  99, 1271)));
+            Table.States (1243).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (1243), (22, 23, 78), (175, 0),  4, 
elsif_expression_item_0'Access, null);
+            Table.States (1243).Kernel := To_Vector ((0 => ((175, 0),  195,  
0, (175, 0),  4)));
+            Table.States (1243).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (175, 0),  4)));
             Table.States (1244).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1244), 97, 1268);
-            Table.States (1244).Kernel := To_Vector ((0 => (272, 267, 1, 
False)));
-            Table.States (1244).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1268)));
-            Table.States (1245).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1245), 97, 1269);
-            Table.States (1245).Kernel := To_Vector ((0 => (317, 221, 1, 
False)));
-            Table.States (1245).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1269)));
+            Add_Action (Table.States (1244), 88, (147, 0), 1272);
+            Table.States (1244).Kernel := To_Vector ((0 => ((147, 0),  304,  
3, (2147483647, 0),  0)));
+            Table.States (1244).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (147, 0),  88, 1272)));
+            Table.States (1245).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (1245), 3, (200, 2), 122);
+            Add_Action (Table.States (1245), 39, (261, 4), 123);
+            Add_Action (Table.States (1245), 40, (200, 3), 124);
+            Add_Action (Table.States (1245), 41, (261, 1), 125);
+            Add_Action (Table.States (1245), 52, (278, 0), 126);
+            Add_Action (Table.States (1245), 76, (120, 0), 127);
+            Add_Action (Table.States (1245), 77, (120, 5), 128);
+            Add_Action (Table.States (1245), 78, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1245), 81, (242, 8), 31);
+            Add_Action (Table.States (1245), 97, (333, 1), 129);
+            Add_Action (Table.States (1245), 98, (333, 0), 130);
+            Add_Action (Table.States (1245), 99, Reduce, (195, 1),  0, null, 
null);
+            Add_Action (Table.States (1245), 106, (261, 0), 131);
+            Add_Action (Table.States (1245), 107, (242, 5), 120);
+            Add_Action (Table.States (1245), 108, (242, 7), 34);
+            Add_Action (Table.States (1245), 109, (242, 6), 35);
+            Table.States (1245).Goto_List.Set_Capacity (20);
+            Add_Goto (Table.States (1245), 120, 132);
+            Add_Goto (Table.States (1245), 131, 42);
+            Add_Goto (Table.States (1245), 194, 133);
+            Add_Goto (Table.States (1245), 195, 1273);
+            Add_Goto (Table.States (1245), 200, 135);
+            Add_Goto (Table.States (1245), 242, 136);
+            Add_Goto (Table.States (1245), 261, 137);
+            Add_Goto (Table.States (1245), 275, 93);
+            Add_Goto (Table.States (1245), 278, 138);
+            Add_Goto (Table.States (1245), 285, 139);
+            Add_Goto (Table.States (1245), 286, 140);
+            Add_Goto (Table.States (1245), 287, 141);
+            Add_Goto (Table.States (1245), 288, 142);
+            Add_Goto (Table.States (1245), 289, 143);
+            Add_Goto (Table.States (1245), 290, 144);
+            Add_Goto (Table.States (1245), 296, 98);
+            Add_Goto (Table.States (1245), 304, 145);
+            Add_Goto (Table.States (1245), 323, 146);
+            Add_Goto (Table.States (1245), 324, 147);
+            Add_Goto (Table.States (1245), 333, 148);
+            Table.States (1245).Kernel := To_Vector ((0 => ((257, 0),  85,  0, 
(195, 1),  0)));
+            Table.States (1245).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (195, 1),  0)));
             Table.States (1246).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1246), 24, 1270);
-            Table.States (1246).Kernel := To_Vector ((0 => (320, 319, 2, 
False)));
-            Table.States (1246).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1270)));
-            Table.States (1247).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1247), (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, 
79, 94, 105, 106, 107, 108), (320, 1), 10,
-            task_type_declaration_1'Access, 
task_type_declaration_1_check'Access);
-            Table.States (1247).Kernel := To_Vector ((0 => (320, 97, 0, 
False)));
-            Table.States (1247).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 320, 10)));
-            Table.States (1248).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1248), 97, 1271);
-            Table.States (1248).Kernel := To_Vector ((0 => (306, 221, 1, 
False)));
-            Table.States (1248).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1271)));
-            Table.States (1249).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (1249), (74, 83, 97), (121, 1), 6, 
array_type_definition_1'Access, null);
-            Table.States (1249).Kernel := To_Vector ((0 => (121, 148, 0, 
False)));
-            Table.States (1249).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 121, 6)));
-            Table.States (1250).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (1250), (74, 83, 97), (121, 0), 6, 
array_type_definition_0'Access, null);
-            Table.States (1250).Kernel := To_Vector ((0 => (121, 148, 0, 
False)));
-            Table.States (1250).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 121, 6)));
+            Add_Action (Table.States (1246), 49, (206, 0), 1274);
+            Table.States (1246).Kernel := To_Vector ((0 => ((206, 0),  74,  1, 
(2147483647, 0),  0)));
+            Table.States (1246).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (206, 0),  49, 1274)));
+            Table.States (1247).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1247), (74, 99), (208, 0),  3, null, 
null);
+            Table.States (1247).Kernel := To_Vector ((0 => ((208, 0),  78,  0, 
(208, 0),  3)));
+            Table.States (1247).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (208, 0),  3)));
+            Table.States (1248).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (1248), (29, 47, 48, 50, 69, 71, 74, 
107), (207, 0),  9,
+            formal_package_declaration_0'Access, null);
+            Table.States (1248).Kernel := To_Vector ((0 => ((207, 0),  99,  0, 
(207, 0),  9)));
+            Table.States (1248).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (207, 0),  9)));
+            Table.States (1249).Action_List.Set_Capacity (8);
+            Add_Action (Table.States (1249), (29, 47, 48, 50, 69, 71, 74, 
107), (201, 0),  9,
+            formal_object_declaration_0'Access, null);
+            Table.States (1249).Kernel := To_Vector ((0 => ((201, 0),  99,  0, 
(201, 0),  9)));
+            Table.States (1249).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (201, 0),  9)));
+            Table.States (1250).Action_List.Set_Capacity (47);
+            Add_Action (Table.States (1250), (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, 81, 96, 107, 108,
+            109, 110), (225, 0),  10, if_statement_0'Access, null);
+            Table.States (1250).Kernel := To_Vector ((0 => ((225, 0),  99,  0, 
(225, 0),  10)));
+            Table.States (1250).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (225, 0),  10)));
             Table.States (1251).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1251), 81, 1214);
-            Table.States (1251).Kernel := To_Vector ((0 => (226, 53, 1, 
False)));
-            Table.States (1251).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 81, 1214)));
-            Table.States (1252).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1252), (74, 97), (280, 0), 4, null, 
null);
-            Table.States (1252).Kernel := To_Vector ((0 => (280, 302, 0, 
False)));
-            Table.States (1252).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 280, 4)));
-            Table.States (1253).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1253), 80, 447);
-            Add_Action (Table.States (1253), 88, 1272);
-            Table.States (1253).Kernel := To_Vector (((167, 167, 2, True), 
(330, 167, 1, False)));
-            Table.States (1253).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 88, 1272)));
+            Add_Action (Table.States (1251), 99, (250, 0), 1275);
+            Table.States (1251).Kernel := To_Vector ((0 => ((250, 0),  243,  
1, (2147483647, 0),  0)));
+            Table.States (1251).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (250, 0),  99, 1275)));
+            Table.States (1252).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1252), 33, (180, 0), 1276);
+            Table.States (1252).Kernel := To_Vector ((0 => ((180, 0),  107,  
3, (2147483647, 0),  0)));
+            Table.States (1252).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (180, 0),  33, 1276)));
+            Table.States (1253).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1253), 35, (179, 0), 1277);
+            Table.States (1253).Kernel := To_Vector ((0 => ((179, 0),  195,  
4, (2147483647, 0),  0)));
+            Table.States (1253).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (179, 0),  35, 1277)));
             Table.States (1254).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1254), 15, 1273);
-            Table.States (1254).Kernel := To_Vector ((0 => (328, 24, 2, 
False)));
-            Table.States (1254).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 15, 1273)));
-            Table.States (1255).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1255), (24, 72), (329, 0), 2, 
variant_list_0'Access, null);
-            Table.States (1255).Kernel := To_Vector ((0 => (329, 330, 0, 
True)));
-            Table.States (1255).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 329, 2)));
-            Table.States (1255).Minimal_Complete_Actions_Recursive := True;
-            Table.States (1256).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1256), 74, 338);
-            Add_Action (Table.States (1256), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (1256).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1256), 123, 1274);
-            Table.States (1256).Kernel := To_Vector ((0 => (147, 193, 1, 
False)));
-            Table.States (1256).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (1257).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (1257), (15, 24, 28, 72, 105), (147, 1), 
5, component_declaration_1'Access, null);
-            Table.States (1257).Kernel := To_Vector ((0 => (147, 97, 0, 
False)));
-            Table.States (1257).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 147, 5)));
-            Table.States (1258).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1258), 74, 338);
-            Add_Action (Table.States (1258), 97, Reduce, (123, 1), 0, null, 
null);
-            Table.States (1258).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1258), 123, 1275);
-            Table.States (1258).Kernel := To_Vector ((0 => (260, 49, 1, 
False)));
-            Table.States (1258).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 123, 0)));
-            Table.States (1259).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1259), (74, 97), (163, 0), 6, 
derived_type_definition_0'Access, null);
-            Table.States (1259).Kernel := To_Vector ((0 => (163, 281, 0, 
False)));
-            Table.States (1259).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 163, 6)));
-            Table.States (1260).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1260), (24, 72), (188, 0), 6, 
exception_handler_0'Access, null);
-            Table.States (1260).Kernel := To_Vector ((0 => (188, 301, 0, 
False)));
-            Table.States (1260).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 188, 6)));
-            Table.States (1261).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1261), (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, 
79, 94, 105, 106, 107, 108), (308, 0), 10,
-            subprogram_body_0'Access, subprogram_body_0_check'Access);
-            Table.States (1261).Kernel := To_Vector ((0 => (308, 97, 0, 
False)));
-            Table.States (1261).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 308, 10)));
-            Table.States (1262).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (1262), 3, 122);
-            Add_Action (Table.States (1262), 39, 123);
-            Add_Action (Table.States (1262), 40, 124);
-            Add_Action (Table.States (1262), 41, 125);
-            Add_Action (Table.States (1262), 76, 127);
-            Add_Action (Table.States (1262), 79, 31);
-            Add_Action (Table.States (1262), 95, 128);
-            Add_Action (Table.States (1262), 96, 129);
-            Add_Action (Table.States (1262), 104, 130);
-            Add_Action (Table.States (1262), 105, 120);
-            Add_Action (Table.States (1262), 106, 34);
-            Add_Action (Table.States (1262), 107, 35);
-            Table.States (1262).Goto_List.Set_Capacity (11);
-            Add_Goto (Table.States (1262), 118, 131);
-            Add_Goto (Table.States (1262), 129, 42);
-            Add_Goto (Table.States (1262), 198, 134);
-            Add_Goto (Table.States (1262), 240, 135);
-            Add_Goto (Table.States (1262), 259, 136);
-            Add_Goto (Table.States (1262), 273, 93);
-            Add_Goto (Table.States (1262), 294, 98);
-            Add_Goto (Table.States (1262), 302, 1276);
-            Add_Goto (Table.States (1262), 321, 145);
-            Add_Goto (Table.States (1262), 322, 146);
-            Add_Goto (Table.States (1262), 331, 147);
-            Table.States (1262).Kernel := To_Vector ((0 => (145, 86, 2, 
False)));
-            Table.States (1262).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 104, 130)));
+            Add_Action (Table.States (1254), 99, (274, 0), 1278);
+            Table.States (1254).Kernel := To_Vector ((0 => ((274, 0),  269,  
1, (2147483647, 0),  0)));
+            Table.States (1254).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (274, 0),  99, 1278)));
+            Table.States (1255).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1255), 99, (319, 0), 1279);
+            Table.States (1255).Kernel := To_Vector ((0 => ((319, 0),  223,  
1, (2147483647, 0),  0)));
+            Table.States (1255).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (319, 0),  99, 1279)));
+            Table.States (1256).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1256), 24, (322, 0), 1280);
+            Table.States (1256).Kernel := To_Vector ((0 => ((322, 0),  321,  
2, (2147483647, 0),  0)));
+            Table.States (1256).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (322, 0),  24, 1280)));
+            Table.States (1257).Action_List.Set_Capacity (41);
+            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, 
81, 96, 107, 108, 109, 110), (322, 1),  10,
+            task_type_declaration_1'Access, 
task_type_declaration_1_check'Access);
+            Table.States (1257).Kernel := To_Vector ((0 => ((322, 1),  99,  0, 
(322, 1),  10)));
+            Table.States (1257).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (322, 1),  10)));
+            Table.States (1258).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1258), 99, (308, 0), 1281);
+            Table.States (1258).Kernel := To_Vector ((0 => ((308, 0),  223,  
1, (2147483647, 0),  0)));
+            Table.States (1258).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (308, 0),  99, 1281)));
+            Table.States (1259).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (1259), (74, 85, 99), (123, 1),  6, 
array_type_definition_1'Access, null);
+            Table.States (1259).Kernel := To_Vector ((0 => ((123, 1),  150,  
0, (123, 1),  6)));
+            Table.States (1259).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (123, 1),  6)));
+            Table.States (1260).Action_List.Set_Capacity (3);
+            Add_Action (Table.States (1260), (74, 85, 99), (123, 0),  6, 
array_type_definition_0'Access, null);
+            Table.States (1260).Kernel := To_Vector ((0 => ((123, 0),  150,  
0, (123, 0),  6)));
+            Table.States (1260).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (123, 0),  6)));
+            Table.States (1261).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1261), 83, (228, 0), 1224);
+            Table.States (1261).Kernel := To_Vector ((0 => ((228, 0),  53,  1, 
(2147483647, 0),  0)));
+            Table.States (1261).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (228, 0),  83, 1224)));
+            Table.States (1262).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1262), (74, 99), (282, 0),  4, null, 
null);
+            Table.States (1262).Kernel := To_Vector ((0 => ((282, 0),  304,  
0, (282, 0),  4)));
+            Table.States (1262).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (282, 0),  4)));
             Table.States (1263).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1263), (77, 97), (255, 0), 8, 
parameter_specification_0'Access, null);
-            Table.States (1263).Kernel := To_Vector ((0 => (255, 193, 0, 
False)));
-            Table.States (1263).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 255, 8)));
-            Table.States (1264).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1264), (74, 97), (204, 0), 6, 
formal_derived_type_definition_0'Access, null);
-            Table.States (1264).Kernel := To_Vector ((0 => (204, 49, 0, 
False)));
-            Table.States (1264).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 204, 6)));
-            Table.States (1265).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1265), (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, 
79, 94, 105, 106, 107, 108), (248, 0), 11,
-            package_body_0'Access, package_body_0_check'Access);
-            Table.States (1265).Kernel := To_Vector ((0 => (248, 97, 0, 
False)));
-            Table.States (1265).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 248, 11)));
-            Table.States (1266).Action_List.Set_Capacity (12);
-            Add_Action (Table.States (1266), 3, 122);
-            Add_Action (Table.States (1266), 39, 123);
-            Add_Action (Table.States (1266), 40, 477);
-            Add_Action (Table.States (1266), 41, 125);
-            Add_Action (Table.States (1266), 76, 127);
-            Add_Action (Table.States (1266), 79, 31);
-            Add_Action (Table.States (1266), 95, 128);
-            Add_Action (Table.States (1266), 96, 129);
-            Add_Action (Table.States (1266), 104, 130);
-            Add_Action (Table.States (1266), 105, 120);
-            Add_Action (Table.States (1266), 106, 34);
-            Add_Action (Table.States (1266), 107, 35);
-            Table.States (1266).Goto_List.Set_Capacity (14);
-            Add_Goto (Table.States (1266), 118, 131);
-            Add_Goto (Table.States (1266), 129, 42);
-            Add_Goto (Table.States (1266), 168, 1277);
-            Add_Goto (Table.States (1266), 198, 134);
-            Add_Goto (Table.States (1266), 240, 480);
-            Add_Goto (Table.States (1266), 259, 136);
-            Add_Goto (Table.States (1266), 273, 93);
-            Add_Goto (Table.States (1266), 278, 481);
-            Add_Goto (Table.States (1266), 294, 98);
-            Add_Goto (Table.States (1266), 302, 482);
-            Add_Goto (Table.States (1266), 315, 483);
-            Add_Goto (Table.States (1266), 321, 145);
-            Add_Goto (Table.States (1266), 322, 146);
-            Add_Goto (Table.States (1266), 331, 147);
-            Table.States (1266).Kernel := To_Vector ((0 => (178, 33, 2, 
False)));
-            Table.States (1266).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 105, 120)));
-            Table.States (1267).Action_List.Set_Capacity (16);
-            Add_Action (Table.States (1267), 13, Reduce, (160, 1), 0, null, 
null);
-            Add_Action (Table.States (1267), 25, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (1267), 28, 184);
-            Add_Action (Table.States (1267), 29, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (1267), 30, 8);
-            Add_Action (Table.States (1267), 40, 12);
-            Add_Action (Table.States (1267), 46, 14);
-            Add_Action (Table.States (1267), 47, 15);
-            Add_Action (Table.States (1267), 48, 16);
-            Add_Action (Table.States (1267), 50, Reduce, (247, 2), 0, null, 
null);
-            Add_Action (Table.States (1267), 51, 19);
-            Add_Action (Table.States (1267), 63, 25);
-            Add_Action (Table.States (1267), 66, 26);
-            Add_Action (Table.States (1267), 69, 27);
-            Add_Action (Table.States (1267), 71, 28);
-            Add_Action (Table.States (1267), 105, 186);
-            Table.States (1267).Goto_List.Set_Capacity (53);
-            Add_Goto (Table.States (1267), 113, 36);
-            Add_Goto (Table.States (1267), 122, 38);
-            Add_Goto (Table.States (1267), 128, 41);
-            Add_Goto (Table.States (1267), 135, 46);
-            Add_Goto (Table.States (1267), 136, 47);
-            Add_Goto (Table.States (1267), 158, 392);
-            Add_Goto (Table.States (1267), 159, 393);
-            Add_Goto (Table.States (1267), 160, 1278);
-            Add_Goto (Table.States (1267), 180, 55);
-            Add_Goto (Table.States (1267), 183, 56);
-            Add_Goto (Table.States (1267), 187, 57);
-            Add_Goto (Table.States (1267), 194, 59);
-            Add_Goto (Table.States (1267), 207, 61);
-            Add_Goto (Table.States (1267), 208, 62);
-            Add_Goto (Table.States (1267), 210, 63);
-            Add_Goto (Table.States (1267), 211, 64);
-            Add_Goto (Table.States (1267), 214, 65);
-            Add_Goto (Table.States (1267), 215, 66);
-            Add_Goto (Table.States (1267), 216, 67);
-            Add_Goto (Table.States (1267), 217, 68);
-            Add_Goto (Table.States (1267), 220, 70);
-            Add_Goto (Table.States (1267), 224, 72);
-            Add_Goto (Table.States (1267), 244, 75);
-            Add_Goto (Table.States (1267), 245, 76);
-            Add_Goto (Table.States (1267), 246, 77);
-            Add_Goto (Table.States (1267), 247, 78);
-            Add_Goto (Table.States (1267), 248, 79);
-            Add_Goto (Table.States (1267), 249, 80);
-            Add_Goto (Table.States (1267), 250, 81);
-            Add_Goto (Table.States (1267), 251, 82);
-            Add_Goto (Table.States (1267), 252, 83);
-            Add_Goto (Table.States (1267), 258, 395);
-            Add_Goto (Table.States (1267), 260, 85);
-            Add_Goto (Table.States (1267), 261, 86);
-            Add_Goto (Table.States (1267), 263, 88);
-            Add_Goto (Table.States (1267), 264, 89);
-            Add_Goto (Table.States (1267), 265, 90);
-            Add_Goto (Table.States (1267), 266, 91);
-            Add_Goto (Table.States (1267), 272, 92);
-            Add_Goto (Table.States (1267), 282, 95);
-            Add_Goto (Table.States (1267), 290, 96);
-            Add_Goto (Table.States (1267), 305, 103);
-            Add_Goto (Table.States (1267), 306, 104);
-            Add_Goto (Table.States (1267), 308, 106);
-            Add_Goto (Table.States (1267), 309, 107);
-            Add_Goto (Table.States (1267), 310, 108);
-            Add_Goto (Table.States (1267), 312, 109);
-            Add_Goto (Table.States (1267), 314, 110);
-            Add_Goto (Table.States (1267), 317, 112);
-            Add_Goto (Table.States (1267), 318, 113);
-            Add_Goto (Table.States (1267), 320, 114);
-            Add_Goto (Table.States (1267), 326, 116);
-            Add_Goto (Table.States (1267), 332, 117);
-            Table.States (1267).Kernel := To_Vector ((0 => (177, 35, 3, 
False)));
-            Table.States (1267).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 160, 0)));
-            Table.States (1268).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1268), (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, 
79, 94, 105, 106, 107, 108), (272, 0), 11,
-            protected_type_declaration_0'Access, 
protected_type_declaration_0_check'Access);
-            Table.States (1268).Kernel := To_Vector ((0 => (272, 97, 0, 
False)));
-            Table.States (1268).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 272, 11)));
-            Table.States (1269).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1269), (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, 
79, 94, 105, 106, 107, 108), (317, 0), 11,
-            task_body_0'Access, task_body_0_check'Access);
-            Table.States (1269).Kernel := To_Vector ((0 => (317, 97, 0, 
False)));
-            Table.States (1269).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 317, 11)));
+            Add_Action (Table.States (1263), 82, (169, 0), 450);
+            Add_Action (Table.States (1263), 90, (332, 0), 1282);
+            Table.States (1263).Kernel := To_Vector ((((169, 0),  169,  2, 
(2147483647, 0),  0), ((332, 0),  169,  1,
+            (2147483647, 0),  0)));
+            Table.States (1263).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (332, 0),  90, 1282)));
+            Table.States (1264).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1264), 15, (330, 0), 1283);
+            Table.States (1264).Kernel := To_Vector ((0 => ((330, 0),  24,  2, 
(2147483647, 0),  0)));
+            Table.States (1264).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (330, 0),  15, 1283)));
+            Table.States (1265).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1265), (24, 72), (331, 0),  2, 
variant_list_0'Access, null);
+            Table.States (1265).Kernel := To_Vector ((0 => ((331, 0),  332,  
0, (331, 0),  2)));
+            Table.States (1265).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (331, 0),  2)));
+            Table.States (1266).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1266), 74, (125, 0), 340);
+            Add_Action (Table.States (1266), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (1266).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1266), 125, 1284);
+            Table.States (1266).Kernel := To_Vector ((0 => ((149, 0),  195,  
1, (2147483647, 0),  0)));
+            Table.States (1266).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (1267).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (1267), (15, 24, 28, 72, 107), (149, 1),  
5, component_declaration_1'Access,
+            null);
+            Table.States (1267).Kernel := To_Vector ((0 => ((149, 1),  99,  0, 
(149, 1),  5)));
+            Table.States (1267).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (149, 1),  5)));
+            Table.States (1268).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1268), 74, (125, 0), 340);
+            Add_Action (Table.States (1268), 99, Reduce, (125, 1),  0, null, 
null);
+            Table.States (1268).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1268), 125, 1285);
+            Table.States (1268).Kernel := To_Vector ((0 => ((262, 0),  49,  1, 
(2147483647, 0),  0)));
+            Table.States (1268).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (125, 1),  0)));
+            Table.States (1269).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1269), (74, 99), (165, 0),  6, 
derived_type_definition_0'Access, null);
+            Table.States (1269).Kernel := To_Vector ((0 => ((165, 0),  283,  
0, (165, 0),  6)));
+            Table.States (1269).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (165, 0),  6)));
             Table.States (1270).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1270), 97, Reduce, (221, 1), 0, null, 
null);
-            Add_Action (Table.States (1270), 105, 150);
-            Table.States (1270).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1270), 221, 1279);
-            Table.States (1270).Kernel := To_Vector ((0 => (320, 24, 1, 
False)));
-            Table.States (1270).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 0)));
+            Add_Action (Table.States (1270), (24, 72), (190, 0),  6, 
exception_handler_0'Access, null);
+            Table.States (1270).Kernel := To_Vector ((0 => ((190, 0),  303,  
0, (190, 0),  6)));
+            Table.States (1270).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (190, 0),  6)));
             Table.States (1271).Action_List.Set_Capacity (41);
             Add_Action (Table.States (1271), (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, 
79, 94, 105, 106, 107, 108), (306, 0), 11,
-            single_task_declaration_0'Access, 
single_task_declaration_0_check'Access);
-            Table.States (1271).Kernel := To_Vector ((0 => (306, 97, 0, 
False)));
-            Table.States (1271).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 306, 11)));
-            Table.States (1272).Action_List.Set_Capacity (6);
-            Add_Action (Table.States (1272), 15, 894);
-            Add_Action (Table.States (1272), 24, Reduce, (151, 1), 0, null, 
null);
-            Add_Action (Table.States (1272), 28, 184);
-            Add_Action (Table.States (1272), 41, 895);
-            Add_Action (Table.States (1272), 72, Reduce, (151, 1), 0, null, 
null);
-            Add_Action (Table.States (1272), 105, 165);
-            Table.States (1272).Goto_List.Set_Capacity (10);
-            Add_Goto (Table.States (1272), 122, 896);
-            Add_Goto (Table.States (1272), 128, 41);
-            Add_Goto (Table.States (1272), 147, 897);
-            Add_Goto (Table.States (1272), 149, 898);
-            Add_Goto (Table.States (1272), 150, 899);
-            Add_Goto (Table.States (1272), 151, 1280);
-            Add_Goto (Table.States (1272), 183, 56);
-            Add_Goto (Table.States (1272), 220, 901);
-            Add_Goto (Table.States (1272), 282, 95);
-            Add_Goto (Table.States (1272), 328, 902);
-            Table.States (1272).Kernel := To_Vector ((0 => (330, 88, 0, 
False)));
-            Table.States (1272).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 151, 0)));
-            Table.States (1273).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1273), 97, 1281);
-            Table.States (1273).Kernel := To_Vector ((0 => (328, 15, 1, 
False)));
-            Table.States (1273).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1281)));
-            Table.States (1274).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1274), 97, 1282);
-            Table.States (1274).Kernel := To_Vector ((0 => (147, 123, 1, 
False)));
-            Table.States (1274).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1282)));
-            Table.States (1275).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1275), 97, 1283);
-            Table.States (1275).Kernel := To_Vector ((0 => (260, 123, 1, 
False)));
-            Table.States (1275).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1283)));
-            Table.States (1276).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1276), 97, 1284);
-            Table.States (1276).Kernel := To_Vector ((0 => (145, 302, 1, 
False)));
-            Table.States (1276).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1284)));
-            Table.States (1277).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1277), 77, 1285);
-            Table.States (1277).Kernel := To_Vector ((0 => (178, 168, 1, 
False)));
-            Table.States (1277).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 77, 1285)));
-            Table.States (1278).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1278), 13, 1286);
-            Table.States (1278).Kernel := To_Vector ((0 => (177, 160, 3, 
False)));
-            Table.States (1278).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 1286)));
-            Table.States (1279).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1279), 97, 1287);
-            Table.States (1279).Kernel := To_Vector ((0 => (320, 221, 1, 
False)));
-            Table.States (1279).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1287)));
+            47, 48, 49, 50, 51, 52, 57, 58, 60, 61, 63, 66, 69, 71, 73, 74, 
81, 96, 107, 108, 109, 110), (310, 0),  10,
+            subprogram_body_0'Access, subprogram_body_0_check'Access);
+            Table.States (1271).Kernel := To_Vector ((0 => ((310, 0),  99,  0, 
(310, 0),  10)));
+            Table.States (1271).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (310, 0),  10)));
+            Table.States (1272).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (1272), 3, (200, 2), 122);
+            Add_Action (Table.States (1272), 39, (261, 4), 123);
+            Add_Action (Table.States (1272), 40, (200, 3), 124);
+            Add_Action (Table.States (1272), 41, (261, 1), 125);
+            Add_Action (Table.States (1272), 76, (120, 0), 127);
+            Add_Action (Table.States (1272), 77, (120, 5), 128);
+            Add_Action (Table.States (1272), 81, (242, 8), 31);
+            Add_Action (Table.States (1272), 97, (333, 1), 129);
+            Add_Action (Table.States (1272), 98, (333, 0), 130);
+            Add_Action (Table.States (1272), 106, (261, 0), 131);
+            Add_Action (Table.States (1272), 107, (242, 5), 120);
+            Add_Action (Table.States (1272), 108, (242, 7), 34);
+            Add_Action (Table.States (1272), 109, (242, 6), 35);
+            Table.States (1272).Goto_List.Set_Capacity (11);
+            Add_Goto (Table.States (1272), 120, 132);
+            Add_Goto (Table.States (1272), 131, 42);
+            Add_Goto (Table.States (1272), 200, 135);
+            Add_Goto (Table.States (1272), 242, 136);
+            Add_Goto (Table.States (1272), 261, 137);
+            Add_Goto (Table.States (1272), 275, 93);
+            Add_Goto (Table.States (1272), 296, 98);
+            Add_Goto (Table.States (1272), 304, 1286);
+            Add_Goto (Table.States (1272), 323, 146);
+            Add_Goto (Table.States (1272), 324, 147);
+            Add_Goto (Table.States (1272), 333, 148);
+            Table.States (1272).Kernel := To_Vector ((0 => ((147, 0),  88,  2, 
(2147483647, 0),  0)));
+            Table.States (1272).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (261, 0),  106, 131)));
+            Table.States (1273).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1273), (78, 99), (257, 0),  8, 
parameter_specification_0'Access, null);
+            Table.States (1273).Kernel := To_Vector ((0 => ((257, 0),  195,  
0, (257, 0),  8)));
+            Table.States (1273).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (257, 0),  8)));
+            Table.States (1274).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1274), (74, 99), (206, 0),  6, 
formal_derived_type_definition_0'Access, null);
+            Table.States (1274).Kernel := To_Vector ((0 => ((206, 0),  49,  0, 
(206, 0),  6)));
+            Table.States (1274).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (206, 0),  6)));
+            Table.States (1275).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1275), (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, 
81, 96, 107, 108, 109, 110), (250, 0),  11,
+            package_body_0'Access, package_body_0_check'Access);
+            Table.States (1275).Kernel := To_Vector ((0 => ((250, 0),  99,  0, 
(250, 0),  11)));
+            Table.States (1275).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (250, 0),  11)));
+            Table.States (1276).Action_List.Set_Capacity (13);
+            Add_Action (Table.States (1276), 3, (200, 2), 122);
+            Add_Action (Table.States (1276), 39, (261, 4), 123);
+            Add_Action (Table.States (1276), 40, (200, 3), 481);
+            Add_Action (Table.States (1276), 41, (261, 1), 125);
+            Add_Action (Table.States (1276), 76, (120, 0), 127);
+            Add_Action (Table.States (1276), 77, (120, 5), 128);
+            Add_Action (Table.States (1276), 81, (242, 8), 31);
+            Add_Action (Table.States (1276), 97, (333, 1), 129);
+            Add_Action (Table.States (1276), 98, (333, 0), 130);
+            Add_Action (Table.States (1276), 106, (261, 0), 131);
+            Add_Action (Table.States (1276), 107, (242, 5), 120);
+            Add_Action (Table.States (1276), 108, (242, 7), 34);
+            Add_Action (Table.States (1276), 109, (242, 6), 35);
+            Table.States (1276).Goto_List.Set_Capacity (14);
+            Add_Goto (Table.States (1276), 120, 132);
+            Add_Goto (Table.States (1276), 131, 42);
+            Add_Goto (Table.States (1276), 170, 1287);
+            Add_Goto (Table.States (1276), 200, 135);
+            Add_Goto (Table.States (1276), 242, 484);
+            Add_Goto (Table.States (1276), 261, 137);
+            Add_Goto (Table.States (1276), 275, 93);
+            Add_Goto (Table.States (1276), 280, 485);
+            Add_Goto (Table.States (1276), 296, 98);
+            Add_Goto (Table.States (1276), 304, 486);
+            Add_Goto (Table.States (1276), 317, 487);
+            Add_Goto (Table.States (1276), 323, 146);
+            Add_Goto (Table.States (1276), 324, 147);
+            Add_Goto (Table.States (1276), 333, 148);
+            Table.States (1276).Kernel := To_Vector ((0 => ((180, 0),  33,  2, 
(2147483647, 0),  0)));
+            Table.States (1276).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (242, 5),  107, 120)));
+            Table.States (1277).Action_List.Set_Capacity (16);
+            Add_Action (Table.States (1277), 13, Reduce, (162, 1),  0, null, 
null);
+            Add_Action (Table.States (1277), 25, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (1277), 28, (124, 0), 185);
+            Add_Action (Table.States (1277), 29, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (1277), 30, (213, 0), 8);
+            Add_Action (Table.States (1277), 40, (249, 0), 12);
+            Add_Action (Table.States (1277), 46, (249, 1), 14);
+            Add_Action (Table.States (1277), 47, (216, 0), 15);
+            Add_Action (Table.States (1277), 48, (260, 0), 16);
+            Add_Action (Table.States (1277), 50, Reduce, (249, 2),  0, null, 
null);
+            Add_Action (Table.States (1277), 51, (267, 0), 19);
+            Add_Action (Table.States (1277), 63, (316, 0), 25);
+            Add_Action (Table.States (1277), 66, (308, 0), 26);
+            Add_Action (Table.States (1277), 69, (209, 0), 27);
+            Add_Action (Table.States (1277), 71, (334, 0), 28);
+            Add_Action (Table.States (1277), 107, (222, 1), 187);
+            Table.States (1277).Goto_List.Set_Capacity (53);
+            Add_Goto (Table.States (1277), 115, 36);
+            Add_Goto (Table.States (1277), 124, 38);
+            Add_Goto (Table.States (1277), 130, 41);
+            Add_Goto (Table.States (1277), 137, 46);
+            Add_Goto (Table.States (1277), 138, 47);
+            Add_Goto (Table.States (1277), 160, 394);
+            Add_Goto (Table.States (1277), 161, 395);
+            Add_Goto (Table.States (1277), 162, 1288);
+            Add_Goto (Table.States (1277), 182, 55);
+            Add_Goto (Table.States (1277), 185, 56);
+            Add_Goto (Table.States (1277), 189, 57);
+            Add_Goto (Table.States (1277), 196, 59);
+            Add_Goto (Table.States (1277), 209, 61);
+            Add_Goto (Table.States (1277), 210, 62);
+            Add_Goto (Table.States (1277), 212, 63);
+            Add_Goto (Table.States (1277), 213, 64);
+            Add_Goto (Table.States (1277), 216, 65);
+            Add_Goto (Table.States (1277), 217, 66);
+            Add_Goto (Table.States (1277), 218, 67);
+            Add_Goto (Table.States (1277), 219, 68);
+            Add_Goto (Table.States (1277), 222, 70);
+            Add_Goto (Table.States (1277), 226, 72);
+            Add_Goto (Table.States (1277), 246, 75);
+            Add_Goto (Table.States (1277), 247, 76);
+            Add_Goto (Table.States (1277), 248, 77);
+            Add_Goto (Table.States (1277), 249, 78);
+            Add_Goto (Table.States (1277), 250, 79);
+            Add_Goto (Table.States (1277), 251, 80);
+            Add_Goto (Table.States (1277), 252, 81);
+            Add_Goto (Table.States (1277), 253, 82);
+            Add_Goto (Table.States (1277), 254, 83);
+            Add_Goto (Table.States (1277), 260, 397);
+            Add_Goto (Table.States (1277), 262, 85);
+            Add_Goto (Table.States (1277), 263, 86);
+            Add_Goto (Table.States (1277), 265, 88);
+            Add_Goto (Table.States (1277), 266, 89);
+            Add_Goto (Table.States (1277), 267, 90);
+            Add_Goto (Table.States (1277), 268, 91);
+            Add_Goto (Table.States (1277), 274, 92);
+            Add_Goto (Table.States (1277), 284, 95);
+            Add_Goto (Table.States (1277), 292, 96);
+            Add_Goto (Table.States (1277), 307, 103);
+            Add_Goto (Table.States (1277), 308, 104);
+            Add_Goto (Table.States (1277), 310, 106);
+            Add_Goto (Table.States (1277), 311, 107);
+            Add_Goto (Table.States (1277), 312, 108);
+            Add_Goto (Table.States (1277), 314, 109);
+            Add_Goto (Table.States (1277), 316, 110);
+            Add_Goto (Table.States (1277), 319, 112);
+            Add_Goto (Table.States (1277), 320, 113);
+            Add_Goto (Table.States (1277), 322, 114);
+            Add_Goto (Table.States (1277), 328, 116);
+            Add_Goto (Table.States (1277), 334, 117);
+            Table.States (1277).Kernel := To_Vector ((0 => ((179, 0),  35,  3, 
(2147483647, 0),  0)));
+            Table.States (1277).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (162, 1),  0)));
+            Table.States (1278).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1278), (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, 
81, 96, 107, 108, 109, 110), (274, 0),  11,
+            protected_type_declaration_0'Access, 
protected_type_declaration_0_check'Access);
+            Table.States (1278).Kernel := To_Vector ((0 => ((274, 0),  99,  0, 
(274, 0),  11)));
+            Table.States (1278).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (274, 0),  11)));
+            Table.States (1279).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1279), (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, 
81, 96, 107, 108, 109, 110), (319, 0),  11,
+            task_body_0'Access, task_body_0_check'Access);
+            Table.States (1279).Kernel := To_Vector ((0 => ((319, 0),  99,  0, 
(319, 0),  11)));
+            Table.States (1279).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (319, 0),  11)));
             Table.States (1280).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1280), (24, 72), (330, 0), 4, 
variant_0'Access, null);
-            Table.States (1280).Kernel := To_Vector ((0 => (330, 151, 0, 
False)));
-            Table.States (1280).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 330, 4)));
-            Table.States (1281).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (1281), (15, 24, 28, 72, 105), (328, 0), 
7, variant_part_0'Access, null);
-            Table.States (1281).Kernel := To_Vector ((0 => (328, 97, 0, 
False)));
-            Table.States (1281).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 328, 7)));
-            Table.States (1282).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (1282), (15, 24, 28, 72, 105), (147, 0), 
7, component_declaration_0'Access, null);
-            Table.States (1282).Kernel := To_Vector ((0 => (147, 97, 0, 
False)));
-            Table.States (1282).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 147, 7)));
-            Table.States (1283).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1283), (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, 
79, 94, 105, 106, 107, 108), (260, 0), 12,
-            private_extension_declaration_0'Access, null);
-            Table.States (1283).Kernel := To_Vector ((0 => (260, 97, 0, 
False)));
-            Table.States (1283).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 260, 12)));
-            Table.States (1284).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1284), (24, 105), (145, 0), 8, 
component_clause_0'Access, null);
-            Table.States (1284).Kernel := To_Vector ((0 => (145, 97, 0, 
False)));
-            Table.States (1284).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 145, 8)));
-            Table.States (1285).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1285), 72, Reduce, (254, 1), 0, null, 
null);
-            Add_Action (Table.States (1285), 76, 432);
-            Table.States (1285).Goto_List.Set_Capacity (2);
-            Add_Goto (Table.States (1285), 200, 345);
-            Add_Goto (Table.States (1285), 254, 1288);
-            Table.States (1285).Kernel := To_Vector ((0 => (178, 77, 0, 
False)));
-            Table.States (1285).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 254, 0)));
-            Table.States (1286).Action_List.Set_Capacity (25);
-            Add_Action (Table.States (1286), 4, 1);
-            Add_Action (Table.States (1286), 5, 2);
-            Add_Action (Table.States (1286), 13, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1286), 15, 3);
-            Add_Action (Table.States (1286), 17, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1286), 18, 4);
-            Add_Action (Table.States (1286), 24, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (1286), 26, Reduce, (301, 1), 0, null, 
null);
-            Add_Action (Table.States (1286), 27, 5);
-            Add_Action (Table.States (1286), 28, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1286), 31, 9);
-            Add_Action (Table.States (1286), 32, 10);
-            Add_Action (Table.States (1286), 37, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1286), 41, 13);
-            Add_Action (Table.States (1286), 48, 16);
-            Add_Action (Table.States (1286), 52, 20);
-            Add_Action (Table.States (1286), 57, 21);
-            Add_Action (Table.States (1286), 58, 22);
-            Add_Action (Table.States (1286), 61, 24);
-            Add_Action (Table.States (1286), 73, Reduce, (133, 1), 0, null, 
null);
-            Add_Action (Table.States (1286), 79, 31);
-            Add_Action (Table.States (1286), 94, 32);
-            Add_Action (Table.States (1286), 105, 361);
-            Add_Action (Table.States (1286), 106, 34);
-            Add_Action (Table.States (1286), 107, 35);
-            Table.States (1286).Goto_List.Set_Capacity (32);
-            Add_Goto (Table.States (1286), 114, 37);
-            Add_Goto (Table.States (1286), 124, 39);
-            Add_Goto (Table.States (1286), 127, 40);
-            Add_Goto (Table.States (1286), 129, 42);
-            Add_Goto (Table.States (1286), 132, 43);
-            Add_Goto (Table.States (1286), 133, 44);
-            Add_Goto (Table.States (1286), 134, 45);
-            Add_Goto (Table.States (1286), 140, 48);
-            Add_Goto (Table.States (1286), 152, 51);
-            Add_Goto (Table.States (1286), 153, 52);
-            Add_Goto (Table.States (1286), 162, 54);
-            Add_Goto (Table.States (1286), 191, 58);
-            Add_Goto (Table.States (1286), 197, 60);
-            Add_Goto (Table.States (1286), 218, 69);
-            Add_Goto (Table.States (1286), 219, 1289);
-            Add_Goto (Table.States (1286), 223, 71);
-            Add_Goto (Table.States (1286), 233, 73);
-            Add_Goto (Table.States (1286), 240, 74);
-            Add_Goto (Table.States (1286), 258, 84);
-            Add_Goto (Table.States (1286), 262, 87);
-            Add_Goto (Table.States (1286), 273, 93);
-            Add_Goto (Table.States (1286), 277, 94);
-            Add_Goto (Table.States (1286), 291, 97);
-            Add_Goto (Table.States (1286), 294, 98);
-            Add_Goto (Table.States (1286), 295, 99);
-            Add_Goto (Table.States (1286), 299, 100);
-            Add_Goto (Table.States (1286), 300, 362);
-            Add_Goto (Table.States (1286), 301, 391);
-            Add_Goto (Table.States (1286), 303, 101);
-            Add_Goto (Table.States (1286), 304, 102);
-            Add_Goto (Table.States (1286), 307, 364);
-            Add_Goto (Table.States (1286), 324, 115);
-            Table.States (1286).Kernel := To_Vector ((0 => (177, 13, 2, 
False)));
-            Table.States (1286).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 219, 0)));
-            Table.States (1287).Action_List.Set_Capacity (41);
-            Add_Action (Table.States (1287), (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, 
79, 94, 105, 106, 107, 108), (320, 0), 13,
-            task_type_declaration_0'Access, 
task_type_declaration_0_check'Access);
-            Table.States (1287).Kernel := To_Vector ((0 => (320, 97, 0, 
False)));
-            Table.States (1287).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 320, 13)));
+            Add_Action (Table.States (1280), 99, Reduce, (223, 1),  0, null, 
null);
+            Add_Action (Table.States (1280), 107, (223, 0), 151);
+            Table.States (1280).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1280), 223, 1289);
+            Table.States (1280).Kernel := To_Vector ((0 => ((322, 0),  24,  1, 
(2147483647, 0),  0)));
+            Table.States (1280).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (223, 1),  0)));
+            Table.States (1281).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1281), (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, 
81, 96, 107, 108, 109, 110), (308, 0),  11,
+            single_task_declaration_0'Access, 
single_task_declaration_0_check'Access);
+            Table.States (1281).Kernel := To_Vector ((0 => ((308, 0),  99,  0, 
(308, 0),  11)));
+            Table.States (1281).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (308, 0),  11)));
+            Table.States (1282).Action_List.Set_Capacity (6);
+            Add_Action (Table.States (1282), 15, (330, 0), 903);
+            Add_Action (Table.States (1282), 24, Reduce, (153, 1),  0, null, 
null);
+            Add_Action (Table.States (1282), 28, (124, 0), 185);
+            Add_Action (Table.States (1282), 41, (152, 4), 904);
+            Add_Action (Table.States (1282), 72, Reduce, (153, 1),  0, null, 
null);
+            Add_Action (Table.States (1282), 107, (222, 1), 166);
+            Table.States (1282).Goto_List.Set_Capacity (10);
+            Add_Goto (Table.States (1282), 124, 905);
+            Add_Goto (Table.States (1282), 130, 41);
+            Add_Goto (Table.States (1282), 149, 906);
+            Add_Goto (Table.States (1282), 151, 907);
+            Add_Goto (Table.States (1282), 152, 908);
+            Add_Goto (Table.States (1282), 153, 1290);
+            Add_Goto (Table.States (1282), 185, 56);
+            Add_Goto (Table.States (1282), 222, 910);
+            Add_Goto (Table.States (1282), 284, 95);
+            Add_Goto (Table.States (1282), 330, 911);
+            Table.States (1282).Kernel := To_Vector ((0 => ((332, 0),  90,  0, 
(153, 1),  0)));
+            Table.States (1282).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (153, 1),  0)));
+            Table.States (1283).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1283), 99, (330, 0), 1291);
+            Table.States (1283).Kernel := To_Vector ((0 => ((330, 0),  15,  1, 
(2147483647, 0),  0)));
+            Table.States (1283).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (330, 0),  99, 1291)));
+            Table.States (1284).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1284), 99, (149, 0), 1292);
+            Table.States (1284).Kernel := To_Vector ((0 => ((149, 0),  125,  
1, (2147483647, 0),  0)));
+            Table.States (1284).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (149, 0),  99, 1292)));
+            Table.States (1285).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1285), 99, (262, 0), 1293);
+            Table.States (1285).Kernel := To_Vector ((0 => ((262, 0),  125,  
1, (2147483647, 0),  0)));
+            Table.States (1285).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (262, 0),  99, 1293)));
+            Table.States (1286).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1286), 99, (147, 0), 1294);
+            Table.States (1286).Kernel := To_Vector ((0 => ((147, 0),  304,  
1, (2147483647, 0),  0)));
+            Table.States (1286).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (147, 0),  99, 1294)));
+            Table.States (1287).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1287), 78, (180, 0), 1295);
+            Table.States (1287).Kernel := To_Vector ((0 => ((180, 0),  170,  
1, (2147483647, 0),  0)));
+            Table.States (1287).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (180, 0),  78, 1295)));
             Table.States (1288).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1288), (1 =>  72), (178, 0), 7, 
entry_body_formal_part_0'Access, null);
-            Table.States (1288).Kernel := To_Vector ((0 => (178, 254, 0, 
False)));
-            Table.States (1288).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 178, 7)));
+            Add_Action (Table.States (1288), 13, (179, 0), 1296);
+            Table.States (1288).Kernel := To_Vector ((0 => ((179, 0),  162,  
3, (2147483647, 0),  0)));
+            Table.States (1288).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (179, 0),  13, 1296)));
             Table.States (1289).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1289), 24, 1290);
-            Table.States (1289).Kernel := To_Vector ((0 => (177, 219, 2, 
False)));
-            Table.States (1289).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 1290)));
+            Add_Action (Table.States (1289), 99, (322, 0), 1297);
+            Table.States (1289).Kernel := To_Vector ((0 => ((322, 0),  223,  
1, (2147483647, 0),  0)));
+            Table.States (1289).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (322, 0),  99, 1297)));
             Table.States (1290).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (1290), 97, Reduce, (221, 1), 0, null, 
null);
-            Add_Action (Table.States (1290), 105, 150);
-            Table.States (1290).Goto_List.Set_Capacity (1);
-            Add_Goto (Table.States (1290), 221, 1291);
-            Table.States (1290).Kernel := To_Vector ((0 => (177, 24, 1, 
False)));
-            Table.States (1290).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 221, 0)));
-            Table.States (1291).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (1291), 97, 1292);
-            Table.States (1291).Kernel := To_Vector ((0 => (177, 221, 1, 
False)));
-            Table.States (1291).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 97, 1292)));
-            Table.States (1292).Action_List.Set_Capacity (7);
-            Add_Action (Table.States (1292), (24, 25, 28, 29, 40, 46, 50), 
(177, 0), 12, entry_body_0'Access,
+            Add_Action (Table.States (1290), (24, 72), (332, 0),  4, 
variant_0'Access, null);
+            Table.States (1290).Kernel := To_Vector ((0 => ((332, 0),  153,  
0, (332, 0),  4)));
+            Table.States (1290).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (332, 0),  4)));
+            Table.States (1291).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (1291), (15, 24, 28, 72, 107), (330, 0),  
7, variant_part_0'Access, null);
+            Table.States (1291).Kernel := To_Vector ((0 => ((330, 0),  99,  0, 
(330, 0),  7)));
+            Table.States (1291).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (330, 0),  7)));
+            Table.States (1292).Action_List.Set_Capacity (5);
+            Add_Action (Table.States (1292), (15, 24, 28, 72, 107), (149, 0),  
7, component_declaration_0'Access,
+            null);
+            Table.States (1292).Kernel := To_Vector ((0 => ((149, 0),  99,  0, 
(149, 0),  7)));
+            Table.States (1292).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (149, 0),  7)));
+            Table.States (1293).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1293), (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, 
81, 96, 107, 108, 109, 110), (262, 0),  12,
+            private_extension_declaration_0'Access, null);
+            Table.States (1293).Kernel := To_Vector ((0 => ((262, 0),  99,  0, 
(262, 0),  12)));
+            Table.States (1293).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (262, 0),  12)));
+            Table.States (1294).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1294), (24, 107), (147, 0),  8, 
component_clause_0'Access, null);
+            Table.States (1294).Kernel := To_Vector ((0 => ((147, 0),  99,  0, 
(147, 0),  8)));
+            Table.States (1294).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (147, 0),  8)));
+            Table.States (1295).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1295), 72, Reduce, (256, 1),  0, null, 
null);
+            Add_Action (Table.States (1295), 76, (202, 0), 434);
+            Table.States (1295).Goto_List.Set_Capacity (2);
+            Add_Goto (Table.States (1295), 202, 347);
+            Add_Goto (Table.States (1295), 256, 1298);
+            Table.States (1295).Kernel := To_Vector ((0 => ((180, 0),  78,  0, 
(256, 1),  0)));
+            Table.States (1295).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (256, 1),  0)));
+            Table.States (1296).Action_List.Set_Capacity (25);
+            Add_Action (Table.States (1296), 4, (116, 0), 1);
+            Add_Action (Table.States (1296), 5, (306, 8), 2);
+            Add_Action (Table.States (1296), 13, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1296), 15, (142, 0), 3);
+            Add_Action (Table.States (1296), 17, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1296), 18, (164, 0), 4);
+            Add_Action (Table.States (1296), 24, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (1296), 26, Reduce, (303, 1),  0, null, 
null);
+            Add_Action (Table.States (1296), 27, (193, 0), 5);
+            Add_Action (Table.States (1296), 28, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1296), 31, (306, 3), 9);
+            Add_Action (Table.States (1296), 32, (225, 0), 10);
+            Add_Action (Table.States (1296), 37, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1296), 41, (306, 0), 13);
+            Add_Action (Table.States (1296), 48, (260, 0), 16);
+            Add_Action (Table.States (1296), 52, (279, 0), 20);
+            Add_Action (Table.States (1296), 57, (293, 0), 21);
+            Add_Action (Table.States (1296), 58, (199, 0), 22);
+            Add_Action (Table.States (1296), 61, (129, 0), 24);
+            Add_Action (Table.States (1296), 73, Reduce, (135, 1),  0, null, 
null);
+            Add_Action (Table.States (1296), 81, (242, 8), 31);
+            Add_Action (Table.States (1296), 96, (220, 0), 32);
+            Add_Action (Table.States (1296), 107, (134, 0), 363);
+            Add_Action (Table.States (1296), 108, (242, 7), 34);
+            Add_Action (Table.States (1296), 109, (242, 6), 35);
+            Table.States (1296).Goto_List.Set_Capacity (32);
+            Add_Goto (Table.States (1296), 116, 37);
+            Add_Goto (Table.States (1296), 126, 39);
+            Add_Goto (Table.States (1296), 129, 40);
+            Add_Goto (Table.States (1296), 131, 42);
+            Add_Goto (Table.States (1296), 134, 43);
+            Add_Goto (Table.States (1296), 135, 44);
+            Add_Goto (Table.States (1296), 136, 45);
+            Add_Goto (Table.States (1296), 142, 48);
+            Add_Goto (Table.States (1296), 154, 51);
+            Add_Goto (Table.States (1296), 155, 52);
+            Add_Goto (Table.States (1296), 164, 54);
+            Add_Goto (Table.States (1296), 193, 58);
+            Add_Goto (Table.States (1296), 199, 60);
+            Add_Goto (Table.States (1296), 220, 69);
+            Add_Goto (Table.States (1296), 221, 1299);
+            Add_Goto (Table.States (1296), 225, 71);
+            Add_Goto (Table.States (1296), 235, 73);
+            Add_Goto (Table.States (1296), 242, 74);
+            Add_Goto (Table.States (1296), 260, 84);
+            Add_Goto (Table.States (1296), 264, 87);
+            Add_Goto (Table.States (1296), 275, 93);
+            Add_Goto (Table.States (1296), 279, 94);
+            Add_Goto (Table.States (1296), 293, 97);
+            Add_Goto (Table.States (1296), 296, 98);
+            Add_Goto (Table.States (1296), 297, 99);
+            Add_Goto (Table.States (1296), 301, 100);
+            Add_Goto (Table.States (1296), 302, 364);
+            Add_Goto (Table.States (1296), 303, 393);
+            Add_Goto (Table.States (1296), 305, 101);
+            Add_Goto (Table.States (1296), 306, 102);
+            Add_Goto (Table.States (1296), 309, 366);
+            Add_Goto (Table.States (1296), 326, 115);
+            Table.States (1296).Kernel := To_Vector ((0 => ((179, 0),  13,  2, 
(2147483647, 0),  0)));
+            Table.States (1296).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (221, 1),  0)));
+            Table.States (1297).Action_List.Set_Capacity (41);
+            Add_Action (Table.States (1297), (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, 
81, 96, 107, 108, 109, 110), (322, 0),  13,
+            task_type_declaration_0'Access, 
task_type_declaration_0_check'Access);
+            Table.States (1297).Kernel := To_Vector ((0 => ((322, 0),  99,  0, 
(322, 0),  13)));
+            Table.States (1297).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (322, 0),  13)));
+            Table.States (1298).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1298), (1 =>  72), (180, 0),  7, 
entry_body_formal_part_0'Access, null);
+            Table.States (1298).Kernel := To_Vector ((0 => ((180, 0),  256,  
0, (180, 0),  7)));
+            Table.States (1298).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (180, 0),  7)));
+            Table.States (1299).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1299), 24, (179, 0), 1300);
+            Table.States (1299).Kernel := To_Vector ((0 => ((179, 0),  221,  
2, (2147483647, 0),  0)));
+            Table.States (1299).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (179, 0),  24, 1300)));
+            Table.States (1300).Action_List.Set_Capacity (2);
+            Add_Action (Table.States (1300), 99, Reduce, (223, 1),  0, null, 
null);
+            Add_Action (Table.States (1300), 107, (223, 0), 151);
+            Table.States (1300).Goto_List.Set_Capacity (1);
+            Add_Goto (Table.States (1300), 223, 1301);
+            Table.States (1300).Kernel := To_Vector ((0 => ((179, 0),  24,  1, 
(2147483647, 0),  0)));
+            Table.States (1300).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (223, 1),  0)));
+            Table.States (1301).Action_List.Set_Capacity (1);
+            Add_Action (Table.States (1301), 99, (179, 0), 1302);
+            Table.States (1301).Kernel := To_Vector ((0 => ((179, 0),  223,  
1, (2147483647, 0),  0)));
+            Table.States (1301).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (179, 0),  99, 1302)));
+            Table.States (1302).Action_List.Set_Capacity (7);
+            Add_Action (Table.States (1302), (24, 25, 28, 29, 40, 46, 50), 
(179, 0),  12, entry_body_0'Access,
             entry_body_0_check'Access);
-            Table.States (1292).Kernel := To_Vector ((0 => (177, 97, 0, 
False)));
-            Table.States (1292).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 177, 12)));
-         end Subr_21;
+            Table.States (1302).Kernel := To_Vector ((0 => ((179, 0),  99,  0, 
(179, 0),  12)));
+            Table.States (1302).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (179, 0),  12)));
+         end Subr_22;
       begin
          Subr_1;
          Subr_2;
@@ -15790,7 +16468,8 @@ package body Ada_Process_LALR_Main is
          Subr_19;
          Subr_20;
          Subr_21;
-         Table.Error_Action := new Parse_Action_Node'((Verb => Error), null);
+         Subr_22;
+         Table.Error_Action := new Parse_Action_Node'((Verb => Error, others 
=> <>), 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 f9829fb..a4a7f22 100644
--- a/packages/ada-mode/ada_process_lr1_main.adb
+++ b/packages/ada-mode/ada_process_lr1_main.adb
@@ -40,17 +40,17 @@ package body Ada_Process_LR1_Main is
       use WisiToken.Parse.LR;
       McKenzie_Param : constant McKenzie_Param_Type :=
         (First_Terminal    => 3,
-         Last_Terminal     => 108,
-         First_Nonterminal => 109,
-         Last_Nonterminal  => 333,
+         Last_Terminal     => 110,
+         First_Nonterminal => 111,
+         Last_Nonterminal  => 335,
          Insert =>
            (4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, 3, 
4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 4, 4, 4, 4,
             4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-            4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4),
+            4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4),
          Delete =>
            (4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
             4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-            4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4),
+            4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4),
          Push_Back =>
            (2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
             2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -61,7 +61,7 @@ package body Ada_Process_LR1_Main is
             2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
             2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
             2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-            2, 2, 2, 2, 2, 2, 2),
+            2, 2, 2, 2, 2, 2, 2, 2, 2),
          Undo_Reduce =>
            (2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
             2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -82,384 +82,386 @@ package body Ada_Process_LR1_Main is
       function Actions return 
WisiToken.Parse.LR.Semantic_Action_Array_Arrays.Vector
       is begin
          return Acts : WisiToken.Parse.LR.Semantic_Action_Array_Arrays.Vector 
do
-            Acts.Set_First_Last (109, 333);
-            Acts (113).Set_First_Last (0, 0);
-            Acts (113)(0) := (abstract_subprogram_declaration_0'Access, null);
-            Acts (114).Set_First_Last (0, 1);
-            Acts (114)(0) := (accept_statement_0'Access, 
accept_statement_0_check'Access);
-            Acts (114)(1) := (accept_statement_1'Access, null);
-            Acts (115).Set_First_Last (0, 2);
-            Acts (115)(0) := (access_definition_0'Access, null);
-            Acts (115)(1) := (access_definition_1'Access, null);
-            Acts (115)(2) := (access_definition_2'Access, null);
+            Acts.Set_First_Last (111, 335);
+            Acts (115).Set_First_Last (0, 0);
+            Acts (115)(0) := (abstract_subprogram_declaration_0'Access, null);
             Acts (116).Set_First_Last (0, 1);
-            Acts (116)(0) := (actual_parameter_part_0'Access, null);
-            Acts (116)(1) := (actual_parameter_part_1'Access, null);
-            Acts (118).Set_First_Last (0, 5);
-            Acts (118)(0) := (aggregate_0'Access, null);
-            Acts (118)(1) := (aggregate_1'Access, null);
-            Acts (118)(3) := (aggregate_3'Access, null);
-            Acts (118)(4) := (aggregate_4'Access, null);
-            Acts (118)(5) := (aggregate_5'Access, null);
-            Acts (121).Set_First_Last (0, 1);
-            Acts (121)(0) := (array_type_definition_0'Access, null);
-            Acts (121)(1) := (array_type_definition_1'Access, null);
-            Acts (122).Set_First_Last (0, 3);
-            Acts (122)(0) := (aspect_clause_0'Access, null);
+            Acts (116)(0) := (accept_statement_0'Access, 
accept_statement_0_check'Access);
+            Acts (116)(1) := (accept_statement_1'Access, null);
+            Acts (117).Set_First_Last (0, 2);
+            Acts (117)(0) := (access_definition_0'Access, null);
+            Acts (117)(1) := (access_definition_1'Access, null);
+            Acts (117)(2) := (access_definition_2'Access, null);
+            Acts (118).Set_First_Last (0, 1);
+            Acts (118)(0) := (actual_parameter_part_0'Access, null);
+            Acts (118)(1) := (actual_parameter_part_1'Access, null);
+            Acts (120).Set_First_Last (0, 6);
+            Acts (120)(0) := (aggregate_0'Access, null);
+            Acts (120)(2) := (aggregate_2'Access, null);
+            Acts (120)(3) := (aggregate_3'Access, null);
+            Acts (120)(4) := (aggregate_4'Access, null);
+            Acts (120)(5) := (aggregate_5'Access, null);
+            Acts (120)(6) := (aggregate_6'Access, null);
             Acts (123).Set_First_Last (0, 1);
-            Acts (123)(0) := (aspect_specification_opt_0'Access, null);
-            Acts (124).Set_First_Last (0, 0);
-            Acts (124)(0) := (assignment_statement_0'Access, null);
-            Acts (125).Set_First_Last (0, 6);
-            Acts (125)(0) := (association_opt_0'Access, null);
-            Acts (125)(2) := (association_opt_2'Access, null);
-            Acts (125)(3) := (association_opt_3'Access, null);
-            Acts (125)(4) := (association_opt_4'Access, null);
-            Acts (125)(5) := (association_opt_5'Access, null);
-            Acts (127).Set_First_Last (0, 0);
-            Acts (127)(0) := (asynchronous_select_0'Access, null);
-            Acts (128).Set_First_Last (0, 0);
-            Acts (128)(0) := (at_clause_0'Access, null);
-            Acts (132).Set_First_Last (0, 0);
-            Acts (132)(0) := (block_label_0'Access, 
block_label_0_check'Access);
-            Acts (133).Set_First_Last (0, 1);
-            Acts (133)(0) := (null, block_label_opt_0_check'Access);
-            Acts (133)(1) := (null, null);
-            Acts (134).Set_First_Last (0, 1);
-            Acts (134)(0) := (block_statement_0'Access, 
block_statement_0_check'Access);
-            Acts (134)(1) := (block_statement_1'Access, 
block_statement_1_check'Access);
-            Acts (137).Set_First_Last (0, 0);
-            Acts (137)(0) := (case_expression_0'Access, null);
-            Acts (138).Set_First_Last (0, 0);
-            Acts (138)(0) := (case_expression_alternative_0'Access, null);
-            Acts (139).Set_First_Last (0, 1);
-            Acts (139)(0) := (case_expression_alternative_list_0'Access, null);
+            Acts (123)(0) := (array_type_definition_0'Access, null);
+            Acts (123)(1) := (array_type_definition_1'Access, null);
+            Acts (124).Set_First_Last (0, 3);
+            Acts (124)(0) := (aspect_clause_0'Access, null);
+            Acts (125).Set_First_Last (0, 1);
+            Acts (125)(0) := (aspect_specification_opt_0'Access, null);
+            Acts (126).Set_First_Last (0, 0);
+            Acts (126)(0) := (assignment_statement_0'Access, null);
+            Acts (127).Set_First_Last (0, 7);
+            Acts (127)(0) := (association_opt_0'Access, null);
+            Acts (127)(2) := (association_opt_2'Access, null);
+            Acts (127)(3) := (association_opt_3'Access, null);
+            Acts (127)(4) := (association_opt_4'Access, null);
+            Acts (127)(6) := (association_opt_6'Access, null);
+            Acts (127)(7) := (association_opt_7'Access, null);
+            Acts (129).Set_First_Last (0, 0);
+            Acts (129)(0) := (asynchronous_select_0'Access, null);
+            Acts (130).Set_First_Last (0, 0);
+            Acts (130)(0) := (at_clause_0'Access, null);
+            Acts (134).Set_First_Last (0, 0);
+            Acts (134)(0) := (block_label_0'Access, 
block_label_0_check'Access);
+            Acts (135).Set_First_Last (0, 1);
+            Acts (135)(0) := (null, block_label_opt_0_check'Access);
+            Acts (135)(1) := (null, null);
+            Acts (136).Set_First_Last (0, 1);
+            Acts (136)(0) := (block_statement_0'Access, 
block_statement_0_check'Access);
+            Acts (136)(1) := (block_statement_1'Access, 
block_statement_1_check'Access);
+            Acts (139).Set_First_Last (0, 0);
+            Acts (139)(0) := (case_expression_0'Access, null);
             Acts (140).Set_First_Last (0, 0);
-            Acts (140)(0) := (case_statement_0'Access, null);
-            Acts (141).Set_First_Last (0, 0);
-            Acts (141)(0) := (case_statement_alternative_0'Access, null);
-            Acts (142).Set_First_Last (0, 1);
-            Acts (142)(0) := (case_statement_alternative_list_0'Access, null);
-            Acts (143).Set_First_Last (0, 4);
-            Acts (143)(2) := (compilation_unit_2'Access, null);
+            Acts (140)(0) := (case_expression_alternative_0'Access, null);
+            Acts (141).Set_First_Last (0, 1);
+            Acts (141)(0) := (case_expression_alternative_list_0'Access, null);
+            Acts (142).Set_First_Last (0, 0);
+            Acts (142)(0) := (case_statement_0'Access, null);
+            Acts (143).Set_First_Last (0, 0);
+            Acts (143)(0) := (case_statement_alternative_0'Access, null);
             Acts (144).Set_First_Last (0, 1);
-            Acts (144)(0) := (compilation_unit_list_0'Access, null);
-            Acts (144)(1) := (compilation_unit_list_1'Access, 
compilation_unit_list_1_check'Access);
-            Acts (145).Set_First_Last (0, 0);
-            Acts (145)(0) := (component_clause_0'Access, null);
-            Acts (147).Set_First_Last (0, 1);
-            Acts (147)(0) := (component_declaration_0'Access, null);
-            Acts (147)(1) := (component_declaration_1'Access, null);
-            Acts (150).Set_First_Last (0, 4);
-            Acts (150)(4) := (component_list_4'Access, null);
-            Acts (153).Set_First_Last (0, 0);
-            Acts (153)(0) := (conditional_entry_call_0'Access, null);
-            Acts (158).Set_First_Last (0, 16);
-            Acts (158)(9) := (declaration_9'Access, null);
-            Acts (162).Set_First_Last (0, 1);
-            Acts (162)(0) := (delay_statement_0'Access, null);
-            Acts (162)(1) := (delay_statement_1'Access, null);
-            Acts (163).Set_First_Last (0, 1);
-            Acts (163)(0) := (derived_type_definition_0'Access, null);
-            Acts (163)(1) := (derived_type_definition_1'Access, null);
-            Acts (170).Set_First_Last (0, 2);
-            Acts (170)(1) := (discriminant_part_opt_1'Access, null);
-            Acts (173).Set_First_Last (0, 0);
-            Acts (173)(0) := (elsif_expression_item_0'Access, null);
-            Acts (174).Set_First_Last (0, 1);
-            Acts (174)(0) := (elsif_expression_list_0'Access, null);
+            Acts (144)(0) := (case_statement_alternative_list_0'Access, null);
+            Acts (145).Set_First_Last (0, 4);
+            Acts (145)(2) := (compilation_unit_2'Access, null);
+            Acts (146).Set_First_Last (0, 1);
+            Acts (146)(0) := (compilation_unit_list_0'Access, null);
+            Acts (146)(1) := (compilation_unit_list_1'Access, 
compilation_unit_list_1_check'Access);
+            Acts (147).Set_First_Last (0, 0);
+            Acts (147)(0) := (component_clause_0'Access, null);
+            Acts (149).Set_First_Last (0, 1);
+            Acts (149)(0) := (component_declaration_0'Access, null);
+            Acts (149)(1) := (component_declaration_1'Access, null);
+            Acts (152).Set_First_Last (0, 4);
+            Acts (152)(4) := (component_list_4'Access, null);
+            Acts (155).Set_First_Last (0, 0);
+            Acts (155)(0) := (conditional_entry_call_0'Access, null);
+            Acts (160).Set_First_Last (0, 16);
+            Acts (160)(9) := (declaration_9'Access, null);
+            Acts (164).Set_First_Last (0, 1);
+            Acts (164)(0) := (delay_statement_0'Access, null);
+            Acts (164)(1) := (delay_statement_1'Access, null);
+            Acts (165).Set_First_Last (0, 1);
+            Acts (165)(0) := (derived_type_definition_0'Access, null);
+            Acts (165)(1) := (derived_type_definition_1'Access, null);
+            Acts (172).Set_First_Last (0, 2);
+            Acts (172)(1) := (discriminant_part_opt_1'Access, null);
             Acts (175).Set_First_Last (0, 0);
-            Acts (175)(0) := (elsif_statement_item_0'Access, null);
+            Acts (175)(0) := (elsif_expression_item_0'Access, null);
             Acts (176).Set_First_Last (0, 1);
-            Acts (176)(0) := (elsif_statement_list_0'Access, null);
+            Acts (176)(0) := (elsif_expression_list_0'Access, null);
             Acts (177).Set_First_Last (0, 0);
-            Acts (177)(0) := (entry_body_0'Access, entry_body_0_check'Access);
+            Acts (177)(0) := (elsif_statement_item_0'Access, null);
             Acts (178).Set_First_Last (0, 1);
-            Acts (178)(0) := (entry_body_formal_part_0'Access, null);
+            Acts (178)(0) := (elsif_statement_list_0'Access, null);
+            Acts (179).Set_First_Last (0, 0);
+            Acts (179)(0) := (entry_body_0'Access, entry_body_0_check'Access);
             Acts (180).Set_First_Last (0, 1);
-            Acts (180)(0) := (entry_declaration_0'Access, null);
-            Acts (180)(1) := (entry_declaration_1'Access, null);
-            Acts (183).Set_First_Last (0, 0);
-            Acts (183)(0) := (enumeration_representation_clause_0'Access, 
null);
-            Acts (184).Set_First_Last (0, 0);
-            Acts (184)(0) := (enumeration_type_definition_0'Access, null);
-            Acts (187).Set_First_Last (0, 0);
-            Acts (187)(0) := (exception_declaration_0'Access, null);
-            Acts (188).Set_First_Last (0, 1);
-            Acts (188)(0) := (exception_handler_0'Access, null);
-            Acts (188)(1) := (exception_handler_1'Access, null);
-            Acts (189).Set_First_Last (0, 2);
-            Acts (189)(0) := (exception_handler_list_0'Access, null);
-            Acts (191).Set_First_Last (0, 1);
-            Acts (191)(0) := (exit_statement_0'Access, null);
-            Acts (191)(1) := (exit_statement_1'Access, null);
-            Acts (194).Set_First_Last (0, 0);
-            Acts (194)(0) := (expression_function_declaration_0'Access, null);
-            Acts (195).Set_First_Last (0, 1);
-            Acts (195)(0) := (extended_return_object_declaration_0'Access, 
null);
-            Acts (195)(1) := (extended_return_object_declaration_1'Access, 
null);
+            Acts (180)(0) := (entry_body_formal_part_0'Access, null);
+            Acts (182).Set_First_Last (0, 1);
+            Acts (182)(0) := (entry_declaration_0'Access, null);
+            Acts (182)(1) := (entry_declaration_1'Access, null);
+            Acts (185).Set_First_Last (0, 0);
+            Acts (185)(0) := (enumeration_representation_clause_0'Access, 
null);
+            Acts (186).Set_First_Last (0, 0);
+            Acts (186)(0) := (enumeration_type_definition_0'Access, null);
+            Acts (189).Set_First_Last (0, 0);
+            Acts (189)(0) := (exception_declaration_0'Access, null);
+            Acts (190).Set_First_Last (0, 1);
+            Acts (190)(0) := (exception_handler_0'Access, null);
+            Acts (190)(1) := (exception_handler_1'Access, null);
+            Acts (191).Set_First_Last (0, 2);
+            Acts (191)(0) := (exception_handler_list_0'Access, null);
+            Acts (193).Set_First_Last (0, 1);
+            Acts (193)(0) := (exit_statement_0'Access, null);
+            Acts (193)(1) := (exit_statement_1'Access, null);
+            Acts (196).Set_First_Last (0, 0);
+            Acts (196)(0) := (expression_function_declaration_0'Access, null);
             Acts (197).Set_First_Last (0, 1);
-            Acts (197)(0) := (extended_return_statement_0'Access, null);
-            Acts (197)(1) := (extended_return_statement_1'Access, null);
-            Acts (199).Set_First_Last (0, 3);
-            Acts (199)(0) := (formal_object_declaration_0'Access, null);
-            Acts (199)(1) := (formal_object_declaration_1'Access, null);
-            Acts (199)(2) := (formal_object_declaration_2'Access, null);
-            Acts (199)(3) := (formal_object_declaration_3'Access, null);
-            Acts (200).Set_First_Last (0, 0);
-            Acts (200)(0) := (formal_part_0'Access, null);
+            Acts (197)(0) := (extended_return_object_declaration_0'Access, 
null);
+            Acts (197)(1) := (extended_return_object_declaration_1'Access, 
null);
+            Acts (199).Set_First_Last (0, 1);
+            Acts (199)(0) := (extended_return_statement_0'Access, null);
+            Acts (199)(1) := (extended_return_statement_1'Access, null);
             Acts (201).Set_First_Last (0, 3);
-            Acts (201)(0) := (formal_subprogram_declaration_0'Access, null);
-            Acts (201)(1) := (formal_subprogram_declaration_1'Access, null);
-            Acts (201)(2) := (formal_subprogram_declaration_2'Access, null);
-            Acts (201)(3) := (formal_subprogram_declaration_3'Access, null);
-            Acts (202).Set_First_Last (0, 2);
-            Acts (202)(0) := (formal_type_declaration_0'Access, null);
-            Acts (202)(1) := (formal_type_declaration_1'Access, null);
-            Acts (202)(2) := (formal_type_declaration_2'Access, null);
-            Acts (204).Set_First_Last (0, 1);
-            Acts (204)(0) := (formal_derived_type_definition_0'Access, null);
-            Acts (204)(1) := (formal_derived_type_definition_1'Access, null);
-            Acts (205).Set_First_Last (0, 0);
-            Acts (205)(0) := (formal_package_declaration_0'Access, null);
-            Acts (207).Set_First_Last (0, 2);
-            Acts (207)(0) := (full_type_declaration_0'Access, null);
-            Acts (208).Set_First_Last (0, 0);
-            Acts (208)(0) := (function_specification_0'Access, 
function_specification_0_check'Access);
-            Acts (211).Set_First_Last (0, 1);
-            Acts (211)(0) := (generic_formal_part_0'Access, null);
-            Acts (211)(1) := (generic_formal_part_1'Access, null);
-            Acts (214).Set_First_Last (0, 2);
-            Acts (214)(0) := (generic_instantiation_0'Access, null);
-            Acts (214)(1) := (generic_instantiation_1'Access, null);
-            Acts (214)(2) := (generic_instantiation_2'Access, null);
-            Acts (215).Set_First_Last (0, 0);
-            Acts (215)(0) := (generic_package_declaration_0'Access, null);
+            Acts (201)(0) := (formal_object_declaration_0'Access, null);
+            Acts (201)(1) := (formal_object_declaration_1'Access, null);
+            Acts (201)(2) := (formal_object_declaration_2'Access, null);
+            Acts (201)(3) := (formal_object_declaration_3'Access, null);
+            Acts (202).Set_First_Last (0, 0);
+            Acts (202)(0) := (formal_part_0'Access, null);
+            Acts (203).Set_First_Last (0, 3);
+            Acts (203)(0) := (formal_subprogram_declaration_0'Access, null);
+            Acts (203)(1) := (formal_subprogram_declaration_1'Access, null);
+            Acts (203)(2) := (formal_subprogram_declaration_2'Access, null);
+            Acts (203)(3) := (formal_subprogram_declaration_3'Access, null);
+            Acts (204).Set_First_Last (0, 2);
+            Acts (204)(0) := (formal_type_declaration_0'Access, null);
+            Acts (204)(1) := (formal_type_declaration_1'Access, null);
+            Acts (204)(2) := (formal_type_declaration_2'Access, null);
+            Acts (206).Set_First_Last (0, 1);
+            Acts (206)(0) := (formal_derived_type_definition_0'Access, null);
+            Acts (206)(1) := (formal_derived_type_definition_1'Access, null);
+            Acts (207).Set_First_Last (0, 0);
+            Acts (207)(0) := (formal_package_declaration_0'Access, null);
+            Acts (209).Set_First_Last (0, 2);
+            Acts (209)(0) := (full_type_declaration_0'Access, null);
+            Acts (210).Set_First_Last (0, 0);
+            Acts (210)(0) := (function_specification_0'Access, 
function_specification_0_check'Access);
+            Acts (213).Set_First_Last (0, 1);
+            Acts (213)(0) := (generic_formal_part_0'Access, null);
+            Acts (213)(1) := (generic_formal_part_1'Access, null);
             Acts (216).Set_First_Last (0, 2);
-            Acts (216)(0) := (generic_renaming_declaration_0'Access, null);
-            Acts (216)(1) := (generic_renaming_declaration_1'Access, null);
-            Acts (216)(2) := (generic_renaming_declaration_2'Access, null);
+            Acts (216)(0) := (generic_instantiation_0'Access, null);
+            Acts (216)(1) := (generic_instantiation_1'Access, null);
+            Acts (216)(2) := (generic_instantiation_2'Access, null);
             Acts (217).Set_First_Last (0, 0);
-            Acts (217)(0) := (generic_subprogram_declaration_0'Access, null);
-            Acts (218).Set_First_Last (0, 0);
-            Acts (218)(0) := (goto_label_0'Access, null);
-            Acts (219).Set_First_Last (0, 1);
-            Acts (219)(0) := (handled_sequence_of_statements_0'Access, null);
-            Acts (220).Set_First_Last (0, 1);
-            Acts (220)(0) := (identifier_list_0'Access, null);
-            Acts (220)(1) := (identifier_list_1'Access, null);
+            Acts (217)(0) := (generic_package_declaration_0'Access, null);
+            Acts (218).Set_First_Last (0, 2);
+            Acts (218)(0) := (generic_renaming_declaration_0'Access, null);
+            Acts (218)(1) := (generic_renaming_declaration_1'Access, null);
+            Acts (218)(2) := (generic_renaming_declaration_2'Access, null);
+            Acts (219).Set_First_Last (0, 0);
+            Acts (219)(0) := (generic_subprogram_declaration_0'Access, null);
+            Acts (220).Set_First_Last (0, 0);
+            Acts (220)(0) := (goto_label_0'Access, null);
             Acts (221).Set_First_Last (0, 1);
-            Acts (221)(0) := (null, identifier_opt_0_check'Access);
-            Acts (221)(1) := (null, null);
-            Acts (222).Set_First_Last (0, 3);
-            Acts (222)(0) := (if_expression_0'Access, null);
-            Acts (222)(1) := (if_expression_1'Access, null);
-            Acts (222)(2) := (if_expression_2'Access, null);
-            Acts (222)(3) := (if_expression_3'Access, null);
-            Acts (223).Set_First_Last (0, 3);
-            Acts (223)(0) := (if_statement_0'Access, null);
-            Acts (223)(1) := (if_statement_1'Access, null);
-            Acts (223)(2) := (if_statement_2'Access, null);
-            Acts (223)(3) := (if_statement_3'Access, null);
-            Acts (224).Set_First_Last (0, 1);
-            Acts (224)(0) := (incomplete_type_declaration_0'Access, null);
-            Acts (224)(1) := (incomplete_type_declaration_1'Access, null);
-            Acts (225).Set_First_Last (0, 0);
-            Acts (225)(0) := (index_constraint_0'Access, null);
-            Acts (228).Set_First_Last (0, 1);
-            Acts (228)(0) := (interface_list_0'Access, null);
-            Acts (228)(1) := (interface_list_1'Access, null);
+            Acts (221)(0) := (handled_sequence_of_statements_0'Access, null);
+            Acts (222).Set_First_Last (0, 1);
+            Acts (222)(0) := (identifier_list_0'Access, null);
+            Acts (222)(1) := (identifier_list_1'Access, null);
+            Acts (223).Set_First_Last (0, 1);
+            Acts (223)(0) := (null, identifier_opt_0_check'Access);
+            Acts (223)(1) := (null, null);
+            Acts (224).Set_First_Last (0, 3);
+            Acts (224)(0) := (if_expression_0'Access, null);
+            Acts (224)(1) := (if_expression_1'Access, null);
+            Acts (224)(2) := (if_expression_2'Access, null);
+            Acts (224)(3) := (if_expression_3'Access, null);
+            Acts (225).Set_First_Last (0, 3);
+            Acts (225)(0) := (if_statement_0'Access, null);
+            Acts (225)(1) := (if_statement_1'Access, null);
+            Acts (225)(2) := (if_statement_2'Access, null);
+            Acts (225)(3) := (if_statement_3'Access, null);
+            Acts (226).Set_First_Last (0, 1);
+            Acts (226)(0) := (incomplete_type_declaration_0'Access, null);
+            Acts (226)(1) := (incomplete_type_declaration_1'Access, null);
+            Acts (227).Set_First_Last (0, 0);
+            Acts (227)(0) := (index_constraint_0'Access, null);
             Acts (230).Set_First_Last (0, 1);
-            Acts (230)(0) := (iteration_scheme_0'Access, null);
-            Acts (230)(1) := (iteration_scheme_1'Access, null);
-            Acts (231).Set_First_Last (0, 5);
-            Acts (231)(2) := (iterator_specification_2'Access, null);
-            Acts (231)(5) := (iterator_specification_5'Access, null);
-            Acts (233).Set_First_Last (0, 1);
-            Acts (233)(0) := (loop_statement_0'Access, 
loop_statement_0_check'Access);
-            Acts (233)(1) := (loop_statement_1'Access, 
loop_statement_1_check'Access);
-            Acts (240).Set_First_Last (0, 8);
-            Acts (240)(0) := (name_0'Access, null);
-            Acts (240)(1) := (name_1'Access, null);
-            Acts (240)(2) := (null, name_2_check'Access);
-            Acts (240)(3) := (null, null);
-            Acts (240)(4) := (null, null);
-            Acts (240)(5) := (name_5'Access, name_5_check'Access);
-            Acts (240)(6) := (null, null);
-            Acts (240)(7) := (null, name_7_check'Access);
-            Acts (240)(8) := (null, null);
-            Acts (241).Set_First_Last (0, 1);
-            Acts (241)(0) := (null, name_opt_0_check'Access);
-            Acts (241)(1) := (null, null);
-            Acts (243).Set_First_Last (0, 3);
-            Acts (243)(0) := (null_exclusion_opt_name_type_0'Access, null);
-            Acts (243)(1) := (null_exclusion_opt_name_type_1'Access, null);
-            Acts (243)(2) := (null_exclusion_opt_name_type_2'Access, null);
-            Acts (243)(3) := (null_exclusion_opt_name_type_3'Access, null);
-            Acts (244).Set_First_Last (0, 0);
-            Acts (244)(0) := (null_procedure_declaration_0'Access, null);
-            Acts (245).Set_First_Last (0, 7);
-            Acts (245)(0) := (object_declaration_0'Access, null);
-            Acts (245)(1) := (object_declaration_1'Access, null);
-            Acts (245)(2) := (object_declaration_2'Access, null);
-            Acts (245)(3) := (object_declaration_3'Access, null);
-            Acts (245)(4) := (object_declaration_4'Access, null);
-            Acts (245)(5) := (object_declaration_5'Access, null);
-            Acts (246).Set_First_Last (0, 2);
-            Acts (246)(0) := (object_renaming_declaration_0'Access, null);
-            Acts (246)(1) := (object_renaming_declaration_1'Access, null);
-            Acts (246)(2) := (object_renaming_declaration_2'Access, null);
-            Acts (247).Set_First_Last (0, 2);
-            Acts (247)(0) := (overriding_indicator_opt_0'Access, null);
-            Acts (247)(1) := (overriding_indicator_opt_1'Access, null);
-            Acts (248).Set_First_Last (0, 1);
-            Acts (248)(0) := (package_body_0'Access, 
package_body_0_check'Access);
-            Acts (248)(1) := (package_body_1'Access, 
package_body_1_check'Access);
-            Acts (249).Set_First_Last (0, 0);
-            Acts (249)(0) := (package_body_stub_0'Access, null);
-            Acts (250).Set_First_Last (0, 0);
-            Acts (250)(0) := (package_declaration_0'Access, null);
+            Acts (230)(0) := (interface_list_0'Access, null);
+            Acts (230)(1) := (interface_list_1'Access, null);
+            Acts (232).Set_First_Last (0, 1);
+            Acts (232)(0) := (iteration_scheme_0'Access, null);
+            Acts (232)(1) := (iteration_scheme_1'Access, null);
+            Acts (233).Set_First_Last (0, 5);
+            Acts (233)(2) := (iterator_specification_2'Access, null);
+            Acts (233)(5) := (iterator_specification_5'Access, null);
+            Acts (235).Set_First_Last (0, 1);
+            Acts (235)(0) := (loop_statement_0'Access, 
loop_statement_0_check'Access);
+            Acts (235)(1) := (loop_statement_1'Access, 
loop_statement_1_check'Access);
+            Acts (242).Set_First_Last (0, 8);
+            Acts (242)(0) := (name_0'Access, null);
+            Acts (242)(1) := (name_1'Access, null);
+            Acts (242)(2) := (null, name_2_check'Access);
+            Acts (242)(3) := (null, null);
+            Acts (242)(4) := (null, null);
+            Acts (242)(5) := (name_5'Access, name_5_check'Access);
+            Acts (242)(6) := (null, null);
+            Acts (242)(7) := (null, name_7_check'Access);
+            Acts (242)(8) := (null, null);
+            Acts (243).Set_First_Last (0, 1);
+            Acts (243)(0) := (null, name_opt_0_check'Access);
+            Acts (243)(1) := (null, null);
+            Acts (245).Set_First_Last (0, 3);
+            Acts (245)(0) := (null_exclusion_opt_name_type_0'Access, null);
+            Acts (245)(1) := (null_exclusion_opt_name_type_1'Access, null);
+            Acts (245)(2) := (null_exclusion_opt_name_type_2'Access, null);
+            Acts (245)(3) := (null_exclusion_opt_name_type_3'Access, null);
+            Acts (246).Set_First_Last (0, 0);
+            Acts (246)(0) := (null_procedure_declaration_0'Access, null);
+            Acts (247).Set_First_Last (0, 7);
+            Acts (247)(0) := (object_declaration_0'Access, null);
+            Acts (247)(1) := (object_declaration_1'Access, null);
+            Acts (247)(2) := (object_declaration_2'Access, null);
+            Acts (247)(3) := (object_declaration_3'Access, null);
+            Acts (247)(4) := (object_declaration_4'Access, null);
+            Acts (247)(5) := (object_declaration_5'Access, null);
+            Acts (248).Set_First_Last (0, 2);
+            Acts (248)(0) := (object_renaming_declaration_0'Access, null);
+            Acts (248)(1) := (object_renaming_declaration_1'Access, null);
+            Acts (248)(2) := (object_renaming_declaration_2'Access, null);
+            Acts (249).Set_First_Last (0, 2);
+            Acts (249)(0) := (overriding_indicator_opt_0'Access, null);
+            Acts (249)(1) := (overriding_indicator_opt_1'Access, null);
+            Acts (250).Set_First_Last (0, 1);
+            Acts (250)(0) := (package_body_0'Access, 
package_body_0_check'Access);
+            Acts (250)(1) := (package_body_1'Access, 
package_body_1_check'Access);
             Acts (251).Set_First_Last (0, 0);
-            Acts (251)(0) := (package_renaming_declaration_0'Access, null);
-            Acts (252).Set_First_Last (0, 1);
-            Acts (252)(0) := (package_specification_0'Access, 
package_specification_0_check'Access);
-            Acts (252)(1) := (package_specification_1'Access, 
package_specification_1_check'Access);
-            Acts (253).Set_First_Last (0, 1);
-            Acts (253)(0) := (parameter_and_result_profile_0'Access, null);
-            Acts (255).Set_First_Last (0, 4);
-            Acts (255)(0) := (parameter_specification_0'Access, null);
-            Acts (255)(1) := (parameter_specification_1'Access, null);
-            Acts (255)(2) := (parameter_specification_2'Access, null);
-            Acts (255)(3) := (parameter_specification_3'Access, null);
-            Acts (257).Set_First_Last (0, 1);
-            Acts (257)(0) := (paren_expression_0'Access, null);
-            Acts (258).Set_First_Last (0, 2);
-            Acts (258)(0) := (pragma_g_0'Access, null);
-            Acts (258)(1) := (pragma_g_1'Access, null);
-            Acts (258)(2) := (pragma_g_2'Access, null);
-            Acts (259).Set_First_Last (0, 4);
-            Acts (259)(0) := (primary_0'Access, null);
-            Acts (259)(2) := (primary_2'Access, null);
-            Acts (259)(4) := (primary_4'Access, null);
-            Acts (260).Set_First_Last (0, 0);
-            Acts (260)(0) := (private_extension_declaration_0'Access, null);
-            Acts (261).Set_First_Last (0, 0);
-            Acts (261)(0) := (private_type_declaration_0'Access, null);
+            Acts (251)(0) := (package_body_stub_0'Access, null);
+            Acts (252).Set_First_Last (0, 0);
+            Acts (252)(0) := (package_declaration_0'Access, null);
+            Acts (253).Set_First_Last (0, 0);
+            Acts (253)(0) := (package_renaming_declaration_0'Access, null);
+            Acts (254).Set_First_Last (0, 1);
+            Acts (254)(0) := (package_specification_0'Access, 
package_specification_0_check'Access);
+            Acts (254)(1) := (package_specification_1'Access, 
package_specification_1_check'Access);
+            Acts (255).Set_First_Last (0, 1);
+            Acts (255)(0) := (parameter_and_result_profile_0'Access, null);
+            Acts (257).Set_First_Last (0, 4);
+            Acts (257)(0) := (parameter_specification_0'Access, null);
+            Acts (257)(1) := (parameter_specification_1'Access, null);
+            Acts (257)(2) := (parameter_specification_2'Access, null);
+            Acts (257)(3) := (parameter_specification_3'Access, null);
+            Acts (259).Set_First_Last (0, 1);
+            Acts (259)(0) := (paren_expression_0'Access, null);
+            Acts (260).Set_First_Last (0, 2);
+            Acts (260)(0) := (pragma_g_0'Access, null);
+            Acts (260)(1) := (pragma_g_1'Access, null);
+            Acts (260)(2) := (pragma_g_2'Access, null);
+            Acts (261).Set_First_Last (0, 4);
+            Acts (261)(0) := (primary_0'Access, null);
+            Acts (261)(2) := (primary_2'Access, null);
+            Acts (261)(4) := (primary_4'Access, null);
             Acts (262).Set_First_Last (0, 0);
-            Acts (262)(0) := (procedure_call_statement_0'Access, null);
+            Acts (262)(0) := (private_extension_declaration_0'Access, null);
             Acts (263).Set_First_Last (0, 0);
-            Acts (263)(0) := (procedure_specification_0'Access, 
procedure_specification_0_check'Access);
+            Acts (263)(0) := (private_type_declaration_0'Access, null);
+            Acts (264).Set_First_Last (0, 0);
+            Acts (264)(0) := (procedure_call_statement_0'Access, null);
             Acts (265).Set_First_Last (0, 0);
-            Acts (265)(0) := (protected_body_0'Access, 
protected_body_0_check'Access);
-            Acts (266).Set_First_Last (0, 0);
-            Acts (266)(0) := (protected_body_stub_0'Access, null);
-            Acts (267).Set_First_Last (0, 1);
-            Acts (267)(0) := (protected_definition_0'Access, 
protected_definition_0_check'Access);
-            Acts (267)(1) := (protected_definition_1'Access, 
protected_definition_1_check'Access);
-            Acts (272).Set_First_Last (0, 1);
-            Acts (272)(0) := (protected_type_declaration_0'Access, 
protected_type_declaration_0_check'Access);
-            Acts (272)(1) := (protected_type_declaration_1'Access, 
protected_type_declaration_1_check'Access);
-            Acts (273).Set_First_Last (0, 0);
-            Acts (273)(0) := (qualified_expression_0'Access, null);
-            Acts (274).Set_First_Last (0, 0);
-            Acts (274)(0) := (quantified_expression_0'Access, null);
-            Acts (276).Set_First_Last (0, 1);
-            Acts (276)(0) := (raise_expression_0'Access, null);
-            Acts (277).Set_First_Last (0, 2);
-            Acts (277)(0) := (raise_statement_0'Access, null);
-            Acts (277)(1) := (raise_statement_1'Access, null);
-            Acts (277)(2) := (raise_statement_2'Access, null);
-            Acts (278).Set_First_Last (0, 2);
-            Acts (278)(0) := (range_g_0'Access, null);
-            Acts (281).Set_First_Last (0, 1);
-            Acts (281)(0) := (record_definition_0'Access, null);
-            Acts (282).Set_First_Last (0, 0);
-            Acts (282)(0) := (record_representation_clause_0'Access, null);
-            Acts (291).Set_First_Last (0, 1);
-            Acts (291)(0) := (requeue_statement_0'Access, null);
-            Acts (291)(1) := (requeue_statement_1'Access, null);
-            Acts (292).Set_First_Last (0, 1);
-            Acts (292)(0) := (result_profile_0'Access, null);
-            Acts (292)(1) := (result_profile_1'Access, null);
-            Acts (294).Set_First_Last (0, 3);
-            Acts (294)(0) := (selected_component_0'Access, 
selected_component_0_check'Access);
-            Acts (294)(1) := (selected_component_1'Access, null);
-            Acts (294)(2) := (selected_component_2'Access, 
selected_component_2_check'Access);
-            Acts (294)(3) := (selected_component_3'Access, null);
-            Acts (295).Set_First_Last (0, 1);
-            Acts (295)(0) := (selective_accept_0'Access, null);
-            Acts (295)(1) := (selective_accept_1'Access, null);
-            Acts (296).Set_First_Last (0, 5);
-            Acts (296)(0) := (select_alternative_0'Access, null);
-            Acts (296)(1) := (select_alternative_1'Access, null);
-            Acts (296)(2) := (select_alternative_2'Access, null);
-            Acts (296)(4) := (select_alternative_4'Access, null);
+            Acts (265)(0) := (procedure_specification_0'Access, 
procedure_specification_0_check'Access);
+            Acts (267).Set_First_Last (0, 0);
+            Acts (267)(0) := (protected_body_0'Access, 
protected_body_0_check'Access);
+            Acts (268).Set_First_Last (0, 0);
+            Acts (268)(0) := (protected_body_stub_0'Access, null);
+            Acts (269).Set_First_Last (0, 1);
+            Acts (269)(0) := (protected_definition_0'Access, 
protected_definition_0_check'Access);
+            Acts (269)(1) := (protected_definition_1'Access, 
protected_definition_1_check'Access);
+            Acts (274).Set_First_Last (0, 1);
+            Acts (274)(0) := (protected_type_declaration_0'Access, 
protected_type_declaration_0_check'Access);
+            Acts (274)(1) := (protected_type_declaration_1'Access, 
protected_type_declaration_1_check'Access);
+            Acts (275).Set_First_Last (0, 0);
+            Acts (275)(0) := (qualified_expression_0'Access, null);
+            Acts (276).Set_First_Last (0, 0);
+            Acts (276)(0) := (quantified_expression_0'Access, null);
+            Acts (278).Set_First_Last (0, 1);
+            Acts (278)(0) := (raise_expression_0'Access, null);
+            Acts (279).Set_First_Last (0, 2);
+            Acts (279)(0) := (raise_statement_0'Access, null);
+            Acts (279)(1) := (raise_statement_1'Access, null);
+            Acts (279)(2) := (raise_statement_2'Access, null);
+            Acts (280).Set_First_Last (0, 2);
+            Acts (280)(0) := (range_g_0'Access, null);
+            Acts (283).Set_First_Last (0, 1);
+            Acts (283)(0) := (record_definition_0'Access, null);
+            Acts (284).Set_First_Last (0, 0);
+            Acts (284)(0) := (record_representation_clause_0'Access, null);
+            Acts (293).Set_First_Last (0, 1);
+            Acts (293)(0) := (requeue_statement_0'Access, null);
+            Acts (293)(1) := (requeue_statement_1'Access, null);
+            Acts (294).Set_First_Last (0, 1);
+            Acts (294)(0) := (result_profile_0'Access, null);
+            Acts (294)(1) := (result_profile_1'Access, null);
+            Acts (296).Set_First_Last (0, 3);
+            Acts (296)(0) := (selected_component_0'Access, 
selected_component_0_check'Access);
+            Acts (296)(1) := (selected_component_1'Access, null);
+            Acts (296)(2) := (selected_component_2'Access, 
selected_component_2_check'Access);
+            Acts (296)(3) := (selected_component_3'Access, null);
             Acts (297).Set_First_Last (0, 1);
-            Acts (297)(0) := (select_alternative_list_0'Access, null);
-            Acts (297)(1) := (select_alternative_list_1'Access, null);
-            Acts (303).Set_First_Last (0, 0);
-            Acts (303)(0) := (simple_return_statement_0'Access, null);
-            Acts (304).Set_First_Last (0, 10);
-            Acts (304)(0) := (simple_statement_0'Access, null);
-            Acts (304)(3) := (simple_statement_3'Access, null);
-            Acts (304)(8) := (simple_statement_8'Access, null);
-            Acts (305).Set_First_Last (0, 1);
-            Acts (305)(0) := (single_protected_declaration_0'Access, 
single_protected_declaration_0_check'Access);
-            Acts (305)(1) := (single_protected_declaration_1'Access, 
single_protected_declaration_1_check'Access);
-            Acts (306).Set_First_Last (0, 2);
-            Acts (306)(0) := (single_task_declaration_0'Access, 
single_task_declaration_0_check'Access);
-            Acts (306)(1) := (single_task_declaration_1'Access, 
single_task_declaration_1_check'Access);
-            Acts (306)(2) := (single_task_declaration_2'Access, null);
-            Acts (308).Set_First_Last (0, 0);
-            Acts (308)(0) := (subprogram_body_0'Access, 
subprogram_body_0_check'Access);
-            Acts (309).Set_First_Last (0, 0);
-            Acts (309)(0) := (subprogram_body_stub_0'Access, null);
+            Acts (297)(0) := (selective_accept_0'Access, null);
+            Acts (297)(1) := (selective_accept_1'Access, null);
+            Acts (298).Set_First_Last (0, 5);
+            Acts (298)(0) := (select_alternative_0'Access, null);
+            Acts (298)(1) := (select_alternative_1'Access, null);
+            Acts (298)(2) := (select_alternative_2'Access, null);
+            Acts (298)(4) := (select_alternative_4'Access, null);
+            Acts (299).Set_First_Last (0, 1);
+            Acts (299)(0) := (select_alternative_list_0'Access, null);
+            Acts (299)(1) := (select_alternative_list_1'Access, null);
+            Acts (305).Set_First_Last (0, 0);
+            Acts (305)(0) := (simple_return_statement_0'Access, null);
+            Acts (306).Set_First_Last (0, 10);
+            Acts (306)(0) := (simple_statement_0'Access, null);
+            Acts (306)(3) := (simple_statement_3'Access, null);
+            Acts (306)(8) := (simple_statement_8'Access, null);
+            Acts (307).Set_First_Last (0, 1);
+            Acts (307)(0) := (single_protected_declaration_0'Access, 
single_protected_declaration_0_check'Access);
+            Acts (307)(1) := (single_protected_declaration_1'Access, 
single_protected_declaration_1_check'Access);
+            Acts (308).Set_First_Last (0, 2);
+            Acts (308)(0) := (single_task_declaration_0'Access, 
single_task_declaration_0_check'Access);
+            Acts (308)(1) := (single_task_declaration_1'Access, 
single_task_declaration_1_check'Access);
+            Acts (308)(2) := (single_task_declaration_2'Access, null);
             Acts (310).Set_First_Last (0, 0);
-            Acts (310)(0) := (subprogram_declaration_0'Access, null);
-            Acts (311).Set_First_Last (0, 2);
-            Acts (311)(0) := (subprogram_default_0'Access, null);
+            Acts (310)(0) := (subprogram_body_0'Access, 
subprogram_body_0_check'Access);
+            Acts (311).Set_First_Last (0, 0);
+            Acts (311)(0) := (subprogram_body_stub_0'Access, null);
             Acts (312).Set_First_Last (0, 0);
-            Acts (312)(0) := (subprogram_renaming_declaration_0'Access, null);
-            Acts (313).Set_First_Last (0, 1);
-            Acts (313)(0) := (null, subprogram_specification_0_check'Access);
-            Acts (313)(1) := (null, subprogram_specification_1_check'Access);
+            Acts (312)(0) := (subprogram_declaration_0'Access, null);
+            Acts (313).Set_First_Last (0, 2);
+            Acts (313)(0) := (subprogram_default_0'Access, null);
             Acts (314).Set_First_Last (0, 0);
-            Acts (314)(0) := (subtype_declaration_0'Access, null);
-            Acts (315).Set_First_Last (0, 3);
-            Acts (315)(0) := (subtype_indication_0'Access, null);
-            Acts (315)(1) := (subtype_indication_1'Access, null);
-            Acts (315)(2) := (subtype_indication_2'Access, null);
-            Acts (315)(3) := (subtype_indication_3'Access, null);
+            Acts (314)(0) := (subprogram_renaming_declaration_0'Access, null);
+            Acts (315).Set_First_Last (0, 1);
+            Acts (315)(0) := (null, subprogram_specification_0_check'Access);
+            Acts (315)(1) := (null, subprogram_specification_1_check'Access);
             Acts (316).Set_First_Last (0, 0);
-            Acts (316)(0) := (subunit_0'Access, null);
-            Acts (317).Set_First_Last (0, 0);
-            Acts (317)(0) := (task_body_0'Access, task_body_0_check'Access);
+            Acts (316)(0) := (subtype_declaration_0'Access, null);
+            Acts (317).Set_First_Last (0, 3);
+            Acts (317)(0) := (subtype_indication_0'Access, null);
+            Acts (317)(1) := (subtype_indication_1'Access, null);
+            Acts (317)(2) := (subtype_indication_2'Access, null);
+            Acts (317)(3) := (subtype_indication_3'Access, null);
             Acts (318).Set_First_Last (0, 0);
-            Acts (318)(0) := (task_body_stub_0'Access, null);
-            Acts (319).Set_First_Last (0, 1);
-            Acts (319)(0) := (task_definition_0'Access, null);
-            Acts (319)(1) := (task_definition_1'Access, null);
-            Acts (320).Set_First_Last (0, 2);
-            Acts (320)(0) := (task_type_declaration_0'Access, 
task_type_declaration_0_check'Access);
-            Acts (320)(1) := (task_type_declaration_1'Access, 
task_type_declaration_1_check'Access);
-            Acts (320)(2) := (task_type_declaration_2'Access, null);
-            Acts (324).Set_First_Last (0, 0);
-            Acts (324)(0) := (timed_entry_call_0'Access, null);
-            Acts (328).Set_First_Last (0, 0);
-            Acts (328)(0) := (variant_part_0'Access, null);
-            Acts (329).Set_First_Last (0, 1);
-            Acts (329)(0) := (variant_list_0'Access, null);
+            Acts (318)(0) := (subunit_0'Access, null);
+            Acts (319).Set_First_Last (0, 0);
+            Acts (319)(0) := (task_body_0'Access, task_body_0_check'Access);
+            Acts (320).Set_First_Last (0, 0);
+            Acts (320)(0) := (task_body_stub_0'Access, null);
+            Acts (321).Set_First_Last (0, 1);
+            Acts (321)(0) := (task_definition_0'Access, null);
+            Acts (321)(1) := (task_definition_1'Access, null);
+            Acts (322).Set_First_Last (0, 2);
+            Acts (322)(0) := (task_type_declaration_0'Access, 
task_type_declaration_0_check'Access);
+            Acts (322)(1) := (task_type_declaration_1'Access, 
task_type_declaration_1_check'Access);
+            Acts (322)(2) := (task_type_declaration_2'Access, null);
+            Acts (326).Set_First_Last (0, 0);
+            Acts (326)(0) := (timed_entry_call_0'Access, null);
             Acts (330).Set_First_Last (0, 0);
-            Acts (330)(0) := (variant_0'Access, null);
-            Acts (332).Set_First_Last (0, 2);
-            Acts (332)(0) := (use_clause_0'Access, null);
-            Acts (332)(1) := (use_clause_1'Access, null);
-            Acts (332)(2) := (use_clause_2'Access, null);
-            Acts (333).Set_First_Last (0, 3);
-            Acts (333)(0) := (with_clause_0'Access, null);
-            Acts (333)(1) := (with_clause_1'Access, null);
-            Acts (333)(2) := (with_clause_2'Access, null);
-            Acts (333)(3) := (with_clause_3'Access, null);
+            Acts (330)(0) := (variant_part_0'Access, null);
+            Acts (331).Set_First_Last (0, 1);
+            Acts (331)(0) := (variant_list_0'Access, null);
+            Acts (332).Set_First_Last (0, 0);
+            Acts (332)(0) := (variant_0'Access, null);
+            Acts (334).Set_First_Last (0, 2);
+            Acts (334)(0) := (use_clause_0'Access, null);
+            Acts (334)(1) := (use_clause_1'Access, null);
+            Acts (334)(2) := (use_clause_2'Access, null);
+            Acts (335).Set_First_Last (0, 3);
+            Acts (335)(0) := (with_clause_0'Access, null);
+            Acts (335)(1) := (with_clause_1'Access, null);
+            Acts (335)(2) := (with_clause_2'Access, null);
+            Acts (335)(3) := (with_clause_3'Access, null);
          end return;
       end Actions;
 
diff --git a/packages/ada-mode/ada_re2c.c b/packages/ada-mode/ada_re2c.c
index 6c79343..18da94a 100644
--- a/packages/ada-mode/ada_re2c.c
+++ b/packages/ada-mode/ada_re2c.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 1.0.3 */
+/* Generated by re2c 1.3 */
 #line 1 "../ada.re2c"
 //  generated parser support file. -*- mode: C -*-
 //  command line: wisitoken-bnf-generate.exe  --generate LALR Ada_Emacs re2c 
PROCESS ada.wy
@@ -130,7 +130,7 @@ int ada_next_token
    *id = -1;
    if (lexer->cursor > lexer->buffer_last)
    {
-      *id            = 108;
+      *id            = 110;
       *byte_position = lexer->buffer_last - lexer->buffer + 1;
       *byte_length   = 0;
       *char_position = lexer->char_token_start;
@@ -243,8 +243,9 @@ int ada_next_token
        case 'X':
        case 'x':       goto yy70;
        case '[':       goto yy71;
-       case '{':       goto yy72;
-       case '|':       goto yy73;
+       case ']':       goto yy73;
+       case '{':       goto yy75;
+       case '|':       goto yy78;
        case 0xC2:
        case 0xC3:
        case 0xC4:
@@ -274,8 +275,8 @@ int ada_next_token
        case 0xDC:
        case 0xDD:
        case 0xDE:
-       case 0xDF:      goto yy75;
-       case 0xE0:      goto yy76;
+       case 0xDF:      goto yy80;
+       case 0xE0:      goto yy81;
        case 0xE1:
        case 0xE2:
        case 0xE3:
@@ -290,12 +291,12 @@ int ada_next_token
        case 0xEC:
        case 0xED:
        case 0xEE:
-       case 0xEF:      goto yy77;
-       case 0xF0:      goto yy78;
+       case 0xEF:      goto yy82;
+       case 0xF0:      goto yy83;
        case 0xF1:
        case 0xF2:
-       case 0xF3:      goto yy79;
-       case 0xF4:      goto yy80;
+       case 0xF3:      goto yy84;
+       case 0xF4:      goto yy85;
        default:        goto yy2;
        }
 yy2:
@@ -303,16 +304,16 @@ yy2:
        YYSKIP ();
 yy3:
        YYDEBUG(3, YYPEEK ());
-#line 377 "../ada.re2c"
+#line 382 "../ada.re2c"
        {status = ERROR_unrecognized_character; continue;}
-#line 309 "../ada_re2c.c"
+#line 310 "../ada_re2c.c"
 yy4:
        YYDEBUG(4, YYPEEK ());
        YYSKIP ();
        YYDEBUG(5, YYPEEK ());
-#line 375 "../ada.re2c"
-       {*id =  108; continue;}
-#line 316 "../ada_re2c.c"
+#line 380 "../ada.re2c"
+       {*id =  110; continue;}
+#line 317 "../ada_re2c.c"
 yy6:
        YYDEBUG(6, YYPEEK ());
        YYSKIP ();
@@ -325,7 +326,7 @@ yy6:
        }
 yy8:
        YYDEBUG(8, YYPEEK ());
-#line 261 "../ada.re2c"
+#line 264 "../ada.re2c"
        { lexer->byte_token_start = lexer->cursor;
           lexer->char_token_start = lexer->char_pos;
           if (*lexer->cursor == 0x0A)
@@ -333,14 +334,14 @@ yy8:
           else
              lexer->line_token_start = lexer->line;
           continue; }
-#line 337 "../ada_re2c.c"
+#line 338 "../ada_re2c.c"
 yy9:
        YYDEBUG(9, YYPEEK ());
        YYSKIP ();
        YYDEBUG(10, YYPEEK ());
-#line 268 "../ada.re2c"
+#line 271 "../ada.re2c"
        {*id =  1; continue;}
-#line 344 "../ada_re2c.c"
+#line 345 "../ada_re2c.c"
 yy11:
        YYDEBUG(11, YYPEEK ());
        YYSKIP ();
@@ -502,7 +503,7 @@ yy12:
        case 0xF1:
        case 0xF2:
        case 0xF3:
-       case 0xF4:      goto yy82;
+       case 0xF4:      goto yy87;
        default:        goto yy3;
        }
 yy13:
@@ -512,8 +513,8 @@ yy13:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'e':       goto yy94;
-       case 'i':       goto yy95;
+       case 'e':       goto yy99;
+       case 'i':       goto yy100;
        default:        goto yy3;
        }
 yy14:
@@ -588,7 +589,7 @@ yy15:
        case 'x':
        case 'y':
        case 'z':       goto yy14;
-       case '[':       goto yy96;
+       case '[':       goto yy101;
        case 0xC2:
        case 0xC3:
        case 0xC4:
@@ -618,8 +619,8 @@ yy15:
        case 0xDC:
        case 0xDD:
        case 0xDE:
-       case 0xDF:      goto yy97;
-       case 0xE0:      goto yy98;
+       case 0xDF:      goto yy102;
+       case 0xE0:      goto yy103;
        case 0xE1:
        case 0xE2:
        case 0xE3:
@@ -634,26 +635,26 @@ yy15:
        case 0xEC:
        case 0xED:
        case 0xEE:
-       case 0xEF:      goto yy99;
-       case 0xF0:      goto yy100;
+       case 0xEF:      goto yy104;
+       case 0xF0:      goto yy105;
        case 0xF1:
        case 0xF2:
-       case 0xF3:      goto yy101;
-       case 0xF4:      goto yy102;
+       case 0xF3:      goto yy106;
+       case 0xF4:      goto yy107;
        default:        goto yy16;
        }
 yy16:
        YYDEBUG(16, YYPEEK ());
-#line 372 "../ada.re2c"
-       {*id =  105; continue;}
-#line 650 "../ada_re2c.c"
+#line 377 "../ada.re2c"
+       {*id =  107; continue;}
+#line 651 "../ada_re2c.c"
 yy17:
        YYDEBUG(17, YYPEEK ());
        YYSKIP ();
        YYDEBUG(18, YYPEEK ());
-#line 345 "../ada.re2c"
-       {*id =  78; continue;}
-#line 657 "../ada_re2c.c"
+#line 350 "../ada.re2c"
+       {*id =  80; continue;}
+#line 658 "../ada_re2c.c"
 yy19:
        YYDEBUG(19, YYPEEK ());
        yyaccept = 2;
@@ -754,11 +755,11 @@ yy19:
        case '|':
        case '}':
        case '~':
-       case 0x7F:      goto yy103;
+       case 0x7F:      goto yy108;
        case '(':
                YYBACKUPCTX ();
-               goto yy104;
-       case '[':       goto yy105;
+               goto yy109;
+       case '[':       goto yy110;
        case 0xC2:
        case 0xC3:
        case 0xC4:
@@ -788,8 +789,8 @@ yy19:
        case 0xDC:
        case 0xDD:
        case 0xDE:
-       case 0xDF:      goto yy106;
-       case 0xE0:      goto yy107;
+       case 0xDF:      goto yy111;
+       case 0xE0:      goto yy112;
        case 0xE1:
        case 0xE2:
        case 0xE3:
@@ -804,99 +805,99 @@ yy19:
        case 0xEC:
        case 0xED:
        case 0xEE:
-       case 0xEF:      goto yy108;
-       case 0xF0:      goto yy109;
+       case 0xEF:      goto yy113;
+       case 0xF0:      goto yy114;
        case 0xF1:
        case 0xF2:
-       case 0xF3:      goto yy110;
-       case 0xF4:      goto yy111;
+       case 0xF3:      goto yy115;
+       case 0xF4:      goto yy116;
        default:        goto yy20;
        }
 yy20:
        YYDEBUG(20, YYPEEK ());
-#line 369 "../ada.re2c"
-       {*id =  102; continue;}
-#line 820 "../ada_re2c.c"
+#line 374 "../ada.re2c"
+       {*id =  104; continue;}
+#line 821 "../ada_re2c.c"
 yy21:
        YYDEBUG(21, YYPEEK ());
        YYSKIP ();
        YYDEBUG(22, YYPEEK ());
-#line 343 "../ada.re2c"
+#line 346 "../ada.re2c"
        {*id =  76; continue;}
-#line 827 "../ada_re2c.c"
+#line 828 "../ada_re2c.c"
 yy23:
        YYDEBUG(23, YYPEEK ());
        YYSKIP ();
        YYDEBUG(24, YYPEEK ());
-#line 344 "../ada.re2c"
-       {*id =  77; continue;}
-#line 834 "../ada_re2c.c"
+#line 348 "../ada.re2c"
+       {*id =  78; continue;}
+#line 835 "../ada_re2c.c"
 yy25:
        YYDEBUG(25, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '*':       goto yy112;
+       case '*':       goto yy117;
        default:        goto yy26;
        }
 yy26:
        YYDEBUG(26, YYPEEK ());
-#line 367 "../ada.re2c"
-       {*id =  100; continue;}
-#line 847 "../ada_re2c.c"
+#line 372 "../ada.re2c"
+       {*id =  102; continue;}
+#line 848 "../ada_re2c.c"
 yy27:
        YYDEBUG(27, YYPEEK ());
        YYSKIP ();
        YYDEBUG(28, YYPEEK ());
-#line 363 "../ada.re2c"
-       {*id =  96; continue;}
-#line 854 "../ada_re2c.c"
+#line 368 "../ada.re2c"
+       {*id =  98; continue;}
+#line 855 "../ada_re2c.c"
 yy29:
        YYDEBUG(29, YYPEEK ());
        YYSKIP ();
        YYDEBUG(30, YYPEEK ());
-#line 351 "../ada.re2c"
-       {*id =  84; continue;}
-#line 861 "../ada_re2c.c"
+#line 356 "../ada.re2c"
+       {*id =  86; continue;}
+#line 862 "../ada_re2c.c"
 yy31:
        YYDEBUG(31, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '-':       goto yy114;
+       case '-':       goto yy119;
        default:        goto yy32;
        }
 yy32:
        YYDEBUG(32, YYPEEK ());
-#line 362 "../ada.re2c"
-       {*id =  95; continue;}
-#line 874 "../ada_re2c.c"
+#line 367 "../ada.re2c"
+       {*id =  97; continue;}
+#line 875 "../ada_re2c.c"
 yy33:
        YYDEBUG(33, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '.':       goto yy117;
+       case '.':       goto yy121;
        default:        goto yy34;
        }
 yy34:
        YYDEBUG(34, YYPEEK ());
-#line 352 "../ada.re2c"
-       {*id =  85; continue;}
-#line 887 "../ada_re2c.c"
+#line 357 "../ada.re2c"
+       {*id =  87; continue;}
+#line 888 "../ada_re2c.c"
 yy35:
        YYDEBUG(35, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '=':       goto yy119;
+       case '=':       goto yy123;
        default:        goto yy36;
        }
 yy36:
        YYDEBUG(36, YYPEEK ());
-#line 365 "../ada.re2c"
-       {*id =  98; continue;}
-#line 900 "../ada_re2c.c"
+#line 370 "../ada.re2c"
+       {*id =  100; continue;}
+#line 901 "../ada_re2c.c"
 yy37:
        YYDEBUG(37, YYPEEK ());
        yyaccept = 3;
@@ -905,12 +906,12 @@ yy37:
        yych = YYPEEK ();
        YYDEBUG(38, YYPEEK ());
        switch (yych) {
-       case '#':       goto yy121;
+       case '#':       goto yy125;
        case '-':
        case '.':
        case 'E':
        case '_':
-       case 'e':       goto yy122;
+       case 'e':       goto yy126;
        case '0':
        case '1':
        case '2':
@@ -925,78 +926,78 @@ yy37:
        }
 yy39:
        YYDEBUG(39, YYPEEK ());
-#line 371 "../ada.re2c"
-       {*id =  104; continue;}
-#line 931 "../ada_re2c.c"
+#line 376 "../ada.re2c"
+       {*id =  106; continue;}
+#line 932 "../ada_re2c.c"
 yy40:
        YYDEBUG(40, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '=':       goto yy124;
+       case '=':       goto yy128;
        default:        goto yy41;
        }
 yy41:
        YYDEBUG(41, YYPEEK ());
-#line 349 "../ada.re2c"
-       {*id =  82; continue;}
-#line 944 "../ada_re2c.c"
+#line 354 "../ada.re2c"
+       {*id =  84; continue;}
+#line 945 "../ada_re2c.c"
 yy42:
        YYDEBUG(42, YYPEEK ());
        YYSKIP ();
        YYDEBUG(43, YYPEEK ());
-#line 364 "../ada.re2c"
-       {*id =  97; continue;}
-#line 951 "../ada_re2c.c"
+#line 369 "../ada.re2c"
+       {*id =  99; continue;}
+#line 952 "../ada_re2c.c"
 yy44:
        YYDEBUG(44, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '<':       goto yy126;
-       case '=':       goto yy128;
-       case '>':       goto yy130;
+       case '<':       goto yy130;
+       case '=':       goto yy132;
+       case '>':       goto yy134;
        default:        goto yy45;
        }
 yy45:
        YYDEBUG(45, YYPEEK ());
-#line 359 "../ada.re2c"
-       {*id =  92; continue;}
-#line 966 "../ada_re2c.c"
+#line 364 "../ada.re2c"
+       {*id =  94; continue;}
+#line 967 "../ada_re2c.c"
 yy46:
        YYDEBUG(46, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '>':       goto yy132;
+       case '>':       goto yy136;
        default:        goto yy47;
        }
 yy47:
        YYDEBUG(47, YYPEEK ());
-#line 354 "../ada.re2c"
-       {*id =  87; continue;}
-#line 979 "../ada_re2c.c"
+#line 359 "../ada.re2c"
+       {*id =  89; continue;}
+#line 980 "../ada_re2c.c"
 yy48:
        YYDEBUG(48, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '=':       goto yy134;
-       case '>':       goto yy136;
+       case '=':       goto yy138;
+       case '>':       goto yy140;
        default:        goto yy49;
        }
 yy49:
        YYDEBUG(49, YYPEEK ());
-#line 356 "../ada.re2c"
-       {*id =  89; continue;}
-#line 993 "../ada_re2c.c"
+#line 361 "../ada.re2c"
+       {*id =  91; continue;}
+#line 994 "../ada_re2c.c"
 yy50:
        YYDEBUG(50, YYPEEK ());
        YYSKIP ();
        YYDEBUG(51, YYPEEK ());
-#line 346 "../ada.re2c"
-       {*id =  79; continue;}
-#line 1000 "../ada_re2c.c"
+#line 351 "../ada.re2c"
+       {*id =  81; continue;}
+#line 1001 "../ada_re2c.c"
 yy52:
        YYDEBUG(52, YYPEEK ());
        yyaccept = 1;
@@ -1005,17 +1006,17 @@ yy52:
        yych = YYPEEK ();
        switch (yych) {
        case 'B':
-       case 'b':       goto yy138;
+       case 'b':       goto yy142;
        case 'C':
-       case 'c':       goto yy139;
+       case 'c':       goto yy143;
        case 'L':
-       case 'l':       goto yy140;
+       case 'l':       goto yy144;
        case 'N':
-       case 'n':       goto yy141;
+       case 'n':       goto yy145;
        case 'R':
-       case 'r':       goto yy142;
+       case 'r':       goto yy146;
        case 'T':
-       case 't':       goto yy143;
+       case 't':       goto yy147;
        default:        goto yy15;
        }
 yy53:
@@ -1026,9 +1027,9 @@ yy53:
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy145;
+       case 'e':       goto yy149;
        case 'O':
-       case 'o':       goto yy146;
+       case 'o':       goto yy150;
        default:        goto yy15;
        }
 yy54:
@@ -1039,9 +1040,9 @@ yy54:
        yych = YYPEEK ();
        switch (yych) {
        case 'A':
-       case 'a':       goto yy147;
+       case 'a':       goto yy151;
        case 'O':
-       case 'o':       goto yy148;
+       case 'o':       goto yy152;
        default:        goto yy15;
        }
 yy55:
@@ -1052,11 +1053,11 @@ yy55:
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy149;
+       case 'e':       goto yy153;
        case 'I':
-       case 'i':       goto yy150;
+       case 'i':       goto yy154;
        case 'O':
-       case 'o':       goto yy151;
+       case 'o':       goto yy155;
        default:        goto yy15;
        }
 yy56:
@@ -1067,11 +1068,11 @@ yy56:
        yych = YYPEEK ();
        switch (yych) {
        case 'L':
-       case 'l':       goto yy153;
+       case 'l':       goto yy157;
        case 'N':
-       case 'n':       goto yy154;
+       case 'n':       goto yy158;
        case 'X':
-       case 'x':       goto yy155;
+       case 'x':       goto yy159;
        default:        goto yy15;
        }
 yy57:
@@ -1082,9 +1083,9 @@ yy57:
        yych = YYPEEK ();
        switch (yych) {
        case 'O':
-       case 'o':       goto yy156;
+       case 'o':       goto yy160;
        case 'U':
-       case 'u':       goto yy157;
+       case 'u':       goto yy161;
        default:        goto yy15;
        }
 yy58:
@@ -1095,9 +1096,9 @@ yy58:
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy158;
+       case 'e':       goto yy162;
        case 'O':
-       case 'o':       goto yy159;
+       case 'o':       goto yy163;
        default:        goto yy15;
        }
 yy59:
@@ -1108,11 +1109,11 @@ yy59:
        yych = YYPEEK ();
        switch (yych) {
        case 'F':
-       case 'f':       goto yy160;
+       case 'f':       goto yy164;
        case 'N':
-       case 'n':       goto yy162;
+       case 'n':       goto yy166;
        case 'S':
-       case 's':       goto yy164;
+       case 's':       goto yy168;
        default:        goto yy15;
        }
 yy60:
@@ -1123,9 +1124,9 @@ yy60:
        yych = YYPEEK ();
        switch (yych) {
        case 'I':
-       case 'i':       goto yy166;
+       case 'i':       goto yy170;
        case 'O':
-       case 'o':       goto yy167;
+       case 'o':       goto yy171;
        default:        goto yy15;
        }
 yy61:
@@ -1136,7 +1137,7 @@ yy61:
        yych = YYPEEK ();
        switch (yych) {
        case 'O':
-       case 'o':       goto yy168;
+       case 'o':       goto yy172;
        default:        goto yy15;
        }
 yy62:
@@ -1147,11 +1148,11 @@ yy62:
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy169;
+       case 'e':       goto yy173;
        case 'O':
-       case 'o':       goto yy170;
+       case 'o':       goto yy174;
        case 'U':
-       case 'u':       goto yy171;
+       case 'u':       goto yy175;
        default:        goto yy15;
        }
 yy63:
@@ -1162,15 +1163,15 @@ yy63:
        yych = YYPEEK ();
        switch (yych) {
        case 'F':
-       case 'f':       goto yy172;
+       case 'f':       goto yy176;
        case 'R':
-       case 'r':       goto yy174;
+       case 'r':       goto yy178;
        case 'T':
-       case 't':       goto yy176;
+       case 't':       goto yy180;
        case 'U':
-       case 'u':       goto yy177;
+       case 'u':       goto yy181;
        case 'V':
-       case 'v':       goto yy178;
+       case 'v':       goto yy182;
        default:        goto yy15;
        }
 yy64:
@@ -1181,9 +1182,9 @@ yy64:
        yych = YYPEEK ();
        switch (yych) {
        case 'A':
-       case 'a':       goto yy179;
+       case 'a':       goto yy183;
        case 'R':
-       case 'r':       goto yy180;
+       case 'r':       goto yy184;
        default:        goto yy15;
        }
 yy65:
@@ -1194,9 +1195,9 @@ yy65:
        yych = YYPEEK ();
        switch (yych) {
        case 'A':
-       case 'a':       goto yy181;
+       case 'a':       goto yy185;
        case 'E':
-       case 'e':       goto yy182;
+       case 'e':       goto yy186;
        default:        goto yy15;
        }
 yy66:
@@ -1207,13 +1208,13 @@ yy66:
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy183;
+       case 'e':       goto yy187;
        case 'O':
-       case 'o':       goto yy184;
+       case 'o':       goto yy188;
        case 'U':
-       case 'u':       goto yy185;
+       case 'u':       goto yy189;
        case 'Y':
-       case 'y':       goto yy186;
+       case 'y':       goto yy190;
        default:        goto yy15;
        }
 yy67:
@@ -1224,13 +1225,13 @@ yy67:
        yych = YYPEEK ();
        switch (yych) {
        case 'A':
-       case 'a':       goto yy187;
+       case 'a':       goto yy191;
        case 'E':
-       case 'e':       goto yy188;
+       case 'e':       goto yy192;
        case 'H':
-       case 'h':       goto yy189;
+       case 'h':       goto yy193;
        case 'Y':
-       case 'y':       goto yy190;
+       case 'y':       goto yy194;
        default:        goto yy15;
        }
 yy68:
@@ -1241,9 +1242,9 @@ yy68:
        yych = YYPEEK ();
        switch (yych) {
        case 'N':
-       case 'n':       goto yy191;
+       case 'n':       goto yy195;
        case 'S':
-       case 's':       goto yy192;
+       case 's':       goto yy196;
        default:        goto yy15;
        }
 yy69:
@@ -1254,9 +1255,9 @@ yy69:
        yych = YYPEEK ();
        switch (yych) {
        case 'H':
-       case 'h':       goto yy193;
+       case 'h':       goto yy197;
        case 'I':
-       case 'i':       goto yy194;
+       case 'i':       goto yy198;
        default:        goto yy15;
        }
 yy70:
@@ -1267,37 +1268,48 @@ yy70:
        yych = YYPEEK ();
        switch (yych) {
        case 'O':
-       case 'o':       goto yy195;
+       case 'o':       goto yy199;
        default:        goto yy15;
        }
 yy71:
        YYDEBUG(71, YYPEEK ());
-       yyaccept = 0;
+       yyaccept = 4;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '"':       goto yy196;
-       default:        goto yy3;
+       case '"':       goto yy200;
+       default:        goto yy72;
        }
 yy72:
        YYDEBUG(72, YYPEEK ());
-       yyaccept = 0;
+#line 347 "../ada.re2c"
+       {*id =  77; continue;}
+#line 1289 "../ada_re2c.c"
+yy73:
+       YYDEBUG(73, YYPEEK ());
+       YYSKIP ();
+       YYDEBUG(74, YYPEEK ());
+#line 349 "../ada.re2c"
+       {*id =  79; continue;}
+#line 1296 "../ada_re2c.c"
+yy75:
+       YYDEBUG(75, YYPEEK ());
+       yyaccept = 5;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
+       YYDEBUG(76, YYPEEK ());
        switch (yych) {
        case 0x00:
        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':
@@ -1412,9 +1424,8 @@ yy72:
        case 'z':
        case '{':
        case '|':
-       case '}':
        case '~':
-       case 0x7F:
+       case 0x7F:      goto yy75;
        case 0xC2:
        case 0xC3:
        case 0xC4:
@@ -1444,8 +1455,8 @@ yy72:
        case 0xDC:
        case 0xDD:
        case 0xDE:
-       case 0xDF:
-       case 0xE0:
+       case 0xDF:      goto yy201;
+       case 0xE0:      goto yy202;
        case 0xE1:
        case 0xE2:
        case 0xE3:
@@ -1460,23 +1471,28 @@ yy72:
        case 0xEC:
        case 0xED:
        case 0xEE:
-       case 0xEF:
-       case 0xF0:
+       case 0xEF:      goto yy203;
+       case 0xF0:      goto yy204;
        case 0xF1:
        case 0xF2:
-       case 0xF3:
-       case 0xF4:      goto yy198;
-       default:        goto yy3;
+       case 0xF3:      goto yy205;
+       case 0xF4:      goto yy206;
+       default:        goto yy77;
        }
-yy73:
-       YYDEBUG(73, YYPEEK ());
+yy77:
+       YYDEBUG(77, YYPEEK ());
+#line 272 "../ada.re2c"
+       {*id =  2; continue;}
+#line 1487 "../ada_re2c.c"
+yy78:
+       YYDEBUG(78, YYPEEK ());
        YYSKIP ();
-       YYDEBUG(74, YYPEEK ());
-#line 347 "../ada.re2c"
-       {*id =  80; continue;}
-#line 1478 "../ada_re2c.c"
-yy75:
-       YYDEBUG(75, YYPEEK ());
+       YYDEBUG(79, YYPEEK ());
+#line 352 "../ada.re2c"
+       {*id =  82; continue;}
+#line 1494 "../ada_re2c.c"
+yy80:
+       YYDEBUG(80, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -1546,8 +1562,8 @@ yy75:
        case 0xBF:      goto yy14;
        default:        goto yy3;
        }
-yy76:
-       YYDEBUG(76, YYPEEK ());
+yy81:
+       YYDEBUG(81, YYPEEK ());
        yyaccept = 0;
        YYSKIP ();
        YYBACKUP ();
@@ -1584,11 +1600,11 @@ yy76:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy97;
+       case 0xBF:      goto yy102;
        default:        goto yy3;
        }
-yy77:
-       YYDEBUG(77, YYPEEK ());
+yy82:
+       YYDEBUG(82, YYPEEK ());
        yyaccept = 0;
        YYSKIP ();
        YYBACKUP ();
@@ -1657,11 +1673,11 @@ yy77:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy97;
+       case 0xBF:      goto yy102;
        default:        goto yy3;
        }
-yy78:
-       YYDEBUG(78, YYPEEK ());
+yy83:
+       YYDEBUG(83, YYPEEK ());
        yyaccept = 0;
        YYSKIP ();
        YYBACKUP ();
@@ -1714,11 +1730,11 @@ yy78:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy99;
+       case 0xBF:      goto yy104;
        default:        goto yy3;
        }
-yy79:
-       YYDEBUG(79, YYPEEK ());
+yy84:
+       YYDEBUG(84, YYPEEK ());
        yyaccept = 0;
        YYSKIP ();
        YYBACKUP ();
@@ -1787,11 +1803,11 @@ yy79:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy99;
+       case 0xBF:      goto yy104;
        default:        goto yy3;
        }
-yy80:
-       YYDEBUG(80, YYPEEK ());
+yy85:
+       YYDEBUG(85, YYPEEK ());
        yyaccept = 0;
        YYSKIP ();
        YYBACKUP ();
@@ -1812,15 +1828,15 @@ yy80:
        case 0x8C:
        case 0x8D:
        case 0x8E:
-       case 0x8F:      goto yy99;
+       case 0x8F:      goto yy104;
        default:        goto yy3;
        }
-yy81:
-       YYDEBUG(81, YYPEEK ());
+yy86:
+       YYDEBUG(86, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
-yy82:
-       YYDEBUG(82, YYPEEK ());
+yy87:
+       YYDEBUG(87, YYPEEK ());
        switch (yych) {
        case ' ':
        case '!':
@@ -1915,9 +1931,9 @@ yy82:
        case '|':
        case '}':
        case '~':
-       case 0x7F:      goto yy81;
-       case '"':       goto yy84;
-       case '[':       goto yy86;
+       case 0x7F:      goto yy86;
+       case '"':       goto yy89;
+       case '[':       goto yy91;
        case 0xC2:
        case 0xC3:
        case 0xC4:
@@ -1947,8 +1963,8 @@ yy82:
        case 0xDC:
        case 0xDD:
        case 0xDE:
-       case 0xDF:      goto yy88;
-       case 0xE0:      goto yy89;
+       case 0xDF:      goto yy93;
+       case 0xE0:      goto yy94;
        case 0xE1:
        case 0xE2:
        case 0xE3:
@@ -1963,119 +1979,120 @@ yy82:
        case 0xEC:
        case 0xED:
        case 0xEE:
-       case 0xEF:      goto yy90;
-       case 0xF0:      goto yy91;
+       case 0xEF:      goto yy95;
+       case 0xF0:      goto yy96;
        case 0xF1:
        case 0xF2:
-       case 0xF3:      goto yy92;
-       case 0xF4:      goto yy93;
-       default:        goto yy83;
+       case 0xF3:      goto yy97;
+       case 0xF4:      goto yy98;
+       default:        goto yy88;
        }
-yy83:
-       YYDEBUG(83, YYPEEK ());
+yy88:
+       YYDEBUG(88, YYPEEK ());
        YYRESTORE ();
        switch (yyaccept) {
        case 0:         goto yy3;
        case 1:         goto yy16;
        case 2:         goto yy20;
        case 3:         goto yy39;
-       case 4:         goto yy85;
-       case 5:         goto yy116;
-       case 6:         goto yy144;
-       case 7:         goto yy152;
-       case 8:         goto yy161;
-       case 9:         goto yy163;
-       case 10:        goto yy165;
-       case 11:        goto yy173;
-       case 12:        goto yy175;
-       case 13:        goto yy210;
-       case 14:        goto yy225;
-       case 15:        goto yy229;
-       case 16:        goto yy231;
-       case 17:        goto yy242;
-       case 18:        goto yy247;
-       case 19:        goto yy255;
-       case 20:        goto yy257;
-       case 21:        goto yy259;
-       case 22:        goto yy263;
-       case 23:        goto yy273;
-       case 24:        goto yy290;
-       case 25:        goto yy295;
-       case 26:        goto yy319;
-       case 27:        goto yy321;
-       case 28:        goto yy328;
-       case 29:        goto yy333;
-       case 30:        goto yy337;
-       case 31:        goto yy341;
-       case 32:        goto yy343;
-       case 33:        goto yy361;
-       case 34:        goto yy366;
-       case 35:        goto yy369;
-       case 36:        goto yy371;
-       case 37:        goto yy374;
-       case 38:        goto yy377;
-       case 39:        goto yy385;
-       case 40:        goto yy391;
-       case 41:        goto yy393;
-       case 42:        goto yy397;
-       case 43:        goto yy399;
-       case 44:        goto yy402;
-       case 45:        goto yy404;
-       case 46:        goto yy418;
-       case 47:        goto yy420;
-       case 48:        goto yy433;
-       case 49:        goto yy435;
-       case 50:        goto yy440;
-       case 51:        goto yy442;
-       case 52:        goto yy447;
-       case 53:        goto yy454;
-       case 54:        goto yy458;
-       case 55:        goto yy463;
-       case 56:        goto yy467;
-       case 57:        goto yy470;
-       case 58:        goto yy475;
-       case 59:        goto yy480;
-       case 60:        goto yy483;
-       case 61:        goto yy487;
-       case 62:        goto yy490;
-       case 63:        goto yy493;
-       case 64:        goto yy495;
-       case 65:        goto yy499;
-       case 66:        goto yy501;
-       case 67:        goto yy503;
-       case 68:        goto yy506;
-       case 69:        goto yy510;
-       case 70:        goto yy512;
-       case 71:        goto yy515;
-       case 72:        goto yy521;
-       case 73:        goto yy525;
-       case 74:        goto yy527;
-       case 75:        goto yy530;
-       case 76:        goto yy532;
-       case 77:        goto yy535;
-       case 78:        goto yy537;
-       default:        goto yy541;
+       case 4:         goto yy72;
+       case 5:         goto yy77;
+       case 6:         goto yy90;
+       case 7:         goto yy148;
+       case 8:         goto yy156;
+       case 9:         goto yy165;
+       case 10:        goto yy167;
+       case 11:        goto yy169;
+       case 12:        goto yy177;
+       case 13:        goto yy179;
+       case 14:        goto yy211;
+       case 15:        goto yy226;
+       case 16:        goto yy230;
+       case 17:        goto yy232;
+       case 18:        goto yy243;
+       case 19:        goto yy248;
+       case 20:        goto yy256;
+       case 21:        goto yy258;
+       case 22:        goto yy260;
+       case 23:        goto yy264;
+       case 24:        goto yy274;
+       case 25:        goto yy291;
+       case 26:        goto yy296;
+       case 27:        goto yy320;
+       case 28:        goto yy322;
+       case 29:        goto yy329;
+       case 30:        goto yy334;
+       case 31:        goto yy338;
+       case 32:        goto yy342;
+       case 33:        goto yy344;
+       case 34:        goto yy362;
+       case 35:        goto yy367;
+       case 36:        goto yy370;
+       case 37:        goto yy372;
+       case 38:        goto yy375;
+       case 39:        goto yy378;
+       case 40:        goto yy386;
+       case 41:        goto yy392;
+       case 42:        goto yy394;
+       case 43:        goto yy398;
+       case 44:        goto yy400;
+       case 45:        goto yy403;
+       case 46:        goto yy405;
+       case 47:        goto yy419;
+       case 48:        goto yy421;
+       case 49:        goto yy434;
+       case 50:        goto yy436;
+       case 51:        goto yy441;
+       case 52:        goto yy443;
+       case 53:        goto yy448;
+       case 54:        goto yy455;
+       case 55:        goto yy459;
+       case 56:        goto yy464;
+       case 57:        goto yy468;
+       case 58:        goto yy471;
+       case 59:        goto yy476;
+       case 60:        goto yy481;
+       case 61:        goto yy484;
+       case 62:        goto yy488;
+       case 63:        goto yy491;
+       case 64:        goto yy494;
+       case 65:        goto yy496;
+       case 66:        goto yy500;
+       case 67:        goto yy502;
+       case 68:        goto yy504;
+       case 69:        goto yy507;
+       case 70:        goto yy511;
+       case 71:        goto yy513;
+       case 72:        goto yy516;
+       case 73:        goto yy522;
+       case 74:        goto yy526;
+       case 75:        goto yy528;
+       case 76:        goto yy531;
+       case 77:        goto yy533;
+       case 78:        goto yy536;
+       case 79:        goto yy538;
+       default:        goto yy542;
        }
-yy84:
-       YYDEBUG(84, YYPEEK ());
-       yyaccept = 4;
+yy89:
+       YYDEBUG(89, YYPEEK ());
+       yyaccept = 6;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '"':       goto yy81;
-       default:        goto yy85;
+       case '"':       goto yy86;
+       default:        goto yy90;
        }
-yy85:
-       YYDEBUG(85, YYPEEK ());
-#line 373 "../ada.re2c"
-       {*id =  106; continue;}
-#line 2074 "../ada_re2c.c"
-yy86:
-       YYDEBUG(86, YYPEEK ());
+yy90:
+       YYDEBUG(90, YYPEEK ());
+#line 378 "../ada.re2c"
+       {*id =  108; continue;}
+#line 2091 "../ada_re2c.c"
+yy91:
+       YYDEBUG(91, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
-       YYDEBUG(87, YYPEEK ());
+       YYDEBUG(92, YYPEEK ());
        switch (yych) {
        case ' ':
        case '!':
@@ -2170,9 +2187,9 @@ yy86:
        case '|':
        case '}':
        case '~':
-       case 0x7F:      goto yy81;
-       case '"':       goto yy206;
-       case '[':       goto yy86;
+       case 0x7F:      goto yy86;
+       case '"':       goto yy207;
+       case '[':       goto yy91;
        case 0xC2:
        case 0xC3:
        case 0xC4:
@@ -2202,8 +2219,8 @@ yy86:
        case 0xDC:
        case 0xDD:
        case 0xDE:
-       case 0xDF:      goto yy88;
-       case 0xE0:      goto yy89;
+       case 0xDF:      goto yy93;
+       case 0xE0:      goto yy94;
        case 0xE1:
        case 0xE2:
        case 0xE3:
@@ -2218,16 +2235,16 @@ yy86:
        case 0xEC:
        case 0xED:
        case 0xEE:
-       case 0xEF:      goto yy90;
-       case 0xF0:      goto yy91;
+       case 0xEF:      goto yy95;
+       case 0xF0:      goto yy96;
        case 0xF1:
        case 0xF2:
-       case 0xF3:      goto yy92;
-       case 0xF4:      goto yy93;
-       default:        goto yy83;
+       case 0xF3:      goto yy97;
+       case 0xF4:      goto yy98;
+       default:        goto yy88;
        }
-yy88:
-       YYDEBUG(88, YYPEEK ());
+yy93:
+       YYDEBUG(93, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -2294,11 +2311,11 @@ yy88:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy81;
-       default:        goto yy83;
+       case 0xBF:      goto yy86;
+       default:        goto yy88;
        }
-yy89:
-       YYDEBUG(89, YYPEEK ());
+yy94:
+       YYDEBUG(94, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -2333,11 +2350,11 @@ yy89:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy88;
-       default:        goto yy83;
+       case 0xBF:      goto yy93;
+       default:        goto yy88;
        }
-yy90:
-       YYDEBUG(90, YYPEEK ());
+yy95:
+       YYDEBUG(95, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -2404,11 +2421,11 @@ yy90:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy88;
-       default:        goto yy83;
+       case 0xBF:      goto yy93;
+       default:        goto yy88;
        }
-yy91:
-       YYDEBUG(91, YYPEEK ());
+yy96:
+       YYDEBUG(96, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -2459,11 +2476,11 @@ yy91:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy90;
-       default:        goto yy83;
+       case 0xBF:      goto yy95;
+       default:        goto yy88;
        }
-yy92:
-       YYDEBUG(92, YYPEEK ());
+yy97:
+       YYDEBUG(97, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -2530,11 +2547,11 @@ yy92:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy90;
-       default:        goto yy83;
+       case 0xBF:      goto yy95;
+       default:        goto yy88;
        }
-yy93:
-       YYDEBUG(93, YYPEEK ());
+yy98:
+       YYDEBUG(98, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -2553,36 +2570,36 @@ yy93:
        case 0x8C:
        case 0x8D:
        case 0x8E:
-       case 0x8F:      goto yy90;
-       default:        goto yy83;
+       case 0x8F:      goto yy95;
+       default:        goto yy88;
        }
-yy94:
-       YYDEBUG(94, YYPEEK ());
+yy99:
+       YYDEBUG(99, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'l':       goto yy207;
-       case 'n':       goto yy208;
-       default:        goto yy83;
+       case 'l':       goto yy208;
+       case 'n':       goto yy209;
+       default:        goto yy88;
        }
-yy95:
-       YYDEBUG(95, YYPEEK ());
+yy100:
+       YYDEBUG(100, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'f':       goto yy114;
-       default:        goto yy83;
+       case 'f':       goto yy119;
+       default:        goto yy88;
        }
-yy96:
-       YYDEBUG(96, YYPEEK ());
+yy101:
+       YYDEBUG(101, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '"':       goto yy196;
-       default:        goto yy83;
+       case '"':       goto yy200;
+       default:        goto yy88;
        }
-yy97:
-       YYDEBUG(97, YYPEEK ());
+yy102:
+       YYDEBUG(102, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -2650,10 +2667,10 @@ yy97:
        case 0xBD:
        case 0xBE:
        case 0xBF:      goto yy14;
-       default:        goto yy83;
+       default:        goto yy88;
        }
-yy98:
-       YYDEBUG(98, YYPEEK ());
+yy103:
+       YYDEBUG(103, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -2688,11 +2705,11 @@ yy98:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy97;
-       default:        goto yy83;
+       case 0xBF:      goto yy102;
+       default:        goto yy88;
        }
-yy99:
-       YYDEBUG(99, YYPEEK ());
+yy104:
+       YYDEBUG(104, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -2759,11 +2776,11 @@ yy99:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy97;
-       default:        goto yy83;
+       case 0xBF:      goto yy102;
+       default:        goto yy88;
        }
-yy100:
-       YYDEBUG(100, YYPEEK ());
+yy105:
+       YYDEBUG(105, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -2814,11 +2831,11 @@ yy100:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy99;
-       default:        goto yy83;
+       case 0xBF:      goto yy104;
+       default:        goto yy88;
        }
-yy101:
-       YYDEBUG(101, YYPEEK ());
+yy106:
+       YYDEBUG(106, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -2885,11 +2902,11 @@ yy101:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy99;
-       default:        goto yy83;
+       case 0xBF:      goto yy104;
+       default:        goto yy88;
        }
-yy102:
-       YYDEBUG(102, YYPEEK ());
+yy107:
+       YYDEBUG(107, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -2908,36 +2925,36 @@ yy102:
        case 0x8C:
        case 0x8D:
        case 0x8E:
-       case 0x8F:      goto yy99;
-       default:        goto yy83;
+       case 0x8F:      goto yy104;
+       default:        goto yy88;
        }
-yy103:
-       YYDEBUG(103, YYPEEK ());
+yy108:
+       YYDEBUG(108, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '\'':      goto yy209;
-       default:        goto yy83;
+       case '\'':      goto yy210;
+       default:        goto yy88;
        }
-yy104:
-       YYDEBUG(104, YYPEEK ());
+yy109:
+       YYDEBUG(109, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '\'':      goto yy211;
-       default:        goto yy83;
+       case '\'':      goto yy212;
+       default:        goto yy88;
        }
-yy105:
-       YYDEBUG(105, YYPEEK ());
+yy110:
+       YYDEBUG(110, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '"':       goto yy212;
-       case '\'':      goto yy209;
-       default:        goto yy83;
+       case '"':       goto yy213;
+       case '\'':      goto yy210;
+       default:        goto yy88;
        }
-yy106:
-       YYDEBUG(106, YYPEEK ());
+yy111:
+       YYDEBUG(111, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -3004,11 +3021,11 @@ yy106:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy103;
-       default:        goto yy83;
+       case 0xBF:      goto yy108;
+       default:        goto yy88;
        }
-yy107:
-       YYDEBUG(107, YYPEEK ());
+yy112:
+       YYDEBUG(112, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -3043,11 +3060,11 @@ yy107:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy106;
-       default:        goto yy83;
+       case 0xBF:      goto yy111;
+       default:        goto yy88;
        }
-yy108:
-       YYDEBUG(108, YYPEEK ());
+yy113:
+       YYDEBUG(113, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -3114,11 +3131,11 @@ yy108:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy106;
-       default:        goto yy83;
+       case 0xBF:      goto yy111;
+       default:        goto yy88;
        }
-yy109:
-       YYDEBUG(109, YYPEEK ());
+yy114:
+       YYDEBUG(114, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -3169,11 +3186,11 @@ yy109:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy108;
-       default:        goto yy83;
+       case 0xBF:      goto yy113;
+       default:        goto yy88;
        }
-yy110:
-       YYDEBUG(110, YYPEEK ());
+yy115:
+       YYDEBUG(115, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -3240,11 +3257,11 @@ yy110:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy108;
-       default:        goto yy83;
+       case 0xBF:      goto yy113;
+       default:        goto yy88;
        }
-yy111:
-       YYDEBUG(111, YYPEEK ());
+yy116:
+       YYDEBUG(116, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -3263,23 +3280,23 @@ yy111:
        case 0x8C:
        case 0x8D:
        case 0x8E:
-       case 0x8F:      goto yy108;
-       default:        goto yy83;
+       case 0x8F:      goto yy113;
+       default:        goto yy88;
        }
-yy112:
-       YYDEBUG(112, YYPEEK ());
+yy117:
+       YYDEBUG(117, YYPEEK ());
        YYSKIP ();
-       YYDEBUG(113, YYPEEK ());
-#line 368 "../ada.re2c"
-       {*id =  101; continue;}
-#line 3276 "../ada_re2c.c"
-yy114:
-       YYDEBUG(114, YYPEEK ());
+       YYDEBUG(118, YYPEEK ());
+#line 373 "../ada.re2c"
+       {*id =  103; continue;}
+#line 3293 "../ada_re2c.c"
+yy119:
+       YYDEBUG(119, YYPEEK ());
        yyaccept = 5;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
-       YYDEBUG(115, YYPEEK ());
+       YYDEBUG(120, YYPEEK ());
        switch (yych) {
        case 0x00:
        case 0x01:
@@ -3406,7 +3423,7 @@ yy114:
        case '|':
        case '}':
        case '~':
-       case 0x7F:      goto yy114;
+       case 0x7F:      goto yy119;
        case 0xC2:
        case 0xC3:
        case 0xC4:
@@ -3436,8 +3453,8 @@ yy114:
        case 0xDC:
        case 0xDD:
        case 0xDE:
-       case 0xDF:      goto yy213;
-       case 0xE0:      goto yy214;
+       case 0xDF:      goto yy214;
+       case 0xE0:      goto yy215;
        case 0xE1:
        case 0xE2:
        case 0xE3:
@@ -3452,52 +3469,47 @@ yy114:
        case 0xEC:
        case 0xED:
        case 0xEE:
-       case 0xEF:      goto yy215;
-       case 0xF0:      goto yy216;
+       case 0xEF:      goto yy216;
+       case 0xF0:      goto yy217;
        case 0xF1:
        case 0xF2:
-       case 0xF3:      goto yy217;
-       case 0xF4:      goto yy218;
-       default:        goto yy116;
+       case 0xF3:      goto yy218;
+       case 0xF4:      goto yy219;
+       default:        goto yy77;
        }
-yy116:
-       YYDEBUG(116, YYPEEK ());
-#line 269 "../ada.re2c"
-       {*id =  2; continue;}
-#line 3468 "../ada_re2c.c"
-yy117:
-       YYDEBUG(117, YYPEEK ());
-       YYSKIP ();
-       YYDEBUG(118, YYPEEK ());
-#line 353 "../ada.re2c"
-       {*id =  86; continue;}
-#line 3475 "../ada_re2c.c"
-yy119:
-       YYDEBUG(119, YYPEEK ());
-       YYSKIP ();
-       YYDEBUG(120, YYPEEK ());
-#line 366 "../ada.re2c"
-       {*id =  99; continue;}
-#line 3482 "../ada_re2c.c"
 yy121:
        YYDEBUG(121, YYPEEK ());
        YYSKIP ();
+       YYDEBUG(122, YYPEEK ());
+#line 358 "../ada.re2c"
+       {*id =  88; continue;}
+#line 3487 "../ada_re2c.c"
+yy123:
+       YYDEBUG(123, YYPEEK ());
+       YYSKIP ();
+       YYDEBUG(124, YYPEEK ());
+#line 371 "../ada.re2c"
+       {*id =  101; continue;}
+#line 3494 "../ada_re2c.c"
+yy125:
+       YYDEBUG(125, YYPEEK ());
+       YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '#':       goto yy83;
-       default:        goto yy220;
+       case '#':       goto yy88;
+       default:        goto yy221;
        }
-yy122:
-       YYDEBUG(122, YYPEEK ());
+yy126:
+       YYDEBUG(126, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
-       YYDEBUG(123, YYPEEK ());
+       YYDEBUG(127, YYPEEK ());
        switch (yych) {
        case '-':
        case '.':
        case 'E':
        case '_':
-       case 'e':       goto yy122;
+       case 'e':       goto yy126;
        case '0':
        case '1':
        case '2':
@@ -3507,120 +3519,120 @@ yy122:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy221;
-       default:        goto yy83;
+       case '9':       goto yy222;
+       default:        goto yy88;
        }
-yy124:
-       YYDEBUG(124, YYPEEK ());
-       YYSKIP ();
-       YYDEBUG(125, YYPEEK ());
-#line 350 "../ada.re2c"
-       {*id =  83; continue;}
-#line 3520 "../ada_re2c.c"
-yy126:
-       YYDEBUG(126, YYPEEK ());
-       YYSKIP ();
-       YYDEBUG(127, YYPEEK ());
-#line 361 "../ada.re2c"
-       {*id =  94; continue;}
-#line 3527 "../ada_re2c.c"
 yy128:
        YYDEBUG(128, YYPEEK ());
        YYSKIP ();
        YYDEBUG(129, YYPEEK ());
-#line 360 "../ada.re2c"
-       {*id =  93; continue;}
-#line 3534 "../ada_re2c.c"
+#line 355 "../ada.re2c"
+       {*id =  85; continue;}
+#line 3532 "../ada_re2c.c"
 yy130:
        YYDEBUG(130, YYPEEK ());
        YYSKIP ();
        YYDEBUG(131, YYPEEK ());
-#line 348 "../ada.re2c"
-       {*id =  81; continue;}
-#line 3541 "../ada_re2c.c"
+#line 366 "../ada.re2c"
+       {*id =  96; continue;}
+#line 3539 "../ada_re2c.c"
 yy132:
        YYDEBUG(132, YYPEEK ());
        YYSKIP ();
        YYDEBUG(133, YYPEEK ());
-#line 355 "../ada.re2c"
-       {*id =  88; continue;}
-#line 3548 "../ada_re2c.c"
+#line 365 "../ada.re2c"
+       {*id =  95; continue;}
+#line 3546 "../ada_re2c.c"
 yy134:
        YYDEBUG(134, YYPEEK ());
        YYSKIP ();
        YYDEBUG(135, YYPEEK ());
-#line 357 "../ada.re2c"
-       {*id =  90; continue;}
-#line 3555 "../ada_re2c.c"
+#line 353 "../ada.re2c"
+       {*id =  83; continue;}
+#line 3553 "../ada_re2c.c"
 yy136:
        YYDEBUG(136, YYPEEK ());
        YYSKIP ();
        YYDEBUG(137, YYPEEK ());
-#line 358 "../ada.re2c"
-       {*id =  91; continue;}
-#line 3562 "../ada_re2c.c"
+#line 360 "../ada.re2c"
+       {*id =  90; continue;}
+#line 3560 "../ada_re2c.c"
 yy138:
        YYDEBUG(138, YYPEEK ());
+       YYSKIP ();
+       YYDEBUG(139, YYPEEK ());
+#line 362 "../ada.re2c"
+       {*id =  92; continue;}
+#line 3567 "../ada_re2c.c"
+yy140:
+       YYDEBUG(140, YYPEEK ());
+       YYSKIP ();
+       YYDEBUG(141, YYPEEK ());
+#line 363 "../ada.re2c"
+       {*id =  93; continue;}
+#line 3574 "../ada_re2c.c"
+yy142:
+       YYDEBUG(142, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'O':
-       case 'o':       goto yy223;
+       case 'o':       goto yy224;
        case 'S':
-       case 's':       goto yy224;
+       case 's':       goto yy225;
        default:        goto yy15;
        }
-yy139:
-       YYDEBUG(139, YYPEEK ());
+yy143:
+       YYDEBUG(143, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'C':
-       case 'c':       goto yy226;
+       case 'c':       goto yy227;
        default:        goto yy15;
        }
-yy140:
-       YYDEBUG(140, YYPEEK ());
+yy144:
+       YYDEBUG(144, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'I':
-       case 'i':       goto yy227;
+       case 'i':       goto yy228;
        case 'L':
-       case 'l':       goto yy228;
+       case 'l':       goto yy229;
        default:        goto yy15;
        }
-yy141:
-       YYDEBUG(141, YYPEEK ());
+yy145:
+       YYDEBUG(145, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'D':
-       case 'd':       goto yy230;
+       case 'd':       goto yy231;
        default:        goto yy15;
        }
-yy142:
-       YYDEBUG(142, YYPEEK ());
+yy146:
+       YYDEBUG(146, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'R':
-       case 'r':       goto yy232;
+       case 'r':       goto yy233;
        default:        goto yy15;
        }
-yy143:
-       YYDEBUG(143, YYPEEK ());
-       yyaccept = 6;
+yy147:
+       YYDEBUG(147, YYPEEK ());
+       yyaccept = 7;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -3740,84 +3752,84 @@ yy143:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy144;
+       default:        goto yy148;
        }
-yy144:
-       YYDEBUG(144, YYPEEK ());
-#line 279 "../ada.re2c"
+yy148:
+       YYDEBUG(148, YYPEEK ());
+#line 282 "../ada.re2c"
        {*id =  12; continue;}
-#line 3750 "../ada_re2c.c"
-yy145:
-       YYDEBUG(145, YYPEEK ());
+#line 3762 "../ada_re2c.c"
+yy149:
+       YYDEBUG(149, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'G':
-       case 'g':       goto yy233;
+       case 'g':       goto yy234;
        default:        goto yy15;
        }
-yy146:
-       YYDEBUG(146, YYPEEK ());
+yy150:
+       YYDEBUG(150, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'D':
-       case 'd':       goto yy234;
+       case 'd':       goto yy235;
        default:        goto yy15;
        }
-yy147:
-       YYDEBUG(147, YYPEEK ());
+yy151:
+       YYDEBUG(151, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'S':
-       case 's':       goto yy235;
+       case 's':       goto yy236;
        default:        goto yy15;
        }
-yy148:
-       YYDEBUG(148, YYPEEK ());
+yy152:
+       YYDEBUG(152, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'N':
-       case 'n':       goto yy236;
+       case 'n':       goto yy237;
        default:        goto yy15;
        }
-yy149:
-       YYDEBUG(149, YYPEEK ());
+yy153:
+       YYDEBUG(153, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'C':
-       case 'c':       goto yy237;
+       case 'c':       goto yy238;
        case 'L':
-       case 'l':       goto yy238;
+       case 'l':       goto yy239;
        default:        goto yy15;
        }
-yy150:
-       YYDEBUG(150, YYPEEK ());
+yy154:
+       YYDEBUG(154, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'G':
-       case 'g':       goto yy239;
+       case 'g':       goto yy240;
        default:        goto yy15;
        }
-yy151:
-       YYDEBUG(151, YYPEEK ());
-       yyaccept = 7;
+yy155:
+       YYDEBUG(155, YYPEEK ());
+       yyaccept = 8;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -3937,97 +3949,97 @@ yy151:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy152;
+       default:        goto yy156;
        }
-yy152:
-       YYDEBUG(152, YYPEEK ());
-#line 288 "../ada.re2c"
+yy156:
+       YYDEBUG(156, YYPEEK ());
+#line 291 "../ada.re2c"
        {*id =  21; continue;}
-#line 3947 "../ada_re2c.c"
-yy153:
-       YYDEBUG(153, YYPEEK ());
+#line 3959 "../ada_re2c.c"
+yy157:
+       YYDEBUG(157, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'S':
-       case 's':       goto yy240;
+       case 's':       goto yy241;
        default:        goto yy15;
        }
-yy154:
-       YYDEBUG(154, YYPEEK ());
+yy158:
+       YYDEBUG(158, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'D':
-       case 'd':       goto yy241;
+       case 'd':       goto yy242;
        case 'T':
-       case 't':       goto yy243;
+       case 't':       goto yy244;
        default:        goto yy15;
        }
-yy155:
-       YYDEBUG(155, YYPEEK ());
+yy159:
+       YYDEBUG(159, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'C':
-       case 'c':       goto yy244;
+       case 'c':       goto yy245;
        case 'I':
-       case 'i':       goto yy245;
+       case 'i':       goto yy246;
        default:        goto yy15;
        }
-yy156:
-       YYDEBUG(156, YYPEEK ());
+yy160:
+       YYDEBUG(160, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'R':
-       case 'r':       goto yy246;
+       case 'r':       goto yy247;
        default:        goto yy15;
        }
-yy157:
-       YYDEBUG(157, YYPEEK ());
+yy161:
+       YYDEBUG(161, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'N':
-       case 'n':       goto yy248;
+       case 'n':       goto yy249;
        default:        goto yy15;
        }
-yy158:
-       YYDEBUG(158, YYPEEK ());
+yy162:
+       YYDEBUG(162, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'N':
-       case 'n':       goto yy249;
+       case 'n':       goto yy250;
        default:        goto yy15;
        }
-yy159:
-       YYDEBUG(159, YYPEEK ());
+yy163:
+       YYDEBUG(163, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'T':
-       case 't':       goto yy250;
+       case 't':       goto yy251;
        default:        goto yy15;
        }
-yy160:
-       YYDEBUG(160, YYPEEK ());
-       yyaccept = 8;
+yy164:
+       YYDEBUG(164, YYPEEK ());
+       yyaccept = 9;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -4147,16 +4159,16 @@ yy160:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy161;
+       default:        goto yy165;
        }
-yy161:
-       YYDEBUG(161, YYPEEK ());
-#line 299 "../ada.re2c"
+yy165:
+       YYDEBUG(165, YYPEEK ());
+#line 302 "../ada.re2c"
        {*id =  32; continue;}
-#line 4157 "../ada_re2c.c"
-yy162:
-       YYDEBUG(162, YYPEEK ());
-       yyaccept = 9;
+#line 4169 "../ada_re2c.c"
+yy166:
+       YYDEBUG(166, YYPEEK ());
+       yyaccept = 10;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -4275,17 +4287,17 @@ yy162:
        case 0xF3:
        case 0xF4:      goto yy15;
        case 'T':
-       case 't':       goto yy251;
-       default:        goto yy163;
+       case 't':       goto yy252;
+       default:        goto yy167;
        }
-yy163:
-       YYDEBUG(163, YYPEEK ());
-#line 300 "../ada.re2c"
+yy167:
+       YYDEBUG(167, YYPEEK ());
+#line 303 "../ada.re2c"
        {*id =  33; continue;}
-#line 4286 "../ada_re2c.c"
-yy164:
-       YYDEBUG(164, YYPEEK ());
-       yyaccept = 10;
+#line 4298 "../ada_re2c.c"
+yy168:
+       YYDEBUG(168, YYPEEK ());
+       yyaccept = 11;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -4405,82 +4417,82 @@ yy164:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy165;
+       default:        goto yy169;
        }
-yy165:
-       YYDEBUG(165, YYPEEK ());
-#line 302 "../ada.re2c"
+yy169:
+       YYDEBUG(169, YYPEEK ());
+#line 305 "../ada.re2c"
        {*id =  35; continue;}
-#line 4415 "../ada_re2c.c"
-yy166:
-       YYDEBUG(166, YYPEEK ());
+#line 4427 "../ada_re2c.c"
+yy170:
+       YYDEBUG(170, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'M':
-       case 'm':       goto yy252;
+       case 'm':       goto yy253;
        default:        goto yy15;
        }
-yy167:
-       YYDEBUG(167, YYPEEK ());
+yy171:
+       YYDEBUG(171, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'O':
-       case 'o':       goto yy253;
+       case 'o':       goto yy254;
        default:        goto yy15;
        }
-yy168:
-       YYDEBUG(168, YYPEEK ());
+yy172:
+       YYDEBUG(172, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'D':
-       case 'd':       goto yy254;
+       case 'd':       goto yy255;
        default:        goto yy15;
        }
-yy169:
-       YYDEBUG(169, YYPEEK ());
+yy173:
+       YYDEBUG(173, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'W':
-       case 'w':       goto yy256;
+       case 'w':       goto yy257;
        default:        goto yy15;
        }
-yy170:
-       YYDEBUG(170, YYPEEK ());
+yy174:
+       YYDEBUG(174, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'T':
-       case 't':       goto yy258;
+       case 't':       goto yy259;
        default:        goto yy15;
        }
-yy171:
-       YYDEBUG(171, YYPEEK ());
+yy175:
+       YYDEBUG(175, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'L':
-       case 'l':       goto yy260;
+       case 'l':       goto yy261;
        default:        goto yy15;
        }
-yy172:
-       YYDEBUG(172, YYPEEK ());
-       yyaccept = 11;
+yy176:
+       YYDEBUG(176, YYPEEK ());
+       yyaccept = 12;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -4600,16 +4612,16 @@ yy172:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy173;
+       default:        goto yy177;
        }
-yy173:
-       YYDEBUG(173, YYPEEK ());
-#line 309 "../ada.re2c"
+yy177:
+       YYDEBUG(177, YYPEEK ());
+#line 312 "../ada.re2c"
        {*id =  42; continue;}
-#line 4610 "../ada_re2c.c"
-yy174:
-       YYDEBUG(174, YYPEEK ());
-       yyaccept = 12;
+#line 4622 "../ada_re2c.c"
+yy178:
+       YYDEBUG(178, YYPEEK ());
+       yyaccept = 13;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -4729,337 +4741,260 @@ yy174:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy175;
+       default:        goto yy179;
        }
-yy175:
-       YYDEBUG(175, YYPEEK ());
-#line 310 "../ada.re2c"
+yy179:
+       YYDEBUG(179, YYPEEK ());
+#line 313 "../ada.re2c"
        {*id =  43; continue;}
-#line 4739 "../ada_re2c.c"
-yy176:
-       YYDEBUG(176, YYPEEK ());
+#line 4751 "../ada_re2c.c"
+yy180:
+       YYDEBUG(180, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'H':
-       case 'h':       goto yy261;
+       case 'h':       goto yy262;
        default:        goto yy15;
        }
-yy177:
-       YYDEBUG(177, YYPEEK ());
+yy181:
+       YYDEBUG(181, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'T':
-       case 't':       goto yy262;
+       case 't':       goto yy263;
        default:        goto yy15;
        }
-yy178:
-       YYDEBUG(178, YYPEEK ());
+yy182:
+       YYDEBUG(182, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy264;
+       case 'e':       goto yy265;
        default:        goto yy15;
        }
-yy179:
-       YYDEBUG(179, YYPEEK ());
+yy183:
+       YYDEBUG(183, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'C':
-       case 'c':       goto yy265;
+       case 'c':       goto yy266;
        default:        goto yy15;
        }
-yy180:
-       YYDEBUG(180, YYPEEK ());
+yy184:
+       YYDEBUG(184, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'A':
-       case 'a':       goto yy266;
+       case 'a':       goto yy267;
        case 'I':
-       case 'i':       goto yy267;
+       case 'i':       goto yy268;
        case 'O':
-       case 'o':       goto yy268;
+       case 'o':       goto yy269;
        default:        goto yy15;
        }
-yy181:
-       YYDEBUG(181, YYPEEK ());
+yy185:
+       YYDEBUG(185, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'I':
-       case 'i':       goto yy269;
+       case 'i':       goto yy270;
        case 'N':
-       case 'n':       goto yy270;
+       case 'n':       goto yy271;
        default:        goto yy15;
        }
-yy182:
-       YYDEBUG(182, YYPEEK ());
+yy186:
+       YYDEBUG(186, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'C':
-       case 'c':       goto yy271;
+       case 'c':       goto yy272;
        case 'M':
-       case 'm':       goto yy272;
+       case 'm':       goto yy273;
        case 'N':
-       case 'n':       goto yy274;
+       case 'n':       goto yy275;
        case 'Q':
-       case 'q':       goto yy275;
+       case 'q':       goto yy276;
        case 'T':
-       case 't':       goto yy276;
+       case 't':       goto yy277;
        case 'V':
-       case 'v':       goto yy277;
+       case 'v':       goto yy278;
        default:        goto yy15;
        }
-yy183:
-       YYDEBUG(183, YYPEEK ());
+yy187:
+       YYDEBUG(187, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'L':
-       case 'l':       goto yy278;
+       case 'l':       goto yy279;
        case 'P':
-       case 'p':       goto yy279;
+       case 'p':       goto yy280;
        default:        goto yy15;
        }
-yy184:
-       YYDEBUG(184, YYPEEK ());
+yy188:
+       YYDEBUG(188, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'M':
-       case 'm':       goto yy280;
+       case 'm':       goto yy281;
        default:        goto yy15;
        }
-yy185:
-       YYDEBUG(185, YYPEEK ());
+yy189:
+       YYDEBUG(189, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'B':
-       case 'b':       goto yy281;
+       case 'b':       goto yy282;
        default:        goto yy15;
        }
-yy186:
-       YYDEBUG(186, YYPEEK ());
+yy190:
+       YYDEBUG(190, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'N':
-       case 'n':       goto yy282;
+       case 'n':       goto yy283;
        default:        goto yy15;
        }
-yy187:
-       YYDEBUG(187, YYPEEK ());
+yy191:
+       YYDEBUG(191, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'G':
-       case 'g':       goto yy283;
+       case 'g':       goto yy284;
        case 'S':
-       case 's':       goto yy284;
+       case 's':       goto yy285;
        default:        goto yy15;
        }
-yy188:
-       YYDEBUG(188, YYPEEK ());
+yy192:
+       YYDEBUG(192, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'R':
-       case 'r':       goto yy285;
+       case 'r':       goto yy286;
        default:        goto yy15;
        }
-yy189:
-       YYDEBUG(189, YYPEEK ());
+yy193:
+       YYDEBUG(193, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy286;
+       case 'e':       goto yy287;
        default:        goto yy15;
        }
-yy190:
-       YYDEBUG(190, YYPEEK ());
+yy194:
+       YYDEBUG(194, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'P':
-       case 'p':       goto yy287;
+       case 'p':       goto yy288;
        default:        goto yy15;
        }
-yy191:
-       YYDEBUG(191, YYPEEK ());
+yy195:
+       YYDEBUG(195, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'T':
-       case 't':       goto yy288;
+       case 't':       goto yy289;
        default:        goto yy15;
        }
-yy192:
-       YYDEBUG(192, YYPEEK ());
+yy196:
+       YYDEBUG(196, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy289;
+       case 'e':       goto yy290;
        default:        goto yy15;
        }
-yy193:
-       YYDEBUG(193, YYPEEK ());
+yy197:
+       YYDEBUG(197, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy291;
+       case 'e':       goto yy292;
        case 'I':
-       case 'i':       goto yy292;
+       case 'i':       goto yy293;
        default:        goto yy15;
        }
-yy194:
-       YYDEBUG(194, YYPEEK ());
+yy198:
+       YYDEBUG(198, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'T':
-       case 't':       goto yy293;
+       case 't':       goto yy294;
        default:        goto yy15;
        }
-yy195:
-       YYDEBUG(195, YYPEEK ());
+yy199:
+       YYDEBUG(199, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'R':
-       case 'r':       goto yy294;
+       case 'r':       goto yy295;
        default:        goto yy15;
-       }
-yy196:
-       YYDEBUG(196, YYPEEK ());
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':
-       case 'A':
-       case 'B':
-       case 'C':
-       case 'D':
-       case 'E':
-       case 'F':
-       case 'a':
-       case 'b':
-       case 'c':
-       case 'd':
-       case 'e':
-       case 'f':       goto yy296;
-       default:        goto yy83;
-       }
-yy197:
-       YYDEBUG(197, YYPEEK ());
-       YYSKIP ();
-       yych = YYPEEK ();
-yy198:
-       YYDEBUG(198, YYPEEK ());
-       switch (yych) {
-       case 0x00:
-       case 0x01:
-       case 0x02:
-       case 0x03:
-       case 0x05:
-       case 0x06:
-       case 0x07:
-       case 0x08:
-       case '\t':
-       case '\v':
-       case '\f':
-       case '\r':
-       case 0x0E:
-       case 0x0F:
-       case 0x10:
-       case 0x11:
-       case 0x12:
-       case 0x13:
-       case 0x14:
-       case 0x15:
-       case 0x16:
-       case 0x17:
-       case 0x18:
-       case 0x19:
-       case 0x1A:
-       case 0x1B:
-       case 0x1C:
-       case 0x1D:
-       case 0x1E:
-       case 0x1F:
-       case ' ':
-       case '!':
-       case '"':
-       case '#':
-       case '$':
-       case '%':
-       case '&':
-       case '\'':
-       case '(':
-       case ')':
-       case '*':
-       case '+':
-       case ',':
-       case '-':
-       case '.':
-       case '/':
+       }
+yy200:
+       YYDEBUG(200, YYPEEK ());
+       YYSKIP ();
+       yych = YYPEEK ();
+       switch (yych) {
        case '0':
        case '1':
        case '2':
@@ -5070,137 +5005,22 @@ yy198:
        case '7':
        case '8':
        case '9':
-       case ':':
-       case ';':
-       case '<':
-       case '=':
-       case '>':
-       case '?':
-       case '@':
        case 'A':
        case 'B':
        case 'C':
        case 'D':
        case 'E':
        case 'F':
-       case 'G':
-       case 'H':
-       case 'I':
-       case 'J':
-       case 'K':
-       case 'L':
-       case 'M':
-       case 'N':
-       case 'O':
-       case 'P':
-       case 'Q':
-       case 'R':
-       case 'S':
-       case 'T':
-       case 'U':
-       case 'V':
-       case 'W':
-       case 'X':
-       case 'Y':
-       case 'Z':
-       case '[':
-       case '\\':
-       case ']':
-       case '^':
-       case '_':
-       case '`':
        case 'a':
        case 'b':
        case 'c':
        case 'd':
        case 'e':
-       case 'f':
-       case 'g':
-       case 'h':
-       case 'i':
-       case 'j':
-       case 'k':
-       case 'l':
-       case 'm':
-       case 'n':
-       case 'o':
-       case 'p':
-       case 'q':
-       case 'r':
-       case 's':
-       case 't':
-       case 'u':
-       case 'v':
-       case 'w':
-       case 'x':
-       case 'y':
-       case 'z':
-       case '{':
-       case '|':
-       case '~':
-       case 0x7F:      goto yy197;
-       case 0x04:
-       case '\n':
-       case '}':       goto yy199;
-       case 0xC2:
-       case 0xC3:
-       case 0xC4:
-       case 0xC5:
-       case 0xC6:
-       case 0xC7:
-       case 0xC8:
-       case 0xC9:
-       case 0xCA:
-       case 0xCB:
-       case 0xCC:
-       case 0xCD:
-       case 0xCE:
-       case 0xCF:
-       case 0xD0:
-       case 0xD1:
-       case 0xD2:
-       case 0xD3:
-       case 0xD4:
-       case 0xD5:
-       case 0xD6:
-       case 0xD7:
-       case 0xD8:
-       case 0xD9:
-       case 0xDA:
-       case 0xDB:
-       case 0xDC:
-       case 0xDD:
-       case 0xDE:
-       case 0xDF:      goto yy200;
-       case 0xE0:      goto yy201;
-       case 0xE1:
-       case 0xE2:
-       case 0xE3:
-       case 0xE4:
-       case 0xE5:
-       case 0xE6:
-       case 0xE7:
-       case 0xE8:
-       case 0xE9:
-       case 0xEA:
-       case 0xEB:
-       case 0xEC:
-       case 0xED:
-       case 0xEE:
-       case 0xEF:      goto yy202;
-       case 0xF0:      goto yy203;
-       case 0xF1:
-       case 0xF2:
-       case 0xF3:      goto yy204;
-       case 0xF4:      goto yy205;
-       default:        goto yy83;
+       case 'f':       goto yy297;
+       default:        goto yy88;
        }
-yy199:
-       YYDEBUG(199, YYPEEK ());
-       YYSKIP ();
-       goto yy116;
-yy200:
-       YYDEBUG(200, YYPEEK ());
+yy201:
+       YYDEBUG(201, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -5267,11 +5087,11 @@ yy200:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy197;
-       default:        goto yy83;
+       case 0xBF:      goto yy75;
+       default:        goto yy88;
        }
-yy201:
-       YYDEBUG(201, YYPEEK ());
+yy202:
+       YYDEBUG(202, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -5306,11 +5126,11 @@ yy201:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy200;
-       default:        goto yy83;
+       case 0xBF:      goto yy201;
+       default:        goto yy88;
        }
-yy202:
-       YYDEBUG(202, YYPEEK ());
+yy203:
+       YYDEBUG(203, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -5377,11 +5197,11 @@ yy202:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy200;
-       default:        goto yy83;
+       case 0xBF:      goto yy201;
+       default:        goto yy88;
        }
-yy203:
-       YYDEBUG(203, YYPEEK ());
+yy204:
+       YYDEBUG(204, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -5432,11 +5252,11 @@ yy203:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy202;
-       default:        goto yy83;
+       case 0xBF:      goto yy203;
+       default:        goto yy88;
        }
-yy204:
-       YYDEBUG(204, YYPEEK ());
+yy205:
+       YYDEBUG(205, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -5503,11 +5323,11 @@ yy204:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy202;
-       default:        goto yy83;
+       case 0xBF:      goto yy203;
+       default:        goto yy88;
        }
-yy205:
-       YYDEBUG(205, YYPEEK ());
+yy206:
+       YYDEBUG(206, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -5526,17 +5346,17 @@ yy205:
        case 0x8C:
        case 0x8D:
        case 0x8E:
-       case 0x8F:      goto yy202;
-       default:        goto yy83;
+       case 0x8F:      goto yy203;
+       default:        goto yy88;
        }
-yy206:
-       YYDEBUG(206, YYPEEK ());
-       yyaccept = 4;
+yy207:
+       YYDEBUG(207, YYPEEK ());
+       yyaccept = 6;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '"':       goto yy81;
+       case '"':       goto yy86;
        case '0':
        case '1':
        case '2':
@@ -5558,36 +5378,36 @@ yy206:
        case 'c':
        case 'd':
        case 'e':
-       case 'f':       goto yy298;
-       default:        goto yy85;
-       }
-yy207:
-       YYDEBUG(207, YYPEEK ());
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case 's':       goto yy300;
-       default:        goto yy83;
+       case 'f':       goto yy299;
+       default:        goto yy90;
        }
 yy208:
        YYDEBUG(208, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'd':       goto yy114;
-       default:        goto yy83;
+       case 's':       goto yy301;
+       default:        goto yy88;
        }
 yy209:
        YYDEBUG(209, YYPEEK ());
        YYSKIP ();
+       yych = YYPEEK ();
+       switch (yych) {
+       case 'd':       goto yy119;
+       default:        goto yy88;
+       }
 yy210:
        YYDEBUG(210, YYPEEK ());
-#line 374 "../ada.re2c"
-       {*id =  107; continue;}
-#line 5588 "../ada_re2c.c"
+       YYSKIP ();
 yy211:
        YYDEBUG(211, YYPEEK ());
-       yyaccept = 13;
+#line 379 "../ada.re2c"
+       {*id =  109; continue;}
+#line 5408 "../ada_re2c.c"
+yy212:
+       YYDEBUG(212, YYPEEK ());
+       yyaccept = 14;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -5686,8 +5506,8 @@ yy211:
        case '|':
        case '}':
        case '~':
-       case 0x7F:      goto yy301;
-       case '[':       goto yy302;
+       case 0x7F:      goto yy302;
+       case '[':       goto yy303;
        case 0xC2:
        case 0xC3:
        case 0xC4:
@@ -5717,8 +5537,8 @@ yy211:
        case 0xDC:
        case 0xDD:
        case 0xDE:
-       case 0xDF:      goto yy303;
-       case 0xE0:      goto yy304;
+       case 0xDF:      goto yy304;
+       case 0xE0:      goto yy305;
        case 0xE1:
        case 0xE2:
        case 0xE3:
@@ -5733,24 +5553,24 @@ yy211:
        case 0xEC:
        case 0xED:
        case 0xEE:
-       case 0xEF:      goto yy305;
-       case 0xF0:      goto yy306;
+       case 0xEF:      goto yy306;
+       case 0xF0:      goto yy307;
        case 0xF1:
        case 0xF2:
-       case 0xF3:      goto yy307;
-       case 0xF4:      goto yy308;
-       default:        goto yy210;
+       case 0xF3:      goto yy308;
+       case 0xF4:      goto yy309;
+       default:        goto yy211;
        }
-yy212:
-       YYDEBUG(212, YYPEEK ());
+yy213:
+       YYDEBUG(213, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '"':       goto yy83;
-       default:        goto yy310;
+       case '"':       goto yy88;
+       default:        goto yy311;
        }
-yy213:
-       YYDEBUG(213, YYPEEK ());
+yy214:
+       YYDEBUG(214, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -5817,11 +5637,11 @@ yy213:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy114;
-       default:        goto yy83;
+       case 0xBF:      goto yy119;
+       default:        goto yy88;
        }
-yy214:
-       YYDEBUG(214, YYPEEK ());
+yy215:
+       YYDEBUG(215, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -5856,11 +5676,11 @@ yy214:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy213;
-       default:        goto yy83;
+       case 0xBF:      goto yy214;
+       default:        goto yy88;
        }
-yy215:
-       YYDEBUG(215, YYPEEK ());
+yy216:
+       YYDEBUG(216, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -5927,11 +5747,11 @@ yy215:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy213;
-       default:        goto yy83;
+       case 0xBF:      goto yy214;
+       default:        goto yy88;
        }
-yy216:
-       YYDEBUG(216, YYPEEK ());
+yy217:
+       YYDEBUG(217, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -5982,11 +5802,11 @@ yy216:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy215;
-       default:        goto yy83;
+       case 0xBF:      goto yy216;
+       default:        goto yy88;
        }
-yy217:
-       YYDEBUG(217, YYPEEK ());
+yy218:
+       YYDEBUG(218, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -6053,11 +5873,11 @@ yy217:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy215;
-       default:        goto yy83;
+       case 0xBF:      goto yy216;
+       default:        goto yy88;
        }
-yy218:
-       YYDEBUG(218, YYPEEK ());
+yy219:
+       YYDEBUG(219, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -6076,17 +5896,17 @@ yy218:
        case 0x8C:
        case 0x8D:
        case 0x8E:
-       case 0x8F:      goto yy215;
-       default:        goto yy83;
+       case 0x8F:      goto yy216;
+       default:        goto yy88;
        }
-yy219:
-       YYDEBUG(219, YYPEEK ());
-       YYSKIP ();
-       yych = YYPEEK ();
 yy220:
        YYDEBUG(220, YYPEEK ());
+       YYSKIP ();
+       yych = YYPEEK ();
+yy221:
+       YYDEBUG(221, YYPEEK ());
        switch (yych) {
-       case '#':       goto yy311;
+       case '#':       goto yy312;
        case '-':
        case '.':
        case '0':
@@ -6111,22 +5931,22 @@ yy220:
        case 'c':
        case 'd':
        case 'e':
-       case 'f':       goto yy219;
-       default:        goto yy83;
+       case 'f':       goto yy220;
+       default:        goto yy88;
        }
-yy221:
-       YYDEBUG(221, YYPEEK ());
+yy222:
+       YYDEBUG(222, YYPEEK ());
        yyaccept = 3;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
-       YYDEBUG(222, YYPEEK ());
+       YYDEBUG(223, YYPEEK ());
        switch (yych) {
        case '-':
        case '.':
        case 'E':
        case '_':
-       case 'e':       goto yy122;
+       case 'e':       goto yy126;
        case '0':
        case '1':
        case '2':
@@ -6136,23 +5956,23 @@ yy221:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy221;
+       case '9':       goto yy222;
        default:        goto yy39;
        }
-yy223:
-       YYDEBUG(223, YYPEEK ());
+yy224:
+       YYDEBUG(224, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'R':
-       case 'r':       goto yy312;
+       case 'r':       goto yy313;
        default:        goto yy15;
        }
-yy224:
-       YYDEBUG(224, YYPEEK ());
-       yyaccept = 14;
+yy225:
+       YYDEBUG(225, YYPEEK ());
+       yyaccept = 15;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -6271,39 +6091,39 @@ yy224:
        case 0xF3:
        case 0xF4:      goto yy15;
        case 'T':
-       case 't':       goto yy313;
-       default:        goto yy225;
+       case 't':       goto yy314;
+       default:        goto yy226;
        }
-yy225:
-       YYDEBUG(225, YYPEEK ());
-#line 270 "../ada.re2c"
-       {*id =  3; continue;}
-#line 6282 "../ada_re2c.c"
 yy226:
        YYDEBUG(226, YYPEEK ());
+#line 273 "../ada.re2c"
+       {*id =  3; continue;}
+#line 6102 "../ada_re2c.c"
+yy227:
+       YYDEBUG(227, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy314;
+       case 'e':       goto yy315;
        default:        goto yy15;
        }
-yy227:
-       YYDEBUG(227, YYPEEK ());
+yy228:
+       YYDEBUG(228, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'A':
-       case 'a':       goto yy315;
+       case 'a':       goto yy316;
        default:        goto yy15;
        }
-yy228:
-       YYDEBUG(228, YYPEEK ());
-       yyaccept = 15;
+yy229:
+       YYDEBUG(229, YYPEEK ());
+       yyaccept = 16;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -6423,16 +6243,16 @@ yy228:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy229;
+       default:        goto yy230;
        }
-yy229:
-       YYDEBUG(229, YYPEEK ());
-#line 276 "../ada.re2c"
-       {*id =  9; continue;}
-#line 6433 "../ada_re2c.c"
 yy230:
        YYDEBUG(230, YYPEEK ());
-       yyaccept = 16;
+#line 279 "../ada.re2c"
+       {*id =  9; continue;}
+#line 6253 "../ada_re2c.c"
+yy231:
+       YYDEBUG(231, YYPEEK ());
+       yyaccept = 17;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -6552,24 +6372,13 @@ yy230:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy231;
+       default:        goto yy232;
        }
-yy231:
-       YYDEBUG(231, YYPEEK ());
-#line 277 "../ada.re2c"
-       {*id =  10; continue;}
-#line 6562 "../ada_re2c.c"
 yy232:
        YYDEBUG(232, YYPEEK ());
-       yyaccept = 1;
-       YYSKIP ();
-       YYBACKUP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case 'A':
-       case 'a':       goto yy316;
-       default:        goto yy15;
-       }
+#line 280 "../ada.re2c"
+       {*id =  10; continue;}
+#line 6382 "../ada_re2c.c"
 yy233:
        YYDEBUG(233, YYPEEK ());
        yyaccept = 1;
@@ -6577,8 +6386,8 @@ yy233:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'I':
-       case 'i':       goto yy317;
+       case 'A':
+       case 'a':       goto yy317;
        default:        goto yy15;
        }
 yy234:
@@ -6588,8 +6397,8 @@ yy234:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'Y':
-       case 'y':       goto yy318;
+       case 'I':
+       case 'i':       goto yy318;
        default:        goto yy15;
        }
 yy235:
@@ -6599,8 +6408,8 @@ yy235:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'E':
-       case 'e':       goto yy320;
+       case 'Y':
+       case 'y':       goto yy319;
        default:        goto yy15;
        }
 yy236:
@@ -6610,8 +6419,8 @@ yy236:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'S':
-       case 's':       goto yy322;
+       case 'E':
+       case 'e':       goto yy321;
        default:        goto yy15;
        }
 yy237:
@@ -6621,8 +6430,8 @@ yy237:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'L':
-       case 'l':       goto yy323;
+       case 'S':
+       case 's':       goto yy323;
        default:        goto yy15;
        }
 yy238:
@@ -6632,10 +6441,8 @@ yy238:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'A':
-       case 'a':       goto yy324;
-       case 'T':
-       case 't':       goto yy325;
+       case 'L':
+       case 'l':       goto yy324;
        default:        goto yy15;
        }
 yy239:
@@ -6645,8 +6452,10 @@ yy239:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'I':
-       case 'i':       goto yy326;
+       case 'A':
+       case 'a':       goto yy325;
+       case 'T':
+       case 't':       goto yy326;
        default:        goto yy15;
        }
 yy240:
@@ -6656,15 +6465,26 @@ yy240:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'E':
-       case 'e':       goto yy327;
        case 'I':
-       case 'i':       goto yy329;
+       case 'i':       goto yy327;
        default:        goto yy15;
        }
 yy241:
        YYDEBUG(241, YYPEEK ());
-       yyaccept = 17;
+       yyaccept = 1;
+       YYSKIP ();
+       YYBACKUP ();
+       yych = YYPEEK ();
+       switch (yych) {
+       case 'E':
+       case 'e':       goto yy328;
+       case 'I':
+       case 'i':       goto yy330;
+       default:        goto yy15;
+       }
+yy242:
+       YYDEBUG(242, YYPEEK ());
+       yyaccept = 18;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -6784,49 +6604,49 @@ yy241:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy242;
+       default:        goto yy243;
        }
-yy242:
-       YYDEBUG(242, YYPEEK ());
-#line 291 "../ada.re2c"
-       {*id =  24; continue;}
-#line 6794 "../ada_re2c.c"
 yy243:
        YYDEBUG(243, YYPEEK ());
+#line 294 "../ada.re2c"
+       {*id =  24; continue;}
+#line 6614 "../ada_re2c.c"
+yy244:
+       YYDEBUG(244, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'R':
-       case 'r':       goto yy330;
+       case 'r':       goto yy331;
        default:        goto yy15;
        }
-yy244:
-       YYDEBUG(244, YYPEEK ());
+yy245:
+       YYDEBUG(245, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy331;
+       case 'e':       goto yy332;
        default:        goto yy15;
        }
-yy245:
-       YYDEBUG(245, YYPEEK ());
+yy246:
+       YYDEBUG(246, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'T':
-       case 't':       goto yy332;
+       case 't':       goto yy333;
        default:        goto yy15;
        }
-yy246:
-       YYDEBUG(246, YYPEEK ());
-       yyaccept = 18;
+yy247:
+       YYDEBUG(247, YYPEEK ());
+       yyaccept = 19;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -6946,82 +6766,82 @@ yy246:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy247;
+       default:        goto yy248;
        }
-yy247:
-       YYDEBUG(247, YYPEEK ());
-#line 295 "../ada.re2c"
-       {*id =  28; continue;}
-#line 6956 "../ada_re2c.c"
 yy248:
        YYDEBUG(248, YYPEEK ());
+#line 298 "../ada.re2c"
+       {*id =  28; continue;}
+#line 6776 "../ada_re2c.c"
+yy249:
+       YYDEBUG(249, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'C':
-       case 'c':       goto yy334;
+       case 'c':       goto yy335;
        default:        goto yy15;
        }
-yy249:
-       YYDEBUG(249, YYPEEK ());
+yy250:
+       YYDEBUG(250, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy335;
+       case 'e':       goto yy336;
        default:        goto yy15;
        }
-yy250:
-       YYDEBUG(250, YYPEEK ());
+yy251:
+       YYDEBUG(251, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'O':
-       case 'o':       goto yy336;
+       case 'o':       goto yy337;
        default:        goto yy15;
        }
-yy251:
-       YYDEBUG(251, YYPEEK ());
+yy252:
+       YYDEBUG(252, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy338;
+       case 'e':       goto yy339;
        default:        goto yy15;
        }
-yy252:
-       YYDEBUG(252, YYPEEK ());
+yy253:
+       YYDEBUG(253, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'I':
-       case 'i':       goto yy339;
+       case 'i':       goto yy340;
        default:        goto yy15;
        }
-yy253:
-       YYDEBUG(253, YYPEEK ());
+yy254:
+       YYDEBUG(254, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'P':
-       case 'p':       goto yy340;
+       case 'p':       goto yy341;
        default:        goto yy15;
        }
-yy254:
-       YYDEBUG(254, YYPEEK ());
-       yyaccept = 19;
+yy255:
+       YYDEBUG(255, YYPEEK ());
+       yyaccept = 20;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -7141,16 +6961,16 @@ yy254:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy255;
+       default:        goto yy256;
        }
-yy255:
-       YYDEBUG(255, YYPEEK ());
-#line 305 "../ada.re2c"
-       {*id =  38; continue;}
-#line 7151 "../ada_re2c.c"
 yy256:
        YYDEBUG(256, YYPEEK ());
-       yyaccept = 20;
+#line 308 "../ada.re2c"
+       {*id =  38; continue;}
+#line 6971 "../ada_re2c.c"
+yy257:
+       YYDEBUG(257, YYPEEK ());
+       yyaccept = 21;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -7270,16 +7090,16 @@ yy256:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy257;
+       default:        goto yy258;
        }
-yy257:
-       YYDEBUG(257, YYPEEK ());
-#line 306 "../ada.re2c"
-       {*id =  39; continue;}
-#line 7280 "../ada_re2c.c"
 yy258:
        YYDEBUG(258, YYPEEK ());
-       yyaccept = 21;
+#line 309 "../ada.re2c"
+       {*id =  39; continue;}
+#line 7100 "../ada_re2c.c"
+yy259:
+       YYDEBUG(259, YYPEEK ());
+       yyaccept = 22;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -7399,38 +7219,38 @@ yy258:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy259;
+       default:        goto yy260;
        }
-yy259:
-       YYDEBUG(259, YYPEEK ());
-#line 307 "../ada.re2c"
-       {*id =  40; continue;}
-#line 7409 "../ada_re2c.c"
 yy260:
        YYDEBUG(260, YYPEEK ());
+#line 310 "../ada.re2c"
+       {*id =  40; continue;}
+#line 7229 "../ada_re2c.c"
+yy261:
+       YYDEBUG(261, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'L':
-       case 'l':       goto yy342;
+       case 'l':       goto yy343;
        default:        goto yy15;
        }
-yy261:
-       YYDEBUG(261, YYPEEK ());
+yy262:
+       YYDEBUG(262, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy344;
+       case 'e':       goto yy345;
        default:        goto yy15;
        }
-yy262:
-       YYDEBUG(262, YYPEEK ());
-       yyaccept = 22;
+yy263:
+       YYDEBUG(263, YYPEEK ());
+       yyaccept = 23;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -7550,24 +7370,13 @@ yy262:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy263;
+       default:        goto yy264;
        }
-yy263:
-       YYDEBUG(263, YYPEEK ());
-#line 312 "../ada.re2c"
-       {*id =  45; continue;}
-#line 7560 "../ada_re2c.c"
 yy264:
        YYDEBUG(264, YYPEEK ());
-       yyaccept = 1;
-       YYSKIP ();
-       YYBACKUP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case 'R':
-       case 'r':       goto yy345;
-       default:        goto yy15;
-       }
+#line 315 "../ada.re2c"
+       {*id =  45; continue;}
+#line 7380 "../ada_re2c.c"
 yy265:
        YYDEBUG(265, YYPEEK ());
        yyaccept = 1;
@@ -7575,8 +7384,8 @@ yy265:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'K':
-       case 'k':       goto yy346;
+       case 'R':
+       case 'r':       goto yy346;
        default:        goto yy15;
        }
 yy266:
@@ -7586,8 +7395,8 @@ yy266:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'G':
-       case 'g':       goto yy347;
+       case 'K':
+       case 'k':       goto yy347;
        default:        goto yy15;
        }
 yy267:
@@ -7597,8 +7406,8 @@ yy267:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'V':
-       case 'v':       goto yy348;
+       case 'G':
+       case 'g':       goto yy348;
        default:        goto yy15;
        }
 yy268:
@@ -7608,10 +7417,8 @@ yy268:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'C':
-       case 'c':       goto yy349;
-       case 'T':
-       case 't':       goto yy350;
+       case 'V':
+       case 'v':       goto yy349;
        default:        goto yy15;
        }
 yy269:
@@ -7621,8 +7428,10 @@ yy269:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'S':
-       case 's':       goto yy351;
+       case 'C':
+       case 'c':       goto yy350;
+       case 'T':
+       case 't':       goto yy351;
        default:        goto yy15;
        }
 yy270:
@@ -7632,8 +7441,8 @@ yy270:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'G':
-       case 'g':       goto yy352;
+       case 'S':
+       case 's':       goto yy352;
        default:        goto yy15;
        }
 yy271:
@@ -7643,13 +7452,24 @@ yy271:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'O':
-       case 'o':       goto yy353;
+       case 'G':
+       case 'g':       goto yy353;
        default:        goto yy15;
        }
 yy272:
        YYDEBUG(272, YYPEEK ());
-       yyaccept = 23;
+       yyaccept = 1;
+       YYSKIP ();
+       YYBACKUP ();
+       yych = YYPEEK ();
+       switch (yych) {
+       case 'O':
+       case 'o':       goto yy354;
+       default:        goto yy15;
+       }
+yy273:
+       YYDEBUG(273, YYPEEK ());
+       yyaccept = 24;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -7769,24 +7589,13 @@ yy272:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy273;
+       default:        goto yy274;
        }
-yy273:
-       YYDEBUG(273, YYPEEK ());
-#line 322 "../ada.re2c"
-       {*id =  55; continue;}
-#line 7779 "../ada_re2c.c"
 yy274:
        YYDEBUG(274, YYPEEK ());
-       yyaccept = 1;
-       YYSKIP ();
-       YYBACKUP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case 'A':
-       case 'a':       goto yy354;
-       default:        goto yy15;
-       }
+#line 325 "../ada.re2c"
+       {*id =  55; continue;}
+#line 7599 "../ada_re2c.c"
 yy275:
        YYDEBUG(275, YYPEEK ());
        yyaccept = 1;
@@ -7794,8 +7603,8 @@ yy275:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'U':
-       case 'u':       goto yy355;
+       case 'A':
+       case 'a':       goto yy355;
        default:        goto yy15;
        }
 yy276:
@@ -7816,8 +7625,8 @@ yy277:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'E':
-       case 'e':       goto yy357;
+       case 'U':
+       case 'u':       goto yy357;
        default:        goto yy15;
        }
 yy278:
@@ -7838,8 +7647,8 @@ yy279:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'A':
-       case 'a':       goto yy359;
+       case 'E':
+       case 'e':       goto yy359;
        default:        goto yy15;
        }
 yy280:
@@ -7849,8 +7658,8 @@ yy280:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'E':
-       case 'e':       goto yy360;
+       case 'A':
+       case 'a':       goto yy360;
        default:        goto yy15;
        }
 yy281:
@@ -7860,8 +7669,8 @@ yy281:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'T':
-       case 't':       goto yy362;
+       case 'E':
+       case 'e':       goto yy361;
        default:        goto yy15;
        }
 yy282:
@@ -7871,8 +7680,8 @@ yy282:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'C':
-       case 'c':       goto yy363;
+       case 'T':
+       case 't':       goto yy363;
        default:        goto yy15;
        }
 yy283:
@@ -7882,8 +7691,8 @@ yy283:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'G':
-       case 'g':       goto yy364;
+       case 'C':
+       case 'c':       goto yy364;
        default:        goto yy15;
        }
 yy284:
@@ -7893,8 +7702,8 @@ yy284:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'K':
-       case 'k':       goto yy365;
+       case 'G':
+       case 'g':       goto yy365;
        default:        goto yy15;
        }
 yy285:
@@ -7904,8 +7713,8 @@ yy285:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'M':
-       case 'm':       goto yy367;
+       case 'K':
+       case 'k':       goto yy366;
        default:        goto yy15;
        }
 yy286:
@@ -7915,8 +7724,8 @@ yy286:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'N':
-       case 'n':       goto yy368;
+       case 'M':
+       case 'm':       goto yy368;
        default:        goto yy15;
        }
 yy287:
@@ -7926,8 +7735,8 @@ yy287:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'E':
-       case 'e':       goto yy370;
+       case 'N':
+       case 'n':       goto yy369;
        default:        goto yy15;
        }
 yy288:
@@ -7937,13 +7746,24 @@ yy288:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'I':
-       case 'i':       goto yy372;
+       case 'E':
+       case 'e':       goto yy371;
        default:        goto yy15;
        }
 yy289:
        YYDEBUG(289, YYPEEK ());
-       yyaccept = 24;
+       yyaccept = 1;
+       YYSKIP ();
+       YYBACKUP ();
+       yych = YYPEEK ();
+       switch (yych) {
+       case 'I':
+       case 'i':       goto yy373;
+       default:        goto yy15;
+       }
+yy290:
+       YYDEBUG(290, YYPEEK ());
+       yyaccept = 25;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -8063,49 +7883,49 @@ yy289:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy290;
+       default:        goto yy291;
        }
-yy290:
-       YYDEBUG(290, YYPEEK ());
-#line 338 "../ada.re2c"
-       {*id =  71; continue;}
-#line 8073 "../ada_re2c.c"
 yy291:
        YYDEBUG(291, YYPEEK ());
+#line 341 "../ada.re2c"
+       {*id =  71; continue;}
+#line 7893 "../ada_re2c.c"
+yy292:
+       YYDEBUG(292, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'N':
-       case 'n':       goto yy373;
+       case 'n':       goto yy374;
        default:        goto yy15;
        }
-yy292:
-       YYDEBUG(292, YYPEEK ());
+yy293:
+       YYDEBUG(293, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'L':
-       case 'l':       goto yy375;
+       case 'l':       goto yy376;
        default:        goto yy15;
        }
-yy293:
-       YYDEBUG(293, YYPEEK ());
+yy294:
+       YYDEBUG(294, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'H':
-       case 'h':       goto yy376;
+       case 'h':       goto yy377;
        default:        goto yy15;
        }
-yy294:
-       YYDEBUG(294, YYPEEK ());
-       yyaccept = 25;
+yy295:
+       YYDEBUG(295, YYPEEK ());
+       yyaccept = 26;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -8225,20 +8045,20 @@ yy294:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy295;
+       default:        goto yy296;
        }
-yy295:
-       YYDEBUG(295, YYPEEK ());
-#line 342 "../ada.re2c"
-       {*id =  75; continue;}
-#line 8235 "../ada_re2c.c"
 yy296:
        YYDEBUG(296, YYPEEK ());
+#line 345 "../ada.re2c"
+       {*id =  75; continue;}
+#line 8055 "../ada_re2c.c"
+yy297:
+       YYDEBUG(297, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
-       YYDEBUG(297, YYPEEK ());
+       YYDEBUG(298, YYPEEK ());
        switch (yych) {
-       case '"':       goto yy378;
+       case '"':       goto yy379;
        case '0':
        case '1':
        case '2':
@@ -8260,16 +8080,16 @@ yy296:
        case 'c':
        case 'd':
        case 'e':
-       case 'f':       goto yy296;
-       default:        goto yy83;
+       case 'f':       goto yy297;
+       default:        goto yy88;
        }
-yy298:
-       YYDEBUG(298, YYPEEK ());
+yy299:
+       YYDEBUG(299, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
-       YYDEBUG(299, YYPEEK ());
+       YYDEBUG(300, YYPEEK ());
        switch (yych) {
-       case '"':       goto yy379;
+       case '"':       goto yy380;
        case '0':
        case '1':
        case '2':
@@ -8291,40 +8111,40 @@ yy298:
        case 'c':
        case 'd':
        case 'e':
-       case 'f':       goto yy298;
-       default:        goto yy83;
-       }
-yy300:
-       YYDEBUG(300, YYPEEK ());
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case 'e':       goto yy114;
-       case 'i':       goto yy95;
-       default:        goto yy83;
+       case 'f':       goto yy299;
+       default:        goto yy88;
        }
 yy301:
        YYDEBUG(301, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '\'':      goto yy380;
-       default:        goto yy83;
+       case 'e':       goto yy119;
+       case 'i':       goto yy100;
+       default:        goto yy88;
        }
 yy302:
        YYDEBUG(302, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '"':       goto yy382;
-       case '\'':      goto yy380;
-       default:        goto yy83;
+       case '\'':      goto yy381;
+       default:        goto yy88;
        }
 yy303:
        YYDEBUG(303, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
+       case '"':       goto yy383;
+       case '\'':      goto yy381;
+       default:        goto yy88;
+       }
+yy304:
+       YYDEBUG(304, YYPEEK ());
+       YYSKIP ();
+       yych = YYPEEK ();
+       switch (yych) {
        case 0x80:
        case 0x81:
        case 0x82:
@@ -8388,11 +8208,11 @@ yy303:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy301;
-       default:        goto yy83;
+       case 0xBF:      goto yy302;
+       default:        goto yy88;
        }
-yy304:
-       YYDEBUG(304, YYPEEK ());
+yy305:
+       YYDEBUG(305, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -8427,11 +8247,11 @@ yy304:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy303;
-       default:        goto yy83;
+       case 0xBF:      goto yy304;
+       default:        goto yy88;
        }
-yy305:
-       YYDEBUG(305, YYPEEK ());
+yy306:
+       YYDEBUG(306, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -8498,11 +8318,11 @@ yy305:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy303;
-       default:        goto yy83;
+       case 0xBF:      goto yy304;
+       default:        goto yy88;
        }
-yy306:
-       YYDEBUG(306, YYPEEK ());
+yy307:
+       YYDEBUG(307, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -8553,11 +8373,11 @@ yy306:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy305;
-       default:        goto yy83;
+       case 0xBF:      goto yy306;
+       default:        goto yy88;
        }
-yy307:
-       YYDEBUG(307, YYPEEK ());
+yy308:
+       YYDEBUG(308, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -8624,11 +8444,11 @@ yy307:
        case 0xBC:
        case 0xBD:
        case 0xBE:
-       case 0xBF:      goto yy305;
-       default:        goto yy83;
+       case 0xBF:      goto yy306;
+       default:        goto yy88;
        }
-yy308:
-       YYDEBUG(308, YYPEEK ());
+yy309:
+       YYDEBUG(309, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -8647,17 +8467,17 @@ yy308:
        case 0x8C:
        case 0x8D:
        case 0x8E:
-       case 0x8F:      goto yy305;
-       default:        goto yy83;
+       case 0x8F:      goto yy306;
+       default:        goto yy88;
        }
-yy309:
-       YYDEBUG(309, YYPEEK ());
-       YYSKIP ();
-       yych = YYPEEK ();
 yy310:
        YYDEBUG(310, YYPEEK ());
+       YYSKIP ();
+       yych = YYPEEK ();
+yy311:
+       YYDEBUG(311, YYPEEK ());
        switch (yych) {
-       case '"':       goto yy383;
+       case '"':       goto yy384;
        case '0':
        case '1':
        case '2':
@@ -8679,24 +8499,13 @@ yy310:
        case 'c':
        case 'd':
        case 'e':
-       case 'f':       goto yy309;
-       default:        goto yy83;
+       case 'f':       goto yy310;
+       default:        goto yy88;
        }
-yy311:
-       YYDEBUG(311, YYPEEK ());
-       YYSKIP ();
-       goto yy39;
 yy312:
        YYDEBUG(312, YYPEEK ());
-       yyaccept = 1;
        YYSKIP ();
-       YYBACKUP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case 'T':
-       case 't':       goto yy384;
-       default:        goto yy15;
-       }
+       goto yy39;
 yy313:
        YYDEBUG(313, YYPEEK ());
        yyaccept = 1;
@@ -8704,8 +8513,8 @@ yy313:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'R':
-       case 'r':       goto yy386;
+       case 'T':
+       case 't':       goto yy385;
        default:        goto yy15;
        }
 yy314:
@@ -8715,10 +8524,8 @@ yy314:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'P':
-       case 'p':       goto yy387;
-       case 'S':
-       case 's':       goto yy388;
+       case 'R':
+       case 'r':       goto yy387;
        default:        goto yy15;
        }
 yy315:
@@ -8728,6 +8535,8 @@ yy315:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
+       case 'P':
+       case 'p':       goto yy388;
        case 'S':
        case 's':       goto yy389;
        default:        goto yy15;
@@ -8739,8 +8548,8 @@ yy316:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'Y':
-       case 'y':       goto yy390;
+       case 'S':
+       case 's':       goto yy390;
        default:        goto yy15;
        }
 yy317:
@@ -8750,13 +8559,24 @@ yy317:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'N':
-       case 'n':       goto yy392;
+       case 'Y':
+       case 'y':       goto yy391;
        default:        goto yy15;
        }
 yy318:
        YYDEBUG(318, YYPEEK ());
-       yyaccept = 26;
+       yyaccept = 1;
+       YYSKIP ();
+       YYBACKUP ();
+       yych = YYPEEK ();
+       switch (yych) {
+       case 'N':
+       case 'n':       goto yy393;
+       default:        goto yy15;
+       }
+yy319:
+       YYDEBUG(319, YYPEEK ());
+       yyaccept = 27;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -8876,16 +8696,16 @@ yy318:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy319;
+       default:        goto yy320;
        }
-yy319:
-       YYDEBUG(319, YYPEEK ());
-#line 281 "../ada.re2c"
-       {*id =  14; continue;}
-#line 8886 "../ada_re2c.c"
 yy320:
        YYDEBUG(320, YYPEEK ());
-       yyaccept = 27;
+#line 284 "../ada.re2c"
+       {*id =  14; continue;}
+#line 8706 "../ada_re2c.c"
+yy321:
+       YYDEBUG(321, YYPEEK ());
+       yyaccept = 28;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -9005,71 +8825,71 @@ yy320:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy321;
+       default:        goto yy322;
        }
-yy321:
-       YYDEBUG(321, YYPEEK ());
-#line 282 "../ada.re2c"
-       {*id =  15; continue;}
-#line 9015 "../ada_re2c.c"
 yy322:
        YYDEBUG(322, YYPEEK ());
+#line 285 "../ada.re2c"
+       {*id =  15; continue;}
+#line 8835 "../ada_re2c.c"
+yy323:
+       YYDEBUG(323, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'T':
-       case 't':       goto yy394;
+       case 't':       goto yy395;
        default:        goto yy15;
        }
-yy323:
-       YYDEBUG(323, YYPEEK ());
+yy324:
+       YYDEBUG(324, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'A':
-       case 'a':       goto yy395;
+       case 'a':       goto yy396;
        default:        goto yy15;
        }
-yy324:
-       YYDEBUG(324, YYPEEK ());
+yy325:
+       YYDEBUG(325, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'Y':
-       case 'y':       goto yy396;
+       case 'y':       goto yy397;
        default:        goto yy15;
        }
-yy325:
-       YYDEBUG(325, YYPEEK ());
+yy326:
+       YYDEBUG(326, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'A':
-       case 'a':       goto yy398;
+       case 'a':       goto yy399;
        default:        goto yy15;
        }
-yy326:
-       YYDEBUG(326, YYPEEK ());
+yy327:
+       YYDEBUG(327, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'T':
-       case 't':       goto yy400;
+       case 't':       goto yy401;
        default:        goto yy15;
        }
-yy327:
-       YYDEBUG(327, YYPEEK ());
-       yyaccept = 28;
+yy328:
+       YYDEBUG(328, YYPEEK ());
+       yyaccept = 29;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -9189,49 +9009,49 @@ yy327:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy328;
+       default:        goto yy329;
        }
-yy328:
-       YYDEBUG(328, YYPEEK ());
-#line 289 "../ada.re2c"
-       {*id =  22; continue;}
-#line 9199 "../ada_re2c.c"
 yy329:
        YYDEBUG(329, YYPEEK ());
+#line 292 "../ada.re2c"
+       {*id =  22; continue;}
+#line 9019 "../ada_re2c.c"
+yy330:
+       YYDEBUG(330, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'F':
-       case 'f':       goto yy401;
+       case 'f':       goto yy402;
        default:        goto yy15;
        }
-yy330:
-       YYDEBUG(330, YYPEEK ());
+yy331:
+       YYDEBUG(331, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'Y':
-       case 'y':       goto yy403;
+       case 'y':       goto yy404;
        default:        goto yy15;
        }
-yy331:
-       YYDEBUG(331, YYPEEK ());
+yy332:
+       YYDEBUG(332, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'P':
-       case 'p':       goto yy405;
+       case 'p':       goto yy406;
        default:        goto yy15;
        }
-yy332:
-       YYDEBUG(332, YYPEEK ());
-       yyaccept = 29;
+yy333:
+       YYDEBUG(333, YYPEEK ());
+       yyaccept = 30;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -9351,38 +9171,38 @@ yy332:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy333;
+       default:        goto yy334;
        }
-yy333:
-       YYDEBUG(333, YYPEEK ());
-#line 294 "../ada.re2c"
-       {*id =  27; continue;}
-#line 9361 "../ada_re2c.c"
 yy334:
        YYDEBUG(334, YYPEEK ());
+#line 297 "../ada.re2c"
+       {*id =  27; continue;}
+#line 9181 "../ada_re2c.c"
+yy335:
+       YYDEBUG(335, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'T':
-       case 't':       goto yy406;
+       case 't':       goto yy407;
        default:        goto yy15;
        }
-yy335:
-       YYDEBUG(335, YYPEEK ());
+yy336:
+       YYDEBUG(336, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'R':
-       case 'r':       goto yy407;
+       case 'r':       goto yy408;
        default:        goto yy15;
        }
-yy336:
-       YYDEBUG(336, YYPEEK ());
-       yyaccept = 30;
+yy337:
+       YYDEBUG(337, YYPEEK ());
+       yyaccept = 31;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -9502,38 +9322,38 @@ yy336:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy337;
+       default:        goto yy338;
        }
-yy337:
-       YYDEBUG(337, YYPEEK ());
-#line 298 "../ada.re2c"
-       {*id =  31; continue;}
-#line 9512 "../ada_re2c.c"
 yy338:
        YYDEBUG(338, YYPEEK ());
+#line 301 "../ada.re2c"
+       {*id =  31; continue;}
+#line 9332 "../ada_re2c.c"
+yy339:
+       YYDEBUG(339, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'R':
-       case 'r':       goto yy408;
+       case 'r':       goto yy409;
        default:        goto yy15;
        }
-yy339:
-       YYDEBUG(339, YYPEEK ());
+yy340:
+       YYDEBUG(340, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'T':
-       case 't':       goto yy409;
+       case 't':       goto yy410;
        default:        goto yy15;
        }
-yy340:
-       YYDEBUG(340, YYPEEK ());
-       yyaccept = 31;
+yy341:
+       YYDEBUG(341, YYPEEK ());
+       yyaccept = 32;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -9653,16 +9473,16 @@ yy340:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy341;
+       default:        goto yy342;
        }
-yy341:
-       YYDEBUG(341, YYPEEK ());
-#line 304 "../ada.re2c"
-       {*id =  37; continue;}
-#line 9663 "../ada_re2c.c"
 yy342:
        YYDEBUG(342, YYPEEK ());
-       yyaccept = 32;
+#line 307 "../ada.re2c"
+       {*id =  37; continue;}
+#line 9483 "../ada_re2c.c"
+yy343:
+       YYDEBUG(343, YYPEEK ());
+       yyaccept = 33;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -9782,24 +9602,13 @@ yy342:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy343;
+       default:        goto yy344;
        }
-yy343:
-       YYDEBUG(343, YYPEEK ());
-#line 308 "../ada.re2c"
-       {*id =  41; continue;}
-#line 9792 "../ada_re2c.c"
 yy344:
        YYDEBUG(344, YYPEEK ());
-       yyaccept = 1;
-       YYSKIP ();
-       YYBACKUP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case 'R':
-       case 'r':       goto yy410;
-       default:        goto yy15;
-       }
+#line 311 "../ada.re2c"
+       {*id =  41; continue;}
+#line 9612 "../ada_re2c.c"
 yy345:
        YYDEBUG(345, YYPEEK ());
        yyaccept = 1;
@@ -9818,8 +9627,8 @@ yy346:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'A':
-       case 'a':       goto yy412;
+       case 'R':
+       case 'r':       goto yy412;
        default:        goto yy15;
        }
 yy347:
@@ -9829,8 +9638,8 @@ yy347:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'M':
-       case 'm':       goto yy413;
+       case 'A':
+       case 'a':       goto yy413;
        default:        goto yy15;
        }
 yy348:
@@ -9840,8 +9649,8 @@ yy348:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'A':
-       case 'a':       goto yy414;
+       case 'M':
+       case 'm':       goto yy414;
        default:        goto yy15;
        }
 yy349:
@@ -9851,8 +9660,8 @@ yy349:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'E':
-       case 'e':       goto yy415;
+       case 'A':
+       case 'a':       goto yy415;
        default:        goto yy15;
        }
 yy350:
@@ -9885,7 +9694,7 @@ yy352:
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy419;
+       case 'e':       goto yy418;
        default:        goto yy15;
        }
 yy353:
@@ -9895,8 +9704,8 @@ yy353:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'R':
-       case 'r':       goto yy421;
+       case 'E':
+       case 'e':       goto yy420;
        default:        goto yy15;
        }
 yy354:
@@ -9906,8 +9715,8 @@ yy354:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'M':
-       case 'm':       goto yy422;
+       case 'R':
+       case 'r':       goto yy422;
        default:        goto yy15;
        }
 yy355:
@@ -9917,8 +9726,8 @@ yy355:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'E':
-       case 'e':       goto yy423;
+       case 'M':
+       case 'm':       goto yy423;
        default:        goto yy15;
        }
 yy356:
@@ -9928,8 +9737,8 @@ yy356:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'R':
-       case 'r':       goto yy424;
+       case 'E':
+       case 'e':       goto yy424;
        default:        goto yy15;
        }
 yy357:
@@ -9950,8 +9759,8 @@ yy358:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'C':
-       case 'c':       goto yy426;
+       case 'R':
+       case 'r':       goto yy426;
        default:        goto yy15;
        }
 yy359:
@@ -9961,13 +9770,24 @@ yy359:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'R':
-       case 'r':       goto yy427;
+       case 'C':
+       case 'c':       goto yy427;
        default:        goto yy15;
        }
 yy360:
        YYDEBUG(360, YYPEEK ());
-       yyaccept = 33;
+       yyaccept = 1;
+       YYSKIP ();
+       YYBACKUP ();
+       yych = YYPEEK ();
+       switch (yych) {
+       case 'R':
+       case 'r':       goto yy428;
+       default:        goto yy15;
+       }
+yy361:
+       YYDEBUG(361, YYPEEK ());
+       yyaccept = 34;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -10087,49 +9907,49 @@ yy360:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy361;
+       default:        goto yy362;
        }
-yy361:
-       YYDEBUG(361, YYPEEK ());
-#line 329 "../ada.re2c"
-       {*id =  62; continue;}
-#line 10097 "../ada_re2c.c"
 yy362:
        YYDEBUG(362, YYPEEK ());
+#line 332 "../ada.re2c"
+       {*id =  62; continue;}
+#line 9917 "../ada_re2c.c"
+yy363:
+       YYDEBUG(363, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'Y':
-       case 'y':       goto yy428;
+       case 'y':       goto yy429;
        default:        goto yy15;
        }
-yy363:
-       YYDEBUG(363, YYPEEK ());
+yy364:
+       YYDEBUG(364, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'H':
-       case 'h':       goto yy429;
+       case 'h':       goto yy430;
        default:        goto yy15;
        }
-yy364:
-       YYDEBUG(364, YYPEEK ());
+yy365:
+       YYDEBUG(365, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy430;
+       case 'e':       goto yy431;
        default:        goto yy15;
        }
-yy365:
-       YYDEBUG(365, YYPEEK ());
-       yyaccept = 34;
+yy366:
+       YYDEBUG(366, YYPEEK ());
+       yyaccept = 35;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -10249,27 +10069,27 @@ yy365:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy366;
+       default:        goto yy367;
        }
-yy366:
-       YYDEBUG(366, YYPEEK ());
-#line 333 "../ada.re2c"
-       {*id =  66; continue;}
-#line 10259 "../ada_re2c.c"
 yy367:
        YYDEBUG(367, YYPEEK ());
+#line 336 "../ada.re2c"
+       {*id =  66; continue;}
+#line 10079 "../ada_re2c.c"
+yy368:
+       YYDEBUG(368, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'I':
-       case 'i':       goto yy431;
+       case 'i':       goto yy432;
        default:        goto yy15;
        }
-yy368:
-       YYDEBUG(368, YYPEEK ());
-       yyaccept = 35;
+yy369:
+       YYDEBUG(369, YYPEEK ());
+       yyaccept = 36;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -10389,16 +10209,16 @@ yy368:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy369;
+       default:        goto yy370;
        }
-yy369:
-       YYDEBUG(369, YYPEEK ());
-#line 335 "../ada.re2c"
-       {*id =  68; continue;}
-#line 10399 "../ada_re2c.c"
 yy370:
        YYDEBUG(370, YYPEEK ());
-       yyaccept = 36;
+#line 338 "../ada.re2c"
+       {*id =  68; continue;}
+#line 10219 "../ada_re2c.c"
+yy371:
+       YYDEBUG(371, YYPEEK ());
+       yyaccept = 37;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -10518,27 +10338,27 @@ yy370:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy371;
+       default:        goto yy372;
        }
-yy371:
-       YYDEBUG(371, YYPEEK ());
-#line 336 "../ada.re2c"
-       {*id =  69; continue;}
-#line 10528 "../ada_re2c.c"
 yy372:
        YYDEBUG(372, YYPEEK ());
+#line 339 "../ada.re2c"
+       {*id =  69; continue;}
+#line 10348 "../ada_re2c.c"
+yy373:
+       YYDEBUG(373, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'L':
-       case 'l':       goto yy432;
+       case 'l':       goto yy433;
        default:        goto yy15;
        }
-yy373:
-       YYDEBUG(373, YYPEEK ());
-       yyaccept = 37;
+yy374:
+       YYDEBUG(374, YYPEEK ());
+       yyaccept = 38;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -10658,27 +10478,27 @@ yy373:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy374;
+       default:        goto yy375;
        }
-yy374:
-       YYDEBUG(374, YYPEEK ());
-#line 339 "../ada.re2c"
-       {*id =  72; continue;}
-#line 10668 "../ada_re2c.c"
 yy375:
        YYDEBUG(375, YYPEEK ());
+#line 342 "../ada.re2c"
+       {*id =  72; continue;}
+#line 10488 "../ada_re2c.c"
+yy376:
+       YYDEBUG(376, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy434;
+       case 'e':       goto yy435;
        default:        goto yy15;
        }
-yy376:
-       YYDEBUG(376, YYPEEK ());
-       yyaccept = 38;
+yy377:
+       YYDEBUG(377, YYPEEK ());
+       yyaccept = 39;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -10798,56 +10618,56 @@ yy376:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy377;
+       default:        goto yy378;
        }
-yy377:
-       YYDEBUG(377, YYPEEK ());
-#line 341 "../ada.re2c"
-       {*id =  74; continue;}
-#line 10808 "../ada_re2c.c"
 yy378:
        YYDEBUG(378, YYPEEK ());
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case ']':       goto yy14;
-       default:        goto yy83;
-       }
+#line 344 "../ada.re2c"
+       {*id =  74; continue;}
+#line 10628 "../ada_re2c.c"
 yy379:
        YYDEBUG(379, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case ']':       goto yy81;
-       default:        goto yy83;
+       case ']':       goto yy14;
+       default:        goto yy88;
        }
 yy380:
        YYDEBUG(380, YYPEEK ());
        YYSKIP ();
-       YYDEBUG(381, YYPEEK ());
-       YYRESTORECTX ();
-#line 370 "../ada.re2c"
-       {*id =  103; continue;}
-#line 10832 "../ada_re2c.c"
-yy382:
-       YYDEBUG(382, YYPEEK ());
-       YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case '"':       goto yy83;
-       default:        goto yy437;
+       case ']':       goto yy86;
+       default:        goto yy88;
        }
+yy381:
+       YYDEBUG(381, YYPEEK ());
+       YYSKIP ();
+       YYDEBUG(382, YYPEEK ());
+       YYRESTORECTX ();
+#line 375 "../ada.re2c"
+       {*id =  105; continue;}
+#line 10652 "../ada_re2c.c"
 yy383:
        YYDEBUG(383, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case ']':       goto yy103;
-       default:        goto yy83;
+       case '"':       goto yy88;
+       default:        goto yy438;
        }
 yy384:
        YYDEBUG(384, YYPEEK ());
-       yyaccept = 39;
+       YYSKIP ();
+       yych = YYPEEK ();
+       switch (yych) {
+       case ']':       goto yy108;
+       default:        goto yy88;
+       }
+yy385:
+       YYDEBUG(385, YYPEEK ());
+       yyaccept = 40;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -10967,60 +10787,60 @@ yy384:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy385;
+       default:        goto yy386;
        }
-yy385:
-       YYDEBUG(385, YYPEEK ());
-#line 272 "../ada.re2c"
-       {*id =  5; continue;}
-#line 10977 "../ada_re2c.c"
 yy386:
        YYDEBUG(386, YYPEEK ());
+#line 275 "../ada.re2c"
+       {*id =  5; continue;}
+#line 10797 "../ada_re2c.c"
+yy387:
+       YYDEBUG(387, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'A':
-       case 'a':       goto yy438;
+       case 'a':       goto yy439;
        default:        goto yy15;
        }
-yy387:
-       YYDEBUG(387, YYPEEK ());
+yy388:
+       YYDEBUG(388, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'T':
-       case 't':       goto yy439;
+       case 't':       goto yy440;
        default:        goto yy15;
        }
-yy388:
-       YYDEBUG(388, YYPEEK ());
+yy389:
+       YYDEBUG(389, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'S':
-       case 's':       goto yy441;
+       case 's':       goto yy442;
        default:        goto yy15;
        }
-yy389:
-       YYDEBUG(389, YYPEEK ());
+yy390:
+       YYDEBUG(390, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy443;
+       case 'e':       goto yy444;
        default:        goto yy15;
        }
-yy390:
-       YYDEBUG(390, YYPEEK ());
-       yyaccept = 40;
+yy391:
+       YYDEBUG(391, YYPEEK ());
+       yyaccept = 41;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -11140,16 +10960,16 @@ yy390:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy391;
+       default:        goto yy392;
        }
-yy391:
-       YYDEBUG(391, YYPEEK ());
-#line 278 "../ada.re2c"
-       {*id =  11; continue;}
-#line 11150 "../ada_re2c.c"
 yy392:
        YYDEBUG(392, YYPEEK ());
-       yyaccept = 41;
+#line 281 "../ada.re2c"
+       {*id =  11; continue;}
+#line 10970 "../ada_re2c.c"
+yy393:
+       YYDEBUG(393, YYPEEK ());
+       yyaccept = 42;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -11269,38 +11089,38 @@ yy392:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy393;
+       default:        goto yy394;
        }
-yy393:
-       YYDEBUG(393, YYPEEK ());
-#line 280 "../ada.re2c"
-       {*id =  13; continue;}
-#line 11279 "../ada_re2c.c"
 yy394:
        YYDEBUG(394, YYPEEK ());
+#line 283 "../ada.re2c"
+       {*id =  13; continue;}
+#line 11099 "../ada_re2c.c"
+yy395:
+       YYDEBUG(395, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'A':
-       case 'a':       goto yy444;
+       case 'a':       goto yy445;
        default:        goto yy15;
        }
-yy395:
-       YYDEBUG(395, YYPEEK ());
+yy396:
+       YYDEBUG(396, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'R':
-       case 'r':       goto yy445;
+       case 'r':       goto yy446;
        default:        goto yy15;
        }
-yy396:
-       YYDEBUG(396, YYPEEK ());
-       yyaccept = 42;
+yy397:
+       YYDEBUG(397, YYPEEK ());
+       yyaccept = 43;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -11420,16 +11240,16 @@ yy396:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy397;
+       default:        goto yy398;
        }
-yy397:
-       YYDEBUG(397, YYPEEK ());
-#line 285 "../ada.re2c"
-       {*id =  18; continue;}
-#line 11430 "../ada_re2c.c"
 yy398:
        YYDEBUG(398, YYPEEK ());
-       yyaccept = 43;
+#line 288 "../ada.re2c"
+       {*id =  18; continue;}
+#line 11250 "../ada_re2c.c"
+yy399:
+       YYDEBUG(399, YYPEEK ());
+       yyaccept = 44;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -11549,27 +11369,27 @@ yy398:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy399;
+       default:        goto yy400;
        }
-yy399:
-       YYDEBUG(399, YYPEEK ());
-#line 286 "../ada.re2c"
-       {*id =  19; continue;}
-#line 11559 "../ada_re2c.c"
 yy400:
        YYDEBUG(400, YYPEEK ());
+#line 289 "../ada.re2c"
+       {*id =  19; continue;}
+#line 11379 "../ada_re2c.c"
+yy401:
+       YYDEBUG(401, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'S':
-       case 's':       goto yy446;
+       case 's':       goto yy447;
        default:        goto yy15;
        }
-yy401:
-       YYDEBUG(401, YYPEEK ());
-       yyaccept = 44;
+yy402:
+       YYDEBUG(402, YYPEEK ());
+       yyaccept = 45;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -11689,16 +11509,16 @@ yy401:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy402;
+       default:        goto yy403;
        }
-yy402:
-       YYDEBUG(402, YYPEEK ());
-#line 290 "../ada.re2c"
-       {*id =  23; continue;}
-#line 11699 "../ada_re2c.c"
 yy403:
        YYDEBUG(403, YYPEEK ());
-       yyaccept = 45;
+#line 293 "../ada.re2c"
+       {*id =  23; continue;}
+#line 11519 "../ada_re2c.c"
+yy404:
+       YYDEBUG(404, YYPEEK ());
+       yyaccept = 46;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -11818,24 +11638,13 @@ yy403:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy404;
+       default:        goto yy405;
        }
-yy404:
-       YYDEBUG(404, YYPEEK ());
-#line 292 "../ada.re2c"
-       {*id =  25; continue;}
-#line 11828 "../ada_re2c.c"
 yy405:
        YYDEBUG(405, YYPEEK ());
-       yyaccept = 1;
-       YYSKIP ();
-       YYBACKUP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case 'T':
-       case 't':       goto yy448;
-       default:        goto yy15;
-       }
+#line 295 "../ada.re2c"
+       {*id =  25; continue;}
+#line 11648 "../ada_re2c.c"
 yy406:
        YYDEBUG(406, YYPEEK ());
        yyaccept = 1;
@@ -11843,8 +11652,8 @@ yy406:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'I':
-       case 'i':       goto yy449;
+       case 'T':
+       case 't':       goto yy449;
        default:        goto yy15;
        }
 yy407:
@@ -11865,8 +11674,8 @@ yy408:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'F':
-       case 'f':       goto yy451;
+       case 'I':
+       case 'i':       goto yy451;
        default:        goto yy15;
        }
 yy409:
@@ -11876,8 +11685,8 @@ yy409:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'E':
-       case 'e':       goto yy452;
+       case 'F':
+       case 'f':       goto yy452;
        default:        goto yy15;
        }
 yy410:
@@ -11887,8 +11696,8 @@ yy410:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'S':
-       case 's':       goto yy453;
+       case 'E':
+       case 'e':       goto yy453;
        default:        goto yy15;
        }
 yy411:
@@ -11898,8 +11707,8 @@ yy411:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'I':
-       case 'i':       goto yy455;
+       case 'S':
+       case 's':       goto yy454;
        default:        goto yy15;
        }
 yy412:
@@ -11909,8 +11718,8 @@ yy412:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'G':
-       case 'g':       goto yy456;
+       case 'I':
+       case 'i':       goto yy456;
        default:        goto yy15;
        }
 yy413:
@@ -11920,8 +11729,8 @@ yy413:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'A':
-       case 'a':       goto yy457;
+       case 'G':
+       case 'g':       goto yy457;
        default:        goto yy15;
        }
 yy414:
@@ -11931,8 +11740,8 @@ yy414:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'T':
-       case 't':       goto yy459;
+       case 'A':
+       case 'a':       goto yy458;
        default:        goto yy15;
        }
 yy415:
@@ -11942,8 +11751,8 @@ yy415:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'D':
-       case 'd':       goto yy460;
+       case 'T':
+       case 't':       goto yy460;
        default:        goto yy15;
        }
 yy416:
@@ -11953,13 +11762,24 @@ yy416:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'C':
-       case 'c':       goto yy461;
+       case 'D':
+       case 'd':       goto yy461;
        default:        goto yy15;
        }
 yy417:
        YYDEBUG(417, YYPEEK ());
-       yyaccept = 46;
+       yyaccept = 1;
+       YYSKIP ();
+       YYBACKUP ();
+       yych = YYPEEK ();
+       switch (yych) {
+       case 'C':
+       case 'c':       goto yy462;
+       default:        goto yy15;
+       }
+yy418:
+       YYDEBUG(418, YYPEEK ());
+       yyaccept = 47;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -12079,16 +11899,16 @@ yy417:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy418;
+       default:        goto yy419;
        }
-yy418:
-       YYDEBUG(418, YYPEEK ());
-#line 319 "../ada.re2c"
-       {*id =  52; continue;}
-#line 12089 "../ada_re2c.c"
 yy419:
        YYDEBUG(419, YYPEEK ());
-       yyaccept = 47;
+#line 322 "../ada.re2c"
+       {*id =  52; continue;}
+#line 11909 "../ada_re2c.c"
+yy420:
+       YYDEBUG(420, YYPEEK ());
+       yyaccept = 48;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -12208,24 +12028,13 @@ yy419:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy420;
+       default:        goto yy421;
        }
-yy420:
-       YYDEBUG(420, YYPEEK ());
-#line 320 "../ada.re2c"
-       {*id =  53; continue;}
-#line 12218 "../ada_re2c.c"
 yy421:
        YYDEBUG(421, YYPEEK ());
-       yyaccept = 1;
-       YYSKIP ();
-       YYBACKUP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case 'D':
-       case 'd':       goto yy462;
-       default:        goto yy15;
-       }
+#line 323 "../ada.re2c"
+       {*id =  53; continue;}
+#line 12038 "../ada_re2c.c"
 yy422:
        YYDEBUG(422, YYPEEK ());
        yyaccept = 1;
@@ -12233,8 +12042,8 @@ yy422:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'E':
-       case 'e':       goto yy464;
+       case 'D':
+       case 'd':       goto yy463;
        default:        goto yy15;
        }
 yy423:
@@ -12244,8 +12053,8 @@ yy423:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'U':
-       case 'u':       goto yy465;
+       case 'E':
+       case 'e':       goto yy465;
        default:        goto yy15;
        }
 yy424:
@@ -12255,8 +12064,8 @@ yy424:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'N':
-       case 'n':       goto yy466;
+       case 'U':
+       case 'u':       goto yy466;
        default:        goto yy15;
        }
 yy425:
@@ -12266,8 +12075,8 @@ yy425:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'S':
-       case 's':       goto yy468;
+       case 'N':
+       case 'n':       goto yy467;
        default:        goto yy15;
        }
 yy426:
@@ -12277,8 +12086,8 @@ yy426:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'T':
-       case 't':       goto yy469;
+       case 'S':
+       case 's':       goto yy469;
        default:        goto yy15;
        }
 yy427:
@@ -12288,8 +12097,8 @@ yy427:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'A':
-       case 'a':       goto yy471;
+       case 'T':
+       case 't':       goto yy470;
        default:        goto yy15;
        }
 yy428:
@@ -12299,8 +12108,8 @@ yy428:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'P':
-       case 'p':       goto yy472;
+       case 'A':
+       case 'a':       goto yy472;
        default:        goto yy15;
        }
 yy429:
@@ -12310,8 +12119,8 @@ yy429:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'R':
-       case 'r':       goto yy473;
+       case 'P':
+       case 'p':       goto yy473;
        default:        goto yy15;
        }
 yy430:
@@ -12321,8 +12130,8 @@ yy430:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
-       case 'D':
-       case 'd':       goto yy474;
+       case 'R':
+       case 'r':       goto yy474;
        default:        goto yy15;
        }
 yy431:
@@ -12332,13 +12141,24 @@ yy431:
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
+       case 'D':
+       case 'd':       goto yy475;
+       default:        goto yy15;
+       }
+yy432:
+       YYDEBUG(432, YYPEEK ());
+       yyaccept = 1;
+       YYSKIP ();
+       YYBACKUP ();
+       yych = YYPEEK ();
+       switch (yych) {
        case 'N':
-       case 'n':       goto yy476;
+       case 'n':       goto yy477;
        default:        goto yy15;
        }
-yy432:
-       YYDEBUG(432, YYPEEK ());
-       yyaccept = 48;
+yy433:
+       YYDEBUG(433, YYPEEK ());
+       yyaccept = 49;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -12458,16 +12278,16 @@ yy432:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy433;
+       default:        goto yy434;
        }
-yy433:
-       YYDEBUG(433, YYPEEK ());
-#line 337 "../ada.re2c"
-       {*id =  70; continue;}
-#line 12468 "../ada_re2c.c"
 yy434:
        YYDEBUG(434, YYPEEK ());
-       yyaccept = 49;
+#line 340 "../ada.re2c"
+       {*id =  70; continue;}
+#line 12288 "../ada_re2c.c"
+yy435:
+       YYDEBUG(435, YYPEEK ());
+       yyaccept = 50;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -12587,21 +12407,21 @@ yy434:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy435;
+       default:        goto yy436;
        }
-yy435:
-       YYDEBUG(435, YYPEEK ());
-#line 340 "../ada.re2c"
-       {*id =  73; continue;}
-#line 12597 "../ada_re2c.c"
 yy436:
        YYDEBUG(436, YYPEEK ());
-       YYSKIP ();
-       yych = YYPEEK ();
+#line 343 "../ada.re2c"
+       {*id =  73; continue;}
+#line 12417 "../ada_re2c.c"
 yy437:
        YYDEBUG(437, YYPEEK ());
+       YYSKIP ();
+       yych = YYPEEK ();
+yy438:
+       YYDEBUG(438, YYPEEK ());
        switch (yych) {
-       case '"':       goto yy477;
+       case '"':       goto yy478;
        case '0':
        case '1':
        case '2':
@@ -12623,23 +12443,23 @@ yy437:
        case 'c':
        case 'd':
        case 'e':
-       case 'f':       goto yy436;
-       default:        goto yy83;
+       case 'f':       goto yy437;
+       default:        goto yy88;
        }
-yy438:
-       YYDEBUG(438, YYPEEK ());
+yy439:
+       YYDEBUG(439, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'C':
-       case 'c':       goto yy478;
+       case 'c':       goto yy479;
        default:        goto yy15;
        }
-yy439:
-       YYDEBUG(439, YYPEEK ());
-       yyaccept = 50;
+yy440:
+       YYDEBUG(440, YYPEEK ());
+       yyaccept = 51;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -12759,16 +12579,16 @@ yy439:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy440;
+       default:        goto yy441;
        }
-yy440:
-       YYDEBUG(440, YYPEEK ());
-#line 271 "../ada.re2c"
-       {*id =  4; continue;}
-#line 12769 "../ada_re2c.c"
 yy441:
        YYDEBUG(441, YYPEEK ());
-       yyaccept = 51;
+#line 274 "../ada.re2c"
+       {*id =  4; continue;}
+#line 12589 "../ada_re2c.c"
+yy442:
+       YYDEBUG(442, YYPEEK ());
+       yyaccept = 52;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -12888,49 +12708,49 @@ yy441:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy442;
+       default:        goto yy443;
        }
-yy442:
-       YYDEBUG(442, YYPEEK ());
-#line 274 "../ada.re2c"
-       {*id =  7; continue;}
-#line 12898 "../ada_re2c.c"
 yy443:
        YYDEBUG(443, YYPEEK ());
+#line 277 "../ada.re2c"
+       {*id =  7; continue;}
+#line 12718 "../ada_re2c.c"
+yy444:
+       YYDEBUG(444, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'D':
-       case 'd':       goto yy479;
+       case 'd':       goto yy480;
        default:        goto yy15;
        }
-yy444:
-       YYDEBUG(444, YYPEEK ());
+yy445:
+       YYDEBUG(445, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'N':
-       case 'n':       goto yy481;
+       case 'n':       goto yy482;
        default:        goto yy15;
        }
-yy445:
-       YYDEBUG(445, YYPEEK ());
+yy446:
+       YYDEBUG(446, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy482;
+       case 'e':       goto yy483;
        default:        goto yy15;
        }
-yy446:
-       YYDEBUG(446, YYPEEK ());
-       yyaccept = 52;
+yy447:
+       YYDEBUG(447, YYPEEK ());
+       yyaccept = 53;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -13050,71 +12870,71 @@ yy446:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy447;
+       default:        goto yy448;
        }
-yy447:
-       YYDEBUG(447, YYPEEK ());
-#line 287 "../ada.re2c"
-       {*id =  20; continue;}
-#line 13060 "../ada_re2c.c"
 yy448:
        YYDEBUG(448, YYPEEK ());
+#line 290 "../ada.re2c"
+       {*id =  20; continue;}
+#line 12880 "../ada_re2c.c"
+yy449:
+       YYDEBUG(449, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'I':
-       case 'i':       goto yy484;
+       case 'i':       goto yy485;
        default:        goto yy15;
        }
-yy449:
-       YYDEBUG(449, YYPEEK ());
+yy450:
+       YYDEBUG(450, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'O':
-       case 'o':       goto yy485;
+       case 'o':       goto yy486;
        default:        goto yy15;
        }
-yy450:
-       YYDEBUG(450, YYPEEK ());
+yy451:
+       YYDEBUG(451, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'C':
-       case 'c':       goto yy486;
+       case 'c':       goto yy487;
        default:        goto yy15;
        }
-yy451:
-       YYDEBUG(451, YYPEEK ());
+yy452:
+       YYDEBUG(452, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'A':
-       case 'a':       goto yy488;
+       case 'a':       goto yy489;
        default:        goto yy15;
        }
-yy452:
-       YYDEBUG(452, YYPEEK ());
+yy453:
+       YYDEBUG(453, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'D':
-       case 'd':       goto yy489;
+       case 'd':       goto yy490;
        default:        goto yy15;
        }
-yy453:
-       YYDEBUG(453, YYPEEK ());
-       yyaccept = 53;
+yy454:
+       YYDEBUG(454, YYPEEK ());
+       yyaccept = 54;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -13234,38 +13054,38 @@ yy453:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy454;
+       default:        goto yy455;
        }
-yy454:
-       YYDEBUG(454, YYPEEK ());
-#line 311 "../ada.re2c"
-       {*id =  44; continue;}
-#line 13244 "../ada_re2c.c"
 yy455:
        YYDEBUG(455, YYPEEK ());
+#line 314 "../ada.re2c"
+       {*id =  44; continue;}
+#line 13064 "../ada_re2c.c"
+yy456:
+       YYDEBUG(456, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'D':
-       case 'd':       goto yy491;
+       case 'd':       goto yy492;
        default:        goto yy15;
        }
-yy456:
-       YYDEBUG(456, YYPEEK ());
+yy457:
+       YYDEBUG(457, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy492;
+       case 'e':       goto yy493;
        default:        goto yy15;
        }
-yy457:
-       YYDEBUG(457, YYPEEK ());
-       yyaccept = 54;
+yy458:
+       YYDEBUG(458, YYPEEK ());
+       yyaccept = 55;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -13385,49 +13205,49 @@ yy457:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy458;
+       default:        goto yy459;
        }
-yy458:
-       YYDEBUG(458, YYPEEK ());
-#line 315 "../ada.re2c"
-       {*id =  48; continue;}
-#line 13395 "../ada_re2c.c"
 yy459:
        YYDEBUG(459, YYPEEK ());
+#line 318 "../ada.re2c"
+       {*id =  48; continue;}
+#line 13215 "../ada_re2c.c"
+yy460:
+       YYDEBUG(460, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy494;
+       case 'e':       goto yy495;
        default:        goto yy15;
        }
-yy460:
-       YYDEBUG(460, YYPEEK ());
+yy461:
+       YYDEBUG(461, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'U':
-       case 'u':       goto yy496;
+       case 'u':       goto yy497;
        default:        goto yy15;
        }
-yy461:
-       YYDEBUG(461, YYPEEK ());
+yy462:
+       YYDEBUG(462, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'T':
-       case 't':       goto yy497;
+       case 't':       goto yy498;
        default:        goto yy15;
        }
-yy462:
-       YYDEBUG(462, YYPEEK ());
-       yyaccept = 55;
+yy463:
+       YYDEBUG(463, YYPEEK ());
+       yyaccept = 56;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -13547,38 +13367,38 @@ yy462:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy463;
+       default:        goto yy464;
        }
-yy463:
-       YYDEBUG(463, YYPEEK ());
-#line 321 "../ada.re2c"
-       {*id =  54; continue;}
-#line 13557 "../ada_re2c.c"
 yy464:
        YYDEBUG(464, YYPEEK ());
+#line 324 "../ada.re2c"
+       {*id =  54; continue;}
+#line 13377 "../ada_re2c.c"
+yy465:
+       YYDEBUG(465, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'S':
-       case 's':       goto yy498;
+       case 's':       goto yy499;
        default:        goto yy15;
        }
-yy465:
-       YYDEBUG(465, YYPEEK ());
+yy466:
+       YYDEBUG(466, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy500;
+       case 'e':       goto yy501;
        default:        goto yy15;
        }
-yy466:
-       YYDEBUG(466, YYPEEK ());
-       yyaccept = 56;
+yy467:
+       YYDEBUG(467, YYPEEK ());
+       yyaccept = 57;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -13698,27 +13518,27 @@ yy466:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy467;
+       default:        goto yy468;
        }
-yy467:
-       YYDEBUG(467, YYPEEK ());
-#line 325 "../ada.re2c"
-       {*id =  58; continue;}
-#line 13708 "../ada_re2c.c"
 yy468:
        YYDEBUG(468, YYPEEK ());
+#line 328 "../ada.re2c"
+       {*id =  58; continue;}
+#line 13528 "../ada_re2c.c"
+yy469:
+       YYDEBUG(469, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy502;
+       case 'e':       goto yy503;
        default:        goto yy15;
        }
-yy469:
-       YYDEBUG(469, YYPEEK ());
-       yyaccept = 57;
+yy470:
+       YYDEBUG(470, YYPEEK ());
+       yyaccept = 58;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -13838,49 +13658,49 @@ yy469:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy470;
+       default:        goto yy471;
        }
-yy470:
-       YYDEBUG(470, YYPEEK ());
-#line 328 "../ada.re2c"
-       {*id =  61; continue;}
-#line 13848 "../ada_re2c.c"
 yy471:
        YYDEBUG(471, YYPEEK ());
+#line 331 "../ada.re2c"
+       {*id =  61; continue;}
+#line 13668 "../ada_re2c.c"
+yy472:
+       YYDEBUG(472, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'T':
-       case 't':       goto yy504;
+       case 't':       goto yy505;
        default:        goto yy15;
        }
-yy472:
-       YYDEBUG(472, YYPEEK ());
+yy473:
+       YYDEBUG(473, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy505;
+       case 'e':       goto yy506;
        default:        goto yy15;
        }
-yy473:
-       YYDEBUG(473, YYPEEK ());
+yy474:
+       YYDEBUG(474, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'O':
-       case 'o':       goto yy507;
+       case 'o':       goto yy508;
        default:        goto yy15;
        }
-yy474:
-       YYDEBUG(474, YYPEEK ());
-       yyaccept = 58;
+yy475:
+       YYDEBUG(475, YYPEEK ());
+       yyaccept = 59;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -14000,46 +13820,46 @@ yy474:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy475;
+       default:        goto yy476;
        }
-yy475:
-       YYDEBUG(475, YYPEEK ());
-#line 332 "../ada.re2c"
-       {*id =  65; continue;}
-#line 14010 "../ada_re2c.c"
 yy476:
        YYDEBUG(476, YYPEEK ());
+#line 335 "../ada.re2c"
+       {*id =  65; continue;}
+#line 13830 "../ada_re2c.c"
+yy477:
+       YYDEBUG(477, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'A':
-       case 'a':       goto yy508;
+       case 'a':       goto yy509;
        default:        goto yy15;
        }
-yy477:
-       YYDEBUG(477, YYPEEK ());
+yy478:
+       YYDEBUG(478, YYPEEK ());
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
-       case ']':       goto yy301;
-       default:        goto yy83;
+       case ']':       goto yy302;
+       default:        goto yy88;
        }
-yy478:
-       YYDEBUG(478, YYPEEK ());
+yy479:
+       YYDEBUG(479, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'T':
-       case 't':       goto yy509;
+       case 't':       goto yy510;
        default:        goto yy15;
        }
-yy479:
-       YYDEBUG(479, YYPEEK ());
-       yyaccept = 59;
+yy480:
+       YYDEBUG(480, YYPEEK ());
+       yyaccept = 60;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -14159,27 +13979,27 @@ yy479:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy480;
+       default:        goto yy481;
        }
-yy480:
-       YYDEBUG(480, YYPEEK ());
-#line 275 "../ada.re2c"
-       {*id =  8; continue;}
-#line 14169 "../ada_re2c.c"
 yy481:
        YYDEBUG(481, YYPEEK ());
+#line 278 "../ada.re2c"
+       {*id =  8; continue;}
+#line 13989 "../ada_re2c.c"
+yy482:
+       YYDEBUG(482, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'T':
-       case 't':       goto yy511;
+       case 't':       goto yy512;
        default:        goto yy15;
        }
-yy482:
-       YYDEBUG(482, YYPEEK ());
-       yyaccept = 60;
+yy483:
+       YYDEBUG(483, YYPEEK ());
+       yyaccept = 61;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -14299,38 +14119,38 @@ yy482:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy483;
+       default:        goto yy484;
        }
-yy483:
-       YYDEBUG(483, YYPEEK ());
-#line 284 "../ada.re2c"
-       {*id =  17; continue;}
-#line 14309 "../ada_re2c.c"
 yy484:
        YYDEBUG(484, YYPEEK ());
+#line 287 "../ada.re2c"
+       {*id =  17; continue;}
+#line 14129 "../ada_re2c.c"
+yy485:
+       YYDEBUG(485, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'O':
-       case 'o':       goto yy513;
+       case 'o':       goto yy514;
        default:        goto yy15;
        }
-yy485:
-       YYDEBUG(485, YYPEEK ());
+yy486:
+       YYDEBUG(486, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'N':
-       case 'n':       goto yy514;
+       case 'n':       goto yy515;
        default:        goto yy15;
        }
-yy486:
-       YYDEBUG(486, YYPEEK ());
-       yyaccept = 61;
+yy487:
+       YYDEBUG(487, YYPEEK ());
+       yyaccept = 62;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -14449,28 +14269,28 @@ yy486:
        case 0xF1:
        case 0xF2:
        case 0xF3:
-       case 0xF4:      goto yy15;
-       default:        goto yy487;
-       }
-yy487:
-       YYDEBUG(487, YYPEEK ());
-#line 297 "../ada.re2c"
-       {*id =  30; continue;}
-#line 14460 "../ada_re2c.c"
+       case 0xF4:      goto yy15;
+       default:        goto yy488;
+       }
 yy488:
        YYDEBUG(488, YYPEEK ());
+#line 300 "../ada.re2c"
+       {*id =  30; continue;}
+#line 14280 "../ada_re2c.c"
+yy489:
+       YYDEBUG(489, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'C':
-       case 'c':       goto yy516;
+       case 'c':       goto yy517;
        default:        goto yy15;
        }
-yy489:
-       YYDEBUG(489, YYPEEK ());
-       yyaccept = 62;
+yy490:
+       YYDEBUG(490, YYPEEK ());
+       yyaccept = 63;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -14590,27 +14410,27 @@ yy489:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy490;
+       default:        goto yy491;
        }
-yy490:
-       YYDEBUG(490, YYPEEK ());
-#line 303 "../ada.re2c"
-       {*id =  36; continue;}
-#line 14600 "../ada_re2c.c"
 yy491:
        YYDEBUG(491, YYPEEK ());
+#line 306 "../ada.re2c"
+       {*id =  36; continue;}
+#line 14420 "../ada_re2c.c"
+yy492:
+       YYDEBUG(492, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'I':
-       case 'i':       goto yy517;
+       case 'i':       goto yy518;
        default:        goto yy15;
        }
-yy492:
-       YYDEBUG(492, YYPEEK ());
-       yyaccept = 63;
+yy493:
+       YYDEBUG(493, YYPEEK ());
+       yyaccept = 64;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -14730,16 +14550,16 @@ yy492:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy493;
+       default:        goto yy494;
        }
-yy493:
-       YYDEBUG(493, YYPEEK ());
-#line 314 "../ada.re2c"
-       {*id =  47; continue;}
-#line 14740 "../ada_re2c.c"
 yy494:
        YYDEBUG(494, YYPEEK ());
-       yyaccept = 64;
+#line 317 "../ada.re2c"
+       {*id =  47; continue;}
+#line 14560 "../ada_re2c.c"
+yy495:
+       YYDEBUG(495, YYPEEK ());
+       yyaccept = 65;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -14859,38 +14679,38 @@ yy494:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy495;
+       default:        goto yy496;
        }
-yy495:
-       YYDEBUG(495, YYPEEK ());
-#line 316 "../ada.re2c"
-       {*id =  49; continue;}
-#line 14869 "../ada_re2c.c"
 yy496:
        YYDEBUG(496, YYPEEK ());
+#line 319 "../ada.re2c"
+       {*id =  49; continue;}
+#line 14689 "../ada_re2c.c"
+yy497:
+       YYDEBUG(497, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'R':
-       case 'r':       goto yy518;
+       case 'r':       goto yy519;
        default:        goto yy15;
        }
-yy497:
-       YYDEBUG(497, YYPEEK ());
+yy498:
+       YYDEBUG(498, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy519;
+       case 'e':       goto yy520;
        default:        goto yy15;
        }
-yy498:
-       YYDEBUG(498, YYPEEK ());
-       yyaccept = 65;
+yy499:
+       YYDEBUG(499, YYPEEK ());
+       yyaccept = 66;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -15010,16 +14830,16 @@ yy498:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy499;
+       default:        goto yy500;
        }
-yy499:
-       YYDEBUG(499, YYPEEK ());
-#line 323 "../ada.re2c"
-       {*id =  56; continue;}
-#line 15020 "../ada_re2c.c"
 yy500:
        YYDEBUG(500, YYPEEK ());
-       yyaccept = 66;
+#line 326 "../ada.re2c"
+       {*id =  56; continue;}
+#line 14840 "../ada_re2c.c"
+yy501:
+       YYDEBUG(501, YYPEEK ());
+       yyaccept = 67;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -15139,16 +14959,16 @@ yy500:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy501;
+       default:        goto yy502;
        }
-yy501:
-       YYDEBUG(501, YYPEEK ());
-#line 324 "../ada.re2c"
-       {*id =  57; continue;}
-#line 15149 "../ada_re2c.c"
 yy502:
        YYDEBUG(502, YYPEEK ());
-       yyaccept = 67;
+#line 327 "../ada.re2c"
+       {*id =  57; continue;}
+#line 14969 "../ada_re2c.c"
+yy503:
+       YYDEBUG(503, YYPEEK ());
+       yyaccept = 68;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -15268,27 +15088,27 @@ yy502:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy503;
+       default:        goto yy504;
        }
-yy503:
-       YYDEBUG(503, YYPEEK ());
-#line 326 "../ada.re2c"
-       {*id =  59; continue;}
-#line 15278 "../ada_re2c.c"
 yy504:
        YYDEBUG(504, YYPEEK ());
+#line 329 "../ada.re2c"
+       {*id =  59; continue;}
+#line 15098 "../ada_re2c.c"
+yy505:
+       YYDEBUG(505, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy520;
+       case 'e':       goto yy521;
        default:        goto yy15;
        }
-yy505:
-       YYDEBUG(505, YYPEEK ());
-       yyaccept = 68;
+yy506:
+       YYDEBUG(506, YYPEEK ());
+       yyaccept = 69;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -15408,38 +15228,38 @@ yy505:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy506;
+       default:        goto yy507;
        }
-yy506:
-       YYDEBUG(506, YYPEEK ());
-#line 330 "../ada.re2c"
-       {*id =  63; continue;}
-#line 15418 "../ada_re2c.c"
 yy507:
        YYDEBUG(507, YYPEEK ());
+#line 333 "../ada.re2c"
+       {*id =  63; continue;}
+#line 15238 "../ada_re2c.c"
+yy508:
+       YYDEBUG(508, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'N':
-       case 'n':       goto yy522;
+       case 'n':       goto yy523;
        default:        goto yy15;
        }
-yy508:
-       YYDEBUG(508, YYPEEK ());
+yy509:
+       YYDEBUG(509, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'T':
-       case 't':       goto yy523;
+       case 't':       goto yy524;
        default:        goto yy15;
        }
-yy509:
-       YYDEBUG(509, YYPEEK ());
-       yyaccept = 69;
+yy510:
+       YYDEBUG(510, YYPEEK ());
+       yyaccept = 70;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -15559,16 +15379,16 @@ yy509:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy510;
+       default:        goto yy511;
        }
-yy510:
-       YYDEBUG(510, YYPEEK ());
-#line 273 "../ada.re2c"
-       {*id =  6; continue;}
-#line 15569 "../ada_re2c.c"
 yy511:
        YYDEBUG(511, YYPEEK ());
-       yyaccept = 70;
+#line 276 "../ada.re2c"
+       {*id =  6; continue;}
+#line 15389 "../ada_re2c.c"
+yy512:
+       YYDEBUG(512, YYPEEK ());
+       yyaccept = 71;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -15688,27 +15508,27 @@ yy511:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy512;
+       default:        goto yy513;
        }
-yy512:
-       YYDEBUG(512, YYPEEK ());
-#line 283 "../ada.re2c"
-       {*id =  16; continue;}
-#line 15698 "../ada_re2c.c"
 yy513:
        YYDEBUG(513, YYPEEK ());
+#line 286 "../ada.re2c"
+       {*id =  16; continue;}
+#line 15518 "../ada_re2c.c"
+yy514:
+       YYDEBUG(514, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'N':
-       case 'n':       goto yy524;
+       case 'n':       goto yy525;
        default:        goto yy15;
        }
-yy514:
-       YYDEBUG(514, YYPEEK ());
-       yyaccept = 71;
+yy515:
+       YYDEBUG(515, YYPEEK ());
+       yyaccept = 72;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -15828,60 +15648,60 @@ yy514:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy515;
+       default:        goto yy516;
        }
-yy515:
-       YYDEBUG(515, YYPEEK ());
-#line 296 "../ada.re2c"
-       {*id =  29; continue;}
-#line 15838 "../ada_re2c.c"
 yy516:
        YYDEBUG(516, YYPEEK ());
+#line 299 "../ada.re2c"
+       {*id =  29; continue;}
+#line 15658 "../ada_re2c.c"
+yy517:
+       YYDEBUG(517, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy526;
+       case 'e':       goto yy527;
        default:        goto yy15;
        }
-yy517:
-       YYDEBUG(517, YYPEEK ());
+yy518:
+       YYDEBUG(518, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'N':
-       case 'n':       goto yy528;
+       case 'n':       goto yy529;
        default:        goto yy15;
        }
-yy518:
-       YYDEBUG(518, YYPEEK ());
+yy519:
+       YYDEBUG(519, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy529;
+       case 'e':       goto yy530;
        default:        goto yy15;
        }
-yy519:
-       YYDEBUG(519, YYPEEK ());
+yy520:
+       YYDEBUG(520, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'D':
-       case 'd':       goto yy531;
+       case 'd':       goto yy532;
        default:        goto yy15;
        }
-yy520:
-       YYDEBUG(520, YYPEEK ());
-       yyaccept = 72;
+yy521:
+       YYDEBUG(521, YYPEEK ());
+       yyaccept = 73;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -16001,38 +15821,38 @@ yy520:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy521;
+       default:        goto yy522;
        }
-yy521:
-       YYDEBUG(521, YYPEEK ());
-#line 327 "../ada.re2c"
-       {*id =  60; continue;}
-#line 16011 "../ada_re2c.c"
 yy522:
        YYDEBUG(522, YYPEEK ());
+#line 330 "../ada.re2c"
+       {*id =  60; continue;}
+#line 15831 "../ada_re2c.c"
+yy523:
+       YYDEBUG(523, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'I':
-       case 'i':       goto yy533;
+       case 'i':       goto yy534;
        default:        goto yy15;
        }
-yy523:
-       YYDEBUG(523, YYPEEK ());
+yy524:
+       YYDEBUG(524, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy534;
+       case 'e':       goto yy535;
        default:        goto yy15;
        }
-yy524:
-       YYDEBUG(524, YYPEEK ());
-       yyaccept = 73;
+yy525:
+       YYDEBUG(525, YYPEEK ());
+       yyaccept = 74;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -16152,16 +15972,16 @@ yy524:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy525;
+       default:        goto yy526;
        }
-yy525:
-       YYDEBUG(525, YYPEEK ());
-#line 293 "../ada.re2c"
-       {*id =  26; continue;}
-#line 16162 "../ada_re2c.c"
 yy526:
        YYDEBUG(526, YYPEEK ());
-       yyaccept = 74;
+#line 296 "../ada.re2c"
+       {*id =  26; continue;}
+#line 15982 "../ada_re2c.c"
+yy527:
+       YYDEBUG(527, YYPEEK ());
+       yyaccept = 75;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -16281,27 +16101,27 @@ yy526:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy527;
+       default:        goto yy528;
        }
-yy527:
-       YYDEBUG(527, YYPEEK ());
-#line 301 "../ada.re2c"
-       {*id =  34; continue;}
-#line 16291 "../ada_re2c.c"
 yy528:
        YYDEBUG(528, YYPEEK ());
+#line 304 "../ada.re2c"
+       {*id =  34; continue;}
+#line 16111 "../ada_re2c.c"
+yy529:
+       YYDEBUG(529, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'G':
-       case 'g':       goto yy536;
+       case 'g':       goto yy537;
        default:        goto yy15;
        }
-yy529:
-       YYDEBUG(529, YYPEEK ());
-       yyaccept = 75;
+yy530:
+       YYDEBUG(530, YYPEEK ());
+       yyaccept = 76;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -16421,16 +16241,16 @@ yy529:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy530;
+       default:        goto yy531;
        }
-yy530:
-       YYDEBUG(530, YYPEEK ());
-#line 317 "../ada.re2c"
-       {*id =  50; continue;}
-#line 16431 "../ada_re2c.c"
 yy531:
        YYDEBUG(531, YYPEEK ());
-       yyaccept = 76;
+#line 320 "../ada.re2c"
+       {*id =  50; continue;}
+#line 16251 "../ada_re2c.c"
+yy532:
+       YYDEBUG(532, YYPEEK ());
+       yyaccept = 77;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -16550,27 +16370,27 @@ yy531:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy532;
+       default:        goto yy533;
        }
-yy532:
-       YYDEBUG(532, YYPEEK ());
-#line 318 "../ada.re2c"
-       {*id =  51; continue;}
-#line 16560 "../ada_re2c.c"
 yy533:
        YYDEBUG(533, YYPEEK ());
+#line 321 "../ada.re2c"
+       {*id =  51; continue;}
+#line 16380 "../ada_re2c.c"
+yy534:
+       YYDEBUG(534, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'Z':
-       case 'z':       goto yy538;
+       case 'z':       goto yy539;
        default:        goto yy15;
        }
-yy534:
-       YYDEBUG(534, YYPEEK ());
-       yyaccept = 77;
+yy535:
+       YYDEBUG(535, YYPEEK ());
+       yyaccept = 78;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -16690,16 +16510,16 @@ yy534:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy535;
+       default:        goto yy536;
        }
-yy535:
-       YYDEBUG(535, YYPEEK ());
-#line 334 "../ada.re2c"
-       {*id =  67; continue;}
-#line 16700 "../ada_re2c.c"
 yy536:
        YYDEBUG(536, YYPEEK ());
-       yyaccept = 78;
+#line 337 "../ada.re2c"
+       {*id =  67; continue;}
+#line 16520 "../ada_re2c.c"
+yy537:
+       YYDEBUG(537, YYPEEK ());
+       yyaccept = 79;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -16819,38 +16639,38 @@ yy536:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy537;
+       default:        goto yy538;
        }
-yy537:
-       YYDEBUG(537, YYPEEK ());
-#line 313 "../ada.re2c"
-       {*id =  46; continue;}
-#line 16829 "../ada_re2c.c"
 yy538:
        YYDEBUG(538, YYPEEK ());
+#line 316 "../ada.re2c"
+       {*id =  46; continue;}
+#line 16649 "../ada_re2c.c"
+yy539:
+       YYDEBUG(539, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'E':
-       case 'e':       goto yy539;
+       case 'e':       goto yy540;
        default:        goto yy15;
        }
-yy539:
-       YYDEBUG(539, YYPEEK ());
+yy540:
+       YYDEBUG(540, YYPEEK ());
        yyaccept = 1;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case 'D':
-       case 'd':       goto yy540;
+       case 'd':       goto yy541;
        default:        goto yy15;
        }
-yy540:
-       YYDEBUG(540, YYPEEK ());
-       yyaccept = 79;
+yy541:
+       YYDEBUG(541, YYPEEK ());
+       yyaccept = 80;
        YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
@@ -16970,15 +16790,15 @@ yy540:
        case 0xF2:
        case 0xF3:
        case 0xF4:      goto yy15;
-       default:        goto yy541;
+       default:        goto yy542;
        }
-yy541:
-       YYDEBUG(541, YYPEEK ());
-#line 331 "../ada.re2c"
+yy542:
+       YYDEBUG(542, YYPEEK ());
+#line 334 "../ada.re2c"
        {*id =  64; continue;}
-#line 16980 "../ada_re2c.c"
+#line 16800 "../ada_re2c.c"
 }
-#line 378 "../ada.re2c"
+#line 383 "../ada.re2c"
 
    }
    /* lexer->cursor and lexer ->char_pos are one char past end of token */
diff --git a/packages/ada-mode/build.sh b/packages/ada-mode/build.sh
index ced5c37..426e961 100755
--- a/packages/ada-mode/build.sh
+++ b/packages/ada-mode/build.sh
@@ -1,29 +1,39 @@
 #!/bin/sh
 # Build executables for Ada mode.
+#    build.sh <other gprbuild options>
+#    e.g. 'build.sh -j0' : use all available processors to compile
+#         'build.sh -wn' : treat warnings as warnings.
+#         'build.sh -vh' : Verbose output (high verbosity)
 #
 # See install.sh for install
 
-# In December 2016, GNATCOLL changed its Xref interface. First, the
-# GPR was split out; and second, one of the subprogram
-# interfaces.changed.
-#
-# Determine whether the split-out gnatcoll_xref.gpr is available.
-echo 'with "gnatcoll_xref"; abstract project check_xref is end check_xref;' > 
check_xref.gpr;
-gprbuild -P check_xref.gpr > /dev/null 2>&1;
-if test $? -eq 0 ; then HAVE_GNATCOLL_XREF="yes"; else 
HAVE_GNATCOLL_XREF="no"; fi
+# As of gnat pro 21, gnat_util is no longer provided or required
+echo 'with "gnat_util"; abstract project check is end check;' > check.gpr
+gprbuild -P check.gpr > /dev/null 2>&1
+if test $? -eq 0 ; then
+    HAVE_GNAT_UTIL=yes
+else
+    HAVE_GNAT_UTIL=no
+fi
 
-echo "HAVE_GNATCOLL_XREF=$HAVE_GNATCOLL_XREF"
+# support for libadalang is still experimental
+gnatprep  -DHAVE_LIBADALANG="no" -DELPA="yes" -DHAVE_GNAT_UTIL=$HAVE_GNAT_UTIL 
ada_mode_wisi_parse.gpr.gp ada_mode_wisi_parse.gpr
 
-gnatprep -DHAVE_GNATCOLL_XREF=$HAVE_GNATCOLL_XREF 
gpr_query-process_refresh.adb.gp gpr_query-process_refresh.adb
+WISI_DIR="../wisi-3.1.0"
 
-# support for libadalang is still experimental
-gnatprep -DHAVE_GNATCOLL_XREF=$HAVE_GNATCOLL_XREF -DHAVE_LIBADALANG="no" 
-DELPA="yes" ada_mode_wisi_parse.gpr.gp ada_mode_wisi_parse.gpr
+gnatprep -DELPA="yes" $WISI_DIR/wisi.gpr.gp $WISI_DIR/wisi.gpr
+
+# We don't add WISI_DIR to GPR_PROJECT_PATH because the user may have
+# already set GPR_PROJECT_PATH.
+
+# Allow running build.sh again, since it often fails the first time.
+#  - Run gprclean, to allow changing compilers and other drastic things
+#  - Don't delete ada_lr1_parse_table.txt
 
-export GPR_PROJECT_PATH="../wisi-3.0.1"
+gprclean -r -P ada_mode_wisi_parse.gpr -aP$WISI_DIR
 
-gnatprep -DELPA="yes" $GPR_PROJECT_PATH/wisi.gpr.gp $GPR_PROJECT_PATH/wisi.gpr
+gprbuild -p -j8 -P ada_mode_wisi_parse.gpr -aP $WISI_DIR "$@"
 
-gprbuild -p -j8 -P ada_mode_wisi_parse.gpr
-gzip -d -q ada_lr1_parse_table.txt.gz
+gzip -c -d -q ada_lr1_parse_table.txt.gz > ada_lr1_parse_table.txt
 
 # end of file
diff --git a/packages/ada-mode/gnat-core.el b/packages/ada-mode/gnat-core.el
index 798c993..5901b22 100644
--- a/packages/ada-mode/gnat-core.el
+++ b/packages/ada-mode/gnat-core.el
@@ -3,7 +3,7 @@
 ;;
 ;; GNAT is provided by AdaCore; see http://libre.adacore.com/
 ;;
-;;; Copyright (C) 2012 - 2019  Free Software Foundation, Inc.
+;;; Copyright (C) 2012 - 2020  Free Software Foundation, Inc.
 ;;
 ;; Author: Stephen Leake <address@hidden>
 ;; Maintainer: Stephen Leake <address@hidden>
@@ -81,13 +81,12 @@ Throw an error if current project does not have a 
gnat-compiler."
        compiler
       (error "no gnat-compiler in current project"))))
 
-(defun gnat-prj-add-prj-dir (project dir)
-  "Add DIR to compiler.project_path, and to GPR_PROJECT_PATH in 
project.environment."
+(defun gnat-prj-add-prj-dir (project compiler dir)
+  "Add DIR to COMPILER.project_path, and to GPR_PROJECT_PATH in 
PROJECT.file-env"
   ;; We maintain two project values for this;
   ;; project-path - a list of directories, for elisp find file
   ;; GPR_PROJECT_PATH in environment, for gnat-run
-  (let ((process-environment (copy-sequence (wisi-prj-file-env project)))
-       (compiler (wisi-prj-compiler project)))
+  (let ((process-environment (copy-sequence (wisi-prj-file-env project))))
     (cl-pushnew dir (gnat-compiler-project-path compiler) :test #'string-equal)
 
     (setenv "GPR_PROJECT_PATH"
@@ -96,10 +95,9 @@ Throw an error if current project does not have a 
gnat-compiler."
     (setf (wisi-prj-file-env project) (copy-sequence process-environment))
     ))
 
-(defun gnat-get-paths (project)
-  "Add project and/or compiler source, project paths to PROJECT source-path 
and project-path."
-  (let* ((compiler (wisi-prj-compiler project))
-        (src-dirs (wisi-prj-source-path project))
+(defun gnat-get-paths (project compiler)
+  "Add project and/or compiler source, project paths to PROJECT source-path"
+  (let* ((src-dirs (wisi-prj-source-path project))
         (prj-dirs (cl-copy-list (gnat-compiler-project-path compiler))))
 
     ;; Don't need project plist obj_dirs if using a project file, so
@@ -165,32 +163,32 @@ Throw an error if current project does not have a 
gnat-compiler."
     ;; reverse prj-dirs so project file dirs precede gnat library dirs
     (setf (wisi-prj-source-path project) (nreverse (delete-dups src-dirs)))
     (setf (gnat-compiler-project-path compiler) nil)
-    (mapc (lambda (dir) (gnat-prj-add-prj-dir project dir))
+    (mapc (lambda (dir) (gnat-prj-add-prj-dir project compiler dir))
          prj-dirs)
     ))
 
-(defun gnat-parse-gpr (gpr-file project)
+(defun gnat-parse-gpr (gpr-file project compiler)
   "Append to source-path and project-path in PROJECT (a `wisi-prj' object) by 
parsing GPR-FILE.
 GPR-FILE must be absolute file name.
 source-path will include compiler runtime."
   ;; this can take a long time; let the user know what's up
-  (let ((compiler (wisi-prj-compiler project)))
-    (if (gnat-compiler-gpr-file compiler)
-       ;; gpr-file previously set; new one must match
-       (when (not (string-equal gpr-file (gnat-compiler-gpr-file compiler)))
-         (error "project file %s defines a different GNAT project file than %s"
-                (gnat-compiler-gpr-file compiler)
-                gpr-file))
+  (if (gnat-compiler-gpr-file compiler)
+      ;; gpr-file previously set; new one must match
+      (when (not (string-equal gpr-file (gnat-compiler-gpr-file compiler)))
+       (error "project file %s defines a different GNAT project file than %s"
+              (gnat-compiler-gpr-file compiler)
+              gpr-file))
 
-      (setf (gnat-compiler-gpr-file compiler) gpr-file)
-      ))
+    (setf (gnat-compiler-gpr-file compiler) gpr-file))
 
-  (gnat-get-paths project))
+  (gnat-get-paths project compiler))
 
 (defun gnat-parse-gpr-1 (gpr-file project)
   "For `wisi-prj-parser-alist'."
-  (setf (gnat-compiler-run-buffer-name (wisi-prj-compiler project)) gpr-file)
-  (gnat-parse-gpr gpr-file project))
+  (let ((compiler (wisi-prj-compiler project)))
+    ;; FIXME: need to pass in compiler for gpr-query?
+    (setf (gnat-compiler-run-buffer-name compiler) gpr-file)
+    (gnat-parse-gpr gpr-file project compiler)))
 
 ;;;; command line tool interface
 
@@ -315,7 +313,7 @@ which is displayed on error."
           (append
            (wisi-prj-compile-env project)
            (wisi-prj-file-env project))));; reference, for 
substitute-in-file-name
-      (gnat-prj-add-prj-dir project (expand-file-name (substitute-in-file-name 
value)))))
+      (gnat-prj-add-prj-dir project compiler (expand-file-name 
(substitute-in-file-name value)))))
 
    ((string= name "gnat-stub-cargs")
     (setf (gnat-compiler-gnat-stub-cargs compiler) value))
@@ -352,10 +350,10 @@ which is displayed on error."
   (setf (gnat-compiler-run-buffer-name compiler) (gnat-run-buffer-name 
prj-file-name))
 
   (if (gnat-compiler-gpr-file compiler)
-      (gnat-parse-gpr (gnat-compiler-gpr-file compiler) project)
+      (gnat-parse-gpr (gnat-compiler-gpr-file compiler) project compiler)
 
     ;; add the compiler libraries to project.source-path
-    (gnat-get-paths project)
+    (gnat-get-paths project compiler)
     ))
 
 (cl-defmethod wisi-compiler-select-prj ((_compiler gnat-compiler) _project)
diff --git a/packages/ada-mode/gpr-mode.el b/packages/ada-mode/gpr-mode.el
index bd524ad..1ee03ee 100644
--- a/packages/ada-mode/gpr-mode.el
+++ b/packages/ada-mode/gpr-mode.el
@@ -1,6 +1,6 @@
 ;; gpr-mode --- Major mode for editing GNAT project files  -*- 
lexical-binding:t -*-
 
-;; Copyright (C) 2004, 2007, 2008, 2012-2015, 2017, 2018, 2019  Free Software 
Foundation, Inc.
+;; Copyright (C) 2004, 2007, 2008, 2012-2015, 2017 - 2020  Free Software 
Foundation, Inc.
 
 ;; Author: Stephen Leake <address@hidden>
 ;; Maintainer: Stephen Leake <address@hidden>
@@ -347,7 +347,7 @@ Otherwise, allow UPPERCASE for identifiers."
   "Defines language-specific parser parameters.
 Must match wisi-gpr.ads Language_Protocol_Version.")
 
-(defcustom gpr-process-parse-exec "gpr_mode_wisi_parse.exe"
+(defcustom gpr-process-parse-exec "gpr_mode_wisi_parse"
   "Name of executable to use for external process gpr parser,"
   :type 'string
   :group 'gpr)
diff --git a/packages/ada-mode/gpr-mode.info b/packages/ada-mode/gpr-mode.info
index 816c661..73dc37f 100644
--- a/packages/ada-mode/gpr-mode.info
+++ b/packages/ada-mode/gpr-mode.info
@@ -1,4 +1,4 @@
-This is gpr-mode.info, produced by makeinfo version 6.3 from
+This is gpr-mode.info, produced by makeinfo version 6.7 from
 gpr-mode.texi.
 
 Copyright (C) 2013, 2019 Free Software Foundation, Inc.
@@ -730,3 +730,8 @@ Node: GNU Free Documentation License7269
 Node: Index32431
 
 End Tag Table
+
+
+Local Variables:
+coding: utf-8
+End:
diff --git a/packages/ada-mode/gpr-process.el b/packages/ada-mode/gpr-process.el
index 54257a5..aa9db63 100644
--- a/packages/ada-mode/gpr-process.el
+++ b/packages/ada-mode/gpr-process.el
@@ -1,7 +1,7 @@
 ;;; gpr-process.el --- Generated parser support file  -*- lexical-binding:t -*-
 ;;  command line: wisitoken-bnf-generate.exe  --generate LR1 Ada_Emacs re2c 
PROCESS gpr.wy
 
-;;  Copyright (C) 2013 - 2019 Free Software Foundation, Inc.
+;;  Copyright (C) 2013 - 2020 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
diff --git a/packages/ada-mode/gpr-query.el b/packages/ada-mode/gpr-query.el
index 55d4827..47967bf 100644
--- a/packages/ada-mode/gpr-query.el
+++ b/packages/ada-mode/gpr-query.el
@@ -7,7 +7,6 @@
 
 ;; Author: Stephen Leake <address@hidden>
 ;; Maintainer: Stephen Leake <address@hidden>
-;; Version: 1.0
 
 ;; This file is part of GNU Emacs.
 
@@ -44,13 +43,13 @@
 
 (defcustom gpr-query-env nil
   "Environment variables needed by the gpr_query executable.
-Value must be alist where each element is \"<name>=<value>\""
+Value must be a list where each element is \"<name>=<value>\""
   ;; This could also be provided as a project file setting, But it is
   ;; intended for LD_LIBRARY_PATH (info "(ada-mode)Ada executables"),
   ;; which must be set for all projects on the system.
   :type 'string)
 
-(defconst gpr-query-protocol-version "2"
+(defconst gpr-query-protocol-version "3"
   "Defines data exchanged between this package and the background process.
 Must match gpr_query.adb Version.")
 
@@ -65,85 +64,223 @@ Must match gpr_query.adb Version.")
 ;; We maintain a cache of active sessions, one per gnat project.
 
 (cl-defstruct (gpr-query--session)
-  (process nil) ;; running gpr_query
-  (buffer nil)) ;; receives output of gpr_query; default-directory gives 
location of db
+  gpr-file ;; string absolute file name
+  process-env ;; copy of process-environment used to start a process
+  (xref-process nil) ;; running gpr_query, for xrefs; default-directory gives 
location of db
+  (symbols-process nil);; runs 'complete' gpr_query command to get 
symbol-locs, symbols; then dies.
+
+  symbol-locs ;; alist completion table, with locations; see 
gpr-query--read-symbols
+  symbols ;; just symbols compeltion table; see gpr-query--read-symbols
+  symbols-count-total
+  symbols-count-current
+  symbols-percent-last-update
+  )
 
 ;; Starting the buffer name with a space hides it from some lists, and
 ;; also disables font-lock. We sometimes use it to display xref
 ;; locations in compilation-mode, so we want font-lock enabled.
-;;
-;; IMPROVEME: copy the xref info to a true user buffer, optionally an
-;; *xref* buffer.
 (defconst gpr-query-buffer-name-prefix "*gpr_query-")
 
-(defvar gpr-query--debug-start nil)
-
-(defun gpr-query--start-process (project session)
-  "Start the session process running gpr_query."
-  (unless (buffer-live-p (gpr-query--session-buffer session))
-    ;; user may have killed buffer
-    (setf (gpr-query--session-buffer session)
-         (gnat-run-buffer project (gnat-compiler-run-buffer-name 
(wisi-prj-xref project))))
-    (with-current-buffer (gpr-query--session-buffer session)
-      (compilation-mode)
-      (setq buffer-read-only nil)))
-
-  (with-current-buffer (gpr-query--session-buffer session)
-    (let ((process-environment
-          (append
-           (wisi-prj-compile-env project)
-           (wisi-prj-file-env project)
-           gpr-query-env
-           (copy-sequence process-environment)))
-         (gpr-file (file-name-nondirectory (gnat-compiler-gpr-file 
(wisi-prj-xref project)))))
+(defconst gpr-query-prompt "^>>> $"
+  ;; gpr_query output ends with this
+  "Regexp matching gpr_query prompt; indicates previous command is complete.")
+
+(defvar gpr-query--debug nil)
+
+(defvar-local gpr-query--local-session nil
+  "Buffer-local in gpr-query process buffer; the current session.")
+
+(defun gpr-query--check-startup ()
+  ;; current buffer is process output buffer
+  (goto-char (point-min))
+  (if (search-forward-regexp "version: \\([0-9]+\\)$" nil t)
+      (unless (string-equal (match-string 1) gpr-query-protocol-version)
+       (user-error "gpr-query version mismatch: elisp %s process %s"
+                   gpr-query-protocol-version
+                   (match-string 1)))
+    (user-error "'%s' is an old version (did not output version); expecting %s"
+               gpr-query-exec
+               gpr-query-protocol-version))
+
+  ;; Check for warnings about invalid directories etc. But some
+  ;; warnings are tolerable, so only abort if process actually
+  ;; died.
+  (goto-char (point-min))
+  (when (search-forward "warning:" nil t)
+    (if debug-on-error
+       (error "gpr_query warnings")
+      (beep)
+      (message "gpr_query warnings"))))
+
+(defun gpr-query--xref-filter (process text)
+  "Process filter for xref-process."
+  ;; First, wait for startup to complete, indicated by receiving the
+  ;; first prompt.  Then start the symbols process; it does the same
+  ;; startup, which is faster after the xref startup due to disk
+  ;; caching. Then unregister the filter; it is not needed any more.
+  (when (buffer-name (process-buffer process))
+    ;; process buffer is not dead
+    (with-current-buffer (process-buffer process)
+      (let ((search-start (marker-position (process-mark process))))
+        (save-excursion
+          (goto-char (process-mark process))
+          (insert text)
+          (set-marker (process-mark process) (point)))
+
+       ;; Wait for current command (or startup) to finish, do next
+       ;; action.
+       (goto-char search-start)
+       ;; back up a line in case we got part of the prompt previously.
+       (forward-line -1)
+       (when (re-search-forward gpr-query-prompt (point-max) 1)
+         ;; startup completed
+         (gpr-query--check-startup)
+         (set-process-filter process nil)
+
+         ;; start the symbols process to get the symbols
+         (gpr-query--start-process gpr-query--local-session 'symbols)
+         )))))
+
+(defvar gpr-query--symbols-progress ""
+  ;; We assume only one gpr-query symbols process is active at a time
+  "For `mode-line-misc-info'.")
+
+(defun gpr-query--update-progress ()
+  ;; separate for debugging
+  (setf (gpr-query--session-symbols-count-current gpr-query--local-session)
+       (+ (gpr-query--session-symbols-count-current gpr-query--local-session)
+          (count-lines (point) (point-max))))
+  (let ((percent
+        (/
+         (* 100 (gpr-query--session-symbols-count-current 
gpr-query--local-session))
+            (gpr-query--session-symbols-count-total 
gpr-query--local-session))))
+    (when (< (+ 5 (gpr-query--session-symbols-percent-last-update 
gpr-query--local-session))
+            percent)
+      (setf (gpr-query--session-symbols-percent-last-update 
gpr-query--local-session) percent)
+      (setq gpr-query--symbols-progress (format "symbols %d%%" percent))
+      (force-mode-line-update)
+      (redisplay t)
+      )))
 
+(defun gpr-query--symbols-filter (process text)
+  "Process filter for symbols process."
+  (when (buffer-name (process-buffer process))
+    ;; process buffer is not dead
+    (with-current-buffer (process-buffer process)
+      (let ((search-start (marker-position (process-mark process))))
+        (save-excursion
+          (goto-char (process-mark process))
+          (insert text)
+          (set-marker (process-mark process) (point)))
+
+       ;; Update session progress slots
+       (when (eq (gpr-query--session-symbols gpr-query--local-session) 
'sent-complete)
+         (cond
+          ((null (gpr-query--session-symbols-count-total 
gpr-query--local-session))
+           (goto-char search-start)
+           ;; back up a line in case we got part of the line previously.
+           (forward-line -1)
+
+           (when (re-search-forward "element count \\([0-9]+\\)" (point-max) t)
+             (setf (gpr-query--session-symbols-count-total 
gpr-query--local-session)
+                   (string-to-number (match-string 1)))
+             (setf (gpr-query--session-symbols-count-current 
gpr-query--local-session) 0)
+             (setf (gpr-query--session-symbols-percent-last-update 
gpr-query--local-session) 0)
+             ))
+          (t
+           (gpr-query--update-progress)
+           )
+          ))
+
+       ;; Wait for last command to finish.
+       (goto-char search-start)
+       (forward-line -1)
+       (when (re-search-forward gpr-query-prompt (point-max) t)
+         (cond
+          ((null (gpr-query--session-symbols gpr-query--local-session))
+           ;; startup complete; get symbols
+            (gpr-query--check-startup)
+            (erase-buffer)
+            (set-marker (process-mark process) (point-min))
+            (setf (gpr-query--session-symbols-count-total 
gpr-query--local-session) nil)
+            (process-send-string process "complete \"\"\n")
+            (setf (gpr-query--session-symbols gpr-query--local-session) 
'sent-complete))
+
+          ((eq (gpr-query--session-symbols gpr-query--local-session) 
'sent-complete)
+           (gpr-query--read-symbols gpr-query--local-session)
+           (set-process-filter process nil)
+           (process-send-string process "exit\n"))
+
+          ))
+       ))))
+
+(defun gpr-query--start-process (session command-type)
+  "Start a session process running gpr_query. COMMAND-TYPE is 'xref or 
'symbols."
+  (unless (locate-file gpr-query-exec exec-path '("" ".exe"))
+    (user-error "'%s' not found on PATH" gpr-query-exec))
+
+  (when gpr-query--debug
+    (message "gpr-query-start %s" command-type))
+
+  ;; Reuse existing buffer if possible
+  (let* ((gpr-file (gpr-query--session-gpr-file session))
+        (process
+         (cl-ecase command-type
+           (xref (gpr-query--session-xref-process session))
+           (symbols (gpr-query--session-symbols-process session))))
+        (buffer (and process (process-buffer process)))
+        (process-environment (gpr-query--session-process-env session)))
+
+    (unless (buffer-live-p buffer)
+      ;; User may have killed buffer, which kills process
+      (let ((name (concat "*gpr-query-" (symbol-name command-type) "*-" 
gpr-file)))
+       (setq buffer (get-buffer-create name))
+       (with-current-buffer buffer
+         (setq default-directory (file-name-directory gpr-file))
+         (compilation-mode) ;; kills all local variables, requires 
default-directory
+         (setq gpr-query--local-session session)
+         (setq buffer-read-only nil))))
+
+    (with-current-buffer buffer
       (erase-buffer); delete any previous messages, prompt
-      (setf (gpr-query--session-process session)
+      (setf (gpr-query--session-symbol-locs session) nil)
+      (setf (gpr-query--session-symbols session) nil)
+      (setq process
            (apply #'start-process
-                  (concat "gpr_query " (buffer-name))
-                  (gpr-query--session-buffer session)
+                  (buffer-name)
+                  buffer
                   gpr-query-exec
                   (cl-delete-if
                    'null
                    (list
-                    (concat "--project=" gpr-file)
-                    (when gpr-query--debug-start
-                      (concat "--tracefile=gpr_query.trace")
+                    (concat "--project=" (file-name-nondirectory gpr-file))
+                    (when gpr-query--debug
+                      "--tracefile=gpr_query.trace"
                       ;; The file gpr_query.trace should contain: gpr_query=yes
                       )))))
-      (set-process-query-on-exit-flag (gpr-query--session-process session) nil)
-      (gpr-query-session-wait session)
-
-      (if (process-live-p (gpr-query--session-process session))
-         (progn
-           (goto-char (point-min))
-           (if (search-forward-regexp "version: \\([0-9]+\\)$")
-               (unless (string-equal (match-string 1) 
gpr-query-protocol-version)
-                 (user-error "gpr-query version mismatch: elisp %s process %s"
-                             gpr-query-protocol-version
-                             (match-string 1)))
-             (user-error "gpr-query is an old version; expecting %s" 
gpr-query-protocol-version))
-
-           ;; Check for warnings about invalid directories etc. But some
-           ;; warnings are tolerable, so only abort if process actually
-           ;; died.
-           (goto-char (point-min))
-           (when (search-forward "warning:" nil t)
-             (if debug-on-error
-                 (error "gpr_query warnings")
-               (beep)
-               (message "gpr_query warnings"))))
-
-       (error "gpr-query process failed to start"))
+      (cl-ecase command-type
+       (xref
+        (setf (gpr-query--session-xref-process session) process)
+        (set-process-filter process #'gpr-query--xref-filter))
+       (symbols
+        (setf (gpr-query--session-symbols-process session) process)
+        (set-process-filter process #'gpr-query--symbols-filter)))
+
+      (set-process-query-on-exit-flag process nil)
       )))
 
 (defun gpr-query--make-session (project)
   "Create and return a session for the current project file."
   (let ((session
         (make-gpr-query--session
-         :buffer nil
-         :process nil)))
-    (gpr-query--start-process project session)
+         :gpr-file (gnat-compiler-gpr-file (wisi-prj-xref project))
+         :process-env (copy-sequence
+                       (append
+                        (wisi-prj-compile-env project)
+                        (wisi-prj-file-env project)
+                        gpr-query-env
+                        process-environment)))))
+    (gpr-query--start-process session 'xref)
     session))
 
 (defvar gpr-query--sessions '()
@@ -155,8 +292,8 @@ Must match gpr_query.adb Version.")
         (session (cdr (assoc gpr-file gpr-query--sessions))))
     (if session
        (progn
-         (unless (process-live-p (gpr-query--session-process session))
-           (gpr-query--start-process project session))
+         (unless (process-live-p (gpr-query--session-xref-process session))
+           (gpr-query--start-process session 'xref))
          session)
       ;; else
       (prog1
@@ -164,76 +301,114 @@ Must match gpr_query.adb Version.")
        (push (cons gpr-file session) gpr-query--sessions)))
     ))
 
-(defconst gpr-query-prompt "^>>> $"
-  ;; gpr_query output ends with this
-  "Regexp matching gpr_query prompt; indicates previous command is complete.")
-
-(defun gpr-query-session-wait (session)
-  "Wait for the current command to complete."
-  (unless (process-live-p (gpr-query--session-process session))
-    (gpr-query-show-buffer session)
-    (error "gpr-query process died"))
+(defun gpr-query-session-wait (session command-type)
+  "Wait for the current COMMAND-TYPE (one of 'xref or 'symbols) command to 
complete."
+  (when (and
+        (eq command-type 'symbols)
+        (null (gpr-query--session-symbols-process session)))
+    ;; The symbols process is not started until the xref process
+    ;; returns its first prompt.
+    (gpr-query-session-wait session 'xref))
+
+  (let ((process
+        (cl-ecase command-type
+          (xref (gpr-query--session-xref-process session))
+          (symbols (gpr-query--session-symbols-process session))))
+       search-start
+       (done nil)
+       (wait-count 0))
+
+    (unless (process-live-p process)
+      (gpr-query--show-buffer session command-type)
+      (error "gpr-query process died"))
+
+    (with-current-buffer (process-buffer process)
+      (setq search-start (point-min))
+      (when (eq command-type 'symbols)
+       ;; show progress in mode line
+       (setq gpr-query--symbols-progress "")
+       (add-to-list 'mode-line-misc-info '("" gpr-query--symbols-progress " "))
+       (force-mode-line-update)
+       (redisplay))
 
-  (with-current-buffer (gpr-query--session-buffer session)
-    (let ((process (gpr-query--session-process session))
-         (search-start (point-min))
-         (wait-count 0))
       (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 (re-search-forward gpr-query-prompt (point-max) 1))))
-       (setq search-start (point));; don't search same text again
+                 (not done))
        (message (concat "running gpr_query ..." (make-string wait-count ?.)))
-       ;; IMPROVEME: use --display-progress
-       (accept-process-output process 1.0)
-       (setq wait-count (1+ wait-count)))
-      (if (process-live-p process)
-         (message (concat "running gpr_query ... done"))
-       (gpr-query-show-buffer session)
-       (error "gpr_query process died"))
-      )))
 
-(defun gpr-query-session-send (session cmd wait)
-  "Send CMD to gpr_query session for GPR-FILE.
+       ;; process output is inserted before point, so move back over it to 
search it
+       (goto-char search-start)
+       (if (re-search-forward gpr-query-prompt (point-max) 1)
+           (setq done t)
+         ;; else wait for more input
+         (unless (accept-process-output process 1.0)
+           ;; accept-process returns non-nil when we got output, so we
+           ;; did not wait for timeout.
+           (setq wait-count (1+ wait-count))
+           ))
+       ))
+
+    (when (eq command-type 'symbols)
+      (setq mode-line-misc-info (delete '("" gpr-query--symbols-progress " ") 
mode-line-misc-info)))
+
+    (if (or (eq command-type 'symbols);; symbols process is supposed to die
+           (process-live-p process))
+       (message (concat "running gpr_query ... done"))
+      (gpr-query--show-buffer session command-type)
+      (error "gpr_query process died"))
+    ))
+
+(defun gpr-query--session-send (session cmd wait)
+  "Send CMD to SESSION gpr_query xref process.
 If WAIT is non-nil, wait for command to complete.
 Return buffer that holds output."
-  ;; always wait for previous command to complete; also checks for
+  ;; Always wait for previous command to complete; also checks for
   ;; dead process.
-  (gpr-query-session-wait session)
-  (with-current-buffer (gpr-query--session-buffer session)
+  (gpr-query-session-wait session 'xref)
+  (when gpr-query--debug
+    (message "gpr-query-send: %s" cmd))
+  (with-current-buffer (process-buffer (gpr-query--session-xref-process 
session))
     (erase-buffer)
-    (process-send-string (gpr-query--session-process session)
+    (process-send-string (gpr-query--session-xref-process session)
                         (concat cmd "\n"))
     (when wait
-      (gpr-query-session-wait session))
+      (gpr-query-session-wait session 'xref))
     (current-buffer)
     ))
 
+(defun gpr-query--kill-process (process)
+  "Kill a gpr-query process nicely.
+Returns t if the process was live."
+  (when (process-live-p process)
+    (process-send-string process "exit\n")
+    (while (process-live-p process)
+      (accept-process-output process 1.0))
+    t))
+
 (defun gpr-query-kill-session (session)
-  (let ((process (gpr-query--session-process session)))
-    (when (process-live-p process)
-      (process-send-string (gpr-query--session-process session) "exit\n")
-      (while (process-live-p process)
-       (accept-process-output process 1.0)))
-    ))
+  "Kill the background process of SESSION.
+Return t if the process was live."
+  (setf (gpr-query--session-symbol-locs session) nil)
+  (setf (gpr-query--session-symbols session) nil)
+  (let (result)
+    (setq result (gpr-query--kill-process (gpr-query--session-xref-process 
session)))
+    (setq result (or result
+                    (gpr-query--kill-process 
(gpr-query--session-symbols-process session))))
+    result))
 
 (defun gpr-query-kill-all-sessions ()
   (interactive)
   (let ((count 0))
     (mapc (lambda (assoc)
-           (let ((session (cdr assoc)))
-             (when (process-live-p (gpr-query--session-process session))
-               (setq count (1+ count))
-               (process-send-string (gpr-query--session-process session) 
"exit\n")
-               )))
-           gpr-query--sessions)
+          (when (gpr-query-kill-session (cdr assoc))
+            (setq count (1+ count))))
+         gpr-query--sessions)
     (message "Killed %d sessions" count)
     ))
 
-(defun gpr-query-show-buffer (session)
-  (interactive)
-  (pop-to-buffer (gpr-query--session-buffer session)))
+(defun gpr-query--show-buffer (session command-type)
+  (cl-ecase command-type
+    (xref (pop-to-buffer (process-buffer (gpr-query--session-xref-process 
session))))
+    (symbols (pop-to-buffer (process-buffer 
(gpr-query--session-symbols-process session))))))
 
 ;;;;; utils
 
@@ -242,7 +417,7 @@ Return buffer that holds output."
 Uses `gpr_query'. Returns new list."
 
   (let ((session (gpr-query-cached-session project)))
-    (with-current-buffer (gpr-query-session-send session "source_dirs" t)
+    (with-current-buffer (gpr-query--session-send session "source_dirs" t)
       (goto-char (point-min))
       (while (not (looking-at gpr-query-prompt))
        (cl-pushnew
@@ -259,7 +434,7 @@ Uses `gpr_query'. Returns new list."
 Uses `gpr_query'. Returns new list."
 
   (let ((session (gpr-query-cached-session project)))
-    (with-current-buffer (gpr-query-session-send session "project_path" t)
+    (with-current-buffer (gpr-query--session-send session "project_path" t)
       (goto-char (point-min))
       (while (not (looking-at gpr-query-prompt))
        (cl-pushnew
@@ -273,22 +448,71 @@ Uses `gpr_query'. Returns new list."
       ))
   prj-dirs)
 
-(defconst gpr-query-ident-file-regexp
-  ;; 
C:\Projects\GDS\work_dscovr_release\common\1553\gds-mil_std_1553-utf.ads:252:25
-  ;; 
/Projects/GDS/work_dscovr_release/common/1553/gds-mil_std_1553-utf.ads:252:25
-  ;; gds-mil_std_1553-utf.ads:252:25 - when wisi-xref-full-path is nil
-  "\\(\\(?:.:\\\\\\|/\\)?[^:]*\\):\\([0-9]+\\):\\([0-9]+\\)"
-  ;; 1                              2            3
-  "Regexp matching <file>:<line>:<column> where <file> is an absolute file 
name or basename.")
-
 (defconst gpr-query-ident-file-regexp-alist
-  (list (concat "^" gpr-query-ident-file-regexp) 1 2 3)
+  (list (concat "^" wisi-file-line-col-regexp) 1 2 3)
   "For compilation-error-regexp-alist, matching gpr_query output")
 
 (defconst gpr-query-ident-file-type-regexp
-  (concat gpr-query-ident-file-regexp " (\\(.*\\))")
+  (concat wisi-file-line-col-regexp " (\\(.*\\))")
   "Regexp matching <file>:<line>:<column> (<type>)")
 
+(defconst gpr-query--symbol-char "[-+*/=<>&[:alnum:]_.]")
+
+(defconst gpr-query-completion-regexp
+  (concat "\\(" gpr-query--symbol-char "+\\)\\((.*)\\)?<.*<[0-9]+>>")
+  "Regexp matching completion item from gpr-query--read-symbols.")
+
+(defun gpr-query--read-symbols (session)
+  "Read result of gpr_query 'complete' command, store completion table in 
SESSION."
+  (let ((symbol-locs nil)
+       (symbols nil))
+    ;; The gpr_query 'complete' command returns a fully qualified name
+    ;; and declaration location for each name:
+    ;;
+    ;; Wisi.Ada.Ada_Indent_Aggregate.Args 
C:\Projects\org.emacs.ada-mode\wisi-ada.ads:102:7
+    ;;
+    ;; For subprograms it includes the parameters (but not a function result):
+    ;;
+    ;; Gpr_Query.Process_Command_Single(Args) 
C:\Projects\org.emacs.ada-mode\gpr_query.adb:109:14
+    ;;
+    ;; Build a completion table as an alist of:
+    ;;
+    ;;    (simple_name(args)<prefix<line>> . location).
+    ;;
+    ;; The car matches wisi-xref-completion-regexp.
+    ;;
+    ;; We include the line number to make each name unique. This
+    ;; doesn't work for one-line parameter lists, variable
+    ;; declaration lists and similar, but they should be
+    ;; unique names anyway.
+    (goto-char (point-min))
+
+    (while (not (eobp))
+      (cond
+       ;; FIXME: dispatch on language
+       ((looking-at (concat "\\(" gpr-query--symbol-char "+\\)"    ;; 1: prefix
+                           "\\.\\(" gpr-query--symbol-char "+\\)" ;; 2: simple 
name
+                           "\\((.*)\\)? "                         ;; 3: args,
+                           wisi-file-line-col-regexp))            ;; 4, 5, 6 
file:line:col
+       ;; process line
+       (push (match-string-no-properties 2) symbols)
+       (push
+        (cons (concat (match-string-no-properties 2)
+                      (match-string-no-properties 3)
+                      "<" (match-string-no-properties 1) "<" 
(match-string-no-properties 5) ">>")
+              (list (gpr-query--normalize-filename (match-string-no-properties 
4))
+                    (string-to-number (match-string 5))
+                    (1- (string-to-number (match-string 6)))))
+        symbol-locs))
+
+       (t ;; ignore line
+       )
+       )
+      (forward-line 1))
+
+    (setf (gpr-query--session-symbol-locs session) symbol-locs)
+    (setf (gpr-query--session-symbols session) (delete-dups symbols))))
+
 (defun gpr-query-compilation (project identifier file line col cmd comp-err 
&optional local_only append)
   "Run gpr_query CMD IDENTIFIER:FILE:LINE:COL,
 with compilation-error-regexp-alist set to COMP-ERR."
@@ -308,13 +532,13 @@ with compilation-error-regexp-alist set to COMP-ERR."
         target-file target-line target-col)
 
     (when append
-      (with-current-buffer (gpr-query--session-buffer session)
+      (with-current-buffer (process-buffer (gpr-query--session-xref-process 
session))
        ;; don't include trailing prompt in `prev-content'
        (goto-char (point-max))
        (forward-line 0)
        (setq prev-content (buffer-substring (point-min) (point)))))
 
-    (with-current-buffer (gpr-query-session-send session cmd-1 t)
+    (with-current-buffer (gpr-query--session-send session cmd-1 t)
       ;; point is at EOB. gpr_query returns one line per result plus prompt, 
warnings
       (setq result-count (- (line-number-at-pos) 1))
       (setq start-pos (point-min))
@@ -338,7 +562,7 @@ with compilation-error-regexp-alist set to COMP-ERR."
        (setq result-count (1- result-count))
        (forward-line 1))
        ((looking-at "^Error: entity not found")
-       (error (buffer-substring-no-properties (line-beginning-position) 
(line-end-position))))
+       (user-error (buffer-substring-no-properties (line-beginning-position) 
(line-end-position))))
        )
 
       (cond
@@ -360,7 +584,7 @@ with compilation-error-regexp-alist set to COMP-ERR."
          ))
 
        ((= result-count 0)
-       (error "gpr_query returned no results"))
+       (user-error "gpr_query returned no results"))
 
        (t
        ;; for next-error, below
@@ -406,7 +630,6 @@ with compilation-error-regexp-alist set to COMP-ERR."
 (defvar gpr-query-menu (make-sparse-keymap "gpr-query"))
 (easy-menu-define gpr-query-menu gpr-query-map "Menu keymap for gpr-query 
minor mode"
   '("gpr-query"
-    ["Show gpr-query buffer"         gpr-query-show-buffer        t]
     ["Next xref"                     next-error                   t]
     ["Goto declaration/body"         xref-find-definitions        t]
     ["Show parent declarations"      wisi-show-declaration-parents t]
@@ -432,14 +655,13 @@ FILE is from gpr-query."
   (cond
    ((eq system-type 'windows-nt)
     ;; 'expand-file-name' converts Windows directory
-    ;; separators to normal Emacs.  Since Windows file
-    ;; system is case insensitive, GNAT and Emacs can
-    ;; disagree on the case, so convert all to lowercase.
-    (downcase (expand-file-name file)))
+    ;; separators to normal Emacs.
+    ;; FIXME: we used to downcase here; need use case. Counter use case:
+    ;; completion table matching (buffer-file-name) in wisi-filter-table
+    (expand-file-name file))
 
    ((eq system-type 'darwin)
-    ;; case-insensitive case-preserving; so just downcase
-    (downcase file))
+    file)
 
    (t ;; linux
     file))
@@ -452,36 +674,25 @@ FILE is from gpr-query."
   )
 
 ;;;###autoload
-(cl-defun create-gpr_query-xref
-    (&key
-     gpr-file
-     run-buffer-name
-     project-path
-     target
-     runtime
-     gnat-stub-opts
-     gnat-stub-cargs)
+(cl-defun create-gpr_query-xref (&key gpr-file)
   ;; See note on `create-ada-prj' for why this is not a defalias.
-  (make-gpr-query-xref
-   :gpr-file gpr-file
-   :run-buffer-name run-buffer-name
-   :project-path project-path
-   :target target
-   :runtime runtime
-   :gnat-stub-opts gnat-stub-opts
-   :gnat-stub-cargs gnat-stub-cargs
-   ))
+  (make-gpr-query-xref :gpr-file gpr-file))
 
 (cl-defmethod wisi-xref-parse-one ((xref gpr-query-xref) project name value)
   (wisi-compiler-parse-one xref project name value))
 
 (cl-defmethod wisi-xref-parse-final ((xref gpr-query-xref) _project 
prj-file-name)
-  (setf (gnat-compiler-run-buffer-name xref) (gnat-run-buffer-name 
prj-file-name gpr-query-buffer-name-prefix))
   (unless (gnat-compiler-gpr-file xref)
     (if (string= "gpr" (file-name-extension prj-file-name))
        (setf (gnat-compiler-gpr-file xref) prj-file-name)
       (user-error "using gpr-query xref, but no gpr file provided"))))
 
+(cl-defmethod wisi-xref-select-prj ((_xref gpr-query-xref) project)
+  ;; Start the process if needed; it will read the db and return the
+  ;; symbols in the background.
+  (gpr-query-cached-session project)
+  nil)
+
 (cl-defmethod wisi-xref-refresh-cache ((_xref gpr-query-xref) project no-full)
   ;; Kill the current session and delete the database, to get changed
   ;; env vars etc when it restarts.
@@ -492,18 +703,19 @@ FILE is from gpr-query."
   ;; that is a lot slower, so we only do that with permission.
   (let* ((session (gpr-query-cached-session project))
         (db-filename
-         (with-current-buffer (gpr-query-session-send session "db_name" t)
+         (with-current-buffer (gpr-query--session-send session "db_name" t)
            (goto-char (point-min))
            (buffer-substring-no-properties (line-beginning-position) 
(line-end-position)))))
 
+    ;; We have to kill the process to delete the database. If we are
+    ;; not deleting the db, this is an easy way to refresh everything
+    ;; else.
     (gpr-query-kill-session session)
-    (unless no-full
+    (when (and (not no-full)
+              (file-exists-p db-filename))
       (delete-file db-filename))
 
-    ;; We do this here because the user expects to see the "running
-    ;; gpr_query ..." message now, not later when a gpr-query command
-    ;; is run.
-    (gpr-query--start-process project session)
+    (gpr-query--start-process session 'xref)
     ))
 
 (defun gpr-query-tree-refs (project item op)
@@ -526,7 +738,7 @@ FILE is from gpr-query."
              (result nil)
              (session (gpr-query-cached-session project)))
 
-         (with-current-buffer (gpr-query-session-send session cmd t)
+         (with-current-buffer (gpr-query--session-send session cmd t)
            ;; 'gpr_query tree_*' returns a list containing the declarations,
            ;; bodies, and references (classwide), in no particular order.
            ;;
@@ -541,11 +753,11 @@ FILE is from gpr-query."
              (cond
               ((looking-at gpr-query-ident-file-type-regexp)
                ;; process line
-               (let* ((found-file (match-string 1))
-                      (found-line (string-to-number (match-string 2)))
-                      (found-col  (1- (string-to-number (match-string 3))))
-                      (found-type (match-string 4))
-                      )
+               (let ((found-file (match-string 1))
+                     (found-line (string-to-number (match-string 2)))
+                     (found-col  (1- (string-to-number (match-string 3))))
+                     (found-type (match-string 4))
+                     )
 
                  (unless found-file
                    ;; Can be nil if actual file is renamed but gpr-query
@@ -590,6 +802,20 @@ FILE is from gpr-query."
            (nreverse result) ;; root of tree first.
            ))))))
 
+(cl-defmethod wisi-xref-completion-table ((_xref gpr-query-xref) project)
+  (let ((session (gpr-query-cached-session project)))
+    (unless (consp (gpr-query--session-symbol-locs session))
+      (gpr-query-session-wait session 'symbols));; ensure symbol-locs is ready
+    (gpr-query--session-symbol-locs session)))
+
+(cl-defmethod wisi-xref-completion-regexp ((_xref gpr-query-xref))
+  gpr-query-completion-regexp)
+
+(cl-defmethod wisi-xref-completion-at-point-table ((_xref gpr-query-xref) 
project)
+  (let ((session (gpr-query-cached-session project)))
+    ;; no wait for symbols to be ready; this is supposed to be fast
+    (gpr-query--session-symbols session)))
+
 (cl-defmethod wisi-xref-definitions ((_xref gpr-query-xref) project item)
   (gpr-query-tree-refs project item "tree_defs"))
 
@@ -626,7 +852,7 @@ FILE is from gpr-query."
        (result nil)
        (session (gpr-query-cached-session project)))
 
-    (with-current-buffer (gpr-query-session-send session cmd t)
+    (with-current-buffer (gpr-query--session-send session cmd t)
       ;; 'gpr_query refs' returns a list containing the declaration,
       ;; the body, and all the references, in no particular order.
       ;;
@@ -668,7 +894,7 @@ FILE is from gpr-query."
 
            (unless found-file
              ;; can be nil if actual file is renamed but gpr-query database 
not updated
-             (error "file '%s' not found; refresh?" (match-string 1)))
+             (user-error "file '%s' not found; refresh?" (match-string 1)))
 
             (setq found-file (gpr-query--normalize-filename found-file))
 
@@ -741,7 +967,7 @@ FILE is from gpr-query."
        )
 
       (when (null result)
-       (error "gpr_query did not return other item; refresh?"))
+       (user-error "gpr_query did not return other item; refresh?"))
 
       (message "parsing result ... done")
       result)))
@@ -767,18 +993,25 @@ FILE is from gpr-query."
                     (if wisi-xref-full-path "full_file_names" 
"short_file_names")))
        (session (gpr-query-cached-session project))
        result)
-    (with-current-buffer (gpr-query-session-send session cmd t)
+    (with-current-buffer (gpr-query--session-send session cmd t)
 
       (goto-char (point-min))
-      (when (looking-at gpr-query-ident-file-regexp)
-       (setq result
+      (while (and (not result)
+                 (not (eobp)))
+       (cond
+        ((looking-at wisi-file-line-col-regexp)
+         (setq result
              (list
               (match-string 1)
               (string-to-number (match-string 2))
               (string-to-number (match-string 3)))))
 
+        (t
+         (forward-line))
+        ))
+
       (when (null result)
-       (error "gpr_query did not return a result; refresh?"))
+       (user-error "gpr_query did not return a result; refresh?"))
 
       (message "parsing result ... done")
       result)))
diff --git a/packages/ada-mode/gpr.wy b/packages/ada-mode/gpr.wy
index 5fd7d3a..bb7d5a7 100644
--- a/packages/ada-mode/gpr.wy
+++ b/packages/ada-mode/gpr.wy
@@ -6,7 +6,7 @@
 ;; Keywords: syntax
 
 %code copyright_license %{
-;;  Copyright (C) 2013 - 2019 Free Software Foundation, Inc.
+;;  Copyright (C) 2013 - 2020 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
@@ -81,7 +81,7 @@
 ;; handle DOS or Unix newline
 %non_grammar <new-line> NEW_LINE %[ [\x0a]|[\x0d][\x0a] ]%
 
-%non_grammar <comment> COMMENT %[ "--"[^\n]* ]%
+%non_grammar <comment> COMMENT %[ "--"[^\x04\n]* ]%
 
 %token <number> NUMERIC_LITERAL
     %[ [0-9]+ ]%
diff --git a/packages/ada-mode/gpr_process_actions.adb 
b/packages/ada-mode/gpr_process_actions.adb
index ddace40..d1e5248 100644
--- a/packages/ada-mode/gpr_process_actions.adb
+++ b/packages/ada-mode/gpr_process_actions.adb
@@ -2,7 +2,7 @@
 --  command line: wisitoken-bnf-generate.exe  --generate LR1 Ada_Emacs re2c 
PROCESS gpr.wy
 --
 
---  Copyright (C) 2013 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2013 - 2020 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
@@ -26,8 +26,8 @@ package body Gpr_Process_Actions is
    procedure aggregate_g_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -45,8 +45,8 @@ package body Gpr_Process_Actions is
    procedure attribute_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -66,8 +66,8 @@ package body Gpr_Process_Actions is
    procedure attribute_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -88,8 +88,8 @@ package body Gpr_Process_Actions is
    procedure attribute_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -111,8 +111,8 @@ package body Gpr_Process_Actions is
    procedure attribute_declaration_3
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -132,8 +132,8 @@ package body Gpr_Process_Actions is
    procedure case_statement_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -152,8 +152,8 @@ package body Gpr_Process_Actions is
    procedure case_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -171,8 +171,8 @@ package body Gpr_Process_Actions is
    procedure compilation_unit_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -202,8 +202,8 @@ package body Gpr_Process_Actions is
    procedure package_spec_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -235,8 +235,8 @@ package body Gpr_Process_Actions is
    procedure package_extension_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -269,8 +269,8 @@ package body Gpr_Process_Actions is
    procedure package_renaming_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -287,8 +287,8 @@ package body Gpr_Process_Actions is
    procedure project_extension_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -321,8 +321,8 @@ package body Gpr_Process_Actions is
    procedure simple_declarative_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -340,8 +340,8 @@ package body Gpr_Process_Actions is
    procedure simple_declarative_item_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -360,8 +360,8 @@ package body Gpr_Process_Actions is
    procedure simple_declarative_item_4
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -378,8 +378,8 @@ package body Gpr_Process_Actions is
    procedure simple_project_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
@@ -411,8 +411,8 @@ package body Gpr_Process_Actions is
    procedure typed_string_declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       Parse_Data : Wisi.Parse_Data_Type renames Wisi.Parse_Data_Type 
(User_Data);
    begin
diff --git a/packages/ada-mode/gpr_process_actions.ads 
b/packages/ada-mode/gpr_process_actions.ads
index 853c7e2..61bf195 100644
--- a/packages/ada-mode/gpr_process_actions.ads
+++ b/packages/ada-mode/gpr_process_actions.ads
@@ -2,7 +2,7 @@
 --  command line: wisitoken-bnf-generate.exe  --generate LR1 Ada_Emacs re2c 
PROCESS gpr.wy
 --
 
---  Copyright (C) 2013 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2013 - 2020 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
@@ -199,88 +199,88 @@ package Gpr_Process_Actions is
    procedure aggregate_g_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure attribute_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure attribute_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure attribute_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure attribute_declaration_3
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure case_statement_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure case_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure compilation_unit_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure package_spec_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure package_extension_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure package_renaming_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure project_extension_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure simple_declarative_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure simple_declarative_item_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure simple_declarative_item_4
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure simple_project_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure typed_string_declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    function identifier_opt_1_check
     (Lexer          : access constant WisiToken.Lexer.Instance'Class;
      Nonterm        : in out WisiToken.Recover_Token;
diff --git a/packages/ada-mode/gpr_process_main.adb 
b/packages/ada-mode/gpr_process_main.adb
index b25a523..02eb679 100644
--- a/packages/ada-mode/gpr_process_main.adb
+++ b/packages/ada-mode/gpr_process_main.adb
@@ -2,7 +2,7 @@
 --  command line: wisitoken-bnf-generate.exe  --generate LR1 Ada_Emacs re2c 
PROCESS gpr.wy
 --
 
---  Copyright (C) 2013 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2013 - 2020 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
@@ -75,32 +75,31 @@ package body Gpr_Process_Main is
          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);
-            Add_Action (Table.States (0), 15, Reduce, (50, 0), 0, null, null);
-            Add_Action (Table.States (0), 19, Reduce, (50, 0), 0, null, null);
-            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_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);
+            Add_Action (Table.States (0), 15, Reduce, (50, 0),  0, null, null);
+            Add_Action (Table.States (0), 19, Reduce, (50, 0),  0, null, null);
+            Add_Action (Table.States (0), 22, Reduce, (50, 0),  0, null, null);
+            Add_Action (Table.States (0), 26, (73, 0), 1);
+            Add_Action (Table.States (0), 39, Reduce, (50, 0),  0, null, null);
             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);
-            Add_Action (Table.States (1), 19, 9);
-            Add_Action (Table.States (1), 27, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (1), 30, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (1), 31, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (1), 33, Reduce, (58, 0), 0, null, null);
-            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_Action (Table.States (1), 10, (57, 0), 6);
+            Add_Action (Table.States (1), 11, (57, 1), 7);
+            Add_Action (Table.States (1), 14, (41, 0), 8);
+            Add_Action (Table.States (1), 19, (43, 0), 9);
+            Add_Action (Table.States (1), 27, Reduce, (58, 0),  0, null, null);
+            Add_Action (Table.States (1), 30, Reduce, (58, 0),  0, null, null);
+            Add_Action (Table.States (1), 31, Reduce, (58, 0),  0, null, null);
+            Add_Action (Table.States (1), 33, Reduce, (58, 0),  0, null, null);
+            Add_Action (Table.States (1), 34, Reduce, (58, 0),  0, null, null);
+            Add_Action (Table.States (1), 37, (58, 1), 10);
+            Add_Action (Table.States (1), 38, (69, 0), 11);
             Table.States (1).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (1), 41, 12);
             Add_Goto (Table.States (1), 43, 13);
@@ -112,65 +111,65 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (1), 69, 19);
             Add_Goto (Table.States (1), 70, 20);
             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 (1).Kernel := To_Vector ((0 => ((73, 0),  26,  1, 
(2147483647, 0),  0)));
+            Table.States (1).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (70, 0),  0)));
             Table.States (2).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (2), 39, Accept_It, (40, 0), 1, null, 
null);
-            Table.States (2).Kernel := To_Vector ((0 => (40, 48, 1, False)));
+            Add_Action (Table.States (2), 39, Accept_It, (40, 0),  1, null, 
null);
             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);
-            Add_Action (Table.States (3), 15, Reduce, (50, 1), 1, null, null);
-            Add_Action (Table.States (3), 19, Reduce, (50, 1), 1, null, null);
-            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_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);
+            Add_Action (Table.States (3), 15, Reduce, (50, 1),  1, null, null);
+            Add_Action (Table.States (3), 19, Reduce, (50, 1),  1, null, null);
+            Add_Action (Table.States (3), 22, Reduce, (50, 1),  1, null, null);
+            Add_Action (Table.States (3), 26, (73, 0), 1);
+            Add_Action (Table.States (3), 39, Reduce, (50, 1),  1, null, null);
             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 (3).Kernel := To_Vector ((((49, 1),  49,  2, 
(2147483647, 0),  0), ((50, 1),  49,  0, (50, 1),
+             1)));
+            Table.States (3).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (50, 1),  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);
-            Add_Action (Table.States (4), 15, 26);
-            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_Action (Table.States (4), 3, (66, 1), 23);
+            Add_Action (Table.States (4), 5, (66, 3), 24);
+            Add_Action (Table.States (4), 7, (66, 6), 25);
+            Add_Action (Table.States (4), 15, (66, 5), 26);
+            Add_Action (Table.States (4), 19, Reduce, (66, 0),  0, null, null);
+            Add_Action (Table.States (4), 22, (66, 2), 27);
+            Add_Action (Table.States (4), 39, Reduce, (66, 0),  0, null, null);
             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 (4).Kernel := To_Vector ((0 => ((48, 0),  50,  0, 
(66, 0),  0)));
+            Table.States (4).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (66, 0),  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)));
+            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, 0),  73,  0, 
(49, 0),  1)));
+            Table.States (5).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (49, 0),  1)));
             Table.States (6).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (6), 14, 29);
+            Add_Action (Table.States (6), 14, (41, 0), 29);
             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 (6).Kernel := To_Vector ((0 => ((57, 0),  10,  2, 
(2147483647, 0),  0)));
+            Table.States (6).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (41, 0),  14, 29)));
             Table.States (7).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (7), 14, 29);
+            Add_Action (Table.States (7), 14, (41, 0), 29);
             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 (7).Kernel := To_Vector ((0 => ((57, 1),  11,  2, 
(2147483647, 0),  0)));
+            Table.States (7).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (41, 0),  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);
-            Add_Action (Table.States (8), 19, 9);
-            Add_Action (Table.States (8), 21, 35);
-            Add_Conflict (Table.States (8), 21, (58, 0), 0, null, null);
-            Add_Action (Table.States (8), 27, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (8), 30, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (8), 31, Reduce, (58, 0), 0, null, null);
-            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_Action (Table.States (8), 10, (57, 0), 32);
+            Add_Action (Table.States (8), 11, (57, 1), 33);
+            Add_Action (Table.States (8), 14, (41, 0), 34);
+            Add_Action (Table.States (8), 19, (43, 0), 9);
+            Add_Action (Table.States (8), 21, (71, 1), 35);
+            Add_Conflict (Table.States (8), 21, (58, 0),  0, null, null);
+            Add_Action (Table.States (8), 27, Reduce, (58, 0),  0, null, null);
+            Add_Action (Table.States (8), 30, Reduce, (58, 0),  0, null, null);
+            Add_Action (Table.States (8), 31, Reduce, (58, 0),  0, null, null);
+            Add_Action (Table.States (8), 33, Reduce, (58, 0),  0, null, null);
+            Add_Action (Table.States (8), 37, (58, 1), 36);
+            Add_Action (Table.States (8), 38, (69, 0), 37);
             Table.States (8).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (8), 41, 38);
             Add_Goto (Table.States (8), 43, 39);
@@ -182,115 +181,122 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (8), 69, 45);
             Add_Goto (Table.States (8), 70, 46);
             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 (8).Kernel := To_Vector ((((41, 0),  14,  1, 
(2147483647, 0),  0), ((71, 1),  14,  1,
+            (2147483647, 0),  0)));
+            Table.States (8).Minimal_Complete_Actions := To_Vector (((Reduce, 
(70, 0),  0), (Shift, (71, 1),  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)));
+            Add_Action (Table.States (9), (1 =>  33), (43, 0),  1, null, null);
+            Table.States (9).Kernel := To_Vector ((0 => ((43, 0),  19,  0, 
(43, 0),  1)));
+            Table.States (9).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (43, 0),  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)));
+            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, 1),  37,  0, 
(58, 1),  1)));
+            Table.States (10).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (58, 1),  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)));
+            Add_Action (Table.States (11), (27, 30, 34), (69, 0),  1, null, 
null);
+            Table.States (11).Kernel := To_Vector ((0 => ((69, 0),  38,  0, 
(69, 0),  1)));
+            Table.States (11).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (69, 0),  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)));
+            Add_Action (Table.States (12), (27, 30, 34), (71, 2),  1, null, 
null);
+            Table.States (12).Kernel := To_Vector ((0 => ((71, 2),  41,  0, 
(71, 2),  1)));
+            Table.States (12).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (71, 2),  1)));
             Table.States (13).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (13), 33, 48);
-            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)));
+            Add_Action (Table.States (13), 33, (44, 0), 48);
+            Table.States (13).Kernel := To_Vector ((((44, 0),  43,  2, 
(2147483647, 0),  0), ((44, 1),  43,  5,
+            (2147483647, 0),  0)));
+            Table.States (13).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (44, 0),  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)));
+            Add_Action (Table.States (14), (27, 30, 34), (69, 3),  1, null, 
null);
+            Table.States (14).Kernel := To_Vector ((0 => ((69, 3),  44,  0, 
(69, 3),  1)));
+            Table.States (14).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (69, 3),  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);
-            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)));
+            Add_Action (Table.States (15), 27, (56, 1), 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);
+            Table.States (15).Kernel := To_Vector ((((56, 1),  56,  1, 
(2147483647, 0),  0), ((70, 0),  56,  0, (70,
+            0),  1)));
+            Table.States (15).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (70, 0),  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)));
+            Add_Action (Table.States (16), (27, 30, 34), (69, 2),  1, null, 
null);
+            Table.States (16).Kernel := To_Vector ((0 => ((69, 2),  57,  0, 
(69, 2),  1)));
+            Table.States (16).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (69, 2),  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)));
+            Add_Action (Table.States (17), (27, 30, 31, 33, 34), (59, 0),  1, 
null, null);
+            Table.States (17).Kernel := To_Vector ((0 => ((59, 0),  58,  0, 
(59, 0),  1)));
+            Table.States (17).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (59, 0),  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);
-            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)));
+            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, (59, 1), 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);
+            Table.States (18).Kernel := To_Vector ((((43, 1),  59,  0, (43, 
1),  1), ((59, 1),  59,  2, (2147483647,
+            0),  0), ((69, 1),  59,  0, (69, 1),  1)));
+            Table.States (18).Minimal_Complete_Actions := To_Vector (((Reduce, 
(43, 1),  1), (Reduce, (69, 1),  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)));
+            Add_Action (Table.States (19), (27, 30, 34), (71, 0),  1, null, 
null);
+            Table.States (19).Kernel := To_Vector ((0 => ((71, 0),  69,  0, 
(71, 0),  1)));
+            Table.States (19).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (71, 0),  1)));
             Table.States (20).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (20), 30, 51);
-            Add_Action (Table.States (20), 34, 52);
-            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)));
+            Add_Action (Table.States (20), 30, (70, 1), 51);
+            Add_Action (Table.States (20), 34, (73, 0), 52);
+            Table.States (20).Kernel := To_Vector ((((70, 1),  70,  1, 
(2147483647, 0),  0), ((73, 0),  70,  1,
+            (2147483647, 0),  0)));
+            Table.States (20).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (73, 0),  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)));
+            Add_Action (Table.States (21), (27, 30, 34), (56, 0),  1, null, 
null);
+            Table.States (21).Kernel := To_Vector ((0 => ((56, 0),  71,  0, 
(56, 0),  1)));
+            Table.States (21).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 0),  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;
+            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, 1),  73,  0, 
(49, 1),  2)));
+            Table.States (22).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (49, 1),  2)));
             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)));
+            Add_Action (Table.States (23), (19, 39), (66, 1),  1, null, null);
+            Table.States (23).Kernel := To_Vector ((0 => ((66, 1),  3,  0, 
(66, 1),  1)));
+            Table.States (23).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (66, 1),  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);
-            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)));
+            Add_Action (Table.States (24), 15, (66, 4), 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);
+            Table.States (24).Kernel := To_Vector ((((66, 3),  5,  0, (66, 3), 
 1), ((66, 4),  5,  1, (2147483647, 0),
+            0)));
+            Table.States (24).Minimal_Complete_Actions := To_Vector (((Reduce, 
(66, 3),  1), (Shift, (66, 4),  15,
+            53)));
             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)));
+            Add_Action (Table.States (25), (19, 39), (66, 6),  1, null, null);
+            Table.States (25).Kernel := To_Vector ((0 => ((66, 6),  7,  0, 
(66, 6),  1)));
+            Table.States (25).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (66, 6),  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)));
+            Add_Action (Table.States (26), (19, 39), (66, 5),  1, null, null);
+            Table.States (26).Kernel := To_Vector ((0 => ((66, 5),  15,  0, 
(66, 5),  1)));
+            Table.States (26).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (66, 5),  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)));
+            Add_Action (Table.States (27), (19, 39), (66, 2),  1, null, null);
+            Table.States (27).Kernel := To_Vector ((0 => ((66, 2),  22,  0, 
(66, 2),  1)));
+            Table.States (27).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (66, 2),  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_Action (Table.States (28), 19, (65, 0), 54);
+            Add_Action (Table.States (28), 39, Reduce, (64, 0),  0, null, 
null);
             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 (28).Kernel := To_Vector ((0 => ((48, 0),  66,  0, 
(64, 0),  0)));
+            Table.States (28).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (64, 0),  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);
-            Add_Action (Table.States (29), 19, 9);
-            Add_Action (Table.States (29), 21, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (29), 27, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (29), 30, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (29), 31, Reduce, (58, 0), 0, null, null);
-            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_Action (Table.States (29), 10, (57, 0), 32);
+            Add_Action (Table.States (29), 11, (57, 1), 33);
+            Add_Action (Table.States (29), 14, (41, 0), 34);
+            Add_Action (Table.States (29), 19, (43, 0), 9);
+            Add_Action (Table.States (29), 21, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (29), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (29), 30, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (29), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (29), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (29), 37, (58, 1), 36);
+            Add_Action (Table.States (29), 38, (69, 0), 37);
             Table.States (29).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (29), 41, 38);
             Add_Goto (Table.States (29), 43, 39);
@@ -302,41 +308,41 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (29), 69, 45);
             Add_Goto (Table.States (29), 70, 46);
             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 (29).Kernel := To_Vector ((0 => ((41, 0),  14,  1, 
(2147483647, 0),  0)));
+            Table.States (29).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (70, 0),  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)));
+            Add_Action (Table.States (30), (27, 30, 34), (57, 0),  2, null, 
null);
+            Table.States (30).Kernel := To_Vector ((0 => ((57, 0),  41,  0, 
(57, 0),  2)));
+            Table.States (30).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (57, 0),  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)));
+            Add_Action (Table.States (31), (27, 30, 34), (57, 1),  2, null, 
null);
+            Table.States (31).Kernel := To_Vector ((0 => ((57, 1),  41,  0, 
(57, 1),  2)));
+            Table.States (31).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (57, 1),  2)));
             Table.States (32).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (32), 14, 58);
+            Add_Action (Table.States (32), 14, (41, 0), 58);
             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 (32).Kernel := To_Vector ((0 => ((57, 0),  10,  2, 
(2147483647, 0),  0)));
+            Table.States (32).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (41, 0),  14, 58)));
             Table.States (33).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (33), 14, 58);
+            Add_Action (Table.States (33), 14, (41, 0), 58);
             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 (33).Kernel := To_Vector ((0 => ((57, 1),  11,  2, 
(2147483647, 0),  0)));
+            Table.States (33).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (41, 0),  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);
-            Add_Action (Table.States (34), 19, 9);
-            Add_Action (Table.States (34), 21, 61);
-            Add_Conflict (Table.States (34), 21, (58, 0), 0, null, null);
-            Add_Action (Table.States (34), 27, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (34), 30, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (34), 31, Reduce, (58, 0), 0, null, null);
-            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_Action (Table.States (34), 10, (57, 0), 32);
+            Add_Action (Table.States (34), 11, (57, 1), 33);
+            Add_Action (Table.States (34), 14, (41, 0), 34);
+            Add_Action (Table.States (34), 19, (43, 0), 9);
+            Add_Action (Table.States (34), 21, (71, 1), 61);
+            Add_Conflict (Table.States (34), 21, (58, 0),  0, null, null);
+            Add_Action (Table.States (34), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (34), 30, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (34), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (34), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (34), 37, (58, 1), 36);
+            Add_Action (Table.States (34), 38, (69, 0), 37);
             Table.States (34).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (34), 41, 38);
             Add_Goto (Table.States (34), 43, 39);
@@ -348,83 +354,90 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (34), 69, 45);
             Add_Goto (Table.States (34), 70, 62);
             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 (34).Kernel := To_Vector ((((41, 0),  14,  1, 
(2147483647, 0),  0), ((71, 1),  14,  1,
+            (2147483647, 0),  0)));
+            Table.States (34).Minimal_Complete_Actions := To_Vector (((Reduce, 
(70, 0),  0), (Shift, (71, 1),  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)));
+            Add_Action (Table.States (35), (27, 30, 34), (71, 1),  2, null, 
null);
+            Table.States (35).Kernel := To_Vector ((0 => ((71, 1),  21,  0, 
(71, 1),  2)));
+            Table.States (35).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (71, 1),  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)));
+            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, 1),  37,  0, 
(58, 1),  1)));
+            Table.States (36).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (58, 1),  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)));
+            Add_Action (Table.States (37), (21, 27, 30), (69, 0),  1, null, 
null);
+            Table.States (37).Kernel := To_Vector ((0 => ((69, 0),  38,  0, 
(69, 0),  1)));
+            Table.States (37).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (69, 0),  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)));
+            Add_Action (Table.States (38), (21, 27, 30), (71, 2),  1, null, 
null);
+            Table.States (38).Kernel := To_Vector ((0 => ((71, 2),  41,  0, 
(71, 2),  1)));
+            Table.States (38).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (71, 2),  1)));
             Table.States (39).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (39), 33, 63);
-            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)));
+            Add_Action (Table.States (39), 33, (44, 0), 63);
+            Table.States (39).Kernel := To_Vector ((((44, 0),  43,  2, 
(2147483647, 0),  0), ((44, 1),  43,  5,
+            (2147483647, 0),  0)));
+            Table.States (39).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (44, 0),  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)));
+            Add_Action (Table.States (40), (21, 27, 30), (69, 3),  1, null, 
null);
+            Table.States (40).Kernel := To_Vector ((0 => ((69, 3),  44,  0, 
(69, 3),  1)));
+            Table.States (40).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (69, 3),  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);
-            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)));
+            Add_Action (Table.States (41), 21, Reduce, (70, 0),  1, null, 
null);
+            Add_Action (Table.States (41), 27, (56, 1), 64);
+            Add_Action (Table.States (41), 30, Reduce, (70, 0),  1, null, 
null);
+            Table.States (41).Kernel := To_Vector ((((56, 1),  56,  1, 
(2147483647, 0),  0), ((70, 0),  56,  0, (70,
+            0),  1)));
+            Table.States (41).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (70, 0),  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)));
+            Add_Action (Table.States (42), (21, 27, 30), (69, 2),  1, null, 
null);
+            Table.States (42).Kernel := To_Vector ((0 => ((69, 2),  57,  0, 
(69, 2),  1)));
+            Table.States (42).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (69, 2),  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)));
+            Add_Action (Table.States (43), (21, 27, 30, 31, 33), (59, 0),  1, 
null, null);
+            Table.States (43).Kernel := To_Vector ((0 => ((59, 0),  58,  0, 
(59, 0),  1)));
+            Table.States (43).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (59, 0),  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);
-            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)));
+            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, (59, 1), 65);
+            Add_Action (Table.States (44), 33, Reduce, (43, 1),  1, null, 
null);
+            Table.States (44).Kernel := To_Vector ((((43, 1),  59,  0, (43, 
1),  1), ((59, 1),  59,  2, (2147483647,
+            0),  0), ((69, 1),  59,  0, (69, 1),  1)));
+            Table.States (44).Minimal_Complete_Actions := To_Vector (((Reduce, 
(43, 1),  1), (Reduce, (69, 1),  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)));
+            Add_Action (Table.States (45), (21, 27, 30), (71, 0),  1, null, 
null);
+            Table.States (45).Kernel := To_Vector ((0 => ((71, 0),  69,  0, 
(71, 0),  1)));
+            Table.States (45).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (71, 0),  1)));
             Table.States (46).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (46), 21, 66);
-            Add_Action (Table.States (46), 30, 67);
-            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)));
+            Add_Action (Table.States (46), 21, (41, 0), 66);
+            Add_Action (Table.States (46), 30, (70, 1), 67);
+            Table.States (46).Kernel := To_Vector ((((41, 0),  70,  1, 
(2147483647, 0),  0), ((70, 1),  70,  1,
+            (2147483647, 0),  0)));
+            Table.States (46).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (41, 0),  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)));
+            Add_Action (Table.States (47), (21, 27, 30), (56, 0),  1, null, 
null);
+            Table.States (47).Kernel := To_Vector ((0 => ((56, 0),  71,  0, 
(56, 0),  1)));
+            Table.States (47).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 0),  1)));
             Table.States (48).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (48), 37, 68);
-            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)));
+            Add_Action (Table.States (48), 37, (44, 0), 68);
+            Table.States (48).Kernel := To_Vector ((((44, 0),  33,  1, 
(2147483647, 0),  0), ((44, 1),  33,  4,
+            (2147483647, 0),  0)));
+            Table.States (48).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (44, 0),  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);
-            Add_Action (Table.States (49), 19, 9);
-            Add_Action (Table.States (49), 27, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (49), 30, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (49), 31, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (49), 33, Reduce, (58, 0), 0, null, null);
-            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_Action (Table.States (49), 10, (57, 0), 6);
+            Add_Action (Table.States (49), 11, (57, 1), 7);
+            Add_Action (Table.States (49), 14, (41, 0), 8);
+            Add_Action (Table.States (49), 19, (43, 0), 9);
+            Add_Action (Table.States (49), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (49), 30, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (49), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (49), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (49), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (49), 37, (58, 1), 10);
+            Add_Action (Table.States (49), 38, (69, 0), 11);
             Table.States (49).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (49), 41, 12);
             Add_Goto (Table.States (49), 43, 13);
@@ -434,26 +447,24 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (49), 59, 18);
             Add_Goto (Table.States (49), 69, 19);
             Add_Goto (Table.States (49), 71, 69);
-            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 (49).Kernel := To_Vector ((0 => ((56, 1),  27,  0, 
(71, 0),  1)));
+            Table.States (49).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (71, 0),  1)));
             Table.States (50).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (50), 37, 70);
-            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;
+            Add_Action (Table.States (50), 37, (59, 1), 70);
+            Table.States (50).Kernel := To_Vector ((0 => ((59, 1),  31,  1, 
(2147483647, 0),  0)));
+            Table.States (50).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (59, 1),  37, 70)));
             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);
-            Add_Action (Table.States (51), 19, 9);
-            Add_Action (Table.States (51), 27, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (51), 30, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (51), 31, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (51), 33, Reduce, (58, 0), 0, null, null);
-            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_Action (Table.States (51), 10, (57, 0), 6);
+            Add_Action (Table.States (51), 11, (57, 1), 7);
+            Add_Action (Table.States (51), 14, (41, 0), 8);
+            Add_Action (Table.States (51), 19, (43, 0), 9);
+            Add_Action (Table.States (51), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (51), 30, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (51), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (51), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (51), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (51), 37, (58, 1), 10);
+            Add_Action (Table.States (51), 38, (69, 0), 11);
             Table.States (51).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (51), 41, 12);
             Add_Goto (Table.States (51), 43, 13);
@@ -464,49 +475,49 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (51), 59, 18);
             Add_Goto (Table.States (51), 69, 19);
             Add_Goto (Table.States (51), 71, 21);
-            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 (51).Kernel := To_Vector ((0 => ((70, 1),  30,  0, 
(56, 1),  3)));
+            Table.States (51).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 1),  3)));
             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)));
+            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, 0),  34,  0, 
(73, 0),  3)));
+            Table.States (52).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (73, 0),  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)));
+            Add_Action (Table.States (53), (19, 39), (66, 4),  2, null, null);
+            Table.States (53).Kernel := To_Vector ((0 => ((66, 4),  15,  0, 
(66, 4),  2)));
+            Table.States (53).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (66, 4),  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_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, (58, 1), 72);
             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 (54).Kernel := To_Vector ((((65, 0),  19,  5, 
(2147483647, 0),  0), ((68, 0),  19,  3,
+            (2147483647, 0),  0)));
+            Table.States (54).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (58, 0),  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)));
+            Add_Action (Table.States (55), (1 =>  39), (48, 0),  3, 
compilation_unit_0'Access, null);
+            Table.States (55).Kernel := To_Vector ((0 => ((48, 0),  64,  0, 
(48, 0),  3)));
+            Table.States (55).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (48, 0),  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)));
+            Add_Action (Table.States (56), (1 =>  39), (64, 2),  1, null, 
null);
+            Table.States (56).Kernel := To_Vector ((0 => ((64, 2),  65,  0, 
(64, 2),  1)));
+            Table.States (56).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (64, 2),  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)));
+            Add_Action (Table.States (57), (1 =>  39), (64, 1),  1, null, 
null);
+            Table.States (57).Kernel := To_Vector ((0 => ((64, 1),  68,  0, 
(64, 1),  1)));
+            Table.States (57).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (64, 1),  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);
-            Add_Action (Table.States (58), 19, 9);
-            Add_Action (Table.States (58), 21, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (58), 27, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (58), 30, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (58), 31, Reduce, (58, 0), 0, null, null);
-            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_Action (Table.States (58), 10, (57, 0), 32);
+            Add_Action (Table.States (58), 11, (57, 1), 33);
+            Add_Action (Table.States (58), 14, (41, 0), 34);
+            Add_Action (Table.States (58), 19, (43, 0), 9);
+            Add_Action (Table.States (58), 21, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (58), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (58), 30, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (58), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (58), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (58), 37, (58, 1), 36);
+            Add_Action (Table.States (58), 38, (69, 0), 37);
             Table.States (58).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (58), 41, 38);
             Add_Goto (Table.States (58), 43, 39);
@@ -518,41 +529,43 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (58), 69, 45);
             Add_Goto (Table.States (58), 70, 62);
             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 (58).Kernel := To_Vector ((0 => ((41, 0),  14,  1, 
(2147483647, 0),  0)));
+            Table.States (58).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (70, 0),  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)));
+            Add_Action (Table.States (59), (21, 27, 30), (57, 0),  2, null, 
null);
+            Table.States (59).Kernel := To_Vector ((0 => ((57, 0),  41,  0, 
(57, 0),  2)));
+            Table.States (59).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (57, 0),  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)));
+            Add_Action (Table.States (60), (21, 27, 30), (57, 1),  2, null, 
null);
+            Table.States (60).Kernel := To_Vector ((0 => ((57, 1),  41,  0, 
(57, 1),  2)));
+            Table.States (60).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (57, 1),  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)));
+            Add_Action (Table.States (61), (21, 27, 30), (71, 1),  2, null, 
null);
+            Table.States (61).Kernel := To_Vector ((0 => ((71, 1),  21,  0, 
(71, 1),  2)));
+            Table.States (61).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (71, 1),  2)));
             Table.States (62).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (62), 21, 74);
-            Add_Action (Table.States (62), 30, 67);
-            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)));
+            Add_Action (Table.States (62), 21, (41, 0), 74);
+            Add_Action (Table.States (62), 30, (70, 1), 67);
+            Table.States (62).Kernel := To_Vector ((((41, 0),  70,  1, 
(2147483647, 0),  0), ((70, 1),  70,  1,
+            (2147483647, 0),  0)));
+            Table.States (62).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (41, 0),  21, 74)));
             Table.States (63).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (63), 37, 75);
-            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)));
+            Add_Action (Table.States (63), 37, (44, 0), 75);
+            Table.States (63).Kernel := To_Vector ((((44, 0),  33,  1, 
(2147483647, 0),  0), ((44, 1),  33,  4,
+            (2147483647, 0),  0)));
+            Table.States (63).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (44, 0),  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);
-            Add_Action (Table.States (64), 19, 9);
-            Add_Action (Table.States (64), 21, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (64), 27, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (64), 30, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (64), 31, Reduce, (58, 0), 0, null, null);
-            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_Action (Table.States (64), 10, (57, 0), 32);
+            Add_Action (Table.States (64), 11, (57, 1), 33);
+            Add_Action (Table.States (64), 14, (41, 0), 34);
+            Add_Action (Table.States (64), 19, (43, 0), 9);
+            Add_Action (Table.States (64), 21, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (64), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (64), 30, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (64), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (64), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (64), 37, (58, 1), 36);
+            Add_Action (Table.States (64), 38, (69, 0), 37);
             Table.States (64).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (64), 41, 38);
             Add_Goto (Table.States (64), 43, 39);
@@ -562,30 +575,28 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (64), 59, 44);
             Add_Goto (Table.States (64), 69, 45);
             Add_Goto (Table.States (64), 71, 76);
-            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 (64).Kernel := To_Vector ((0 => ((56, 1),  27,  0, 
(71, 0),  1)));
+            Table.States (64).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (71, 0),  1)));
             Table.States (65).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (65), 37, 77);
-            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;
+            Add_Action (Table.States (65), 37, (59, 1), 77);
+            Table.States (65).Kernel := To_Vector ((0 => ((59, 1),  31,  1, 
(2147483647, 0),  0)));
+            Table.States (65).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (59, 1),  37, 77)));
             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)));
+            Add_Action (Table.States (66), (27, 30, 34), (41, 0),  3, 
aggregate_g_0'Access, null);
+            Table.States (66).Kernel := To_Vector ((0 => ((41, 0),  21,  0, 
(41, 0),  3)));
+            Table.States (66).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (41, 0),  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);
-            Add_Action (Table.States (67), 19, 9);
-            Add_Action (Table.States (67), 21, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (67), 27, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (67), 30, Reduce, (58, 0), 0, null, null);
-            Add_Action (Table.States (67), 31, Reduce, (58, 0), 0, null, null);
-            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_Action (Table.States (67), 10, (57, 0), 32);
+            Add_Action (Table.States (67), 11, (57, 1), 33);
+            Add_Action (Table.States (67), 14, (41, 0), 34);
+            Add_Action (Table.States (67), 19, (43, 0), 9);
+            Add_Action (Table.States (67), 21, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (67), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (67), 30, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (67), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (67), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (67), 37, (58, 1), 36);
+            Add_Action (Table.States (67), 38, (69, 0), 37);
             Table.States (67).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (67), 41, 38);
             Add_Goto (Table.States (67), 43, 39);
@@ -596,86 +607,86 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (67), 59, 44);
             Add_Goto (Table.States (67), 69, 45);
             Add_Goto (Table.States (67), 71, 47);
-            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 (67).Kernel := To_Vector ((0 => ((70, 1),  30,  0, 
(56, 1),  3)));
+            Table.States (67).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 1),  3)));
             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);
-            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)));
+            Add_Action (Table.States (68), 14, (44, 1), 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);
+            Table.States (68).Kernel := To_Vector ((((44, 0),  37,  0, (44, 
0),  3), ((44, 1),  37,  3, (2147483647,
+            0),  0)));
+            Table.States (68).Minimal_Complete_Actions := To_Vector (((Reduce, 
(44, 0),  3), (Shift, (44, 1),  14,
+            79)));
             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;
+            Add_Action (Table.States (69), (27, 30, 34), (56, 1),  3, null, 
null);
+            Table.States (69).Kernel := To_Vector ((0 => ((56, 1),  71,  0, 
(56, 1),  3)));
+            Table.States (69).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 1),  3)));
             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;
+            Add_Action (Table.States (70), (27, 30, 31, 33, 34), (59, 1),  3, 
null, null);
+            Table.States (70).Kernel := To_Vector ((0 => ((59, 1),  37,  0, 
(59, 1),  3)));
+            Table.States (70).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (59, 1),  3)));
             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);
-            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;
+            Add_Action (Table.States (71), 27, (56, 1), 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);
+            Table.States (71).Kernel := To_Vector ((((56, 1),  56,  1, 
(2147483647, 0),  0), ((70, 1),  56,  0, (70,
+            1),  3)));
+            Table.States (71).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (70, 1),  3)));
             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)));
+            Add_Action (Table.States (72), (9, 13), (58, 1),  1, null, 
identifier_opt_1_check'Access);
+            Table.States (72).Kernel := To_Vector ((0 => ((58, 1),  37,  0, 
(58, 1),  1)));
+            Table.States (72).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (58, 1),  1)));
             Table.States (73).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (73), 9, 80);
-            Add_Action (Table.States (73), 13, 81);
-            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)));
+            Add_Action (Table.States (73), 9, (65, 0), 80);
+            Add_Action (Table.States (73), 13, (68, 0), 81);
+            Table.States (73).Kernel := To_Vector ((((65, 0),  58,  5, 
(2147483647, 0),  0), ((68, 0),  58,  3,
+            (2147483647, 0),  0)));
+            Table.States (73).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (68, 0),  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)));
+            Add_Action (Table.States (74), (21, 27, 30), (41, 0),  3, 
aggregate_g_0'Access, null);
+            Table.States (74).Kernel := To_Vector ((0 => ((41, 0),  21,  0, 
(41, 0),  3)));
+            Table.States (74).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (41, 0),  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);
-            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)));
+            Add_Action (Table.States (75), 14, (44, 1), 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);
+            Table.States (75).Kernel := To_Vector ((((44, 0),  37,  0, (44, 
0),  3), ((44, 1),  37,  3, (2147483647,
+            0),  0)));
+            Table.States (75).Minimal_Complete_Actions := To_Vector (((Reduce, 
(44, 0),  3), (Shift, (44, 1),  14,
+            82)));
             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;
+            Add_Action (Table.States (76), (21, 27, 30), (56, 1),  3, null, 
null);
+            Table.States (76).Kernel := To_Vector ((0 => ((56, 1),  71,  0, 
(56, 1),  3)));
+            Table.States (76).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 1),  3)));
             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;
+            Add_Action (Table.States (77), (21, 27, 30, 31, 33), (59, 1),  3, 
null, null);
+            Table.States (77).Kernel := To_Vector ((0 => ((59, 1),  37,  0, 
(59, 1),  3)));
+            Table.States (77).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (59, 1),  3)));
             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);
-            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;
+            Add_Action (Table.States (78), 21, Reduce, (70, 1),  3, null, 
null);
+            Add_Action (Table.States (78), 27, (56, 1), 64);
+            Add_Action (Table.States (78), 30, Reduce, (70, 1),  3, null, 
null);
+            Table.States (78).Kernel := To_Vector ((((56, 1),  56,  1, 
(2147483647, 0),  0), ((70, 1),  56,  0, (70,
+            1),  3)));
+            Table.States (78).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (70, 1),  3)));
             Table.States (79).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (79), 38, 83);
-            Table.States (79).Kernel := To_Vector ((0 => (44, 14, 2, False)));
-            Table.States (79).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 38, 83)));
+            Add_Action (Table.States (79), 38, (44, 1), 83);
+            Table.States (79).Kernel := To_Vector ((0 => ((44, 1),  14,  2, 
(2147483647, 0),  0)));
+            Table.States (79).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (44, 1),  38, 83)));
             Table.States (80).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (80), 38, 84);
-            Table.States (80).Kernel := To_Vector ((0 => (65, 9, 4, False)));
-            Table.States (80).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 38, 84)));
+            Add_Action (Table.States (80), 38, (65, 0), 84);
+            Table.States (80).Kernel := To_Vector ((0 => ((65, 0),  9,  4, 
(2147483647, 0),  0)));
+            Table.States (80).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (65, 0),  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);
-            Add_Action (Table.States (81), 16, 87);
-            Add_Action (Table.States (81), 18, 88);
-            Add_Action (Table.States (81), 23, 89);
-            Add_Action (Table.States (81), 37, 90);
+            Add_Action (Table.States (81), 6, (45, 0), 85);
+            Add_Action (Table.States (81), 8, Reduce, (53, 0),  0, null, null);
+            Add_Action (Table.States (81), 12, (42, 0), 86);
+            Add_Action (Table.States (81), 16, (67, 4), 87);
+            Add_Action (Table.States (81), 18, (61, 0), 88);
+            Add_Action (Table.States (81), 23, (72, 0), 89);
+            Add_Action (Table.States (81), 37, (67, 0), 90);
             Table.States (81).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (81), 42, 91);
             Add_Goto (Table.States (81), 45, 92);
@@ -688,77 +699,79 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (81), 63, 99);
             Add_Goto (Table.States (81), 67, 100);
             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 (81).Kernel := To_Vector ((0 => ((68, 0),  13,  2, 
(2147483647, 0),  0)));
+            Table.States (81).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (53, 0),  0)));
             Table.States (82).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (82), 38, 102);
-            Table.States (82).Kernel := To_Vector ((0 => (44, 14, 2, False)));
-            Table.States (82).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 38, 102)));
+            Add_Action (Table.States (82), 38, (44, 1), 102);
+            Table.States (82).Kernel := To_Vector ((0 => ((44, 1),  14,  2, 
(2147483647, 0),  0)));
+            Table.States (82).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (44, 1),  38, 102)));
             Table.States (83).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (83), 21, 103);
-            Table.States (83).Kernel := To_Vector ((0 => (44, 38, 1, False)));
-            Table.States (83).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 103)));
+            Add_Action (Table.States (83), 21, (44, 1), 103);
+            Table.States (83).Kernel := To_Vector ((0 => ((44, 1),  38,  1, 
(2147483647, 0),  0)));
+            Table.States (83).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (44, 1),  21, 103)));
             Table.States (84).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (84), 13, 104);
-            Table.States (84).Kernel := To_Vector ((0 => (65, 38, 3, False)));
-            Table.States (84).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 104)));
+            Add_Action (Table.States (84), 13, (65, 0), 104);
+            Table.States (84).Kernel := To_Vector ((0 => ((65, 0),  38,  3, 
(2147483647, 0),  0)));
+            Table.States (84).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (65, 0),  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_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, (58, 1), 105);
             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 (85).Kernel := To_Vector ((0 => ((45, 0),  6,  4, 
(2147483647, 0),  0)));
+            Table.States (85).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (59, 0),  0)));
             Table.States (86).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (86), 10, 108);
-            Add_Action (Table.States (86), 37, 109);
-            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)));
+            Add_Action (Table.States (86), 10, (42, 3), 108);
+            Add_Action (Table.States (86), 37, (42, 0), 109);
+            Table.States (86).Kernel := To_Vector ((((42, 0),  12,  3, 
(2147483647, 0),  0), ((42, 1),  12,  5,
+            (2147483647, 0),  0), ((42, 2),  12,  7, (2147483647, 0),  0), 
((42, 3),  12,  6, (2147483647, 0),  0)));
+            Table.States (86).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 0),  37, 109)));
             Table.States (87).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (87), 34, 110);
-            Table.States (87).Kernel := To_Vector ((0 => (67, 16, 1, False)));
-            Table.States (87).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 110)));
+            Add_Action (Table.States (87), 34, (67, 4), 110);
+            Table.States (87).Kernel := To_Vector ((0 => ((67, 4),  16,  1, 
(2147483647, 0),  0)));
+            Table.States (87).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (67, 4),  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_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, (58, 1), 111);
             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 (88).Kernel := To_Vector ((((61, 0),  18,  3, 
(2147483647, 0),  0), ((62, 0),  18,  4,
+            (2147483647, 0),  0), ((63, 0),  18,  2, (2147483647, 0),  0)));
+            Table.States (88).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (58, 0),  0)));
             Table.States (89).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (89), 37, 113);
-            Table.States (89).Kernel := To_Vector ((0 => (72, 23, 5, False)));
-            Table.States (89).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 113)));
+            Add_Action (Table.States (89), 37, (72, 0), 113);
+            Table.States (89).Kernel := To_Vector ((0 => ((72, 0),  23,  5, 
(2147483647, 0),  0)));
+            Table.States (89).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (72, 0),  37, 113)));
             Table.States (90).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (90), 28, 114);
-            Add_Action (Table.States (90), 29, 115);
-            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)));
+            Add_Action (Table.States (90), 28, (67, 1), 114);
+            Add_Action (Table.States (90), 29, (67, 0), 115);
+            Table.States (90).Kernel := To_Vector ((((67, 0),  37,  2, 
(2147483647, 0),  0), ((67, 1),  37,  4,
+            (2147483647, 0),  0)));
+            Table.States (90).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (67, 0),  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)));
+            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, 2),  42,  0, 
(67, 2),  1)));
+            Table.States (91).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (67, 2),  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)));
+            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, 3),  45,  0, 
(67, 3),  1)));
+            Table.States (92).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (67, 3),  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)));
+            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, 0),  51,  0, 
(52, 0),  1)));
+            Table.States (93).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (52, 0),  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);
-            Add_Action (Table.States (94), 16, 87);
-            Add_Action (Table.States (94), 18, 88);
-            Add_Action (Table.States (94), 23, 89);
-            Add_Action (Table.States (94), 37, 90);
+            Add_Action (Table.States (94), 6, (45, 0), 85);
+            Add_Action (Table.States (94), 8, Reduce, (53, 1),  1, null, null);
+            Add_Action (Table.States (94), 12, (42, 0), 86);
+            Add_Action (Table.States (94), 16, (67, 4), 87);
+            Add_Action (Table.States (94), 18, (61, 0), 88);
+            Add_Action (Table.States (94), 23, (72, 0), 89);
+            Add_Action (Table.States (94), 37, (67, 0), 90);
             Table.States (94).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (94), 42, 91);
             Add_Goto (Table.States (94), 45, 92);
@@ -769,52 +782,56 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (94), 63, 99);
             Add_Goto (Table.States (94), 67, 100);
             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 (94).Kernel := To_Vector ((((52, 1),  52,  2, 
(2147483647, 0),  0), ((53, 1),  52,  0, (53,
+            1),  1)));
+            Table.States (94).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (53, 1),  1)));
             Table.States (95).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (95), 8, 117);
-            Table.States (95).Kernel := To_Vector ((0 => (68, 53, 2, False)));
-            Table.States (95).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 8, 117)));
+            Add_Action (Table.States (95), 8, (68, 0), 117);
+            Table.States (95).Kernel := To_Vector ((0 => ((68, 0),  53,  2, 
(2147483647, 0),  0)));
+            Table.States (95).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (68, 0),  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)));
+            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, 2),  60,  0, 
(51, 2),  1)));
+            Table.States (96).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (51, 2),  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)));
+            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, 0),  61,  0, 
(60, 0),  1)));
+            Table.States (97).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (60, 0),  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)));
+            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, 1),  62,  0, 
(60, 1),  1)));
+            Table.States (98).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (60, 1),  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)));
+            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, 2),  63,  0, 
(60, 2),  1)));
+            Table.States (99).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (60, 2),  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)));
+            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, 0),  67,  0, 
(51, 0),  1)));
+            Table.States (100).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (51, 0),  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)));
+            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, 1),  72,  0, 
(51, 1),  1)));
+            Table.States (101).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (51, 1),  1)));
+         end Subr_1;
+         procedure Subr_2
+         is begin
             Table.States (102).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (102), 21, 118);
-            Table.States (102).Kernel := To_Vector ((0 => (44, 38, 1, False)));
-            Table.States (102).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 118)));
+            Add_Action (Table.States (102), 21, (44, 1), 118);
+            Table.States (102).Kernel := To_Vector ((0 => ((44, 1),  38,  1, 
(2147483647, 0),  0)));
+            Table.States (102).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (44, 1),  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)));
+            Add_Action (Table.States (103), (27, 30, 34), (44, 1),  6, null, 
null);
+            Table.States (103).Kernel := To_Vector ((0 => ((44, 1),  21,  0, 
(44, 1),  6)));
+            Table.States (103).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (44, 1),  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);
-            Add_Action (Table.States (104), 16, 87);
-            Add_Action (Table.States (104), 18, 88);
-            Add_Action (Table.States (104), 23, 89);
-            Add_Action (Table.States (104), 37, 90);
+            Add_Action (Table.States (104), 6, (45, 0), 85);
+            Add_Action (Table.States (104), 8, Reduce, (53, 0),  0, null, 
null);
+            Add_Action (Table.States (104), 12, (42, 0), 86);
+            Add_Action (Table.States (104), 16, (67, 4), 87);
+            Add_Action (Table.States (104), 18, (61, 0), 88);
+            Add_Action (Table.States (104), 23, (72, 0), 89);
+            Add_Action (Table.States (104), 37, (67, 0), 90);
             Table.States (104).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (104), 42, 91);
             Add_Goto (Table.States (104), 45, 92);
@@ -827,67 +844,67 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (104), 63, 99);
             Add_Goto (Table.States (104), 67, 100);
             Add_Goto (Table.States (104), 72, 101);
-            Table.States (104).Kernel := To_Vector ((0 => (65, 13, 2, False)));
-            Table.States (104).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 53, 0)));
-         end Subr_1;
-         procedure Subr_2
-         is begin
+            Table.States (104).Kernel := To_Vector ((0 => ((65, 0),  13,  2, 
(2147483647, 0),  0)));
+            Table.States (104).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (53, 0),  0)));
             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)));
+            Add_Action (Table.States (105), (13, 31), (58, 1),  1, null, 
identifier_opt_1_check'Access);
+            Table.States (105).Kernel := To_Vector ((0 => ((58, 1),  37,  0, 
(58, 1),  1)));
+            Table.States (105).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (58, 1),  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)));
+            Add_Action (Table.States (106), (13, 31), (59, 0),  1, null, null);
+            Table.States (106).Kernel := To_Vector ((0 => ((59, 0),  58,  0, 
(59, 0),  1)));
+            Table.States (106).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (59, 0),  1)));
             Table.States (107).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (107), 13, 120);
-            Add_Action (Table.States (107), 31, 121);
-            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)));
+            Add_Action (Table.States (107), 13, (45, 0), 120);
+            Add_Action (Table.States (107), 31, (59, 1), 121);
+            Table.States (107).Kernel := To_Vector ((((45, 0),  59,  4, 
(2147483647, 0),  0), ((59, 1),  59,  2,
+            (2147483647, 0),  0)));
+            Table.States (107).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (45, 0),  13, 120)));
             Table.States (108).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (108), 14, 122);
-            Table.States (108).Kernel := To_Vector ((0 => (42, 10, 5, False)));
-            Table.States (108).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 122)));
+            Add_Action (Table.States (108), 14, (42, 3), 122);
+            Table.States (108).Kernel := To_Vector ((0 => ((42, 3),  10,  5, 
(2147483647, 0),  0)));
+            Table.States (108).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 3),  14, 122)));
             Table.States (109).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (109), 14, 123);
-            Add_Action (Table.States (109), 24, 124);
-            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)));
+            Add_Action (Table.States (109), 14, (42, 1), 123);
+            Add_Action (Table.States (109), 24, (42, 0), 124);
+            Table.States (109).Kernel := To_Vector ((((42, 0),  37,  2, 
(2147483647, 0),  0), ((42, 1),  37,  4,
+            (2147483647, 0),  0), ((42, 2),  37,  6, (2147483647, 0),  0)));
+            Table.States (109).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 0),  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,
+            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 (110).Kernel := To_Vector ((0 => ((67, 4),  34,  0, 
(67, 4),  2)));
+            Table.States (110).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (67, 4),  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)));
+            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, 1),  37,  0, 
(58, 1),  1)));
+            Table.States (111).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (58, 1),  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);
-            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)));
+            Add_Action (Table.States (112), 9, (62, 0), 125);
+            Add_Action (Table.States (112), 13, (61, 0), 126);
+            Add_Action (Table.States (112), 20, (63, 0), 127);
+            Table.States (112).Kernel := To_Vector ((((61, 0),  58,  3, 
(2147483647, 0),  0), ((62, 0),  58,  4,
+            (2147483647, 0),  0), ((63, 0),  58,  2, (2147483647, 0),  0)));
+            Table.States (112).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (63, 0),  20, 127)));
             Table.States (113).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (113), 13, 128);
-            Table.States (113).Kernel := To_Vector ((0 => (72, 37, 4, False)));
-            Table.States (113).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 128)));
+            Add_Action (Table.States (113), 13, (72, 0), 128);
+            Table.States (113).Kernel := To_Vector ((0 => ((72, 0),  37,  4, 
(2147483647, 0),  0)));
+            Table.States (113).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (72, 0),  13, 128)));
             Table.States (114).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (114), 37, 129);
-            Table.States (114).Kernel := To_Vector ((0 => (67, 28, 3, False)));
-            Table.States (114).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 129)));
+            Add_Action (Table.States (114), 37, (67, 1), 129);
+            Table.States (114).Kernel := To_Vector ((0 => ((67, 1),  28,  3, 
(2147483647, 0),  0)));
+            Table.States (114).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (67, 1),  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);
-            Add_Action (Table.States (115), 19, 9);
-            Add_Action (Table.States (115), 27, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (115), 31, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (115), 33, Reduce, (58, 0), 0, null, 
null);
-            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_Action (Table.States (115), 10, (57, 0), 130);
+            Add_Action (Table.States (115), 11, (57, 1), 131);
+            Add_Action (Table.States (115), 14, (41, 0), 132);
+            Add_Action (Table.States (115), 19, (43, 0), 9);
+            Add_Action (Table.States (115), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (115), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (115), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (115), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (115), 37, (58, 1), 133);
+            Add_Action (Table.States (115), 38, (69, 0), 134);
             Table.States (115).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (115), 41, 135);
             Add_Goto (Table.States (115), 43, 136);
@@ -898,65 +915,64 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (115), 59, 141);
             Add_Goto (Table.States (115), 69, 142);
             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 (115).Kernel := To_Vector ((0 => ((67, 0),  29,  1, 
(2147483647, 0),  0)));
+            Table.States (115).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 0),  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;
+            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, 1),  51,  0, 
(52, 1),  2)));
+            Table.States (116).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (52, 1),  2)));
             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_Action (Table.States (117), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (117), 37, (58, 1), 144);
             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 (117).Kernel := To_Vector ((0 => ((68, 0),  8,  1, 
(2147483647, 0),  0)));
+            Table.States (117).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (58, 0),  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)));
+            Add_Action (Table.States (118), (21, 27, 30), (44, 1),  6, null, 
null);
+            Table.States (118).Kernel := To_Vector ((0 => ((44, 1),  21,  0, 
(44, 1),  6)));
+            Table.States (118).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (44, 1),  6)));
             Table.States (119).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (119), 8, 146);
-            Table.States (119).Kernel := To_Vector ((0 => (65, 53, 2, False)));
-            Table.States (119).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 8, 146)));
+            Add_Action (Table.States (119), 8, (65, 0), 146);
+            Table.States (119).Kernel := To_Vector ((0 => ((65, 0),  53,  2, 
(2147483647, 0),  0)));
+            Table.States (119).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (65, 0),  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_Action (Table.States (120), 8, Reduce, (47, 0),  0, null, 
null);
+            Add_Action (Table.States (120), 25, (46, 0), 147);
+            Add_Conflict (Table.States (120), 25, (47, 0),  0, null, null);
             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 (120).Kernel := To_Vector ((0 => ((45, 0),  13,  3, 
(2147483647, 0),  0)));
+            Table.States (120).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (47, 0),  0)));
             Table.States (121).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (121), 37, 150);
-            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;
+            Add_Action (Table.States (121), 37, (59, 1), 150);
+            Table.States (121).Kernel := To_Vector ((0 => ((59, 1),  31,  1, 
(2147483647, 0),  0)));
+            Table.States (121).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (59, 1),  37, 150)));
             Table.States (122).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (122), 38, 151);
-            Table.States (122).Kernel := To_Vector ((0 => (42, 14, 4, False)));
-            Table.States (122).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 38, 151)));
+            Add_Action (Table.States (122), 38, (42, 3), 151);
+            Table.States (122).Kernel := To_Vector ((0 => ((42, 3),  14,  4, 
(2147483647, 0),  0)));
+            Table.States (122).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 3),  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_Action (Table.States (123), 17, (54, 2), 152);
+            Add_Action (Table.States (123), 21, Reduce, (54, 0),  0, null, 
null);
+            Add_Action (Table.States (123), 38, (54, 1), 153);
             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 (123).Kernel := To_Vector ((((42, 1),  14,  3, 
(2147483647, 0),  0), ((42, 2),  14,  5,
+            (2147483647, 0),  0)));
+            Table.States (123).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (54, 0),  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);
-            Add_Action (Table.States (124), 19, 9);
-            Add_Action (Table.States (124), 27, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (124), 31, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (124), 33, Reduce, (58, 0), 0, null, 
null);
-            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_Action (Table.States (124), 10, (57, 0), 130);
+            Add_Action (Table.States (124), 11, (57, 1), 131);
+            Add_Action (Table.States (124), 14, (41, 0), 132);
+            Add_Action (Table.States (124), 19, (43, 0), 9);
+            Add_Action (Table.States (124), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (124), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (124), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (124), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (124), 37, (58, 1), 133);
+            Add_Action (Table.States (124), 38, (69, 0), 134);
             Table.States (124).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (124), 41, 135);
             Add_Goto (Table.States (124), 43, 136);
@@ -967,25 +983,25 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (124), 59, 141);
             Add_Goto (Table.States (124), 69, 142);
             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 (124).Kernel := To_Vector ((0 => ((42, 0),  24,  1, 
(2147483647, 0),  0)));
+            Table.States (124).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 0),  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_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, (58, 1), 105);
             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 (125).Kernel := To_Vector ((0 => ((62, 0),  9,  3, 
(2147483647, 0),  0)));
+            Table.States (125).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (59, 0),  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);
-            Add_Action (Table.States (126), 16, 87);
-            Add_Action (Table.States (126), 18, 88);
-            Add_Action (Table.States (126), 23, 89);
-            Add_Action (Table.States (126), 37, 90);
+            Add_Action (Table.States (126), 6, (45, 0), 85);
+            Add_Action (Table.States (126), 8, Reduce, (53, 0),  0, null, 
null);
+            Add_Action (Table.States (126), 12, (42, 0), 86);
+            Add_Action (Table.States (126), 16, (67, 4), 87);
+            Add_Action (Table.States (126), 18, (61, 0), 88);
+            Add_Action (Table.States (126), 23, (72, 0), 89);
+            Add_Action (Table.States (126), 37, (67, 0), 90);
             Table.States (126).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (126), 42, 91);
             Add_Goto (Table.States (126), 45, 92);
@@ -998,52 +1014,52 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (126), 63, 99);
             Add_Goto (Table.States (126), 67, 100);
             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 (126).Kernel := To_Vector ((0 => ((61, 0),  13,  2, 
(2147483647, 0),  0)));
+            Table.States (126).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (53, 0),  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_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, (58, 1), 158);
             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 (127).Kernel := To_Vector ((0 => ((63, 0),  20,  1, 
(2147483647, 0),  0)));
+            Table.States (127).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (59, 0),  0)));
             Table.States (128).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (128), 14, 161);
+            Add_Action (Table.States (128), 14, (41, 0), 161);
             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 (128).Kernel := To_Vector ((0 => ((72, 0),  13,  3, 
(2147483647, 0),  0)));
+            Table.States (128).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (41, 0),  14, 161)));
             Table.States (129).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (129), 29, 163);
-            Table.States (129).Kernel := To_Vector ((0 => (67, 37, 2, False)));
-            Table.States (129).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 29, 163)));
+            Add_Action (Table.States (129), 29, (67, 1), 163);
+            Table.States (129).Kernel := To_Vector ((0 => ((67, 1),  37,  2, 
(2147483647, 0),  0)));
+            Table.States (129).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (67, 1),  29, 163)));
             Table.States (130).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (130), 14, 164);
+            Add_Action (Table.States (130), 14, (41, 0), 164);
             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 (130).Kernel := To_Vector ((0 => ((57, 0),  10,  2, 
(2147483647, 0),  0)));
+            Table.States (130).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (41, 0),  14, 164)));
             Table.States (131).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (131), 14, 164);
+            Add_Action (Table.States (131), 14, (41, 0), 164);
             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 (131).Kernel := To_Vector ((0 => ((57, 1),  11,  2, 
(2147483647, 0),  0)));
+            Table.States (131).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (41, 0),  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);
-            Add_Action (Table.States (132), 19, 9);
-            Add_Action (Table.States (132), 21, 167);
-            Add_Conflict (Table.States (132), 21, (58, 0), 0, null, null);
-            Add_Action (Table.States (132), 27, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (132), 30, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (132), 31, Reduce, (58, 0), 0, null, 
null);
-            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_Action (Table.States (132), 10, (57, 0), 32);
+            Add_Action (Table.States (132), 11, (57, 1), 33);
+            Add_Action (Table.States (132), 14, (41, 0), 34);
+            Add_Action (Table.States (132), 19, (43, 0), 9);
+            Add_Action (Table.States (132), 21, (71, 1), 167);
+            Add_Conflict (Table.States (132), 21, (58, 0),  0, null, null);
+            Add_Action (Table.States (132), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (132), 30, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (132), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (132), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (132), 37, (58, 1), 36);
+            Add_Action (Table.States (132), 38, (69, 0), 37);
             Table.States (132).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (132), 41, 38);
             Add_Goto (Table.States (132), 43, 39);
@@ -1055,152 +1071,161 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (132), 69, 45);
             Add_Goto (Table.States (132), 70, 168);
             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 (132).Kernel := To_Vector ((((41, 0),  14,  1, 
(2147483647, 0),  0), ((71, 1),  14,  1,
+            (2147483647, 0),  0)));
+            Table.States (132).Minimal_Complete_Actions := To_Vector 
(((Reduce, (70, 0),  0), (Shift, (71, 1),  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)));
+            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, 1),  37,  0, 
(58, 1),  1)));
+            Table.States (133).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (58, 1),  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)));
+            Add_Action (Table.States (134), (27, 34), (69, 0),  1, null, null);
+            Table.States (134).Kernel := To_Vector ((0 => ((69, 0),  38,  0, 
(69, 0),  1)));
+            Table.States (134).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (69, 0),  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)));
+            Add_Action (Table.States (135), (27, 34), (71, 2),  1, null, null);
+            Table.States (135).Kernel := To_Vector ((0 => ((71, 2),  41,  0, 
(71, 2),  1)));
+            Table.States (135).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (71, 2),  1)));
             Table.States (136).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (136), 33, 169);
-            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)));
+            Add_Action (Table.States (136), 33, (44, 0), 169);
+            Table.States (136).Kernel := To_Vector ((((44, 0),  43,  2, 
(2147483647, 0),  0), ((44, 1),  43,  5,
+            (2147483647, 0),  0)));
+            Table.States (136).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (44, 0),  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)));
+            Add_Action (Table.States (137), (27, 34), (69, 3),  1, null, null);
+            Table.States (137).Kernel := To_Vector ((0 => ((69, 3),  44,  0, 
(69, 3),  1)));
+            Table.States (137).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (69, 3),  1)));
             Table.States (138).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (138), 27, 170);
-            Add_Action (Table.States (138), 34, 171);
-            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)));
+            Add_Action (Table.States (138), 27, (56, 1), 170);
+            Add_Action (Table.States (138), 34, (67, 0), 171);
+            Table.States (138).Kernel := To_Vector ((((56, 1),  56,  1, 
(2147483647, 0),  0), ((67, 0),  56,  1,
+            (2147483647, 0),  0)));
+            Table.States (138).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (67, 0),  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)));
+            Add_Action (Table.States (139), (27, 34), (69, 2),  1, null, null);
+            Table.States (139).Kernel := To_Vector ((0 => ((69, 2),  57,  0, 
(69, 2),  1)));
+            Table.States (139).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (69, 2),  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)));
+            Add_Action (Table.States (140), (27, 31, 33, 34), (59, 0),  1, 
null, null);
+            Table.States (140).Kernel := To_Vector ((0 => ((59, 0),  58,  0, 
(59, 0),  1)));
+            Table.States (140).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (59, 0),  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);
-            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)));
+            Add_Action (Table.States (141), 27, Reduce, (69, 1),  1, null, 
null);
+            Add_Action (Table.States (141), 31, (59, 1), 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);
+            Table.States (141).Kernel := To_Vector ((((43, 1),  59,  0, (43, 
1),  1), ((59, 1),  59,  2, (2147483647,
+            0),  0), ((69, 1),  59,  0, (69, 1),  1)));
+            Table.States (141).Minimal_Complete_Actions := To_Vector 
(((Reduce, (43, 1),  1), (Reduce, (69, 1),  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)));
+            Add_Action (Table.States (142), (27, 34), (71, 0),  1, null, null);
+            Table.States (142).Kernel := To_Vector ((0 => ((71, 0),  69,  0, 
(71, 0),  1)));
+            Table.States (142).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (71, 0),  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)));
+            Add_Action (Table.States (143), (27, 34), (56, 0),  1, null, null);
+            Table.States (143).Kernel := To_Vector ((0 => ((56, 0),  71,  0, 
(56, 0),  1)));
+            Table.States (143).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 0),  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)));
+            Add_Action (Table.States (144), (1 =>  34), (58, 1),  1, null, 
identifier_opt_1_check'Access);
+            Table.States (144).Kernel := To_Vector ((0 => ((58, 1),  37,  0, 
(58, 1),  1)));
+            Table.States (144).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (58, 1),  1)));
             Table.States (145).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (145), 34, 173);
-            Table.States (145).Kernel := To_Vector ((0 => (68, 58, 1, False)));
-            Table.States (145).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 173)));
+            Add_Action (Table.States (145), 34, (68, 0), 173);
+            Table.States (145).Kernel := To_Vector ((0 => ((68, 0),  58,  1, 
(2147483647, 0),  0)));
+            Table.States (145).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (68, 0),  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_Action (Table.States (146), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (146), 37, (58, 1), 144);
             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 (146).Kernel := To_Vector ((0 => ((65, 0),  8,  1, 
(2147483647, 0),  0)));
+            Table.States (146).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (58, 0),  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_Action (Table.States (147), 17, (54, 2), 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, (54, 1), 176);
             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 (147).Kernel := To_Vector ((0 => ((46, 0),  25,  1, 
(2147483647, 0),  0)));
+            Table.States (147).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (55, 0),  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)));
+            Add_Action (Table.States (148), (8, 25), (47, 1),  1, null, null);
+            Table.States (148).Kernel := To_Vector ((0 => ((47, 1),  46,  0, 
(47, 1),  1)));
+            Table.States (148).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (47, 1),  1)));
             Table.States (149).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (149), 8, 179);
-            Add_Action (Table.States (149), 25, 147);
+            Add_Action (Table.States (149), 8, (45, 0), 179);
+            Add_Action (Table.States (149), 25, (46, 0), 147);
             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 (149).Kernel := To_Vector ((((45, 0),  47,  3, 
(2147483647, 0),  0), ((47, 2),  47,  2,
+            (2147483647, 0),  0)));
+            Table.States (149).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (45, 0),  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;
+            Add_Action (Table.States (150), (13, 31), (59, 1),  3, null, null);
+            Table.States (150).Kernel := To_Vector ((0 => ((59, 1),  37,  0, 
(59, 1),  3)));
+            Table.States (150).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (59, 1),  3)));
             Table.States (151).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (151), 21, 181);
-            Table.States (151).Kernel := To_Vector ((0 => (42, 38, 3, False)));
-            Table.States (151).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 181)));
+            Add_Action (Table.States (151), 21, (42, 3), 181);
+            Table.States (151).Kernel := To_Vector ((0 => ((42, 3),  38,  3, 
(2147483647, 0),  0)));
+            Table.States (151).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 3),  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)));
+            Add_Action (Table.States (152), (1 =>  21), (54, 2),  1, null, 
null);
+            Table.States (152).Kernel := To_Vector ((0 => ((54, 2),  17,  0, 
(54, 2),  1)));
+            Table.States (152).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (54, 2),  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)));
+            Add_Action (Table.States (153), (1 =>  21), (54, 1),  1, null, 
null);
+            Table.States (153).Kernel := To_Vector ((0 => ((54, 1),  38,  0, 
(54, 1),  1)));
+            Table.States (153).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (54, 1),  1)));
             Table.States (154).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (154), 21, 182);
-            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)));
+            Add_Action (Table.States (154), 21, (42, 1), 182);
+            Table.States (154).Kernel := To_Vector ((((42, 1),  54,  3, 
(2147483647, 0),  0), ((42, 2),  54,  5,
+            (2147483647, 0),  0)));
+            Table.States (154).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 1),  21, 182)));
             Table.States (155).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (155), 27, 170);
-            Add_Action (Table.States (155), 34, 183);
-            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)));
+            Add_Action (Table.States (155), 27, (56, 1), 170);
+            Add_Action (Table.States (155), 34, (42, 0), 183);
+            Table.States (155).Kernel := To_Vector ((((42, 0),  56,  1, 
(2147483647, 0),  0), ((56, 1),  56,  1,
+            (2147483647, 0),  0)));
+            Table.States (155).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 0),  34, 183)));
             Table.States (156).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (156), 13, 184);
-            Add_Action (Table.States (156), 31, 121);
-            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)));
+            Add_Action (Table.States (156), 13, (62, 0), 184);
+            Add_Action (Table.States (156), 31, (59, 1), 121);
+            Table.States (156).Kernel := To_Vector ((((59, 1),  59,  2, 
(2147483647, 0),  0), ((62, 0),  59,  3,
+            (2147483647, 0),  0)));
+            Table.States (156).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (62, 0),  13, 184)));
             Table.States (157).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (157), 8, 185);
-            Table.States (157).Kernel := To_Vector ((0 => (61, 53, 2, False)));
-            Table.States (157).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 8, 185)));
+            Add_Action (Table.States (157), 8, (61, 0), 185);
+            Table.States (157).Kernel := To_Vector ((0 => ((61, 0),  53,  2, 
(2147483647, 0),  0)));
+            Table.States (157).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (61, 0),  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)));
+            Add_Action (Table.States (158), (31, 34), (58, 1),  1, null, 
identifier_opt_1_check'Access);
+            Table.States (158).Kernel := To_Vector ((0 => ((58, 1),  37,  0, 
(58, 1),  1)));
+            Table.States (158).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (58, 1),  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)));
+            Add_Action (Table.States (159), (31, 34), (59, 0),  1, null, null);
+            Table.States (159).Kernel := To_Vector ((0 => ((59, 0),  58,  0, 
(59, 0),  1)));
+            Table.States (159).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (59, 0),  1)));
             Table.States (160).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (160), 31, 186);
-            Add_Action (Table.States (160), 34, 187);
-            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)));
+            Add_Action (Table.States (160), 31, (59, 1), 186);
+            Add_Action (Table.States (160), 34, (63, 0), 187);
+            Table.States (160).Kernel := To_Vector ((((59, 1),  59,  2, 
(2147483647, 0),  0), ((63, 0),  59,  1,
+            (2147483647, 0),  0)));
+            Table.States (160).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (63, 0),  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);
-            Add_Action (Table.States (161), 19, 9);
-            Add_Action (Table.States (161), 21, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (161), 27, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (161), 30, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (161), 31, Reduce, (58, 0), 0, null, 
null);
-            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_Action (Table.States (161), 10, (57, 0), 32);
+            Add_Action (Table.States (161), 11, (57, 1), 33);
+            Add_Action (Table.States (161), 14, (41, 0), 34);
+            Add_Action (Table.States (161), 19, (43, 0), 9);
+            Add_Action (Table.States (161), 21, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (161), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (161), 30, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (161), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (161), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (161), 37, (58, 1), 36);
+            Add_Action (Table.States (161), 38, (69, 0), 37);
             Table.States (161).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (161), 41, 38);
             Add_Goto (Table.States (161), 43, 39);
@@ -1212,23 +1237,23 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (161), 69, 45);
             Add_Goto (Table.States (161), 70, 188);
             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 (161).Kernel := To_Vector ((0 => ((41, 0),  14,  1, 
(2147483647, 0),  0)));
+            Table.States (161).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (70, 0),  0)));
             Table.States (162).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (162), 34, 189);
-            Table.States (162).Kernel := To_Vector ((0 => (72, 41, 1, False)));
-            Table.States (162).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 189)));
+            Add_Action (Table.States (162), 34, (72, 0), 189);
+            Table.States (162).Kernel := To_Vector ((0 => ((72, 0),  41,  1, 
(2147483647, 0),  0)));
+            Table.States (162).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (72, 0),  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);
-            Add_Action (Table.States (163), 19, 9);
-            Add_Action (Table.States (163), 27, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (163), 31, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (163), 33, Reduce, (58, 0), 0, null, 
null);
-            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_Action (Table.States (163), 10, (57, 0), 130);
+            Add_Action (Table.States (163), 11, (57, 1), 131);
+            Add_Action (Table.States (163), 14, (41, 0), 132);
+            Add_Action (Table.States (163), 19, (43, 0), 9);
+            Add_Action (Table.States (163), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (163), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (163), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (163), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (163), 37, (58, 1), 133);
+            Add_Action (Table.States (163), 38, (69, 0), 134);
             Table.States (163).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (163), 41, 135);
             Add_Goto (Table.States (163), 43, 136);
@@ -1239,20 +1264,20 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (163), 59, 141);
             Add_Goto (Table.States (163), 69, 142);
             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 (163).Kernel := To_Vector ((0 => ((67, 1),  29,  1, 
(2147483647, 0),  0)));
+            Table.States (163).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 0),  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);
-            Add_Action (Table.States (164), 19, 9);
-            Add_Action (Table.States (164), 21, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (164), 27, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (164), 30, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (164), 31, Reduce, (58, 0), 0, null, 
null);
-            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_Action (Table.States (164), 10, (57, 0), 32);
+            Add_Action (Table.States (164), 11, (57, 1), 33);
+            Add_Action (Table.States (164), 14, (41, 0), 34);
+            Add_Action (Table.States (164), 19, (43, 0), 9);
+            Add_Action (Table.States (164), 21, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (164), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (164), 30, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (164), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (164), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (164), 37, (58, 1), 36);
+            Add_Action (Table.States (164), 38, (69, 0), 37);
             Table.States (164).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (164), 41, 38);
             Add_Goto (Table.States (164), 43, 39);
@@ -1264,40 +1289,42 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (164), 69, 45);
             Add_Goto (Table.States (164), 70, 168);
             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 (164).Kernel := To_Vector ((0 => ((41, 0),  14,  1, 
(2147483647, 0),  0)));
+            Table.States (164).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (70, 0),  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)));
+            Add_Action (Table.States (165), (27, 34), (57, 0),  2, null, null);
+            Table.States (165).Kernel := To_Vector ((0 => ((57, 0),  41,  0, 
(57, 0),  2)));
+            Table.States (165).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (57, 0),  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)));
+            Add_Action (Table.States (166), (27, 34), (57, 1),  2, null, null);
+            Table.States (166).Kernel := To_Vector ((0 => ((57, 1),  41,  0, 
(57, 1),  2)));
+            Table.States (166).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (57, 1),  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)));
+            Add_Action (Table.States (167), (27, 34), (71, 1),  2, null, null);
+            Table.States (167).Kernel := To_Vector ((0 => ((71, 1),  21,  0, 
(71, 1),  2)));
+            Table.States (167).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (71, 1),  2)));
             Table.States (168).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (168), 21, 191);
-            Add_Action (Table.States (168), 30, 67);
-            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)));
+            Add_Action (Table.States (168), 21, (41, 0), 191);
+            Add_Action (Table.States (168), 30, (70, 1), 67);
+            Table.States (168).Kernel := To_Vector ((((41, 0),  70,  1, 
(2147483647, 0),  0), ((70, 1),  70,  1,
+            (2147483647, 0),  0)));
+            Table.States (168).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (41, 0),  21, 191)));
             Table.States (169).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (169), 37, 192);
-            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)));
+            Add_Action (Table.States (169), 37, (44, 0), 192);
+            Table.States (169).Kernel := To_Vector ((((44, 0),  33,  1, 
(2147483647, 0),  0), ((44, 1),  33,  4,
+            (2147483647, 0),  0)));
+            Table.States (169).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (44, 0),  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);
-            Add_Action (Table.States (170), 19, 9);
-            Add_Action (Table.States (170), 27, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (170), 31, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (170), 33, Reduce, (58, 0), 0, null, 
null);
-            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_Action (Table.States (170), 10, (57, 0), 130);
+            Add_Action (Table.States (170), 11, (57, 1), 131);
+            Add_Action (Table.States (170), 14, (41, 0), 132);
+            Add_Action (Table.States (170), 19, (43, 0), 9);
+            Add_Action (Table.States (170), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (170), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (170), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (170), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (170), 37, (58, 1), 133);
+            Add_Action (Table.States (170), 38, (69, 0), 134);
             Table.States (170).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (170), 41, 135);
             Add_Goto (Table.States (170), 43, 136);
@@ -1307,75 +1334,74 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (170), 59, 141);
             Add_Goto (Table.States (170), 69, 142);
             Add_Goto (Table.States (170), 71, 193);
-            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 (170).Kernel := To_Vector ((0 => ((56, 1),  27,  0, 
(71, 0),  1)));
+            Table.States (170).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (71, 0),  1)));
             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,
+            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 (171).Kernel := To_Vector ((0 => ((67, 0),  34,  0, 
(67, 0),  4)));
+            Table.States (171).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (67, 0),  4)));
             Table.States (172).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (172), 37, 194);
-            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;
+            Add_Action (Table.States (172), 37, (59, 1), 194);
+            Table.States (172).Kernel := To_Vector ((0 => ((59, 1),  31,  1, 
(2147483647, 0),  0)));
+            Table.States (172).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (59, 1),  37, 194)));
             Table.States (173).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (173), (1 =>  39), (68, 0), 7, 
simple_project_declaration_0'Access,
+            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 (173).Kernel := To_Vector ((0 => ((68, 0),  34,  0, 
(68, 0),  7)));
+            Table.States (173).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (68, 0),  7)));
             Table.States (174).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (174), 34, 195);
-            Table.States (174).Kernel := To_Vector ((0 => (65, 58, 1, False)));
-            Table.States (174).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 195)));
+            Add_Action (Table.States (174), 34, (65, 0), 195);
+            Table.States (174).Kernel := To_Vector ((0 => ((65, 0),  58,  1, 
(2147483647, 0),  0)));
+            Table.States (174).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (65, 0),  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)));
+            Add_Action (Table.States (175), (32, 35), (54, 2),  1, null, null);
+            Table.States (175).Kernel := To_Vector ((0 => ((54, 2),  17,  0, 
(54, 2),  1)));
+            Table.States (175).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (54, 2),  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)));
+            Add_Action (Table.States (176), (32, 35), (54, 1),  1, null, null);
+            Table.States (176).Kernel := To_Vector ((0 => ((54, 1),  38,  0, 
(54, 1),  1)));
+            Table.States (176).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (54, 1),  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)));
+            Add_Action (Table.States (177), (32, 35), (55, 0),  1, null, null);
+            Table.States (177).Kernel := To_Vector ((0 => ((55, 0),  54,  0, 
(55, 0),  1)));
+            Table.States (177).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (55, 0),  1)));
             Table.States (178).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (178), 32, 196);
-            Add_Action (Table.States (178), 35, 197);
-            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)));
+            Add_Action (Table.States (178), 32, (46, 0), 196);
+            Add_Action (Table.States (178), 35, (55, 1), 197);
+            Table.States (178).Kernel := To_Vector ((((46, 0),  55,  1, 
(2147483647, 0),  0), ((55, 1),  55,  1,
+            (2147483647, 0),  0)));
+            Table.States (178).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (46, 0),  32, 196)));
             Table.States (179).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (179), 6, 198);
-            Table.States (179).Kernel := To_Vector ((0 => (45, 8, 2, False)));
-            Table.States (179).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 6, 198)));
+            Add_Action (Table.States (179), 6, (45, 0), 198);
+            Table.States (179).Kernel := To_Vector ((0 => ((45, 0),  8,  2, 
(2147483647, 0),  0)));
+            Table.States (179).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (45, 0),  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;
+            Add_Action (Table.States (180), (8, 25), (47, 2),  2, null, null);
+            Table.States (180).Kernel := To_Vector ((0 => ((47, 2),  46,  0, 
(47, 2),  2)));
+            Table.States (180).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (47, 2),  2)));
             Table.States (181).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (181), 24, 199);
-            Table.States (181).Kernel := To_Vector ((0 => (42, 21, 2, False)));
-            Table.States (181).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 199)));
+            Add_Action (Table.States (181), 24, (42, 3), 199);
+            Table.States (181).Kernel := To_Vector ((0 => ((42, 3),  21,  2, 
(2147483647, 0),  0)));
+            Table.States (181).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 3),  24, 199)));
             Table.States (182).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (182), 24, 200);
-            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)));
+            Add_Action (Table.States (182), 24, (42, 1), 200);
+            Table.States (182).Kernel := To_Vector ((((42, 1),  21,  2, 
(2147483647, 0),  0), ((42, 2),  21,  4,
+            (2147483647, 0),  0)));
+            Table.States (182).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 1),  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,
+            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 (183).Kernel := To_Vector ((0 => ((42, 0),  34,  0, 
(42, 0),  5)));
+            Table.States (183).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (42, 0),  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);
-            Add_Action (Table.States (184), 16, 87);
-            Add_Action (Table.States (184), 18, 88);
-            Add_Action (Table.States (184), 23, 89);
-            Add_Action (Table.States (184), 37, 90);
+            Add_Action (Table.States (184), 6, (45, 0), 85);
+            Add_Action (Table.States (184), 8, Reduce, (53, 0),  0, null, 
null);
+            Add_Action (Table.States (184), 12, (42, 0), 86);
+            Add_Action (Table.States (184), 16, (67, 4), 87);
+            Add_Action (Table.States (184), 18, (61, 0), 88);
+            Add_Action (Table.States (184), 23, (72, 0), 89);
+            Add_Action (Table.States (184), 37, (67, 0), 90);
             Table.States (184).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (184), 42, 91);
             Add_Goto (Table.States (184), 45, 92);
@@ -1388,73 +1414,74 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (184), 63, 99);
             Add_Goto (Table.States (184), 67, 100);
             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 (184).Kernel := To_Vector ((0 => ((62, 0),  13,  2, 
(2147483647, 0),  0)));
+            Table.States (184).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (53, 0),  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_Action (Table.States (185), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (185), 37, (58, 1), 144);
             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 (185).Kernel := To_Vector ((0 => ((61, 0),  8,  1, 
(2147483647, 0),  0)));
+            Table.States (185).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (58, 0),  0)));
             Table.States (186).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (186), 37, 203);
-            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;
+            Add_Action (Table.States (186), 37, (59, 1), 203);
+            Table.States (186).Kernel := To_Vector ((0 => ((59, 1),  31,  1, 
(2147483647, 0),  0)));
+            Table.States (186).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (59, 1),  37, 203)));
             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)));
+            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, 0),  34,  0, 
(63, 0),  5)));
+            Table.States (187).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (63, 0),  5)));
             Table.States (188).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (188), 21, 204);
-            Add_Action (Table.States (188), 30, 67);
-            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)));
+            Add_Action (Table.States (188), 21, (41, 0), 204);
+            Add_Action (Table.States (188), 30, (70, 1), 67);
+            Table.States (188).Kernel := To_Vector ((((41, 0),  70,  1, 
(2147483647, 0),  0), ((70, 1),  70,  1,
+            (2147483647, 0),  0)));
+            Table.States (188).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (41, 0),  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,
+            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 (189).Kernel := To_Vector ((0 => ((72, 0),  34,  0, 
(72, 0),  5)));
+            Table.States (189).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (72, 0),  5)));
             Table.States (190).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (190), 27, 170);
-            Add_Action (Table.States (190), 34, 205);
-            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)));
+            Add_Action (Table.States (190), 27, (56, 1), 170);
+            Add_Action (Table.States (190), 34, (67, 1), 205);
+            Table.States (190).Kernel := To_Vector ((((56, 1),  56,  1, 
(2147483647, 0),  0), ((67, 1),  56,  1,
+            (2147483647, 0),  0)));
+            Table.States (190).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (67, 1),  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)));
+            Add_Action (Table.States (191), (27, 34), (41, 0),  3, 
aggregate_g_0'Access, null);
+            Table.States (191).Kernel := To_Vector ((0 => ((41, 0),  21,  0, 
(41, 0),  3)));
+            Table.States (191).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (41, 0),  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);
-            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)));
+            Add_Action (Table.States (192), 14, (44, 1), 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);
+            Table.States (192).Kernel := To_Vector ((((44, 0),  37,  0, (44, 
0),  3), ((44, 1),  37,  3, (2147483647,
+            0),  0)));
+            Table.States (192).Minimal_Complete_Actions := To_Vector 
(((Reduce, (44, 0),  3), (Shift, (44, 1),  14,
+            206)));
             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;
+            Add_Action (Table.States (193), (27, 34), (56, 1),  3, null, null);
+            Table.States (193).Kernel := To_Vector ((0 => ((56, 1),  71,  0, 
(56, 1),  3)));
+            Table.States (193).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 1),  3)));
             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;
+            Add_Action (Table.States (194), (27, 31, 33, 34), (59, 1),  3, 
null, null);
+            Table.States (194).Kernel := To_Vector ((0 => ((59, 1),  37,  0, 
(59, 1),  3)));
+            Table.States (194).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (59, 1),  3)));
             Table.States (195).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (195), (1 =>  39), (65, 0), 9, 
project_extension_0'Access,
+            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 (195).Kernel := To_Vector ((0 => ((65, 0),  34,  0, 
(65, 0),  9)));
+            Table.States (195).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (65, 0),  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);
-            Add_Action (Table.States (196), 16, 209);
-            Add_Action (Table.States (196), 18, 210);
-            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_Action (Table.States (196), 6, (45, 0), 207);
+            Add_Action (Table.States (196), 8, Reduce, (53, 0),  0, null, 
null);
+            Add_Action (Table.States (196), 12, (42, 0), 208);
+            Add_Action (Table.States (196), 16, (67, 4), 209);
+            Add_Action (Table.States (196), 18, (61, 0), 210);
+            Add_Action (Table.States (196), 23, (72, 0), 211);
+            Add_Action (Table.States (196), 25, Reduce, (53, 0),  0, null, 
null);
+            Add_Action (Table.States (196), 37, (67, 0), 212);
             Table.States (196).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (196), 42, 213);
             Add_Goto (Table.States (196), 45, 214);
@@ -1467,33 +1494,32 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (196), 63, 221);
             Add_Goto (Table.States (196), 67, 222);
             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 (196).Kernel := To_Vector ((0 => ((46, 0),  32,  0, 
(53, 0),  0)));
+            Table.States (196).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (53, 0),  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_Action (Table.States (197), 17, (54, 2), 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, (54, 1), 176);
             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 (197).Kernel := To_Vector ((0 => ((55, 1),  35,  0, 
(54, 0),  0)));
+            Table.States (197).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (54, 0),  0)));
             Table.States (198).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (198), 34, 225);
-            Table.States (198).Kernel := To_Vector ((0 => (45, 6, 1, False)));
-            Table.States (198).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 225)));
+            Add_Action (Table.States (198), 34, (45, 0), 225);
+            Table.States (198).Kernel := To_Vector ((0 => ((45, 0),  6,  1, 
(2147483647, 0),  0)));
+            Table.States (198).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (45, 0),  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);
-            Add_Action (Table.States (199), 19, 9);
-            Add_Action (Table.States (199), 27, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (199), 31, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (199), 33, Reduce, (58, 0), 0, null, 
null);
-            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_Action (Table.States (199), 10, (57, 0), 130);
+            Add_Action (Table.States (199), 11, (57, 1), 131);
+            Add_Action (Table.States (199), 14, (41, 0), 132);
+            Add_Action (Table.States (199), 19, (43, 0), 9);
+            Add_Action (Table.States (199), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (199), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (199), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (199), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (199), 37, (58, 1), 133);
+            Add_Action (Table.States (199), 38, (69, 0), 134);
             Table.States (199).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (199), 41, 135);
             Add_Goto (Table.States (199), 43, 136);
@@ -1504,20 +1530,20 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (199), 59, 141);
             Add_Goto (Table.States (199), 69, 142);
             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 (199).Kernel := To_Vector ((0 => ((42, 3),  24,  1, 
(2147483647, 0),  0)));
+            Table.States (199).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 0),  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);
-            Add_Action (Table.States (200), 14, 229);
-            Add_Action (Table.States (200), 19, 9);
-            Add_Action (Table.States (200), 27, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (200), 31, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (200), 33, Reduce, (58, 0), 0, null, 
null);
-            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_Action (Table.States (200), 4, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (200), 10, (57, 0), 227);
+            Add_Action (Table.States (200), 11, (57, 1), 228);
+            Add_Action (Table.States (200), 14, (41, 0), 229);
+            Add_Action (Table.States (200), 19, (43, 0), 9);
+            Add_Action (Table.States (200), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (200), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (200), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (200), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (200), 37, (58, 1), 230);
+            Add_Action (Table.States (200), 38, (69, 0), 231);
             Table.States (200).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (200), 41, 232);
             Add_Goto (Table.States (200), 43, 233);
@@ -1528,95 +1554,97 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (200), 59, 238);
             Add_Goto (Table.States (200), 69, 239);
             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 (200).Kernel := To_Vector ((((42, 1),  24,  1, 
(2147483647, 0),  0), ((42, 2),  24,  3,
+            (2147483647, 0),  0)));
+            Table.States (200).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 0),  0)));
             Table.States (201).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (201), 8, 241);
-            Table.States (201).Kernel := To_Vector ((0 => (62, 53, 2, False)));
-            Table.States (201).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 8, 241)));
+            Add_Action (Table.States (201), 8, (62, 0), 241);
+            Table.States (201).Kernel := To_Vector ((0 => ((62, 0),  53,  2, 
(2147483647, 0),  0)));
+            Table.States (201).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (62, 0),  8, 241)));
             Table.States (202).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (202), 34, 242);
-            Table.States (202).Kernel := To_Vector ((0 => (61, 58, 1, False)));
-            Table.States (202).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 242)));
+            Add_Action (Table.States (202), 34, (61, 0), 242);
+            Table.States (202).Kernel := To_Vector ((0 => ((61, 0),  58,  1, 
(2147483647, 0),  0)));
+            Table.States (202).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (61, 0),  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;
+            Add_Action (Table.States (203), (31, 34), (59, 1),  3, null, null);
+            Table.States (203).Kernel := To_Vector ((0 => ((59, 1),  37,  0, 
(59, 1),  3)));
+            Table.States (203).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (59, 1),  3)));
+         end Subr_2;
+         procedure Subr_3
+         is begin
             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)));
+            Add_Action (Table.States (204), (1 =>  34), (41, 0),  3, 
aggregate_g_0'Access, null);
+            Table.States (204).Kernel := To_Vector ((0 => ((41, 0),  21,  0, 
(41, 0),  3)));
+            Table.States (204).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (41, 0),  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,
+            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 (205).Kernel := To_Vector ((0 => ((67, 1),  34,  0, 
(67, 1),  6)));
+            Table.States (205).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (67, 1),  6)));
             Table.States (206).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (206), 38, 243);
-            Table.States (206).Kernel := To_Vector ((0 => (44, 14, 2, False)));
-            Table.States (206).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 38, 243)));
+            Add_Action (Table.States (206), 38, (44, 1), 243);
+            Table.States (206).Kernel := To_Vector ((0 => ((44, 1),  14,  2, 
(2147483647, 0),  0)));
+            Table.States (206).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (44, 1),  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_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, (58, 1), 105);
             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 (207).Kernel := To_Vector ((0 => ((45, 0),  6,  4, 
(2147483647, 0),  0)));
+            Table.States (207).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (59, 0),  0)));
             Table.States (208).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (208), 10, 245);
-            Add_Action (Table.States (208), 37, 246);
-            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)));
+            Add_Action (Table.States (208), 10, (42, 3), 245);
+            Add_Action (Table.States (208), 37, (42, 0), 246);
+            Table.States (208).Kernel := To_Vector ((((42, 0),  12,  3, 
(2147483647, 0),  0), ((42, 1),  12,  5,
+            (2147483647, 0),  0), ((42, 2),  12,  7, (2147483647, 0),  0), 
((42, 3),  12,  6, (2147483647, 0),  0)));
+            Table.States (208).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 0),  37, 246)));
             Table.States (209).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (209), 34, 247);
-            Table.States (209).Kernel := To_Vector ((0 => (67, 16, 1, False)));
-            Table.States (209).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 247)));
+            Add_Action (Table.States (209), 34, (67, 4), 247);
+            Table.States (209).Kernel := To_Vector ((0 => ((67, 4),  16,  1, 
(2147483647, 0),  0)));
+            Table.States (209).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (67, 4),  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_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, (58, 1), 111);
             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 (210).Kernel := To_Vector ((((61, 0),  18,  3, 
(2147483647, 0),  0), ((62, 0),  18,  4,
+            (2147483647, 0),  0), ((63, 0),  18,  2, (2147483647, 0),  0)));
+            Table.States (210).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (58, 0),  0)));
             Table.States (211).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (211), 37, 249);
-            Table.States (211).Kernel := To_Vector ((0 => (72, 23, 5, False)));
-            Table.States (211).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 249)));
+            Add_Action (Table.States (211), 37, (72, 0), 249);
+            Table.States (211).Kernel := To_Vector ((0 => ((72, 0),  23,  5, 
(2147483647, 0),  0)));
+            Table.States (211).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (72, 0),  37, 249)));
             Table.States (212).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (212), 28, 250);
-            Add_Action (Table.States (212), 29, 251);
-            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)));
+            Add_Action (Table.States (212), 28, (67, 1), 250);
+            Add_Action (Table.States (212), 29, (67, 0), 251);
+            Table.States (212).Kernel := To_Vector ((((67, 0),  37,  2, 
(2147483647, 0),  0), ((67, 1),  37,  4,
+            (2147483647, 0),  0)));
+            Table.States (212).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (67, 0),  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)));
+            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, 2),  42,  0, 
(67, 2),  1)));
+            Table.States (213).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (67, 2),  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)));
+            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, 3),  45,  0, 
(67, 3),  1)));
+            Table.States (214).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (67, 3),  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)));
+            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, 0),  51,  0, 
(52, 0),  1)));
+            Table.States (215).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (52, 0),  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);
-            Add_Action (Table.States (216), 16, 209);
-            Add_Action (Table.States (216), 18, 210);
-            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_Action (Table.States (216), 6, (45, 0), 207);
+            Add_Action (Table.States (216), 8, Reduce, (53, 1),  1, null, 
null);
+            Add_Action (Table.States (216), 12, (42, 0), 208);
+            Add_Action (Table.States (216), 16, (67, 4), 209);
+            Add_Action (Table.States (216), 18, (61, 0), 210);
+            Add_Action (Table.States (216), 23, (72, 0), 211);
+            Add_Action (Table.States (216), 25, Reduce, (53, 1),  1, null, 
null);
+            Add_Action (Table.States (216), 37, (67, 0), 212);
             Table.States (216).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (216), 42, 213);
             Add_Goto (Table.States (216), 45, 214);
@@ -1627,75 +1655,76 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (216), 63, 221);
             Add_Goto (Table.States (216), 67, 222);
             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 (216).Kernel := To_Vector ((((52, 1),  52,  2, 
(2147483647, 0),  0), ((53, 1),  52,  0, (53,
+            1),  1)));
+            Table.States (216).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (53, 1),  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)));
+            Add_Action (Table.States (217), (8, 25), (46, 0),  4, 
case_item_0'Access, null);
+            Table.States (217).Kernel := To_Vector ((0 => ((46, 0),  53,  0, 
(46, 0),  4)));
+            Table.States (217).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (46, 0),  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)));
+            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, 2),  60,  0, 
(51, 2),  1)));
+            Table.States (218).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (51, 2),  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)));
+            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, 0),  61,  0, 
(60, 0),  1)));
+            Table.States (219).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (60, 0),  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)));
+            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, 1),  62,  0, 
(60, 1),  1)));
+            Table.States (220).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (60, 1),  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)));
+            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, 2),  63,  0, 
(60, 2),  1)));
+            Table.States (221).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (60, 2),  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)));
+            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, 0),  67,  0, 
(51, 0),  1)));
+            Table.States (222).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (51, 0),  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)));
+            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, 1),  72,  0, 
(51, 1),  1)));
+            Table.States (223).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (51, 1),  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;
+            Add_Action (Table.States (224), (32, 35), (55, 1),  3, null, null);
+            Table.States (224).Kernel := To_Vector ((0 => ((55, 1),  54,  0, 
(55, 1),  3)));
+            Table.States (224).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (55, 1),  3)));
             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)));
+            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, 0),  34,  0, 
(45, 0),  7)));
+            Table.States (225).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (45, 0),  7)));
             Table.States (226).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (226), 27, 170);
-            Add_Action (Table.States (226), 34, 253);
-            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)));
+            Add_Action (Table.States (226), 27, (56, 1), 170);
+            Add_Action (Table.States (226), 34, (42, 3), 253);
+            Table.States (226).Kernel := To_Vector ((((42, 3),  56,  1, 
(2147483647, 0),  0), ((56, 1),  56,  1,
+            (2147483647, 0),  0)));
+            Table.States (226).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 3),  34, 253)));
             Table.States (227).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (227), 14, 254);
+            Add_Action (Table.States (227), 14, (41, 0), 254);
             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 (227).Kernel := To_Vector ((0 => ((57, 0),  10,  2, 
(2147483647, 0),  0)));
+            Table.States (227).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (41, 0),  14, 254)));
             Table.States (228).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (228), 14, 254);
+            Add_Action (Table.States (228), 14, (41, 0), 254);
             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 (228).Kernel := To_Vector ((0 => ((57, 1),  11,  2, 
(2147483647, 0),  0)));
+            Table.States (228).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (41, 0),  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);
-            Add_Action (Table.States (229), 19, 9);
-            Add_Action (Table.States (229), 21, 257);
-            Add_Conflict (Table.States (229), 21, (58, 0), 0, null, null);
-            Add_Action (Table.States (229), 27, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (229), 30, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (229), 31, Reduce, (58, 0), 0, null, 
null);
-            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_Action (Table.States (229), 10, (57, 0), 32);
+            Add_Action (Table.States (229), 11, (57, 1), 33);
+            Add_Action (Table.States (229), 14, (41, 0), 34);
+            Add_Action (Table.States (229), 19, (43, 0), 9);
+            Add_Action (Table.States (229), 21, (71, 1), 257);
+            Add_Conflict (Table.States (229), 21, (58, 0),  0, null, null);
+            Add_Action (Table.States (229), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (229), 30, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (229), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (229), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (229), 37, (58, 1), 36);
+            Add_Action (Table.States (229), 38, (69, 0), 37);
             Table.States (229).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (229), 41, 38);
             Add_Goto (Table.States (229), 43, 39);
@@ -1707,118 +1736,126 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (229), 69, 45);
             Add_Goto (Table.States (229), 70, 258);
             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 (229).Kernel := To_Vector ((((41, 0),  14,  1, 
(2147483647, 0),  0), ((71, 1),  14,  1,
+            (2147483647, 0),  0)));
+            Table.States (229).Minimal_Complete_Actions := To_Vector 
(((Reduce, (70, 0),  0), (Shift, (71, 1),  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)));
+            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, 1),  37,  0, 
(58, 1),  1)));
+            Table.States (230).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (58, 1),  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)));
+            Add_Action (Table.States (231), (4, 27, 34), (69, 0),  1, null, 
null);
+            Table.States (231).Kernel := To_Vector ((0 => ((69, 0),  38,  0, 
(69, 0),  1)));
+            Table.States (231).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (69, 0),  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)));
+            Add_Action (Table.States (232), (4, 27, 34), (71, 2),  1, null, 
null);
+            Table.States (232).Kernel := To_Vector ((0 => ((71, 2),  41,  0, 
(71, 2),  1)));
+            Table.States (232).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (71, 2),  1)));
             Table.States (233).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (233), 33, 259);
-            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)));
+            Add_Action (Table.States (233), 33, (44, 0), 259);
+            Table.States (233).Kernel := To_Vector ((((44, 0),  43,  2, 
(2147483647, 0),  0), ((44, 1),  43,  5,
+            (2147483647, 0),  0)));
+            Table.States (233).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (44, 0),  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)));
+            Add_Action (Table.States (234), (4, 27, 34), (69, 3),  1, null, 
null);
+            Table.States (234).Kernel := To_Vector ((0 => ((69, 3),  44,  0, 
(69, 3),  1)));
+            Table.States (234).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (69, 3),  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);
-            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)));
+            Add_Action (Table.States (235), 4, (42, 2), 260);
+            Add_Action (Table.States (235), 27, (56, 1), 261);
+            Add_Action (Table.States (235), 34, (42, 1), 262);
+            Table.States (235).Kernel := To_Vector ((((42, 1),  56,  1, 
(2147483647, 0),  0), ((42, 2),  56,  3,
+            (2147483647, 0),  0), ((56, 1),  56,  1, (2147483647, 0),  0)));
+            Table.States (235).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 1),  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)));
+            Add_Action (Table.States (236), (4, 27, 34), (69, 2),  1, null, 
null);
+            Table.States (236).Kernel := To_Vector ((0 => ((69, 2),  57,  0, 
(69, 2),  1)));
+            Table.States (236).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (69, 2),  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)));
+            Add_Action (Table.States (237), (4, 27, 31, 33, 34), (59, 0),  1, 
null, null);
+            Table.States (237).Kernel := To_Vector ((0 => ((59, 0),  58,  0, 
(59, 0),  1)));
+            Table.States (237).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (59, 0),  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);
-            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)));
+            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, (59, 1), 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);
+            Table.States (238).Kernel := To_Vector ((((43, 1),  59,  0, (43, 
1),  1), ((59, 1),  59,  2, (2147483647,
+            0),  0), ((69, 1),  59,  0, (69, 1),  1)));
+            Table.States (238).Minimal_Complete_Actions := To_Vector 
(((Reduce, (43, 1),  1), (Reduce, (69, 1),  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)));
+            Add_Action (Table.States (239), (4, 27, 34), (71, 0),  1, null, 
null);
+            Table.States (239).Kernel := To_Vector ((0 => ((71, 0),  69,  0, 
(71, 0),  1)));
+            Table.States (239).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (71, 0),  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)));
+            Add_Action (Table.States (240), (4, 27, 34), (56, 0),  1, null, 
null);
+            Table.States (240).Kernel := To_Vector ((0 => ((56, 0),  71,  0, 
(56, 0),  1)));
+            Table.States (240).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 0),  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_Action (Table.States (241), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (241), 37, (58, 1), 144);
             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 (241).Kernel := To_Vector ((0 => ((62, 0),  8,  1, 
(2147483647, 0),  0)));
+            Table.States (241).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (58, 0),  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,
+            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 (242).Kernel := To_Vector ((0 => ((61, 0),  34,  0, 
(61, 0),  7)));
+            Table.States (242).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (61, 0),  7)));
             Table.States (243).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (243), 21, 265);
-            Table.States (243).Kernel := To_Vector ((0 => (44, 38, 1, False)));
-            Table.States (243).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 265)));
+            Add_Action (Table.States (243), 21, (44, 1), 265);
+            Table.States (243).Kernel := To_Vector ((0 => ((44, 1),  38,  1, 
(2147483647, 0),  0)));
+            Table.States (243).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (44, 1),  21, 265)));
             Table.States (244).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (244), 13, 266);
-            Add_Action (Table.States (244), 31, 121);
-            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)));
+            Add_Action (Table.States (244), 13, (45, 0), 266);
+            Add_Action (Table.States (244), 31, (59, 1), 121);
+            Table.States (244).Kernel := To_Vector ((((45, 0),  59,  4, 
(2147483647, 0),  0), ((59, 1),  59,  2,
+            (2147483647, 0),  0)));
+            Table.States (244).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (45, 0),  13, 266)));
             Table.States (245).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (245), 14, 267);
-            Table.States (245).Kernel := To_Vector ((0 => (42, 10, 5, False)));
-            Table.States (245).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 14, 267)));
+            Add_Action (Table.States (245), 14, (42, 3), 267);
+            Table.States (245).Kernel := To_Vector ((0 => ((42, 3),  10,  5, 
(2147483647, 0),  0)));
+            Table.States (245).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 3),  14, 267)));
             Table.States (246).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (246), 14, 268);
-            Add_Action (Table.States (246), 24, 269);
-            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)));
+            Add_Action (Table.States (246), 14, (42, 1), 268);
+            Add_Action (Table.States (246), 24, (42, 0), 269);
+            Table.States (246).Kernel := To_Vector ((((42, 0),  37,  2, 
(2147483647, 0),  0), ((42, 1),  37,  4,
+            (2147483647, 0),  0), ((42, 2),  37,  6, (2147483647, 0),  0)));
+            Table.States (246).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 0),  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,
+            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 (247).Kernel := To_Vector ((0 => ((67, 4),  34,  0, 
(67, 4),  2)));
+            Table.States (247).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (67, 4),  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);
-            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)));
+            Add_Action (Table.States (248), 9, (62, 0), 270);
+            Add_Action (Table.States (248), 13, (61, 0), 271);
+            Add_Action (Table.States (248), 20, (63, 0), 272);
+            Table.States (248).Kernel := To_Vector ((((61, 0),  58,  3, 
(2147483647, 0),  0), ((62, 0),  58,  4,
+            (2147483647, 0),  0), ((63, 0),  58,  2, (2147483647, 0),  0)));
+            Table.States (248).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (63, 0),  20, 272)));
             Table.States (249).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (249), 13, 273);
-            Table.States (249).Kernel := To_Vector ((0 => (72, 37, 4, False)));
-            Table.States (249).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 13, 273)));
+            Add_Action (Table.States (249), 13, (72, 0), 273);
+            Table.States (249).Kernel := To_Vector ((0 => ((72, 0),  37,  4, 
(2147483647, 0),  0)));
+            Table.States (249).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (72, 0),  13, 273)));
             Table.States (250).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (250), 37, 274);
-            Table.States (250).Kernel := To_Vector ((0 => (67, 28, 3, False)));
-            Table.States (250).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 37, 274)));
+            Add_Action (Table.States (250), 37, (67, 1), 274);
+            Table.States (250).Kernel := To_Vector ((0 => ((67, 1),  28,  3, 
(2147483647, 0),  0)));
+            Table.States (250).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (67, 1),  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);
-            Add_Action (Table.States (251), 19, 9);
-            Add_Action (Table.States (251), 27, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (251), 31, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (251), 33, Reduce, (58, 0), 0, null, 
null);
-            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_Action (Table.States (251), 10, (57, 0), 130);
+            Add_Action (Table.States (251), 11, (57, 1), 131);
+            Add_Action (Table.States (251), 14, (41, 0), 132);
+            Add_Action (Table.States (251), 19, (43, 0), 9);
+            Add_Action (Table.States (251), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (251), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (251), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (251), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (251), 37, (58, 1), 133);
+            Add_Action (Table.States (251), 38, (69, 0), 134);
             Table.States (251).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (251), 41, 135);
             Add_Goto (Table.States (251), 43, 136);
@@ -1829,30 +1866,29 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (251), 59, 141);
             Add_Goto (Table.States (251), 69, 142);
             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 (251).Kernel := To_Vector ((0 => ((67, 0),  29,  1, 
(2147483647, 0),  0)));
+            Table.States (251).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 0),  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;
+            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, 1),  51,  0, 
(52, 1),  2)));
+            Table.States (252).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (52, 1),  2)));
             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,
+            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 (253).Kernel := To_Vector ((0 => ((42, 3),  34,  0, 
(42, 3),  8)));
+            Table.States (253).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (42, 3),  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);
-            Add_Action (Table.States (254), 19, 9);
-            Add_Action (Table.States (254), 21, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (254), 27, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (254), 30, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (254), 31, Reduce, (58, 0), 0, null, 
null);
-            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_Action (Table.States (254), 10, (57, 0), 32);
+            Add_Action (Table.States (254), 11, (57, 1), 33);
+            Add_Action (Table.States (254), 14, (41, 0), 34);
+            Add_Action (Table.States (254), 19, (43, 0), 9);
+            Add_Action (Table.States (254), 21, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (254), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (254), 30, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (254), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (254), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (254), 37, (58, 1), 36);
+            Add_Action (Table.States (254), 38, (69, 0), 37);
             Table.States (254).Goto_List.Set_Capacity (10);
             Add_Goto (Table.States (254), 41, 38);
             Add_Goto (Table.States (254), 43, 39);
@@ -1864,45 +1900,47 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (254), 69, 45);
             Add_Goto (Table.States (254), 70, 258);
             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 (254).Kernel := To_Vector ((0 => ((41, 0),  14,  1, 
(2147483647, 0),  0)));
+            Table.States (254).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (70, 0),  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)));
+            Add_Action (Table.States (255), (4, 27, 34), (57, 0),  2, null, 
null);
+            Table.States (255).Kernel := To_Vector ((0 => ((57, 0),  41,  0, 
(57, 0),  2)));
+            Table.States (255).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (57, 0),  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)));
+            Add_Action (Table.States (256), (4, 27, 34), (57, 1),  2, null, 
null);
+            Table.States (256).Kernel := To_Vector ((0 => ((57, 1),  41,  0, 
(57, 1),  2)));
+            Table.States (256).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (57, 1),  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)));
+            Add_Action (Table.States (257), (4, 27, 34), (71, 1),  2, null, 
null);
+            Table.States (257).Kernel := To_Vector ((0 => ((71, 1),  21,  0, 
(71, 1),  2)));
+            Table.States (257).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (71, 1),  2)));
             Table.States (258).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (258), 21, 276);
-            Add_Action (Table.States (258), 30, 67);
-            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)));
+            Add_Action (Table.States (258), 21, (41, 0), 276);
+            Add_Action (Table.States (258), 30, (70, 1), 67);
+            Table.States (258).Kernel := To_Vector ((((41, 0),  70,  1, 
(2147483647, 0),  0), ((70, 1),  70,  1,
+            (2147483647, 0),  0)));
+            Table.States (258).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (41, 0),  21, 276)));
             Table.States (259).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (259), 37, 277);
-            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)));
+            Add_Action (Table.States (259), 37, (44, 0), 277);
+            Table.States (259).Kernel := To_Vector ((((44, 0),  33,  1, 
(2147483647, 0),  0), ((44, 1),  33,  4,
+            (2147483647, 0),  0)));
+            Table.States (259).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (44, 0),  37, 277)));
             Table.States (260).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (260), 36, 278);
-            Table.States (260).Kernel := To_Vector ((0 => (42, 4, 2, False)));
-            Table.States (260).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 36, 278)));
+            Add_Action (Table.States (260), 36, (42, 2), 278);
+            Table.States (260).Kernel := To_Vector ((0 => ((42, 2),  4,  2, 
(2147483647, 0),  0)));
+            Table.States (260).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 2),  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);
-            Add_Action (Table.States (261), 14, 229);
-            Add_Action (Table.States (261), 19, 9);
-            Add_Action (Table.States (261), 27, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (261), 31, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (261), 33, Reduce, (58, 0), 0, null, 
null);
-            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_Action (Table.States (261), 4, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (261), 10, (57, 0), 227);
+            Add_Action (Table.States (261), 11, (57, 1), 228);
+            Add_Action (Table.States (261), 14, (41, 0), 229);
+            Add_Action (Table.States (261), 19, (43, 0), 9);
+            Add_Action (Table.States (261), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (261), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (261), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (261), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (261), 37, (58, 1), 230);
+            Add_Action (Table.States (261), 38, (69, 0), 231);
             Table.States (261).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (261), 41, 232);
             Add_Goto (Table.States (261), 43, 233);
@@ -1912,59 +1950,58 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (261), 59, 238);
             Add_Goto (Table.States (261), 69, 239);
             Add_Goto (Table.States (261), 71, 279);
-            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 (261).Kernel := To_Vector ((0 => ((56, 1),  27,  0, 
(71, 0),  1)));
+            Table.States (261).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (71, 0),  1)));
             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,
+            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 (262).Kernel := To_Vector ((0 => ((42, 1),  34,  0, 
(42, 1),  8)));
+            Table.States (262).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (42, 1),  8)));
             Table.States (263).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (263), 37, 280);
-            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;
+            Add_Action (Table.States (263), 37, (59, 1), 280);
+            Table.States (263).Kernel := To_Vector ((0 => ((59, 1),  31,  1, 
(2147483647, 0),  0)));
+            Table.States (263).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (59, 1),  37, 280)));
             Table.States (264).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (264), 34, 281);
-            Table.States (264).Kernel := To_Vector ((0 => (62, 58, 1, False)));
-            Table.States (264).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 281)));
+            Add_Action (Table.States (264), 34, (62, 0), 281);
+            Table.States (264).Kernel := To_Vector ((0 => ((62, 0),  58,  1, 
(2147483647, 0),  0)));
+            Table.States (264).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (62, 0),  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)));
+            Add_Action (Table.States (265), (27, 34), (44, 1),  6, null, null);
+            Table.States (265).Kernel := To_Vector ((0 => ((44, 1),  21,  0, 
(44, 1),  6)));
+            Table.States (265).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (44, 1),  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_Action (Table.States (266), 8, Reduce, (47, 0),  0, null, 
null);
+            Add_Action (Table.States (266), 25, (46, 0), 147);
+            Add_Conflict (Table.States (266), 25, (47, 0),  0, null, null);
             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 (266).Kernel := To_Vector ((0 => ((45, 0),  13,  3, 
(2147483647, 0),  0)));
+            Table.States (266).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (47, 0),  0)));
             Table.States (267).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (267), 38, 283);
-            Table.States (267).Kernel := To_Vector ((0 => (42, 14, 4, False)));
-            Table.States (267).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 38, 283)));
+            Add_Action (Table.States (267), 38, (42, 3), 283);
+            Table.States (267).Kernel := To_Vector ((0 => ((42, 3),  14,  4, 
(2147483647, 0),  0)));
+            Table.States (267).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 3),  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_Action (Table.States (268), 17, (54, 2), 152);
+            Add_Action (Table.States (268), 21, Reduce, (54, 0),  0, null, 
null);
+            Add_Action (Table.States (268), 38, (54, 1), 153);
             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 (268).Kernel := To_Vector ((((42, 1),  14,  3, 
(2147483647, 0),  0), ((42, 2),  14,  5,
+            (2147483647, 0),  0)));
+            Table.States (268).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (54, 0),  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);
-            Add_Action (Table.States (269), 19, 9);
-            Add_Action (Table.States (269), 27, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (269), 31, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (269), 33, Reduce, (58, 0), 0, null, 
null);
-            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_Action (Table.States (269), 10, (57, 0), 130);
+            Add_Action (Table.States (269), 11, (57, 1), 131);
+            Add_Action (Table.States (269), 14, (41, 0), 132);
+            Add_Action (Table.States (269), 19, (43, 0), 9);
+            Add_Action (Table.States (269), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (269), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (269), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (269), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (269), 37, (58, 1), 133);
+            Add_Action (Table.States (269), 38, (69, 0), 134);
             Table.States (269).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (269), 41, 135);
             Add_Goto (Table.States (269), 43, 136);
@@ -1975,25 +2012,25 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (269), 59, 141);
             Add_Goto (Table.States (269), 69, 142);
             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 (269).Kernel := To_Vector ((0 => ((42, 0),  24,  1, 
(2147483647, 0),  0)));
+            Table.States (269).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 0),  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_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, (58, 1), 105);
             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 (270).Kernel := To_Vector ((0 => ((62, 0),  9,  3, 
(2147483647, 0),  0)));
+            Table.States (270).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (59, 0),  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);
-            Add_Action (Table.States (271), 16, 87);
-            Add_Action (Table.States (271), 18, 88);
-            Add_Action (Table.States (271), 23, 89);
-            Add_Action (Table.States (271), 37, 90);
+            Add_Action (Table.States (271), 6, (45, 0), 85);
+            Add_Action (Table.States (271), 8, Reduce, (53, 0),  0, null, 
null);
+            Add_Action (Table.States (271), 12, (42, 0), 86);
+            Add_Action (Table.States (271), 16, (67, 4), 87);
+            Add_Action (Table.States (271), 18, (61, 0), 88);
+            Add_Action (Table.States (271), 23, (72, 0), 89);
+            Add_Action (Table.States (271), 37, (67, 0), 90);
             Table.States (271).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (271), 42, 91);
             Add_Goto (Table.States (271), 45, 92);
@@ -2006,111 +2043,117 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (271), 63, 99);
             Add_Goto (Table.States (271), 67, 100);
             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 (271).Kernel := To_Vector ((0 => ((61, 0),  13,  2, 
(2147483647, 0),  0)));
+            Table.States (271).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (53, 0),  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_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, (58, 1), 158);
             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 (272).Kernel := To_Vector ((0 => ((63, 0),  20,  1, 
(2147483647, 0),  0)));
+            Table.States (272).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (59, 0),  0)));
             Table.States (273).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (273), 14, 161);
+            Add_Action (Table.States (273), 14, (41, 0), 161);
             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 (273).Kernel := To_Vector ((0 => ((72, 0),  13,  3, 
(2147483647, 0),  0)));
+            Table.States (273).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (41, 0),  14, 161)));
             Table.States (274).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (274), 29, 290);
-            Table.States (274).Kernel := To_Vector ((0 => (67, 37, 2, False)));
-            Table.States (274).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 29, 290)));
+            Add_Action (Table.States (274), 29, (67, 1), 290);
+            Table.States (274).Kernel := To_Vector ((0 => ((67, 1),  37,  2, 
(2147483647, 0),  0)));
+            Table.States (274).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (67, 1),  29, 290)));
             Table.States (275).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (275), 27, 170);
-            Add_Action (Table.States (275), 34, 291);
-            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)));
+            Add_Action (Table.States (275), 27, (56, 1), 170);
+            Add_Action (Table.States (275), 34, (67, 0), 291);
+            Table.States (275).Kernel := To_Vector ((((56, 1),  56,  1, 
(2147483647, 0),  0), ((67, 0),  56,  1,
+            (2147483647, 0),  0)));
+            Table.States (275).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (67, 0),  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)));
+            Add_Action (Table.States (276), (4, 27, 34), (41, 0),  3, 
aggregate_g_0'Access, null);
+            Table.States (276).Kernel := To_Vector ((0 => ((41, 0),  21,  0, 
(41, 0),  3)));
+            Table.States (276).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (41, 0),  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);
-            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)));
+            Add_Action (Table.States (277), 4, Reduce, (44, 0),  3, null, 
null);
+            Add_Action (Table.States (277), 14, (44, 1), 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);
+            Table.States (277).Kernel := To_Vector ((((44, 0),  37,  0, (44, 
0),  3), ((44, 1),  37,  3, (2147483647,
+            0),  0)));
+            Table.States (277).Minimal_Complete_Actions := To_Vector 
(((Reduce, (44, 0),  3), (Shift, (44, 1),  14,
+            292)));
             Table.States (278).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (278), 34, 293);
-            Table.States (278).Kernel := To_Vector ((0 => (42, 36, 1, False)));
-            Table.States (278).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 293)));
+            Add_Action (Table.States (278), 34, (42, 2), 293);
+            Table.States (278).Kernel := To_Vector ((0 => ((42, 2),  36,  1, 
(2147483647, 0),  0)));
+            Table.States (278).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 2),  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;
+            Add_Action (Table.States (279), (4, 27, 34), (56, 1),  3, null, 
null);
+            Table.States (279).Kernel := To_Vector ((0 => ((56, 1),  71,  0, 
(56, 1),  3)));
+            Table.States (279).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 1),  3)));
             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;
+            Add_Action (Table.States (280), (4, 27, 31, 33, 34), (59, 1),  3, 
null, null);
+            Table.States (280).Kernel := To_Vector ((0 => ((59, 1),  37,  0, 
(59, 1),  3)));
+            Table.States (280).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (59, 1),  3)));
             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,
+            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 (281).Kernel := To_Vector ((0 => ((62, 0),  34,  0, 
(62, 0),  9)));
+            Table.States (281).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (62, 0),  9)));
             Table.States (282).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (282), 8, 294);
-            Add_Action (Table.States (282), 25, 147);
+            Add_Action (Table.States (282), 8, (45, 0), 294);
+            Add_Action (Table.States (282), 25, (46, 0), 147);
             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 (282).Kernel := To_Vector ((((45, 0),  47,  3, 
(2147483647, 0),  0), ((47, 2),  47,  2,
+            (2147483647, 0),  0)));
+            Table.States (282).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (45, 0),  8, 294)));
             Table.States (283).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (283), 21, 295);
-            Table.States (283).Kernel := To_Vector ((0 => (42, 38, 3, False)));
-            Table.States (283).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 295)));
+            Add_Action (Table.States (283), 21, (42, 3), 295);
+            Table.States (283).Kernel := To_Vector ((0 => ((42, 3),  38,  3, 
(2147483647, 0),  0)));
+            Table.States (283).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 3),  21, 295)));
             Table.States (284).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (284), 21, 296);
-            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)));
+            Add_Action (Table.States (284), 21, (42, 1), 296);
+            Table.States (284).Kernel := To_Vector ((((42, 1),  54,  3, 
(2147483647, 0),  0), ((42, 2),  54,  5,
+            (2147483647, 0),  0)));
+            Table.States (284).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 1),  21, 296)));
             Table.States (285).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (285), 27, 170);
-            Add_Action (Table.States (285), 34, 297);
-            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)));
+            Add_Action (Table.States (285), 27, (56, 1), 170);
+            Add_Action (Table.States (285), 34, (42, 0), 297);
+            Table.States (285).Kernel := To_Vector ((((42, 0),  56,  1, 
(2147483647, 0),  0), ((56, 1),  56,  1,
+            (2147483647, 0),  0)));
+            Table.States (285).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 0),  34, 297)));
             Table.States (286).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (286), 13, 298);
-            Add_Action (Table.States (286), 31, 121);
-            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)));
+            Add_Action (Table.States (286), 13, (62, 0), 298);
+            Add_Action (Table.States (286), 31, (59, 1), 121);
+            Table.States (286).Kernel := To_Vector ((((59, 1),  59,  2, 
(2147483647, 0),  0), ((62, 0),  59,  3,
+            (2147483647, 0),  0)));
+            Table.States (286).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (62, 0),  13, 298)));
             Table.States (287).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (287), 8, 299);
-            Table.States (287).Kernel := To_Vector ((0 => (61, 53, 2, False)));
-            Table.States (287).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 8, 299)));
+            Add_Action (Table.States (287), 8, (61, 0), 299);
+            Table.States (287).Kernel := To_Vector ((0 => ((61, 0),  53,  2, 
(2147483647, 0),  0)));
+            Table.States (287).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (61, 0),  8, 299)));
             Table.States (288).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (288), 31, 186);
-            Add_Action (Table.States (288), 34, 300);
-            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)));
+            Add_Action (Table.States (288), 31, (59, 1), 186);
+            Add_Action (Table.States (288), 34, (63, 0), 300);
+            Table.States (288).Kernel := To_Vector ((((59, 1),  59,  2, 
(2147483647, 0),  0), ((63, 0),  59,  1,
+            (2147483647, 0),  0)));
+            Table.States (288).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (63, 0),  34, 300)));
             Table.States (289).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (289), 34, 301);
-            Table.States (289).Kernel := To_Vector ((0 => (72, 41, 1, False)));
-            Table.States (289).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 301)));
+            Add_Action (Table.States (289), 34, (72, 0), 301);
+            Table.States (289).Kernel := To_Vector ((0 => ((72, 0),  41,  1, 
(2147483647, 0),  0)));
+            Table.States (289).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (72, 0),  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);
-            Add_Action (Table.States (290), 19, 9);
-            Add_Action (Table.States (290), 27, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (290), 31, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (290), 33, Reduce, (58, 0), 0, null, 
null);
-            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_Action (Table.States (290), 10, (57, 0), 130);
+            Add_Action (Table.States (290), 11, (57, 1), 131);
+            Add_Action (Table.States (290), 14, (41, 0), 132);
+            Add_Action (Table.States (290), 19, (43, 0), 9);
+            Add_Action (Table.States (290), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (290), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (290), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (290), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (290), 37, (58, 1), 133);
+            Add_Action (Table.States (290), 38, (69, 0), 134);
             Table.States (290).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (290), 41, 135);
             Add_Goto (Table.States (290), 43, 136);
@@ -2121,47 +2164,48 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (290), 59, 141);
             Add_Goto (Table.States (290), 69, 142);
             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 (290).Kernel := To_Vector ((0 => ((67, 1),  29,  1, 
(2147483647, 0),  0)));
+            Table.States (290).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 0),  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,
+            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 (291).Kernel := To_Vector ((0 => ((67, 0),  34,  0, 
(67, 0),  4)));
+            Table.States (291).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (67, 0),  4)));
             Table.States (292).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (292), 38, 303);
-            Table.States (292).Kernel := To_Vector ((0 => (44, 14, 2, False)));
-            Table.States (292).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 38, 303)));
+            Add_Action (Table.States (292), 38, (44, 1), 303);
+            Table.States (292).Kernel := To_Vector ((0 => ((44, 1),  14,  2, 
(2147483647, 0),  0)));
+            Table.States (292).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (44, 1),  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,
+            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 (293).Kernel := To_Vector ((0 => ((42, 2),  34,  0, 
(42, 2),  10)));
+            Table.States (293).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (42, 2),  10)));
             Table.States (294).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (294), 6, 304);
-            Table.States (294).Kernel := To_Vector ((0 => (45, 8, 2, False)));
-            Table.States (294).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 6, 304)));
+            Add_Action (Table.States (294), 6, (45, 0), 304);
+            Table.States (294).Kernel := To_Vector ((0 => ((45, 0),  8,  2, 
(2147483647, 0),  0)));
+            Table.States (294).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (45, 0),  6, 304)));
             Table.States (295).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (295), 24, 305);
-            Table.States (295).Kernel := To_Vector ((0 => (42, 21, 2, False)));
-            Table.States (295).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 24, 305)));
+            Add_Action (Table.States (295), 24, (42, 3), 305);
+            Table.States (295).Kernel := To_Vector ((0 => ((42, 3),  21,  2, 
(2147483647, 0),  0)));
+            Table.States (295).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 3),  24, 305)));
             Table.States (296).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (296), 24, 306);
-            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)));
+            Add_Action (Table.States (296), 24, (42, 1), 306);
+            Table.States (296).Kernel := To_Vector ((((42, 1),  21,  2, 
(2147483647, 0),  0), ((42, 2),  21,  4,
+            (2147483647, 0),  0)));
+            Table.States (296).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 1),  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)));
+            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, 0),  34,  0, 
(42, 0),  5)));
+            Table.States (297).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (42, 0),  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);
-            Add_Action (Table.States (298), 16, 87);
-            Add_Action (Table.States (298), 18, 88);
-            Add_Action (Table.States (298), 23, 89);
-            Add_Action (Table.States (298), 37, 90);
+            Add_Action (Table.States (298), 6, (45, 0), 85);
+            Add_Action (Table.States (298), 8, Reduce, (53, 0),  0, null, 
null);
+            Add_Action (Table.States (298), 12, (42, 0), 86);
+            Add_Action (Table.States (298), 16, (67, 4), 87);
+            Add_Action (Table.States (298), 18, (61, 0), 88);
+            Add_Action (Table.States (298), 23, (72, 0), 89);
+            Add_Action (Table.States (298), 37, (67, 0), 90);
             Table.States (298).Goto_List.Set_Capacity (11);
             Add_Goto (Table.States (298), 42, 91);
             Add_Goto (Table.States (298), 45, 92);
@@ -2174,49 +2218,50 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (298), 63, 99);
             Add_Goto (Table.States (298), 67, 100);
             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 (298).Kernel := To_Vector ((0 => ((62, 0),  13,  2, 
(2147483647, 0),  0)));
+            Table.States (298).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (53, 0),  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_Action (Table.States (299), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (299), 37, (58, 1), 144);
             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 (299).Kernel := To_Vector ((0 => ((61, 0),  8,  1, 
(2147483647, 0),  0)));
+            Table.States (299).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (58, 0),  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,
+            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 (300).Kernel := To_Vector ((0 => ((63, 0),  34,  0, 
(63, 0),  5)));
+            Table.States (300).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (63, 0),  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,
+            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 (301).Kernel := To_Vector ((0 => ((72, 0),  34,  0, 
(72, 0),  5)));
+            Table.States (301).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (72, 0),  5)));
             Table.States (302).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (302), 27, 170);
-            Add_Action (Table.States (302), 34, 309);
-            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)));
+            Add_Action (Table.States (302), 27, (56, 1), 170);
+            Add_Action (Table.States (302), 34, (67, 1), 309);
+            Table.States (302).Kernel := To_Vector ((((56, 1),  56,  1, 
(2147483647, 0),  0), ((67, 1),  56,  1,
+            (2147483647, 0),  0)));
+            Table.States (302).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (67, 1),  34, 309)));
             Table.States (303).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (303), 21, 310);
-            Table.States (303).Kernel := To_Vector ((0 => (44, 38, 1, False)));
-            Table.States (303).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 21, 310)));
+            Add_Action (Table.States (303), 21, (44, 1), 310);
+            Table.States (303).Kernel := To_Vector ((0 => ((44, 1),  38,  1, 
(2147483647, 0),  0)));
+            Table.States (303).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (44, 1),  21, 310)));
             Table.States (304).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (304), 34, 311);
-            Table.States (304).Kernel := To_Vector ((0 => (45, 6, 1, False)));
-            Table.States (304).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 311)));
+            Add_Action (Table.States (304), 34, (45, 0), 311);
+            Table.States (304).Kernel := To_Vector ((0 => ((45, 0),  6,  1, 
(2147483647, 0),  0)));
+            Table.States (304).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (45, 0),  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);
-            Add_Action (Table.States (305), 19, 9);
-            Add_Action (Table.States (305), 27, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (305), 31, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (305), 33, Reduce, (58, 0), 0, null, 
null);
-            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_Action (Table.States (305), 10, (57, 0), 130);
+            Add_Action (Table.States (305), 11, (57, 1), 131);
+            Add_Action (Table.States (305), 14, (41, 0), 132);
+            Add_Action (Table.States (305), 19, (43, 0), 9);
+            Add_Action (Table.States (305), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (305), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (305), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (305), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (305), 37, (58, 1), 133);
+            Add_Action (Table.States (305), 38, (69, 0), 134);
             Table.States (305).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (305), 41, 135);
             Add_Goto (Table.States (305), 43, 136);
@@ -2227,20 +2272,20 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (305), 59, 141);
             Add_Goto (Table.States (305), 69, 142);
             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 (305).Kernel := To_Vector ((0 => ((42, 3),  24,  1, 
(2147483647, 0),  0)));
+            Table.States (305).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 0),  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);
-            Add_Action (Table.States (306), 14, 229);
-            Add_Action (Table.States (306), 19, 9);
-            Add_Action (Table.States (306), 27, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (306), 31, Reduce, (58, 0), 0, null, 
null);
-            Add_Action (Table.States (306), 33, Reduce, (58, 0), 0, null, 
null);
-            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_Action (Table.States (306), 4, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (306), 10, (57, 0), 227);
+            Add_Action (Table.States (306), 11, (57, 1), 228);
+            Add_Action (Table.States (306), 14, (41, 0), 229);
+            Add_Action (Table.States (306), 19, (43, 0), 9);
+            Add_Action (Table.States (306), 27, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (306), 31, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (306), 33, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (306), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (306), 37, (58, 1), 230);
+            Add_Action (Table.States (306), 38, (69, 0), 231);
             Table.States (306).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (306), 41, 232);
             Add_Goto (Table.States (306), 43, 233);
@@ -2251,90 +2296,98 @@ package body Gpr_Process_Main is
             Add_Goto (Table.States (306), 59, 238);
             Add_Goto (Table.States (306), 69, 239);
             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 (306).Kernel := To_Vector ((((42, 1),  24,  1, 
(2147483647, 0),  0), ((42, 2),  24,  3,
+            (2147483647, 0),  0)));
+            Table.States (306).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (56, 0),  0)));
             Table.States (307).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (307), 8, 314);
-            Table.States (307).Kernel := To_Vector ((0 => (62, 53, 2, False)));
-            Table.States (307).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 8, 314)));
+            Add_Action (Table.States (307), 8, (62, 0), 314);
+            Table.States (307).Kernel := To_Vector ((0 => ((62, 0),  53,  2, 
(2147483647, 0),  0)));
+            Table.States (307).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (62, 0),  8, 314)));
             Table.States (308).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (308), 34, 315);
-            Table.States (308).Kernel := To_Vector ((0 => (61, 58, 1, False)));
-            Table.States (308).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 315)));
+            Add_Action (Table.States (308), 34, (61, 0), 315);
+            Table.States (308).Kernel := To_Vector ((0 => ((61, 0),  58,  1, 
(2147483647, 0),  0)));
+            Table.States (308).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (61, 0),  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,
+            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 (309).Kernel := To_Vector ((0 => ((67, 1),  34,  0, 
(67, 1),  6)));
+            Table.States (309).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (67, 1),  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)));
+            Add_Action (Table.States (310), (4, 27, 34), (44, 1),  6, null, 
null);
+            Table.States (310).Kernel := To_Vector ((0 => ((44, 1),  21,  0, 
(44, 1),  6)));
+            Table.States (310).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (44, 1),  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)));
+            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, 0),  34,  0, 
(45, 0),  7)));
+            Table.States (311).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (45, 0),  7)));
             Table.States (312).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (312), 27, 170);
-            Add_Action (Table.States (312), 34, 316);
-            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)));
+            Add_Action (Table.States (312), 27, (56, 1), 170);
+            Add_Action (Table.States (312), 34, (42, 3), 316);
+            Table.States (312).Kernel := To_Vector ((((42, 3),  56,  1, 
(2147483647, 0),  0), ((56, 1),  56,  1,
+            (2147483647, 0),  0)));
+            Table.States (312).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 3),  34, 316)));
+         end Subr_3;
+         procedure Subr_4
+         is begin
             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);
-            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)));
+            Add_Action (Table.States (313), 4, (42, 2), 317);
+            Add_Action (Table.States (313), 27, (56, 1), 261);
+            Add_Action (Table.States (313), 34, (42, 1), 318);
+            Table.States (313).Kernel := To_Vector ((((42, 1),  56,  1, 
(2147483647, 0),  0), ((42, 2),  56,  3,
+            (2147483647, 0),  0), ((56, 1),  56,  1, (2147483647, 0),  0)));
+            Table.States (313).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 1),  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_Action (Table.States (314), 34, Reduce, (58, 0),  0, null, 
null);
+            Add_Action (Table.States (314), 37, (58, 1), 144);
             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 (314).Kernel := To_Vector ((0 => ((62, 0),  8,  1, 
(2147483647, 0),  0)));
+            Table.States (314).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (58, 0),  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,
+            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 (315).Kernel := To_Vector ((0 => ((61, 0),  34,  0, 
(61, 0),  7)));
+            Table.States (315).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (61, 0),  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)));
+            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, 3),  34,  0, 
(42, 3),  8)));
+            Table.States (316).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (42, 3),  8)));
             Table.States (317).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (317), 36, 320);
-            Table.States (317).Kernel := To_Vector ((0 => (42, 4, 2, False)));
-            Table.States (317).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 36, 320)));
+            Add_Action (Table.States (317), 36, (42, 2), 320);
+            Table.States (317).Kernel := To_Vector ((0 => ((42, 2),  4,  2, 
(2147483647, 0),  0)));
+            Table.States (317).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 2),  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)));
+            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, 1),  34,  0, 
(42, 1),  8)));
+            Table.States (318).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (42, 1),  8)));
             Table.States (319).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (319), 34, 321);
-            Table.States (319).Kernel := To_Vector ((0 => (62, 58, 1, False)));
-            Table.States (319).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 321)));
+            Add_Action (Table.States (319), 34, (62, 0), 321);
+            Table.States (319).Kernel := To_Vector ((0 => ((62, 0),  58,  1, 
(2147483647, 0),  0)));
+            Table.States (319).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (62, 0),  34, 321)));
             Table.States (320).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (320), 34, 322);
-            Table.States (320).Kernel := To_Vector ((0 => (42, 36, 1, False)));
-            Table.States (320).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, 34, 322)));
+            Add_Action (Table.States (320), 34, (42, 2), 322);
+            Table.States (320).Kernel := To_Vector ((0 => ((42, 2),  36,  1, 
(2147483647, 0),  0)));
+            Table.States (320).Minimal_Complete_Actions := To_Vector ((0 => 
(Shift, (42, 2),  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,
+            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 (321).Kernel := To_Vector ((0 => ((62, 0),  34,  0, 
(62, 0),  9)));
+            Table.States (321).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (62, 0),  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,
+            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)));
-            Table.States (322).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, 42, 10)));
-         end Subr_3;
+            Table.States (322).Kernel := To_Vector ((0 => ((42, 2),  34,  0, 
(42, 2),  10)));
+            Table.States (322).Minimal_Complete_Actions := To_Vector ((0 => 
(Reduce, (42, 2),  10)));
+         end Subr_4;
       begin
          Subr_1;
          Subr_2;
          Subr_3;
-         Table.Error_Action := new Parse_Action_Node'((Verb => Error), null);
+         Subr_4;
+         Table.Error_Action := new Parse_Action_Node'((Verb => Error, others 
=> <>), null);
       end;
 
       WisiToken.Parse.LR.Parser.New_Parser
diff --git a/packages/ada-mode/gpr_process_main.ads 
b/packages/ada-mode/gpr_process_main.ads
index 6ad2193..4632a89 100644
--- a/packages/ada-mode/gpr_process_main.ads
+++ b/packages/ada-mode/gpr_process_main.ads
@@ -2,7 +2,7 @@
 --  command line: wisitoken-bnf-generate.exe  --generate LR1 Ada_Emacs re2c 
PROCESS gpr.wy
 --
 
---  Copyright (C) 2013 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2013 - 2020 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
diff --git a/packages/ada-mode/gpr_query-process_refresh.adb.gp 
b/packages/ada-mode/gpr_query-process_refresh.adb.gp
deleted file mode 100644
index 9692199..0000000
--- a/packages/ada-mode/gpr_query-process_refresh.adb.gp
+++ /dev/null
@@ -1,32 +0,0 @@
---  Abstract :
---
---  body compatible with GNAT GPL 2016 or later via gnatprep
---
---  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.
-
-pragma License (GPL);
-separate (Gpr_Query)
-procedure Process_Refresh (Args : GNATCOLL.Arg_Lists.Arg_List)
-is
-   pragma Unreferenced (Args);
-begin
-   Parse_All_LI_Files
-     (Self                => Xref,
-#if HAVE_GNATCOLL_XREF="no"
-      Tree                => Tree,
-#end if;
-      Project             => Tree.Root_Project,
-      Parse_Runtime_Files => False,
-      Show_Progress       => Progress_Reporter,
-      ALI_Encoding        => ALI_Encoding.all,
-      From_DB_Name        => Nightly_DB_Name.all,
-      To_DB_Name          => DB_Name.all,
-      Force_Refresh       => Force_Refresh);
-end Process_Refresh;
diff --git a/packages/ada-mode/gpr_query.adb b/packages/ada-mode/gpr_query.adb
index 344f4ff..d56d2e4 100644
--- a/packages/ada-mode/gpr_query.adb
+++ b/packages/ada-mode/gpr_query.adb
@@ -43,9 +43,12 @@ with GNATCOLL.VFS;
 with GNATCOLL.VFS_Utils;
 with GNATCOLL.Xref;
 procedure Gpr_Query is
+   use all type GNATCOLL.VFS.File_Array;
    use GNATCOLL;
 
-   Version : constant String := "2";
+   Version : constant String := "3";
+   --  Changes once per release when the API (commands and responses)
+   --  changes; must match gpr-query.el gpr-query-protocol-version
 
    Me : constant GNATCOLL.Traces.Trace_Handle := GNATCOLL.Traces.Create 
("gpr_query");
 
@@ -55,6 +58,9 @@ procedure Gpr_Query is
    function "+" (Item : in Ada.Strings.Unbounded.Unbounded_String) return 
String
      renames Ada.Strings.Unbounded.To_String;
 
+   function "+" (Item : in String) return 
Ada.Strings.Unbounded.Unbounded_String
+     renames Ada.Strings.Unbounded.To_Unbounded_String;
+
    function "+" (Item : in GNATCOLL.VFS.Filesystem_String) return String
    is begin
       return String (Item);
@@ -65,7 +71,7 @@ procedure Gpr_Query is
    --  Raise Invalid_Command when the command is invalid.
 
    function Get_Entity (Arg : String) return GNATCOLL.Xref.Entity_Information;
-   --  Return the entity matching the "name:file:line:column" argument
+   --  Return the entity matching the "name:file:line[:column]" argument
 
    type My_Xref_Database is new GNATCOLL.Xref.Xref_Database with null record;
    --  Derived so we can override Image to output full paths
@@ -78,9 +84,11 @@ procedure Gpr_Query is
    function Image (Self : GNATCOLL.Xref.Entity_Information) return String;
    --  Return a display version of the argument
 
-   Xref              : aliased My_Xref_Database;
-   Env               : GNATCOLL.Projects.Project_Environment_Access;
-   Tree              : aliased GNATCOLL.Projects.Project_Tree;
+   Xref               : aliased My_Xref_Database;
+   Env                : GNATCOLL.Projects.Project_Environment_Access;
+   Tree               : aliased GNATCOLL.Projects.Project_Tree;
+   Source_Search_Path : GNATCOLL.VFS.File_Array_Access;
+
    Previous_Progress : Natural := 0;
    Progress_Reporter : access procedure (Current, Total : Integer) := null;
 
@@ -171,6 +179,7 @@ procedure Gpr_Query is
    procedure Process_DB_Name (Args : GNATCOLL.Arg_Lists.Arg_List);
 
    --  Queries; alphabetical
+   procedure Process_Complete (Args : GNATCOLL.Arg_Lists.Arg_List);
    procedure Process_Overridden is new Process_Command_Single 
(GNATCOLL.Xref.Overrides);
    procedure Process_Overriding is new Process_Command_Multiple 
(GNATCOLL.Xref.Overridden_By);
    procedure Process_Parent_Types is new Process_Command_Multiple 
(GNATCOLL.Xref.Parent_Types);
@@ -205,18 +214,23 @@ procedure Gpr_Query is
 
       --  queries
 
+      (new String'("complete"),
+       new String'("pattern"),
+       new String'("Names that complete the pattern."),
+       Process_Complete'Access),
+
       (new String'("overridden"),
-       new String'("name:file:line:column {full_file_names | 
short_file_names}"),
+       new String'("name:file:line[:column] {full_file_names | 
short_file_names}"),
        new String'("The entity that is overridden by the parameter"),
        Process_Overridden'Access),
 
       (new String'("overriding"),
-       new String'("name:file:line:column {full_file_names | 
short_file_names}"),
+       new String'("name:file:line[:column] {full_file_names | 
short_file_names}"),
        new String'("The entities that override the parameter"),
        Process_Overriding'Access),
 
       (new String'("parent_types"),
-       new String'("name:file:line:column {full_file_names | 
short_file_names}"),
+       new String'("name:file:line[:column] {full_file_names | 
short_file_names}"),
        new String'("The parent types of the entity."),
        Process_Parent_Types'Access),
 
@@ -226,18 +240,18 @@ procedure Gpr_Query is
        Process_Project_Path'Access),
 
       (new String'("refs"),
-       new String'("name:file:line:column {global | local_only} 
{full_file_names | short_file_names}"),
+       new String'("name:file:line[:column] {global | local_only} 
{full_file_names | short_file_names}"),
        new String'("All known references to the entity."),
        Process_Refs'Access),
 
       (new String'("tree_defs"),
-       new String'("name:file:line:column {full_file_names | 
short_file_names}"),
+       new String'("name:file[:line[:column]] {full_file_names | 
short_file_names}"),
        new String'
-         ("All known references to the entity, and to parent/child types or 
overridden/overriding operations."),
+         ("All known references to the entity, and to child types or 
overridden/overriding operations."),
        Process_Tree_Defs'Access),
 
       (new String'("tree_refs"),
-       new String'("name:file:line:column {full_file_names | 
short_file_names}"),
+       new String'("name:file:line[:column] {full_file_names | 
short_file_names}"),
        new String'
          ("All known references to the entity, and to parent/child types or 
overridden/overriding operations."),
        Process_Tree_Refs'Access),
@@ -256,7 +270,7 @@ procedure Gpr_Query is
    Force_Refresh        : aliased Boolean;
    Gpr_Config_File      : aliased GNAT.Strings.String_Access;
    Nightly_DB_Name      : aliased GNAT.Strings.String_Access;
-   Project_Name         : aliased GNAT.Strings.String_Access;
+   Project_File_Name    : aliased GNAT.Strings.String_Access;
    Show_Progress        : aliased Boolean;
    Traces_Config_File   : aliased GNAT.Strings.String_Access;
 
@@ -274,8 +288,7 @@ procedure Gpr_Query is
    end Check_Arg_Count;
 
    procedure Display_Progress (Current, Total : Integer) is
-      Now : constant Integer := Integer (Float'Floor
-        (Float (Current) / Float (Total) * 100.0));
+      Now : constant Integer := Integer (Float'Floor (Float (Current) / Float 
(Total) * 100.0));
    begin
       if Now /= Previous_Progress then
          Ada.Text_IO.Put_Line
@@ -352,6 +365,7 @@ procedure Gpr_Query is
               (Integer'Value (Words (Words'First + 3).all)));
 
       when 3 =>
+         --  No column; assume good enough for a precise match
          Ref := Xref.Get_Entity
            (Name     => Words (Words'First).all,
             File     => Format_Pathname
@@ -361,17 +375,19 @@ procedure Gpr_Query is
             Line     => Integer'Value (Words (Words'First + 2).all));
 
       when 2 =>
-         Ref := Xref.Get_Entity
-           (Name     => Words (Words'First).all,
-            File     => Format_Pathname
-              (Style => UNIX,
-               Path  => Words (Words'First + 1).all),
-            Project  => GNATCOLL.Projects.No_Project);
-
-      --  Xref.Get_Entity treats 'File => ""' as searching for pre-defined 
entities such as "Integer".
+         --  No line or column; error.
+         GNAT.Strings.Free (Words);
+         raise Invalid_Command with "Invalid parameter '" & Arg & "', 
expecting name:file:line[:column]]";
 
       when others =>
-         raise Invalid_Command with "Invalid parameter '" & Arg & "', 
expecting name:file:line:column";
+         --  No file, or bad args.
+         --
+         --  Xref.Get_Entity treats 'File => ""' as searching for pre-defined 
entities such as "Integer".
+         --
+         --  To search for a name in all files, use "complete" command.
+         GNAT.Strings.Free (Words);
+
+         raise Invalid_Command with "Invalid parameter '" & Arg & "', 
expecting name:file:line[:column]]";
       end case;
 
       GNAT.Strings.Free (Words);
@@ -492,6 +508,73 @@ procedure Gpr_Query is
       GNAT.Strings.Free (Expr);
    end Process_Line;
 
+   function Get_Parameters (Entity : GNATCOLL.Xref.Entity_Information) return 
String
+   is
+      use Ada.Strings.Unbounded;
+      use GNATCOLL.Xref;
+      Params     : Parameters_Cursor := GNATCOLL.Xref.Parameters (Xref, 
Entity);
+      Result     : Unbounded_String;
+      Need_Paren : Boolean           := True;
+   begin
+      loop
+         exit when not Has_Element (Params);
+         Result := Result &
+           ((if Need_Paren
+             then (if Length (Result) > 0 then " (" else "(")
+             else ", ") &
+              Xref.Declaration (Element (Params).Parameter).Name);
+         Need_Paren := False;
+         Next (Params);
+      end loop;
+      if not Need_Paren then
+         Result := Result & ")";
+      end if;
+      return +Result;
+   end Get_Parameters;
+
+   procedure Process_Complete (Args : GNATCOLL.Arg_Lists.Arg_List)
+   is
+      use Ada.Text_IO;
+      use GNATCOLL.Arg_Lists;
+      use GNATCOLL.Xref;
+      Prefix  : constant String := Nth_Arg (Args, 1);
+      Matches : Entities_Cursor;
+      Count   : Integer         := 0;
+   begin
+      Short_File_Names := False;
+
+      --  First count all matches, so Emacs can show progress
+      Xref.From_Prefix
+        (Prefix,
+         Is_Partial => True,
+         Cursor     => Matches);
+      loop
+         exit when not Has_Element (Matches);
+         Count := @ + 1;
+         Next (Matches);
+      end loop;
+
+      Ada.Text_IO.Put_Line ("element count" & Count'Image);
+
+      Xref.From_Prefix
+        (Prefix,
+         Is_Partial => True,
+         Cursor     => Matches);
+      loop
+         exit when not Has_Element (Matches);
+         declare
+            Decl : constant Entity_Declaration := Xref.Declaration (Element 
(Matches));
+         begin
+            Put (Xref.Qualified_Name (Element (Matches)));
+            if Decl.Flags.Is_Subprogram then
+               Ada.Text_IO.Put (Get_Parameters (Decl.Location.Entity));
+            end if;
+         end;
+         Ada.Text_IO.Put_Line (" " & Image (Element (Matches)));
+         Next (Matches);
+      end loop;
+   end Process_Complete;
+
    procedure Process_Project_Path (Args : GNATCOLL.Arg_Lists.Arg_List)
    is
       pragma Unreferenced (Args);
@@ -501,8 +584,20 @@ procedure Gpr_Query is
       Put (Dirs);
    end Process_Project_Path;
 
-   procedure Process_Refresh (Args : GNATCOLL.Arg_Lists.Arg_List) is separate;
-   --  Requires different code for GNAT GPL 2016 vs 2017
+   procedure Process_Refresh (Args : GNATCOLL.Arg_Lists.Arg_List)
+   is
+      pragma Unreferenced (Args);
+   begin
+      Parse_All_LI_Files
+        (Self                => Xref,
+         Project             => Tree.Root_Project,
+         Parse_Runtime_Files => False,
+         Show_Progress       => Progress_Reporter,
+         ALI_Encoding        => ALI_Encoding.all,
+         From_DB_Name        => Nightly_DB_Name.all,
+         To_DB_Name          => DB_Name.all,
+         Force_Refresh       => Force_Refresh);
+   end Process_Refresh;
 
    procedure Process_Refs (Args : GNATCOLL.Arg_Lists.Arg_List)
    is
@@ -603,37 +698,47 @@ procedure Gpr_Query is
       return Result;
    end Controlling_Type;
 
-   procedure Dump_Decl (Decl : in GNATCOLL.Xref.Entity_Declaration; 
Controlling_Type_Name : in String := "")
+   procedure Dump_Decl (Decl : in GNATCOLL.Xref.Entity_Declaration; Annotation 
: in String := "")
    is begin
       Ada.Text_IO.Put_Line
         (Xref.Image (Decl.Location) & " (" &
            (+Decl.Name) & " " &
-           (if Controlling_Type_Name'Length = 0
+           (if Annotation'Length = 0
             then ""
-            else Controlling_Type_Name & "; ") &
+            else Annotation & " ") &
            (+Decl.Kind) & ")");
    end Dump_Decl;
 
-   procedure Dump_Ref (Ref : in GNATCOLL.Xref.Entity_Reference; 
Controlling_Type_Name : in String := "")
+   procedure Dump_Ref (Ref : in GNATCOLL.Xref.Entity_Reference; Annotation : 
in String := "")
    is begin
       Ada.Text_IO.Put_Line
         (Xref.Image (Ref) & " (" &
            (+Xref.Declaration (Ref.Entity).Name) & " " &
-           (if Controlling_Type_Name'Length = 0
+           (if Annotation'Length = 0
             then ""
-            else Controlling_Type_Name & "; ") &
+            else Annotation & " ") &
            (+Ref.Kind) & ")");
    end Dump_Ref;
 
    procedure Dump_Entity (Entity : in GNATCOLL.Xref.Entity_Information; 
Controlling_Type_Name : in String := "")
    is
+      use Ada.Strings.Unbounded;
       use GNATCOLL.Xref;
       Spec_Decl : constant Entity_Declaration := Xref.Declaration (Entity);
       Body_Decls : References_Cursor;
+      Parameters : Unbounded_String;
    begin
+      if Controlling_Type_Name'Length > 0 then
+         Parameters := +Controlling_Type_Name & ";";
+      end if;
+
+      if Spec_Decl.Flags.Is_Subprogram then
+         Parameters := Parameters & Get_Parameters (Spec_Decl.Location.Entity);
+      end if;
+
       Xref.Bodies (Entity, Body_Decls);
       if not Has_Element (Body_Decls) then
-         Dump_Decl (Spec_Decl);
+         Dump_Decl (Spec_Decl, +Parameters);
       else
          declare
             use all type GNATCOLL.VFS.Virtual_File;
@@ -645,13 +750,13 @@ procedure Gpr_Query is
             then
                Ada.Text_IO.Put_Line
                  (Xref.Image (First_Body_Ref) & " (" & (+Spec_Decl.Name) & " " 
&
-                    (if Controlling_Type_Name'Length = 0
+                    (if Length (Parameters) = 0
                      then ""
-                     else Controlling_Type_Name & "; ") &
+                     else +Parameters & " ") &
                     (+Spec_Decl.Kind) & "/" & (+First_Body_Ref.Kind) & ")");
             else
-               Dump_Decl (Spec_Decl, Controlling_Type_Name);
-               Dump_Ref (First_Body_Ref, Controlling_Type_Name);
+               Dump_Decl (Spec_Decl, +Parameters);
+               Dump_Ref (First_Body_Ref, +Parameters);
             end if;
          end;
 
@@ -659,7 +764,7 @@ procedure Gpr_Query is
 
          loop
             exit when not Has_Element (Body_Decls);
-            Dump_Ref (Body_Decls.Element, Controlling_Type_Name);
+            Dump_Ref (Body_Decls.Element, +Parameters);
             Next (Body_Decls);
          end loop;
       end if;
@@ -672,94 +777,186 @@ procedure Gpr_Query is
       use GNATCOLL.Arg_Lists;
       use GNATCOLL.Xref;
 
-      Orig_Entity : constant Entity_Information := Get_Entity (Nth_Arg (Args, 
1));
-      Orig_Decl   : constant Entity_Declaration := Xref.Declaration 
(Orig_Entity);
+      Words       : GNAT.Strings.String_List_Access := GNATCOLL.Utils.Split 
(Nth_Arg (Args, 1), On => ':');
       Root_Parent : Entity_Information;
 
-      procedure Dump_Method
-        (Type_Entity       : in GNATCOLL.Xref.Entity_Information;
-         Primitive_Op_Name : in String)
+      procedure One_Entity (Orig_Entity : in Entity_Information; No_Children : 
in Boolean := False)
       is
-         Type_Name : constant String := +Xref.Declaration (Type_Entity).Name;
-         Ops       : Entities_Cursor;
+         Orig_Decl       : constant Entity_Declaration := Xref.Declaration 
(Orig_Entity);
+         Orig_Short_Name : constant String             := +Orig_Decl.Name;
+
+         procedure Dump_Method
+           (Type_Entity       : in GNATCOLL.Xref.Entity_Information;
+            Primitive_Op_Name : in String)
+         is
+            Type_Name : constant String := Xref.Qualified_Name (Type_Entity);
+            Ops       : Entities_Cursor;
+         begin
+            Xref.Methods (Type_Entity, Ops);
+            loop
+               exit when not Has_Element (Ops);
+               declare
+                  Method_Name : constant String := +Xref.Declaration (Element 
(Ops)).Name;
+               begin
+                  if Primitive_Op_Name = Method_Name then
+                     --  IMPROVEME: if the method is inherited but not 
overridden, use the
+                     --  type location.
+                     Dump_Entity (Element (Ops), Type_Name);
+                  end if;
+               end;
+               Next (Ops);
+            end loop;
+         end Dump_Method;
+
+         procedure Dump_Entities (Entities : in out Recursive_Entities_Cursor)
+         is begin
+            loop
+               exit when not Has_Element (Entities);
+               if Orig_Decl.Flags.Is_Subprogram then
+                  Dump_Method (Entities.Element, Primitive_Op_Name => 
Orig_Short_Name);
+               else
+                  Dump_Entity (Entities.Element);
+               end if;
+               Next (Entities);
+            end loop;
+         end Dump_Entities;
       begin
-         Xref.Methods (Type_Entity, Ops);
-         loop
-            exit when not Has_Element (Ops);
+
+         if Orig_Decl.Flags.Is_Type then
+            --  It is tempting to find the highest ancestor type here, then 
show
+            --  all types derived from that. But in Ada, that root ancestor is
+            --  often Ada.Finalization.[Limited_]Controlled (or some similar 
root
+            --  type), so the tree is much larger than we really want. So we 
just
+            --  show all children of the given type; the user can then climb 
the
+            --  tree if they want to enlarge it. This also allows the user to
+            --  choose which anscestor to examine when there is more than one,
+            --  with interfaces.
+            Root_Parent := Orig_Entity;
+
+         elsif Orig_Decl.Flags.Is_Subprogram then
             declare
-               Method_Name : constant String := +Xref.Declaration (Element 
(Ops)).Name;
+               Controlling : constant Entity_Information := Controlling_Type 
(Orig_Entity);
             begin
-               if Primitive_Op_Name = Method_Name then
-                  --  IMPROVEME: if the method is inherited but not 
overridden, use the
-                  --  type location.
-                  Dump_Entity (Element (Ops), Type_Name);
+               if Controlling = No_Entity then
+                  --  Not a primitive subprogram
+                  Dump_Entity (Orig_Entity);
                   return;
+               else
+                  if No_Children then
+                     Root_Parent := Controlling; -- for type name
+                  else
+                     --  Here we find the highest ancestor type that has this 
method.
+                     --  gnatcoll.xref does not let us get the type of each 
parameter, so
+                     --  we can't match profiles, just names.
+                     Root_Parent := Root_Parent_Type (Controlling, 
Primitive_Op_Name => Orig_Short_Name);
+                  end if;
                end if;
             end;
-            Next (Ops);
-         end loop;
-      end Dump_Method;
+         else
+            --  Something else (variable, package, ...)
+            Dump_Decl (Orig_Decl);
+            return;
+         end if;
 
-      procedure Dump_Entities (Entities : in out Recursive_Entities_Cursor)
-      is begin
-         loop
-            exit when not Has_Element (Entities);
-            if Orig_Decl.Flags.Is_Subprogram then
-               Dump_Method (Entities.Element, +Orig_Decl.Name);
+         if No_Children then
+            if Orig_Decl.Flags.Is_Type then
+               Dump_Entity (Orig_Entity);
             else
-               Dump_Entity (Entities.Element);
+               Dump_Entity (Orig_Entity, Controlling_Type_Name => 
Xref.Qualified_Name (Root_Parent));
             end if;
-            Next (Entities);
-         end loop;
-      end Dump_Entities;
+         else
+            declare
+               Child_Types : Recursive_Entities_Cursor;
+            begin
+               --  "Child_Types" includes generic formal parameters (ie
+               --  gen_run_wisi_lr_parse.ads Parse_Data_Type) in addition to 
the
+               --  actual parameters.
+               All_Child_Types (Root_Parent, Child_Types);
+               if Orig_Decl.Flags.Is_Type then
+                  Dump_Entity (Root_Parent);
+               else
+                  Dump_Method (Root_Parent, +Orig_Decl.Name);
+               end if;
+               Dump_Entities (Child_Types);
+            end;
+         end if;
+      end One_Entity;
 
+      use GNAT.Directory_Operations;
    begin
       Short_File_Names := Nth_Arg (Args, 2) = Short_File_Names_Arg;
 
-      if Orig_Decl.Flags.Is_Type then
-         --  It is tempting to find the highest ancestor type here, then show
-         --  all types derived from that. But in Ada, that root ancestor is
-         --  often Ada.Finalization.[Limited_]Controlled (or some similar root
-         --  type), so the tree is much larger than we really want. So we just
-         --  show all children of the given type; the user can then climb the
-         --  tree if they want to enlarge it. This also allows the user to
-         --  choose which anscestor to examine when there is more than one,
-         --  with interfaces.
-         Root_Parent := Orig_Entity;
+      case Words'Length is
+      when 3 | 4         =>
+         One_Entity
+           (Xref.Get_Entity
+              (Name     => Words (Words'First).all,
+               File     => Format_Pathname
+                 (Style => UNIX,
+                  Path  => Words (Words'First + 1).all),
+               Project  => GNATCOLL.Projects.No_Project,
+               Line     => Integer'Value (Words (Words'First + 2).all),
+               Column   =>
+                 (if Words'Length = 4
+                  then Visible_Column (Integer'Value (Words (Words'First + 
3).all))
+                  else -1)) --  No column; assume good enough for a precise 
match
+              .Entity);
 
-      elsif Orig_Decl.Flags.Is_Subprogram then
+      when 2 =>
+         --  No line or column; find all matching names in file
          declare
-            Controlling : constant Entity_Information := Controlling_Type 
(Orig_Entity);
+            use GNATCOLL.VFS;
+
+            Multiple       : Entities_Cursor;
+            Orig_File      : constant Virtual_File      := Locate_Regular_File
+              (File_Name => +Words (Words'First + 1).all,
+               Path      => Source_Search_Path.all);
+            Orig_File_Name : constant Filesystem_String := Full_Name 
(Orig_File);
          begin
-            if Controlling = No_Entity then
-               --  Not a primitive subprogram
-               Dump_Entity (Orig_Entity);
-               return;
-            else
-               --  Here we find the highest ancestor type that has this method.
-               Root_Parent := Root_Parent_Type (Controlling, Primitive_Op_Name 
=> +Orig_Decl.Name);
-            end if;
+            From_Prefix (Xref, Words (Words'First).all, Is_Partial => False, 
Cursor => Multiple);
+
+            loop
+               exit when not Has_Element (Multiple);
+               declare
+                  Decl : constant Entity_Declaration := Xref.Declaration 
(Element (Multiple));
+
+                  function Check_Body_File return Boolean
+                  is
+                     Bodies : References_Cursor;
+                  begin
+                     Xref.Bodies (Decl.Location.Entity, Bodies);
+                     loop
+                        exit when not Has_Element (Bodies);
+                        declare
+                           Ref : Entity_Reference renames Element (Bodies);
+                        begin
+                           if Orig_File_Name = Full_Name (Ref.File) then
+                              return True;
+                           end if;
+                        end;
+                        Next (Bodies);
+                     end loop;
+                     return False;
+                  end Check_Body_File;
+
+               begin
+                  if Orig_File_Name = Full_Name (Decl.Location.File) or else
+                    Check_Body_File
+                  then
+                     One_Entity (Element (Multiple), No_Children => True);
+                  end if;
+               end;
+               Next (Multiple);
+            end loop;
          end;
-      else
-         --  Something else (variable, package, ...)
-         Dump_Decl (Orig_Decl);
-         return;
-      end if;
 
-      declare
-         Child_Types : Recursive_Entities_Cursor;
-      begin
-         --  "Child_Types" includes generic formal parameters (ie
-         --  gen_run_wisi_lr_parse.ads Parse_Data_Type) in addition to the
-         --  actual parameters.
-         All_Child_Types (Root_Parent, Child_Types);
-         if Orig_Decl.Flags.Is_Type then
-            Dump_Entity (Root_Parent);
-         else
-            Dump_Method (Root_Parent, +Orig_Decl.Name);
-         end if;
-         Dump_Entities (Child_Types);
-      end;
+      when others =>
+         --  No file or bad arg.
+         GNAT.Strings.Free (Words);
+         raise Invalid_Command with "Invalid parameter '" & Nth_Arg (Args, 1) &
+           "', expecting name:file:[line[:column]]";
+      end case;
+
    end Process_Tree_Defs;
 
    procedure Process_Tree_Refs (Args : GNATCOLL.Arg_Lists.Arg_List)
@@ -768,6 +965,7 @@ procedure Gpr_Query is
 
       use GNATCOLL.Arg_Lists;
       use GNATCOLL.Xref;
+
       Orig_Entity : constant Entity_Information := Get_Entity (Nth_Arg (Args, 
1));
       Orig_Decl   : constant Entity_Declaration := Xref.Declaration 
(Orig_Entity);
       Root_Parent : Entity_Information;
@@ -852,16 +1050,8 @@ procedure Gpr_Query is
    procedure Process_Source_Dirs (Args : GNATCOLL.Arg_Lists.Arg_List)
    is
       pragma Unreferenced (Args);
-      use GNATCOLL.VFS;
-      use GNATCOLL.Projects;
-
-      Dirs : constant File_Array := Source_Dirs
-        (Project   => Tree.Root_Project,
-         Recursive => True) &
-        Predefined_Source_Path (Env.all);
    begin
-      Short_File_Names := False;
-      Put (Dirs);
+      Put (Source_Search_Path.all);
    end Process_Source_Dirs;
 
    procedure Put (Item : GNATCOLL.VFS.File_Array)
@@ -918,7 +1108,7 @@ begin
          Help        => "Specifies the name of a prebuilt database");
       Define_Switch
         (Cmdline,
-         Output      => Project_Name'Access,
+         Output      => Project_File_Name'Access,
          Switch      => "-P:",
          Long_Switch => "--project=",
          Help        => "Load the given project (mandatory)");
@@ -932,12 +1122,13 @@ begin
         (Cmdline,
          Output      => Traces_Config_File'Access,
          Long_Switch => "--tracefile=",
-         Help        => "Specify a traces configuration file, set projects lib 
verbose");
+         Help        =>
+           "Specify a traces configuration file, set projects lib verbose. 
File should contain ""gpr_query=yes""");
 
       Getopt (Cmdline, Callback => null);
    end;
 
-   if Project_Name.all = "" then
+   if Project_File_Name.all = "" then
       Ada.Text_IO.Put_Line ("No project file specified");
       GNAT.Command_Line.Display_Help (Cmdline);
       return;
@@ -987,19 +1178,27 @@ begin
          else Ada.Directories.Current_Directory);
 
       Path : constant Virtual_File := -- must be an absolute file name
-        (if Is_Absolute_Path (+Project_Name.all) then
-            Create_From_UTF8 (Project_Name.all, Normalize => True)
+        (if Is_Absolute_Path (+Project_File_Name.all) then
+            Create_From_UTF8 (Project_File_Name.all, Normalize => True)
          else
-            Locate_Regular_File (+Project_Name.all, From_Path 
(+Gpr_Project_Path)));
+            Locate_Regular_File (+Project_File_Name.all, From_Path 
(+Gpr_Project_Path)));
    begin
+      GNATCOLL.Traces.Trace (Me, "GPR_PROJECT_PATH " & Gpr_Project_Path);
+
       if not Path.Is_Regular_File then
-         Put (Project_Name.all & ": not found on path " & Gpr_Project_Path);
+         declare
+            Path : constant File_Array := From_Path (+Gpr_Project_Path);
+         begin
+            Put_Line (Project_File_Name.all & ": not found on path:");
+            for P of Path loop
+               Put_Line (+Full_Name (P));
+            end loop;
+         end;
          Ada.Command_Line.Set_Exit_Status (Ada.Command_Line.Failure);
          return;
       end if;
 
-      GNATCOLL.Traces.Trace (Me, "project path " & Gpr_Project_Path);
-      GNATCOLL.Traces.Trace (Me, "using project file " & (+Path.Full_Name));
+      GNATCOLL.Traces.Trace (Me, "project file " & (+Path.Full_Name));
 
       if Show_Progress then
          Progress_Reporter := Display_Progress'Unrestricted_Access;
@@ -1068,6 +1267,12 @@ begin
 
    Process_Refresh (GNATCOLL.Arg_Lists.Empty_Command_Line);
 
+   Source_Search_Path := new GNATCOLL.VFS.File_Array'
+     (GNATCOLL.Projects.Source_Dirs
+        (Project   => Tree.Root_Project,
+         Recursive => True) &
+        GNATCOLL.Projects.Predefined_Source_Path (Env.all));
+
    if Commands_From_Switch.all /= "" then
       Process_Line (Commands_From_Switch.all);
       return;
diff --git a/packages/ada-mode/gpr_re2c.c b/packages/ada-mode/gpr_re2c.c
index 3ed8680..dcc2ac3 100644
--- a/packages/ada-mode/gpr_re2c.c
+++ b/packages/ada-mode/gpr_re2c.c
@@ -1,10 +1,10 @@
-/* Generated by re2c 1.0.3 */
+/* Generated by re2c 1.3 */
 #line 1 "../gpr.re2c"
 //  generated parser support file. -*- mode: C -*-
 //  command line: wisitoken-bnf-generate.exe  --generate LR1 Ada_Emacs re2c 
PROCESS gpr.wy
 //
 
-//  Copyright (C) 2013 - 2019 Free Software Foundation, Inc.
+//  Copyright (C) 2013 - 2020 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
@@ -293,21 +293,21 @@ yy2:
        YYSKIP ();
 yy3:
        YYDEBUG(3, YYPEEK ());
-#line 241 "../gpr.re2c"
+#line 242 "../gpr.re2c"
        {status = ERROR_unrecognized_character; continue;}
 #line 299 "../gpr_re2c.c"
 yy4:
        YYDEBUG(4, YYPEEK ());
        YYSKIP ();
        YYDEBUG(5, YYPEEK ());
-#line 239 "../gpr.re2c"
+#line 240 "../gpr.re2c"
        {*id =  39; continue;}
 #line 306 "../gpr_re2c.c"
 yy6:
        YYDEBUG(6, YYPEEK ());
        YYSKIP ();
        YYDEBUG(7, YYPEEK ());
-#line 194 "../gpr.re2c"
+#line 195 "../gpr.re2c"
        { lexer->byte_token_start = lexer->cursor;
           lexer->char_token_start = lexer->char_pos;
           if (*lexer->cursor == 0x0A)
@@ -320,7 +320,7 @@ yy8:
        YYDEBUG(8, YYPEEK ());
        YYSKIP ();
        YYDEBUG(9, YYPEEK ());
-#line 201 "../gpr.re2c"
+#line 202 "../gpr.re2c"
        {*id =  1; continue;}
 #line 326 "../gpr_re2c.c"
 yy10:
@@ -491,35 +491,35 @@ yy12:
        YYDEBUG(12, YYPEEK ());
        YYSKIP ();
        YYDEBUG(13, YYPEEK ());
-#line 227 "../gpr.re2c"
+#line 228 "../gpr.re2c"
        {*id =  27; continue;}
 #line 497 "../gpr_re2c.c"
 yy14:
        YYDEBUG(14, YYPEEK ());
        YYSKIP ();
        YYDEBUG(15, YYPEEK ());
-#line 233 "../gpr.re2c"
+#line 234 "../gpr.re2c"
        {*id =  33; continue;}
 #line 504 "../gpr_re2c.c"
 yy16:
        YYDEBUG(16, YYPEEK ());
        YYSKIP ();
        YYDEBUG(17, YYPEEK ());
-#line 214 "../gpr.re2c"
+#line 215 "../gpr.re2c"
        {*id =  14; continue;}
 #line 511 "../gpr_re2c.c"
 yy18:
        YYDEBUG(18, YYPEEK ());
        YYSKIP ();
        YYDEBUG(19, YYPEEK ());
-#line 221 "../gpr.re2c"
+#line 222 "../gpr.re2c"
        {*id =  21; continue;}
 #line 518 "../gpr_re2c.c"
 yy20:
        YYDEBUG(20, YYPEEK ());
        YYSKIP ();
        YYDEBUG(21, YYPEEK ());
-#line 230 "../gpr.re2c"
+#line 231 "../gpr.re2c"
        {*id =  30; continue;}
 #line 525 "../gpr_re2c.c"
 yy22:
@@ -534,7 +534,7 @@ yy23:
        YYDEBUG(23, YYPEEK ());
        YYSKIP ();
        YYDEBUG(24, YYPEEK ());
-#line 231 "../gpr.re2c"
+#line 232 "../gpr.re2c"
        {*id =  31; continue;}
 #line 540 "../gpr_re2c.c"
 yy25:
@@ -557,7 +557,7 @@ yy25:
        }
 yy27:
        YYDEBUG(27, YYPEEK ());
-#line 236 "../gpr.re2c"
+#line 237 "../gpr.re2c"
        {*id =  36; continue;}
 #line 563 "../gpr_re2c.c"
 yy28:
@@ -570,14 +570,14 @@ yy28:
        }
 yy29:
        YYDEBUG(29, YYPEEK ());
-#line 228 "../gpr.re2c"
+#line 229 "../gpr.re2c"
        {*id =  28; continue;}
 #line 576 "../gpr_re2c.c"
 yy30:
        YYDEBUG(30, YYPEEK ());
        YYSKIP ();
        YYDEBUG(31, YYPEEK ());
-#line 234 "../gpr.re2c"
+#line 235 "../gpr.re2c"
        {*id =  34; continue;}
 #line 583 "../gpr_re2c.c"
 yy32:
@@ -605,7 +605,7 @@ yy33:
        }
 yy34:
        YYDEBUG(34, YYPEEK ());
-#line 237 "../gpr.re2c"
+#line 238 "../gpr.re2c"
        {*id =  37; continue;}
 #line 611 "../gpr_re2c.c"
 yy35:
@@ -888,7 +888,7 @@ yy50:
        YYDEBUG(50, YYPEEK ());
        YYSKIP ();
        YYDEBUG(51, YYPEEK ());
-#line 235 "../gpr.re2c"
+#line 236 "../gpr.re2c"
        {*id =  35; continue;}
 #line 894 "../gpr_re2c.c"
 yy52:
@@ -1430,7 +1430,7 @@ yy61:
        }
 yy62:
        YYDEBUG(62, YYPEEK ());
-#line 238 "../gpr.re2c"
+#line 239 "../gpr.re2c"
        {*id =  38; continue;}
 #line 1436 "../gpr_re2c.c"
 yy63:
@@ -1775,7 +1775,6 @@ yy69:
        case 0x01:
        case 0x02:
        case 0x03:
-       case 0x04:
        case 0x05:
        case 0x06:
        case 0x07:
@@ -1953,23 +1952,23 @@ yy69:
        }
 yy71:
        YYDEBUG(71, YYPEEK ());
-#line 202 "../gpr.re2c"
+#line 203 "../gpr.re2c"
        {*id =  2; continue;}
-#line 1959 "../gpr_re2c.c"
+#line 1958 "../gpr_re2c.c"
 yy72:
        YYDEBUG(72, YYPEEK ());
        YYSKIP ();
        YYDEBUG(73, YYPEEK ());
-#line 229 "../gpr.re2c"
+#line 230 "../gpr.re2c"
        {*id =  29; continue;}
-#line 1966 "../gpr_re2c.c"
+#line 1965 "../gpr_re2c.c"
 yy74:
        YYDEBUG(74, YYPEEK ());
        YYSKIP ();
        YYDEBUG(75, YYPEEK ());
-#line 232 "../gpr.re2c"
+#line 233 "../gpr.re2c"
        {*id =  32; continue;}
-#line 1973 "../gpr_re2c.c"
+#line 1972 "../gpr_re2c.c"
 yy76:
        YYDEBUG(76, YYPEEK ());
        yyaccept = 1;
@@ -2117,9 +2116,9 @@ yy78:
        }
 yy79:
        YYDEBUG(79, YYPEEK ());
-#line 204 "../gpr.re2c"
+#line 205 "../gpr.re2c"
        {*id =  4; continue;}
-#line 2123 "../gpr_re2c.c"
+#line 2122 "../gpr_re2c.c"
 yy80:
        YYDEBUG(80, YYPEEK ());
        YYSKIP ();
@@ -2630,9 +2629,9 @@ yy91:
        }
 yy92:
        YYDEBUG(92, YYPEEK ());
-#line 213 "../gpr.re2c"
+#line 214 "../gpr.re2c"
        {*id =  13; continue;}
-#line 2636 "../gpr_re2c.c"
+#line 2635 "../gpr_re2c.c"
 yy93:
        YYDEBUG(93, YYPEEK ());
        yyaccept = 1;
@@ -3253,9 +3252,9 @@ yy114:
        }
 yy115:
        YYDEBUG(115, YYPEEK ());
-#line 208 "../gpr.re2c"
+#line 209 "../gpr.re2c"
        {*id =  8; continue;}
-#line 3259 "../gpr_re2c.c"
+#line 3258 "../gpr_re2c.c"
 yy116:
        YYDEBUG(116, YYPEEK ());
        yyaccept = 1;
@@ -3392,9 +3391,9 @@ yy117:
        }
 yy118:
        YYDEBUG(118, YYPEEK ());
-#line 212 "../gpr.re2c"
+#line 213 "../gpr.re2c"
        {*id =  12; continue;}
-#line 3398 "../gpr_re2c.c"
+#line 3397 "../gpr_re2c.c"
 yy119:
        YYDEBUG(119, YYPEEK ());
        yyaccept = 1;
@@ -3608,9 +3607,9 @@ yy127:
        }
 yy128:
        YYDEBUG(128, YYPEEK ());
-#line 224 "../gpr.re2c"
+#line 225 "../gpr.re2c"
        {*id =  24; continue;}
-#line 3614 "../gpr_re2c.c"
+#line 3613 "../gpr_re2c.c"
 yy129:
        YYDEBUG(129, YYPEEK ());
        yyaccept = 1;
@@ -3780,9 +3779,9 @@ yy133:
        }
 yy134:
        YYDEBUG(134, YYPEEK ());
-#line 206 "../gpr.re2c"
+#line 207 "../gpr.re2c"
        {*id =  6; continue;}
-#line 3786 "../gpr_re2c.c"
+#line 3785 "../gpr_re2c.c"
 yy135:
        YYDEBUG(135, YYPEEK ());
        yyaccept = 1;
@@ -3943,9 +3942,9 @@ yy138:
        }
 yy139:
        YYDEBUG(139, YYPEEK ());
-#line 216 "../gpr.re2c"
+#line 217 "../gpr.re2c"
        {*id =  16; continue;}
-#line 3949 "../gpr_re2c.c"
+#line 3948 "../gpr_re2c.c"
 yy140:
        YYDEBUG(140, YYPEEK ());
        yyaccept = 1;
@@ -4126,9 +4125,9 @@ yy145:
        }
 yy146:
        YYDEBUG(146, YYPEEK ());
-#line 223 "../gpr.re2c"
+#line 224 "../gpr.re2c"
        {*id =  23; continue;}
-#line 4132 "../gpr_re2c.c"
+#line 4131 "../gpr_re2c.c"
 yy147:
        YYDEBUG(147, YYPEEK ());
        yyaccept = 12;
@@ -4254,9 +4253,9 @@ yy147:
        }
 yy148:
        YYDEBUG(148, YYPEEK ());
-#line 225 "../gpr.re2c"
+#line 226 "../gpr.re2c"
        {*id =  25; continue;}
-#line 4260 "../gpr_re2c.c"
+#line 4259 "../gpr_re2c.c"
 yy149:
        YYDEBUG(149, YYPEEK ());
        yyaccept = 13;
@@ -4382,9 +4381,9 @@ yy149:
        }
 yy150:
        YYDEBUG(150, YYPEEK ());
-#line 226 "../gpr.re2c"
+#line 227 "../gpr.re2c"
        {*id =  26; continue;}
-#line 4388 "../gpr_re2c.c"
+#line 4387 "../gpr_re2c.c"
 yy151:
        YYDEBUG(151, YYPEEK ());
        yyaccept = 1;
@@ -4697,9 +4696,9 @@ yy168:
        }
 yy169:
        YYDEBUG(169, YYPEEK ());
-#line 217 "../gpr.re2c"
+#line 218 "../gpr.re2c"
        {*id =  17; continue;}
-#line 4703 "../gpr_re2c.c"
+#line 4702 "../gpr_re2c.c"
 yy170:
        YYDEBUG(170, YYPEEK ());
        yyaccept = 1;
@@ -4902,9 +4901,9 @@ yy177:
        }
 yy178:
        YYDEBUG(178, YYPEEK ());
-#line 209 "../gpr.re2c"
+#line 210 "../gpr.re2c"
        {*id =  9; continue;}
-#line 4908 "../gpr_re2c.c"
+#line 4907 "../gpr_re2c.c"
 yy179:
        YYDEBUG(179, YYPEEK ());
        yyaccept = 1;
@@ -5041,9 +5040,9 @@ yy180:
        }
 yy181:
        YYDEBUG(181, YYPEEK ());
-#line 215 "../gpr.re2c"
+#line 216 "../gpr.re2c"
        {*id =  15; continue;}
-#line 5047 "../gpr_re2c.c"
+#line 5046 "../gpr_re2c.c"
 yy182:
        YYDEBUG(182, YYPEEK ());
        yyaccept = 17;
@@ -5169,9 +5168,9 @@ yy182:
        }
 yy183:
        YYDEBUG(183, YYPEEK ());
-#line 218 "../gpr.re2c"
+#line 219 "../gpr.re2c"
        {*id =  18; continue;}
-#line 5175 "../gpr_re2c.c"
+#line 5174 "../gpr_re2c.c"
 yy184:
        YYDEBUG(184, YYPEEK ());
        yyaccept = 18;
@@ -5297,9 +5296,9 @@ yy184:
        }
 yy185:
        YYDEBUG(185, YYPEEK ());
-#line 219 "../gpr.re2c"
+#line 220 "../gpr.re2c"
        {*id =  19; continue;}
-#line 5303 "../gpr_re2c.c"
+#line 5302 "../gpr_re2c.c"
 yy186:
        YYDEBUG(186, YYPEEK ());
        yyaccept = 19;
@@ -5425,9 +5424,9 @@ yy186:
        }
 yy187:
        YYDEBUG(187, YYPEEK ());
-#line 220 "../gpr.re2c"
+#line 221 "../gpr.re2c"
        {*id =  20; continue;}
-#line 5431 "../gpr_re2c.c"
+#line 5430 "../gpr_re2c.c"
 yy188:
        YYDEBUG(188, YYPEEK ());
        yyaccept = 1;
@@ -5564,9 +5563,9 @@ yy189:
        }
 yy190:
        YYDEBUG(190, YYPEEK ());
-#line 203 "../gpr.re2c"
+#line 204 "../gpr.re2c"
        {*id =  3; continue;}
-#line 5570 "../gpr_re2c.c"
+#line 5569 "../gpr_re2c.c"
 yy191:
        YYDEBUG(191, YYPEEK ());
        yyaccept = 1;
@@ -5714,9 +5713,9 @@ yy193:
        }
 yy194:
        YYDEBUG(194, YYPEEK ());
-#line 210 "../gpr.re2c"
+#line 211 "../gpr.re2c"
        {*id =  10; continue;}
-#line 5720 "../gpr_re2c.c"
+#line 5719 "../gpr_re2c.c"
 yy195:
        YYDEBUG(195, YYPEEK ());
        yyaccept = 22;
@@ -5842,9 +5841,9 @@ yy195:
        }
 yy196:
        YYDEBUG(196, YYPEEK ());
-#line 222 "../gpr.re2c"
+#line 223 "../gpr.re2c"
        {*id =  22; continue;}
-#line 5848 "../gpr_re2c.c"
+#line 5847 "../gpr_re2c.c"
 yy197:
        YYDEBUG(197, YYPEEK ());
        yyaccept = 23;
@@ -5970,9 +5969,9 @@ yy197:
        }
 yy198:
        YYDEBUG(198, YYPEEK ());
-#line 205 "../gpr.re2c"
+#line 206 "../gpr.re2c"
        {*id =  5; continue;}
-#line 5976 "../gpr_re2c.c"
+#line 5975 "../gpr_re2c.c"
 yy199:
        YYDEBUG(199, YYPEEK ());
        yyaccept = 1;
@@ -6185,9 +6184,9 @@ yy207:
        }
 yy208:
        YYDEBUG(208, YYPEEK ());
-#line 207 "../gpr.re2c"
+#line 208 "../gpr.re2c"
        {*id =  7; continue;}
-#line 6191 "../gpr_re2c.c"
+#line 6190 "../gpr_re2c.c"
 yy209:
        YYDEBUG(209, YYPEEK ());
        yyaccept = 1;
@@ -6346,11 +6345,11 @@ yy212:
        }
 yy213:
        YYDEBUG(213, YYPEEK ());
-#line 211 "../gpr.re2c"
+#line 212 "../gpr.re2c"
        {*id =  11; continue;}
-#line 6352 "../gpr_re2c.c"
+#line 6351 "../gpr_re2c.c"
 }
-#line 242 "../gpr.re2c"
+#line 243 "../gpr.re2c"
 
    }
    /* lexer->cursor and lexer ->char_pos are one char past end of token */
diff --git a/packages/ada-mode/gpr_re2c_c.ads b/packages/ada-mode/gpr_re2c_c.ads
index c752061..f78de90 100644
--- a/packages/ada-mode/gpr_re2c_c.ads
+++ b/packages/ada-mode/gpr_re2c_c.ads
@@ -2,7 +2,7 @@
 --  command line: wisitoken-bnf-generate.exe  --generate LR1 Ada_Emacs re2c 
PROCESS gpr.wy
 --
 
---  Copyright (C) 2013 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2013 - 2020 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
diff --git a/packages/ada-mode/install.sh b/packages/ada-mode/install.sh
index 20b7237..d85adad 100755
--- a/packages/ada-mode/install.sh
+++ b/packages/ada-mode/install.sh
@@ -8,8 +8,8 @@
 # If you don't have write permission in the GNAT installation
 # directory, you need to use --prefix=<dir>, or run with root priviledges.
 
-export GPR_PROJECT_PATH="../wisi-3.0.1"
+WISI_DIR="../wisi-3.1.0"
 
-gprinstall -f -p -P ada_mode_wisi_parse.gpr --install-name=ada_mode_wisi_parse 
$1
+gprinstall -f -p -P ada_mode_wisi_parse.gpr -aP $WISI_DIR 
--install-name=ada_mode_wisi_parse $1 
 
 # end of file.
diff --git a/packages/ada-mode/wisi-ada-format_parameter_list.adb 
b/packages/ada-mode/wisi-ada-format_parameter_list.adb
index 10bfb25..51690df 100644
--- a/packages/ada-mode/wisi-ada-format_parameter_list.adb
+++ b/packages/ada-mode/wisi-ada-format_parameter_list.adb
@@ -2,7 +2,7 @@
 --
 --
 --
---  Copyright (C) 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2019 - 2020 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
@@ -45,7 +45,7 @@ is
       Default_Exp : Buffer_Region := Null_Buffer_Region;
    end record;
 
-   Formal_Part : constant Node_Index := Find_ID_At (Tree, Data.Terminals, 
+formal_part_ID, Edit_Begin);
+   Formal_Part : constant Node_Index := Find_ID_At (Tree, +formal_part_ID, 
Edit_Begin);
    Param_Iter  : Iterator;
    Edit_End    : Buffer_Pos;
    Param_Count : Count_Type := 0;
diff --git a/packages/ada-mode/wisi-ada.adb b/packages/ada-mode/wisi-ada.adb
index f72ff1c..0893716 100644
--- a/packages/ada-mode/wisi-ada.adb
+++ b/packages/ada-mode/wisi-ada.adb
@@ -25,6 +25,7 @@ package body Wisi.Ada is
 
    function Indent_Record
      (Data              : in out Parse_Data_Type;
+      Tree              : in     Syntax_Trees.Tree;
       Anchor_Token      : in     Augmented_Token;
       Record_Token      : in     Augmented_Token;
       Indenting_Token   : in     Augmented_Token;
@@ -34,13 +35,6 @@ package body Wisi.Ada is
    is
       use Ada_Process_Actions;
    begin
-      if Anchor_Token.Byte_Region = Null_Buffer_Region or
-        Record_Token.Byte_Region = Null_Buffer_Region or
-        Indenting_Token.Byte_Region = Null_Buffer_Region
-      then
-         return Null_Delta;
-      end if;
-
       if not Indenting_Comment and Indenting_Token.ID = +RECORD_ID then
          --  Indenting 'record'
          return Indent_Anchored_2
@@ -66,9 +60,9 @@ package body Wisi.Ada is
          end if;
 
       else
-         --  Indenting other comment, component or 'end'
+         --  Indenting comment after 'record', other comment, component or 
'end'
          --
-         --  Ensure 'record' line is anchored.
+         --  Ensure 'record' line is anchored to Anchor_Token.
          if not (Data.Indents (Record_Token.Line).Label = Anchored or
                    Data.Indents (Record_Token.Line).Label = Anchor_Anchored)
          then
@@ -76,13 +70,16 @@ package body Wisi.Ada is
                --  We don't pass Indenting_Comment here, because 'record' is 
code.
                Indent_Token_1
                  (Data,
-                  Record_Token,
-                  Indent_Anchored_2
-                    (Data, Anchor_Token.Line,
-                     Record_Token.Last_Line (Indenting_Comment => False),
+                  Tree,
+                  Indenting_Token         => Record_Token,
+                  Delta_Indent            => Indent_Anchored_2
+                    (Data,
+                     Anchor_Token.Line,
+                     Record_Token.Last_Line
+                       (Indenting_Comment => False),
                      Ada_Indent_Record_Rel_Type,
-                     Accumulate => True),
-                  Indenting_Comment => False);
+                     Accumulate           => True),
+                  Indenting_Comment       => False);
             end if;
          end if;
 
@@ -105,25 +102,19 @@ package body Wisi.Ada is
 
    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
+     return WisiToken.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;
+        is (Tree.ID (Node) = ID and then Get_Aug_Token_Const_1 (Tree, 
Node).Byte_Region.First = Edit_Begin);
    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;
+      Found      : in WisiToken.Valid_Node_Index;
       Edit_Begin : in WisiToken.Buffer_Pos)
    with No_Return
    is begin
@@ -145,7 +136,7 @@ package body Wisi.Ada is
       use Standard.Ada.Text_IO;
       use WisiToken.Syntax_Trees;
 
-      Call             : Node_Index := Find_ID_At (Tree, Data.Terminals, 
+name_ID, Edit_Begin);
+      Call             : Node_Index := Find_ID_At (Tree, +name_ID, Edit_Begin);
       Edit_End         : WisiToken.Buffer_Pos;
       Method           : Valid_Node_Index;
       Temp             : Node_Index;
@@ -245,7 +236,7 @@ package body Wisi.Ada is
       use Standard.Ada.Text_IO;
       use WisiToken.Syntax_Trees;
 
-      Call          : Node_Index := Find_ID_At (Tree, Data.Terminals, 
+name_ID, Edit_Begin);
+      Call          : Node_Index := Find_ID_At (Tree, +name_ID, Edit_Begin);
       Edit_End      : WisiToken.Buffer_Pos;
       Object_Method : Valid_Node_Index;
       Method        : Unbounded_String;
@@ -309,7 +300,7 @@ package body Wisi.Ada is
       use Standard.Ada.Text_IO;
       use WisiToken.Syntax_Trees;
 
-      Call             : Node_Index := Find_ID_At (Tree, Data.Terminals, 
+name_ID, Edit_Begin);
+      Call             : Node_Index := Find_ID_At (Tree, +name_ID, Edit_Begin);
       Edit_End         : WisiToken.Buffer_Pos;
       Temp             : Node_Index;
       Association_List : Node_Index;
@@ -379,7 +370,7 @@ package body Wisi.Ada is
       use Standard.Ada.Text_IO;
       use WisiToken.Syntax_Trees;
 
-      Call             : Node_Index := Find_ID_At (Tree, Data.Terminals, 
+name_ID, Edit_Begin);
+      Call             : Node_Index := Find_ID_At (Tree, +name_ID, Edit_Begin);
       Edit_End         : WisiToken.Buffer_Pos;
       Temp             : Node_Index;
       Association_List : Node_Index;
@@ -527,47 +518,63 @@ package body Wisi.Ada is
       Data.Indent_Comment_Col_0 := Ada_Indent_Comment_Col_0;
    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)
+   overriding function Insert_After
+     (User_Data            : in out Parse_Data_Type;
+      Tree                 : in     WisiToken.Syntax_Trees.Tree'Class;
+      Token                : in     WisiToken.Valid_Node_Index;
+      Insert_On_Blank_Line : in     Boolean)
+     return Boolean
    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;
+      pragma Unreferenced (User_Data);
+      use Ada_Process_Actions;
 
+      --  We return True if Token affects indent (ie it is a block boundary)
+      --  and normally has no code following it on the same line.
+      --
+      --  'end' is not really an exception, it is normally followed by
+      --  <name> and ';', but no more code. Except when indenting a blank
+      --  line; see test/ada_mode-interactive_2.adb Record_1.
+      --
+      --  RIGHT_PAREN is an exception; it is often followed by more code,
+      --  but clearly belongs on the same line as the preceding token (often
+      --  other ')').
+      --
+      --  COLON is similar to RIGHT_PAREN.
+
+      ID : constant Token_ID := Tree.ID (Token);
+
+      Result : constant array (Ada_Process_Actions.Token_Enum_ID) of Boolean :=
+        (BEGIN_ID |         -- test/ada_mode-recover_exception_1.adb, 
test/ada_mode-recover_extra_declare.adb
+           COLON_ID |       -- test/ada_mode-recover_partial_22.adb
+           DECLARE_ID |
+           RIGHT_PAREN_ID | -- test/ada_mode-recover_20.adb
+           SEMICOLON_ID |   -- test/ada_mode-recover_13.adb
+           THEN_ID          -- test/ada_mode-recover_19
+                => True,
+         others => False);
    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);
+      case To_Token_Enum (ID) is
+      when CASE_ID | IF_ID | LOOP_ID | RECORD_ID | RETURN_ID | SELECT_ID =>
+         return -Tree.ID (Tree.Prev_Terminal (Token)) = END_ID;
+
+      when END_ID =>
+         --  test/ada_mode-recover_20.adb, test/ada_mode-interactive_2.adb 
Record_1.
+         return not Insert_On_Blank_Line;
+
+      when IDENTIFIER_ID =>
+         return -Tree.ID (Tree.Prev_Terminal (Token)) in END_ID | COLON_ID;
 
       when others =>
-         Standard.Ada.Text_IO.Put_Line ("(error ""unrecognized refactor action 
" & Action'Image & """)");
+         return Result (-ID);
       end case;
-   end Refactor;
+   end Insert_After;
 
    overriding
    function Indent_Hanging_1
      (Data              : in out Parse_Data_Type;
       Tree              : in     Syntax_Trees.Tree;
-      Tokens            : in     Syntax_Trees.Valid_Node_Index_Array;
-      Tree_Indenting    : in     Syntax_Trees.Valid_Node_Index;
+      Tokens            : in     Valid_Node_Index_Array;
+      Tree_Indenting    : in     Valid_Node_Index;
       Indenting_Comment : in     Boolean;
       Delta_1           : in     Simple_Indent_Param;
       Delta_2           : in     Simple_Indent_Param;
@@ -575,8 +582,7 @@ package body Wisi.Ada is
       Accumulate        : in     Boolean)
      return Delta_Type
    is
-      use all type Syntax_Trees.Node_Index;
-      Indenting_Token : constant Aug_Token_Ref := Get_Aug_Token (Data, Tree, 
Tree_Indenting);
+      Indenting_Token : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1 
(Tree, Tree_Indenting);
 
       function Result (Delta_1 : in Simple_Indent_Param; Delta_2 : in 
Simple_Delta_Type) return Delta_Type
       is begin
@@ -610,7 +616,7 @@ package body Wisi.Ada is
       use Ada_Process_Actions;
    begin
       if Tree.ID (Tree.Parent (Tree_Indenting)) = +association_opt_ID and then
-        Syntax_Trees.Invalid_Node_Index /= Tree.Find_Ancestor (Tree_Indenting, 
+aspect_specification_opt_ID)
+        Invalid_Node_Index /= Tree.Find_Ancestor (Tree_Indenting, 
+aspect_specification_opt_ID)
       then
          --  In aspect_specification_opt
          --  See ada.wy association_opt for test cases
@@ -646,8 +652,8 @@ package body Wisi.Ada is
          --  Use delta for last line of Indenting_Token.
          --  Test cases in test/ada_mode-parens.adb Hello
          declare
-            First_Terminal : Augmented_Token renames
-              Data.Terminals (Indenting_Token.First_Terminals_Index);
+            First_Terminal : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1
+              (Tree, Tree.First_Terminal (Tree_Indenting));
          begin
             if Option then
                --  Test cases with "Item => ..."
@@ -696,11 +702,46 @@ package body Wisi.Ada is
       end if;
    end Indent_Hanging_1;
 
+   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;
+
    function Ada_Indent_Aggregate
      (Data              : in out Wisi.Parse_Data_Type'Class;
       Tree              : in     Syntax_Trees.Tree;
-      Tokens            : in     Syntax_Trees.Valid_Node_Index_Array;
-      Tree_Indenting    : in     Syntax_Trees.Valid_Node_Index;
+      Tokens            : in     Valid_Node_Index_Array;
+      Tree_Indenting    : in     Valid_Node_Index;
       Indenting_Comment : in     Boolean;
       Args              : in     Wisi.Indent_Arg_Arrays.Vector)
      return Wisi.Delta_Type
@@ -710,7 +751,6 @@ package body Wisi.Ada is
       pragma Unreferenced (Args);
       pragma Unreferenced (Tokens);
 
-      use all type Syntax_Trees.Node_Index;
       use Ada_Process_Actions;
 
       --  In our grammar, 'aggregate' can be an Ada aggregate, or a
@@ -723,11 +763,10 @@ package body Wisi.Ada is
       --  expression, so we search for 'name' as well; see
       --  test/ada_mode-conditional_expressions-more_1.adb.
 
-      Expression : constant Syntax_Trees.Node_Index := Tree.Find_Ancestor
-        (Tree_Indenting, (+expression_opt_ID, +name_ID));
+      Expression : constant Node_Index := Tree.Find_Ancestor (Tree_Indenting, 
(+expression_opt_ID, +name_ID));
    begin
-      if Expression = Syntax_Trees.Invalid_Node_Index or else
-        Tree.Parent (Expression) = Syntax_Trees.Invalid_Node_Index
+      if Expression = Invalid_Node_Index or else
+        Tree.Parent (Expression) = Invalid_Node_Index
       then
          return Null_Delta;
       elsif Tree.ID (Tree.Parent (Expression)) in +if_expression_ID | 
+elsif_expression_item_ID |
@@ -745,45 +784,40 @@ package body Wisi.Ada is
    function Ada_Indent_Renames_0
      (Data              : in out Wisi.Parse_Data_Type'Class;
       Tree              : in     Syntax_Trees.Tree;
-      Tokens            : in     Syntax_Trees.Valid_Node_Index_Array;
-      Tree_Indenting    : in     Syntax_Trees.Valid_Node_Index;
+      Tokens            : in     Valid_Node_Index_Array;
+      Tree_Indenting    : in     Valid_Node_Index;
       Indenting_Comment : in     Boolean;
       Args              : in     Indent_Arg_Arrays.Vector)
      return Wisi.Delta_Type
    is
-      Subp_Tok    : constant Aug_Token_Ref := Get_Aug_Token
-        (Data, Tree, Tokens (Positive_Index_Type (Integer'(Args (1)))));
-      Renames_Tok : constant Aug_Token_Ref := Get_Aug_Token (Data, Tree, 
Tree_Indenting);
-      Paren_I     : Base_Token_Index;
+      Subp_Node   : constant Valid_Node_Index := Tokens (Positive_Index_Type 
(Integer'(Args (1))));
+      Subp_Tok    : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1 (Tree, 
Subp_Node);
+      Renames_Tok : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1 (Tree, 
Tree_Indenting);
+      Paren_I     : Node_Index;
    begin
-      if Subp_Tok.Char_Region = Null_Buffer_Region then
-         --  built from entirely virtual tokens
-         return Null_Delta;
-      end if;
+      Paren_I := Tree.Find_Descendant (Subp_Node, Data.Left_Paren_ID);
 
-      Paren_I := Data.Find (Data.Left_Paren_ID, Subp_Tok);
-
-      if Paren_I /= Augmented_Token_Arrays.No_Index then
+      if Paren_I /= Invalid_Node_Index then
          --  paren is present
-         declare
-            Paren_Tok : Augmented_Token renames Data.Terminals (Paren_I);
-         begin
-            if Ada_Indent_Renames > 0 then
-               return Indent_Anchored_2
-                 (Data,
-                  Anchor_Line => Subp_Tok.Line,
-                  Last_Line   => Renames_Tok.Last_Line (Indenting_Comment),
-                  Offset      => Ada_Indent_Renames,
-                  Accumulate  => True);
-            else
+         if Ada_Indent_Renames > 0 then
+            return Indent_Anchored_2
+              (Data,
+               Anchor_Line => Subp_Tok.Line,
+               Last_Line   => Renames_Tok.Last_Line (Indenting_Comment),
+               Offset      => Ada_Indent_Renames,
+               Accumulate  => True);
+         else
+            declare
+               Paren_Tok : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1 
(Tree, Paren_I);
+            begin
                return Indent_Anchored_2
                  (Data,
                   Anchor_Line => Paren_Tok.Line,
                   Last_Line   => Renames_Tok.Last_Line (Indenting_Comment),
                   Offset      => Current_Indent_Offset (Data, Paren_Tok, abs 
Ada_Indent_Renames),
                   Accumulate  => True);
-            end if;
-         end;
+            end;
+         end if;
       else
          return Indent_Anchored_2
            (Data,
@@ -797,8 +831,8 @@ package body Wisi.Ada is
    function Ada_Indent_Return_0
      (Data              : in out Wisi.Parse_Data_Type'Class;
       Tree              : in     Syntax_Trees.Tree;
-      Tokens            : in     Syntax_Trees.Valid_Node_Index_Array;
-      Tree_Indenting    : in     Syntax_Trees.Valid_Node_Index;
+      Tokens            : in     Valid_Node_Index_Array;
+      Tree_Indenting    : in     Valid_Node_Index;
       Indenting_Comment : in     Boolean;
       Args              : in     Wisi.Indent_Arg_Arrays.Vector)
      return Wisi.Delta_Type
@@ -812,15 +846,15 @@ package body Wisi.Ada is
       --  'parameter_and_result_profile'. The indent depends on whether the
       --  'formal_part' is present, and the location of 'FUNCTION'.
 
-      Parameter_And_Result_Profile : constant Syntax_Trees.Valid_Node_Index := 
Tree.Parent (Tree_Indenting);
+      Parameter_And_Result_Profile : constant Valid_Node_Index := Tree.Parent 
(Tree_Indenting);
 
-      Indenting : constant Aug_Token_Ref := Get_Aug_Token (Data, Tree, 
Tree_Indenting);
+      Indenting : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1 (Tree, 
Tree_Indenting);
    begin
       if Indenting.Line = Indenting.First_Indent_Line then
          if Ada_Indent_Return <= 0 then
             declare
-               Anchor_Token : constant Aug_Token_Ref := Get_Aug_Token
-                 (Data, Tree, Tokens (Positive_Index_Type (Integer'(Args 
(1)))));
+               Anchor_Token : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1
+                 (Tree, Tokens (Positive_Index_Type (Integer'(Args (1)))));
             begin
                return Indent_Anchored_2
                  (Data,
@@ -831,9 +865,9 @@ package body Wisi.Ada is
             end;
          else
             declare
-               Function_N   : constant Syntax_Trees.Valid_Node_Index := 
Tree.Find_Sibling
+               Function_N   : constant Valid_Node_Index := Tree.Find_Sibling
                  (Parameter_And_Result_Profile, +FUNCTION_ID);
-               Anchor_Token : constant Aug_Token_Ref := Get_Aug_Token (Data, 
Tree, Function_N);
+               Anchor_Token : Aug_Token_Const_Ref renames 
Get_Aug_Token_Const_1 (Tree, Function_N);
             begin
                return Indent_Anchored_2
                  (Data,
@@ -852,26 +886,27 @@ package body Wisi.Ada is
    function Ada_Indent_Record_0
      (Data              : in out Wisi.Parse_Data_Type'Class;
       Tree              : in     Syntax_Trees.Tree;
-      Tokens            : in     Syntax_Trees.Valid_Node_Index_Array;
-      Tree_Indenting    : in     Syntax_Trees.Valid_Node_Index;
+      Tokens            : in     Valid_Node_Index_Array;
+      Tree_Indenting    : in     Valid_Node_Index;
       Indenting_Comment : in     Boolean;
       Args              : in     Wisi.Indent_Arg_Arrays.Vector)
      return Wisi.Delta_Type
    is begin
       return Indent_Record
         (Parse_Data_Type (Data),
-         Anchor_Token      => Get_Aug_Token (Data, Tree, Tokens 
(Positive_Index_Type (Integer'(Args (1))))),
-         Record_Token      => Get_Aug_Token (Data, Tree, Tokens 
(Positive_Index_Type (Integer'(Args (2))))),
+         Tree,
+         Anchor_Token      => Get_Aug_Token_Const_1 (Tree, Tokens 
(Positive_Index_Type (Integer'(Args (1))))),
+         Record_Token      => Get_Aug_Token_Const_1 (Tree, Tokens 
(Positive_Index_Type (Integer'(Args (2))))),
          Offset            => Args (3),
-         Indenting_Token   => Get_Aug_Token (Data, Tree, Tree_Indenting),
+         Indenting_Token   => Get_Aug_Token_Const_1 (Tree, Tree_Indenting),
          Indenting_Comment => Indenting_Comment);
    end Ada_Indent_Record_0;
 
    function Ada_Indent_Record_1
      (Data              : in out Wisi.Parse_Data_Type'Class;
       Tree              : in     Syntax_Trees.Tree;
-      Tokens            : in     Syntax_Trees.Valid_Node_Index_Array;
-      Tree_Indenting    : in     Syntax_Trees.Valid_Node_Index;
+      Tokens            : in     Valid_Node_Index_Array;
+      Tree_Indenting    : in     Valid_Node_Index;
       Indenting_Comment : in     Boolean;
       Args              : in     Wisi.Indent_Arg_Arrays.Vector)
      return Wisi.Delta_Type
@@ -879,50 +914,39 @@ package body Wisi.Ada is
       --  We are indenting a token in record_definition or
       --  record_representation_clause, or a comment before 'record'.
       --
-      --  If record_definition, args (1) is the token ID of the anchor (=
-      --  TYPE); it appears as a direct child in an ancestor
-      --  full_type_declaration.
-      --
-      --  If record_representation_clause, args (1) is FOR, child of
-      --  record_representation_clause.
+      --  Args (1) is the token ID of the anchor. If record_definition, this
+      --  is TYPE; it appears as a direct child in an ancestor
+      --  full_type_declaration. If record_representation_clause, args (1)
+      --  is FOR, child of record_representation_clause.
 
-      use all type WisiToken.Syntax_Trees.Node_Label;
       use Ada_Process_Actions;
 
       Anchor : constant Token_ID := Token_ID (Integer'(Args (1)));
 
-      Declaration : constant Syntax_Trees.Valid_Node_Index := 
Tree.Find_Ancestor
+      Declaration : constant Valid_Node_Index := Tree.Find_Ancestor
         (Tree_Indenting,
          (if To_Token_Enum (Anchor) = TYPE_ID
           then +full_type_declaration_ID
           else +record_representation_clause_ID));
 
-      Tree_Anchor : constant Syntax_Trees.Valid_Node_Index := Tree.Find_Child 
(Declaration, Anchor);
-   begin
-      if Tree.Label (Tree_Anchor) /= WisiToken.Syntax_Trees.Shared_Terminal 
then
-         --  Anchor is virtual; Indent_Record would return Null_Delta
-         return Null_Delta;
-      end if;
+      Tree_Anchor : constant Valid_Node_Index := Tree.Find_Child (Declaration, 
Anchor);
 
-      declare
-         Anchor_Token : constant Aug_Token_Ref := Get_Aug_Token (Data, Tree, 
Tree_Anchor);
-
-         --  Args (2) is the index of RECORD (or a nonterminal possibly
-         --  starting with RECORD) in Tokens
-         Record_Token_Tree_Index : constant Syntax_Trees.Node_Index :=
-           Tokens (Positive_Index_Type (Integer'(Args (2))));
-         Record_Token : constant Aug_Token_Ref :=
-           (case Tree.Label (Record_Token_Tree_Index) is
-            when Shared_Terminal | Virtual_Terminal | Virtual_Identifier => 
Get_Aug_Token
-              (Data, Tree, Record_Token_Tree_Index),
-            when Nonterm => To_Aug_Token_Ref (Data.Terminals 
(Tree.Min_Terminal_Index (Record_Token_Tree_Index))));
-
-         Indenting_Token : constant Aug_Token_Ref := Get_Aug_Token (Data, 
Tree, Tree_Indenting);
-      begin
-         --  Args (3) is the offset
-         return Indent_Record
-           (Parse_Data_Type (Data), Anchor_Token, Record_Token, 
Indenting_Token, Indenting_Comment, Args (3));
-      end;
+      --  Args (2) is the index of RECORD (or a nonterminal possibly
+      --  starting with RECORD) in Tokens
+      Record_Token_Tree_Index : constant Node_Index := Tokens 
(Positive_Index_Type (Integer'(Args (2))));
+   begin
+      --  Args (3) is the offset
+      return Indent_Record
+        (Parse_Data_Type (Data),
+         Tree,
+         Anchor_Token      => Get_Aug_Token_Const_1 (Tree, Tree_Anchor),
+         Record_Token      => Get_Aug_Token_Const_1 (Tree, Tree.First_Terminal 
(Record_Token_Tree_Index)),
+         Indenting_Token   => Get_Aug_Token_Const_1 (Tree, Tree_Indenting),
+         Indenting_Comment => Indenting_Comment,
+         Offset            => Args (3));
    end Ada_Indent_Record_1;
 
 end Wisi.Ada;
+--  Local Variables:
+--  ada-case-strict: nil
+--  End:
diff --git a/packages/ada-mode/wisi-ada.ads b/packages/ada-mode/wisi-ada.ads
index 1e2fac8..f02d6bf 100644
--- a/packages/ada-mode/wisi-ada.ads
+++ b/packages/ada-mode/wisi-ada.ads
@@ -70,11 +70,19 @@ package Wisi.Ada is
    --  Also do any other initialization that Data needs.
 
    overriding
+   function Insert_After
+     (User_Data            : in out Parse_Data_Type;
+      Tree                 : in     WisiToken.Syntax_Trees.Tree'Class;
+      Token                : in     WisiToken.Valid_Node_Index;
+      Insert_On_Blank_Line : in     Boolean)
+     return Boolean;
+
+   overriding
    function Indent_Hanging_1
      (Data              : in out Parse_Data_Type;
       Tree              : in     WisiToken.Syntax_Trees.Tree;
-      Tokens            : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array;
-      Tree_Indenting    : in     WisiToken.Syntax_Trees.Valid_Node_Index;
+      Tokens            : in     WisiToken.Valid_Node_Index_Array;
+      Tree_Indenting    : in     WisiToken.Valid_Node_Index;
       Indenting_Comment : in     Boolean;
       Delta_1           : in     Simple_Indent_Param;
       Delta_2           : in     Simple_Indent_Param;
@@ -96,8 +104,8 @@ package Wisi.Ada is
    function Ada_Indent_Aggregate
      (Data              : in out Wisi.Parse_Data_Type'Class;
       Tree              : in     WisiToken.Syntax_Trees.Tree;
-      Tokens            : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array;
-      Tree_Indenting    : in     WisiToken.Syntax_Trees.Valid_Node_Index;
+      Tokens            : in     WisiToken.Valid_Node_Index_Array;
+      Tree_Indenting    : in     WisiToken.Valid_Node_Index;
       Indenting_Comment : in     Boolean;
       Args              : in     Wisi.Indent_Arg_Arrays.Vector)
      return Wisi.Delta_Type;
@@ -106,8 +114,8 @@ package Wisi.Ada is
    function Ada_Indent_Renames_0
      (Data              : in out Wisi.Parse_Data_Type'Class;
       Tree              : in     WisiToken.Syntax_Trees.Tree;
-      Tokens            : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array;
-      Tree_Indenting    : in     WisiToken.Syntax_Trees.Valid_Node_Index;
+      Tokens            : in     WisiToken.Valid_Node_Index_Array;
+      Tree_Indenting    : in     WisiToken.Valid_Node_Index;
       Indenting_Comment : in     Boolean;
       Args              : in     Wisi.Indent_Arg_Arrays.Vector)
      return Wisi.Delta_Type;
@@ -116,8 +124,8 @@ package Wisi.Ada is
    function Ada_Indent_Return_0
      (Data              : in out Wisi.Parse_Data_Type'Class;
       Tree              : in     WisiToken.Syntax_Trees.Tree;
-      Tokens            : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array;
-      Tree_Indenting    : in     WisiToken.Syntax_Trees.Valid_Node_Index;
+      Tokens            : in     WisiToken.Valid_Node_Index_Array;
+      Tree_Indenting    : in     WisiToken.Valid_Node_Index;
       Indenting_Comment : in     Boolean;
       Args              : in     Wisi.Indent_Arg_Arrays.Vector)
      return Wisi.Delta_Type;
@@ -126,21 +134,23 @@ package Wisi.Ada is
    function Ada_Indent_Record_0
      (Data              : in out Wisi.Parse_Data_Type'Class;
       Tree              : in     WisiToken.Syntax_Trees.Tree;
-      Tokens            : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array;
-      Tree_Indenting    : in     WisiToken.Syntax_Trees.Valid_Node_Index;
+      Tokens            : in     WisiToken.Valid_Node_Index_Array;
+      Tree_Indenting    : in     WisiToken.Valid_Node_Index;
       Indenting_Comment : in     Boolean;
       Args              : in     Wisi.Indent_Arg_Arrays.Vector)
      return Wisi.Delta_Type;
    --  [1] ada-indent-record
+   --  Args: anchor_token_index, record_token_index, offset
 
    function Ada_Indent_Record_1
      (Data              : in out Wisi.Parse_Data_Type'Class;
       Tree              : in     WisiToken.Syntax_Trees.Tree;
-      Tokens            : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array;
-      Tree_Indenting    : in     WisiToken.Syntax_Trees.Valid_Node_Index;
+      Tokens            : in     WisiToken.Valid_Node_Index_Array;
+      Tree_Indenting    : in     WisiToken.Valid_Node_Index;
       Indenting_Comment : in     Boolean;
       Args              : in     Wisi.Indent_Arg_Arrays.Vector)
      return Wisi.Delta_Type;
    --  [1] ada-indent-record*
+   --  Args: anchor_token_ID, record_token_index, offset
 
 end Wisi.Ada;
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 4658863..406b6c1 100644
--- a/packages/ada-mode/wisitoken-parse-lr-mckenzie_recover-ada.adb
+++ b/packages/ada-mode/wisitoken-parse-lr-mckenzie_recover-ada.adb
@@ -17,7 +17,6 @@
 
 pragma License (Modified_GPL);
 
-with Ada.Containers;
 with Ada.Exceptions;
 with Ada_Process_Actions;
 with System.Assertions;
@@ -339,7 +338,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
             return;
          end if;
 
-         if Syntax_Trees.Invalid_Node_Index = Tree.Find_Child 
(Config.Stack.Peek (4).Tree_Index, +EXCEPTION_ID) then
+         if 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;
@@ -372,11 +371,18 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
                        else +name_opt_ID),
                       +END_ID));
 
-                  if New_Config.Stack.Peek (1).Token.ID = 
+handled_sequence_of_statements_ID then
+                  if Undo_Reduce_Valid (New_Config.Stack, Tree) and then
+                    New_Config.Stack.Peek.Token.ID = 
+handled_sequence_of_statements_ID
+                  then
                      Undo_Reduce_Check
                        (New_Config, Tree,
                         (+handled_sequence_of_statements_ID,
                          +sequence_of_statements_opt_ID));
+                  else
+                     if Trace_McKenzie > Outline then
+                        Put ("Language_Fixes unimplemented nonterm for 
Missing_Name_Error.", New_Config);
+                     end if;
+                     raise Bad_Config;
                   end if;
 
                when package_specification_ID =>
@@ -394,7 +400,9 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
                   Push_Back_Check
                     (New_Config, (+SEMICOLON_ID, +identifier_opt_ID, +LOOP_ID, 
+END_ID));
 
-                  if New_Config.Stack.Peek (1).Token.ID = 
+handled_sequence_of_statements_ID then
+                  if Undo_Reduce_Valid (New_Config.Stack, Tree) and then
+                    New_Config.Stack.Peek (1).Token.ID = 
+handled_sequence_of_statements_ID
+                  then
                      Undo_Reduce_Check
                        (New_Config, Tree,
                         (+handled_sequence_of_statements_ID,
@@ -482,195 +490,207 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
          --  'begin'.
          --
          --  2. There is at least one missing 'end' after 'begin'. See
-         --  test_mckenzie_recover.adb Extra_Name_3, Block_Match_Names_1. The
-         --  solution is to insert 'end ;' before the 'end'.
+         --  test/ada_mode-recover_exception_1.adb. The solution is to insert
+         --  'end' before the 'end', and let Minimal_Complete finish the block.
          --
          --  3. There is an extra 'begin', before the 'begin'. See
          --  test/ada_mode-recover_block_name_mismatch.adb
          --
-         --  There is no reliable way to distinguish between 1 and 2, so we
-         --  enqueue both solutions. See test/ada_mode-recover_exception_1.adb
+         --  There is no reliable way to distinguish between the three cases, 
so we
+         --  enqueue all solutions.
          --
          --  If there is more than one missing 'end', a later recover operation
          --  will fix the others.
 
-         --  This case can handle Config.Error_Token.Virtual = True, and it 
doesn't use
-         --  Tree.
+         --  This case can handle Config.Error_Token.Virtual = True, and it
+         --  doesn't use Tree.
 
+         --  Case 1
          declare
-            End_Name : constant String := Lexer.Buffer_Text 
(End_Name_Token.Name);
-
-            Matching_Name_Index : SAL.Peek_Type := 3; -- start search before 
<end_name_token>
-            Begin_Count         : Integer;
+            New_Config : Configuration := Config;
          begin
-            Find_Matching_Name
-              (Config, Lexer, End_Name, Matching_Name_Index,
-               Other_ID => +BEGIN_ID, Other_Count => Begin_Count, 
Case_Insensitive => True);
-
-            if Matching_Name_Index = Config.Stack.Depth then
-               --  No matching name found; ignore error is the only fix.
-               return;
-            end if;
+            New_Config.Error_Token.ID := Invalid_Token_ID;
+            New_Config.Check_Status   := (Label => Ok);
 
-            if Begin_Count = 1 then
-               --  Case 1 or 2.
-               declare
-                  New_Config : Configuration := Config;
-               begin
-                  New_Config.Error_Token.ID := Invalid_Token_ID;
-                  New_Config.Check_Status   := (Label => Ok);
+            New_Config.Strategy_Counts (Language_Fix) := 
New_Config.Strategy_Counts (Language_Fix) + 1;
 
-                  New_Config.Strategy_Counts (Language_Fix) := 
New_Config.Strategy_Counts (Language_Fix) + 1;
+            --  Push_Back the failed reduce tokens.
+            for I in 1 .. New_Config.Check_Token_Count loop
+               if Push_Back_Valid (New_Config) then
+                  Push_Back (New_Config);
+               else
+                  raise Bad_Config;
+               end if;
+            end loop;
 
-                  --  Push_Back the failed reduce tokens.
-                  for I in 1 .. New_Config.Check_Token_Count loop
-                     Push_Back (New_Config);
-                  end loop;
+            Insert (New_Config, +END_ID);
+            --  Let Minimal_Complete_Actions handle (insert ';').
 
-                  Insert (New_Config, +END_ID);
-                  --  Let Minimal_Complete_Actions handle (insert ';').
+            Local_Config_Heap.Add (New_Config);
 
-                  Local_Config_Heap.Add (New_Config);
+            if Trace_McKenzie > Detail then
+               Put ("Language_Fixes Extra_Name_Error 1 " & Image 
(Config.Error_Token.ID, Descriptor), New_Config);
+            end if;
 
-                  if Trace_McKenzie > Detail then
-                     Put ("Language_Fixes Extra_Name_Error 1 " & Image 
(Config.Error_Token.ID, Descriptor), New_Config);
-                  end if;
+         exception
+         when Bad_Config =>
+            null;
+         end;
 
-               exception
-               when Bad_Config =>
-                  null;
-               end;
+         --  Case 2
+         declare
+            New_Config : Configuration := Config;
+         begin
+            New_Config.Error_Token.ID := Invalid_Token_ID;
+            New_Config.Check_Status   := (Label => Ok);
 
-               --  Case 2
-               declare
-                  New_Config : Configuration := Config;
-               begin
-                  New_Config.Error_Token.ID := Invalid_Token_ID;
-                  New_Config.Check_Status   := (Label => Ok);
+            New_Config.Strategy_Counts (Language_Fix) := 
New_Config.Strategy_Counts (Language_Fix) + 1;
 
-                  New_Config.Strategy_Counts (Language_Fix) := 
New_Config.Strategy_Counts (Language_Fix) + 1;
+            case Ada_Process_Actions.Token_Enum_ID'(-Config.Error_Token.ID) is
+            when block_statement_ID =>
+               --  There is almost always an open block of some sort; not worth
+               --  checking.
+               Push_Back_Check (New_Config, (+SEMICOLON_ID, 
+identifier_opt_ID, +END_ID));
 
-                  case 
Ada_Process_Actions.Token_Enum_ID'(-Config.Error_Token.ID) is
-                  when block_statement_ID =>
-                     --  There is almost always an open block of some sort; 
not worth
-                     --  checking.
-                     Push_Back_Check (New_Config, (+SEMICOLON_ID, 
+identifier_opt_ID, +END_ID));
+            when loop_statement_ID =>
+               Push_Back_Check
+                 (New_Config, (+SEMICOLON_ID, +identifier_opt_ID, +LOOP_ID, 
+END_ID));
 
-                  when loop_statement_ID =>
-                     Push_Back_Check
-                       (New_Config, (+SEMICOLON_ID, +identifier_opt_ID, 
+LOOP_ID, +END_ID));
+            when others =>
+               if Trace_McKenzie > Outline then
+                  Put ("Language_Fixes Extra_Name_Error 2: unrecognized 
Error_Token", Config);
+               end if;
+               raise Bad_Config;
+            end case;
 
-                  when others =>
-                     if Trace_McKenzie > Outline then
-                        Put ("Language_Fixes Extra_Name_Error 2: unrecognized 
Error_Token", Config);
-                     end if;
-                     raise Bad_Config;
-                  end case;
+            --  Let Minimal_Complete_Actions finish insert
+            Insert (New_Config, +END_ID);
 
-                  --  Let Minimal_Complete_Actions finish insert
-                  Insert (New_Config, +END_ID);
+            Local_Config_Heap.Add (New_Config);
 
-                  Local_Config_Heap.Add (New_Config);
+            if Trace_McKenzie > Detail then
+               Put ("Language_Fixes Extra_Name_Error 2 " & Image 
(Config.Error_Token.ID, Descriptor), New_Config);
+            end if;
+         exception
+         when Bad_Config =>
+            null;
+         end;
 
-                  if Trace_McKenzie > Detail then
-                     Put ("Language_Fixes Extra_Name_Error 2 " & Image 
(Config.Error_Token.ID, Descriptor), New_Config);
-                  end if;
-               exception
-               when Bad_Config =>
-                  null;
-               end;
+         --  Case 3. Delete the extra begin
+         --
+         --  If the first begin was inserted by recovery; we actually want to
+         --  delete the second begin. see test/ada_mode-recover_indent_4.adb
+         declare
+            New_Config     : Configuration := Config;
+            I              : SAL.Peek_Type := 1;
+            First_Begin_I  : SAL.Peek_Type;
+            Second_Begin_I : SAL.Peek_Type;
+         begin
+            loop
+               if New_Config.Stack.Peek (I).Token.ID = +BEGIN_ID then
+                  Second_Begin_I := I;
+                  exit;
+               end if;
+               I := I + 1;
+               if I >= New_Config.Stack.Depth then
+                  raise Bad_Config;
+               end if;
+            end loop;
 
-            else
-               --  Case 3. Delete the extra begin
-               --
-               --  If the first begin was inserted by recovery; we actually 
want to
-               --  delete the second begin. see 
test/ada_mode-recover_indent_4.adb
-               declare
-                  New_Config     : Configuration := Config;
-                  I              : SAL.Peek_Type := 1;
-                  First_Begin_I  : SAL.Peek_Type;
-                  Second_Begin_I : SAL.Peek_Type;
-               begin
-                  loop
-                     if New_Config.Stack.Peek (I).Token.ID = +BEGIN_ID then
-                        Second_Begin_I := I;
-                        exit;
-                     end if;
-                     I := I + 1;
-                  end loop;
-
-                  loop
-                     I := I + 1;
-                     if New_Config.Stack.Peek (I).Token.ID = +BEGIN_ID then
-                        First_Begin_I := I;
-                        exit;
-                     end if;
-                  end loop;
+            loop
+               I := I + 1;
+               if I >= New_Config.Stack.Depth then
+                  raise Bad_Config;
+               end if;
+               if New_Config.Stack.Peek (I).Token.ID = +BEGIN_ID then
+                  First_Begin_I := I;
+                  exit;
+               end if;
+            end loop;
 
-                  if New_Config.Stack.Peek (First_Begin_I).Token.Virtual then
-                     if New_Config.Stack.Peek (Second_Begin_I).Token.Virtual 
then
-                        --  nothing we can do.
-                        return;
-                     end if;
+            if New_Config.Stack.Peek (First_Begin_I).Token.Virtual then
+               if New_Config.Stack.Peek (Second_Begin_I).Token.Virtual then
+                  --  nothing we can do.
+                  return;
+               end if;
 
-                     --  Delete the second begin
-                     for I in 1 .. Second_Begin_I loop
-                        Push_Back (New_Config);
-                     end loop;
-                     pragma Assert (New_Config.Stack.Peek.Token.ID = 
+block_label_opt_ID);
-
-                     if New_Config.Stack.Peek.Token.Byte_Region = 
Null_Buffer_Region then
-                        --  block label is empty
-                        Push_Back (New_Config);
-                        Delete_Check (Terminals, New_Config, +BEGIN_ID);
-                     else
-                        Push_Back (New_Config);
-
-                        declare
-                           Index : WisiToken.Token_Index := 
New_Config.Current_Shared_Token;
-                        begin
-                           Delete_Check (Terminals, New_Config, Index, 
+IDENTIFIER_ID);
-                           Delete_Check (Terminals, New_Config, Index, 
+COLON_ID);
-                           Delete_Check (Terminals, New_Config, Index, 
+BEGIN_ID);
-                        end;
-                     end if;
+               --  Delete the second begin
+               for I in 1 .. Second_Begin_I loop
+                  if Push_Back_Valid (New_Config) then
+                     Push_Back (New_Config);
+                  else
+                     raise Bad_Config;
+                  end if;
+               end loop;
+               pragma Assert (New_Config.Stack.Peek.Token.ID = 
+block_label_opt_ID);
+
+               if New_Config.Stack.Peek.Token.Byte_Region = Null_Buffer_Region 
then
+                  --  block label is empty
+                  Push_Back (New_Config);
+                  Delete_Check (Terminals, New_Config, +BEGIN_ID);
+               else
+                  Push_Back (New_Config);
+
+                  declare
+                     Index : WisiToken.Token_Index := 
New_Config.Current_Shared_Token;
+                  begin
+                     Delete_Check (Terminals, New_Config, Index, 
+IDENTIFIER_ID);
+                     Delete_Check (Terminals, New_Config, Index, +COLON_ID);
+                     Delete_Check (Terminals, New_Config, Index, +BEGIN_ID);
+                  end;
+               end if;
 
-                     if Undo_Reduce_Valid (New_Config.Stack, Tree) then
-                        Undo_Reduce_Check (New_Config, Tree, 
+sequence_of_statements_ID);
-                     else
-                        Push_Back_Check (New_Config, 
+sequence_of_statements_ID);
-                     end if;
-                     Local_Config_Heap.Add (New_Config);
+               if Undo_Reduce_Valid (New_Config.Stack, Tree) then
+                  Undo_Reduce_Check (New_Config, Tree, 
+sequence_of_statements_ID);
+               else
+                  Push_Back_Check (New_Config, +sequence_of_statements_ID);
+               end if;
+               Local_Config_Heap.Add (New_Config);
 
-                     if Trace_McKenzie > Detail then
-                        Put ("Language_Fixes Extra_Name_Error 3a " &
-                               Image (Config.Error_Token.ID, Descriptor), 
New_Config);
-                     end if;
+               if Trace_McKenzie > Detail then
+                  Put ("Language_Fixes Extra_Name_Error 3a " &
+                         Image (Config.Error_Token.ID, Descriptor), 
New_Config);
+               end if;
+            else
+               --  Delete the first begin. We assume it is in a subprogram 
body, so
+               --  we don't need to adjust anything else.
+               for I in 1 .. First_Begin_I loop
+                  if Push_Back_Valid (New_Config) then
+                     Push_Back (New_Config);
                   else
-                     --  Delete the first begin. We assume it is in a 
subprogram body, so
-                     --  we don't need to adjust anything else.
-                     for I in 1 .. First_Begin_I loop
-                        Push_Back (New_Config);
-                     end loop;
+                     --  Probably trying to push back thru an earlier error 
recovery; see
+                     --  test/ada_mode-recover_10.adb
+                     raise Bad_Config;
+                  end if;
+               end loop;
 
-                     Delete_Check (Terminals, New_Config, +BEGIN_ID);
-                     Local_Config_Heap.Add (New_Config);
+               Delete_Check (Terminals, New_Config, +BEGIN_ID);
+               Local_Config_Heap.Add (New_Config);
 
-                     if Trace_McKenzie > Detail then
-                        Put ("Language_Fixes Extra_Name_Error 3b " &
-                               Image (Config.Error_Token.ID, Descriptor), 
New_Config);
-                     end if;
-                  end if;
-               end;
+               if Trace_McKenzie > Detail then
+                  Put ("Language_Fixes Extra_Name_Error 3b " &
+                         Image (Config.Error_Token.ID, Descriptor), 
New_Config);
+               end if;
             end if;
+         exception
+         when Bad_Config =>
+            null;
+
          end;
       end case;
    exception
    when Bad_Config =>
       null;
 
-   when System.Assertions.Assert_Failure =>
-      if Trace_McKenzie > Outline then
+   when E : System.Assertions.Assert_Failure =>
+      if Debug_Mode then
+         Trace.Put
+           ("Language_Fixes Handle_Check_Fail assert fail: " &
+              Standard.Ada.Exceptions.Exception_Message (E),
+            Prefix => True);
+         Trace.New_Line;
+         raise;
+      elsif Trace_McKenzie > Outline then
          Trace.Put_Line ("Language_Fixes Handle_Check_Fail Assert fail");
       end if;
    end Handle_Check_Fail;
@@ -687,67 +707,221 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
    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)
       is begin
          Put (Message, Trace, Parser_Label, Terminals, Config);
       end Put;
    begin
-      if Config.Error_Token.ID = +COLON_ID and
-        Config.Stack.Peek.Token.ID = +IDENTIFIER_ID
+      if (Config.Error_Token.ID = +COLON_ID and
+            Config.Stack.Peek.Token.ID = +IDENTIFIER_ID) and then
+        Push_Back_Valid (Config)
       then
          --  Code looks like:
          --
-         --  begin ... <variable_identifier> : [aliased constant] 
<subtype_indication> ...
-         --
-         --  compare to "missing begin"/"extra begin" case below.
+         --  ... <variable_identifier> : [aliased constant] 
<subtype_indication> := <expression> ...
          --
          --  Assume the user copied a declaration with an initializer, and is
-         --  converting it to a subprogram parameter; see
-         --  ada_mode-recover_02.adb). Delete the ': [aliased constant]
-         --  <subtype_indication>'.
+         --  converting it to an expression; see ada_mode-recover_02.adb,
+         --  test/ada_mode-recover_constant_as_expression_1.adb. Delete
+         --  '<variable_identifier> : [aliased constant] <subtype_indication>
+         --  :='.
+         --
+         --  We cannot reliably search ahead in the unparsed tokens for ':=";
+         --  <subtype_indication> can include a constraint with an arbitrarily
+         --  complex expression. So we only handle the common case where the
+         --  <subtype_indication> is a simple identifier or selected_component.
+         --
+         --  Note that if the user was converting to an assignment, there would
+         --  not be a partial statement in progress before the <variable
+         --  identifier>, and the error would be on 'constant', not ':'.
          --
-         --  Note that if the user was converting to an assignment, the error
-         --  would be on 'constant', not ':'.
+         --  compare to "decl as statement"/"missing end"/"extra begin" case 
below.
 
-         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;
-         end if;
+         declare
+            New_Config : Configuration         := Config;
+            I          : WisiToken.Token_Index;
+         begin
+            Push_Back_Check (New_Config, +IDENTIFIER_ID);
+
+            I := New_Config.Current_Shared_Token;
+            Delete_Check (Terminals, New_Config, I, +IDENTIFIER_ID);
+            Delete_Check (Terminals, New_Config, I, +COLON_ID);
+            if Terminals (I).ID = +ALIASED_ID then
+               Delete_Check (Terminals, New_Config, I, +ALIASED_ID);
+            end if;
+            if Terminals (I).ID = +CONSTANT_ID then
+               Delete_Check (Terminals, New_Config, I, +CONSTANT_ID);
+            end if;
+            if Terminals (I).ID = +NOT_ID then
+               Delete_Check (Terminals, New_Config, I, +NOT_ID);
+            end if;
+            if Terminals (I).ID = +NULL_ID then
+               Delete_Check (Terminals, New_Config, I, +NULL_ID);
+            end if;
+
+            --  look for ':='
+            loop
+               exit when I = Terminals.Last_Index; --  last is EOI
+               case To_Token_Enum (Terminals (I).ID) is
+               when IDENTIFIER_ID =>
+                  Delete_Check (Terminals, New_Config, I, +IDENTIFIER_ID);
 
+               when DOT_ID =>
+                  Delete_Check (Terminals, New_Config, I, +DOT_ID);
+
+               when COLON_EQUAL_ID =>
+                  Delete_Check (Terminals, New_Config, I, +COLON_EQUAL_ID);
+                  exit;
+
+               when others =>
+                  raise Bad_Config;
+
+               end case;
+            end loop;
+
+            New_Config.Cost := New_Config.Cost + 1;
+            New_Config.Strategy_Counts (Language_Fix) := 
New_Config.Strategy_Counts (Language_Fix) + 1;
+            Local_Config_Heap.Add (New_Config);
+            if Trace_McKenzie > Detail then
+               Put ("Language_Fixes variable decl as expression", New_Config);
+            end if;
+         exception
+         when Bad_Config =>
+            null;
+         end;
+
+      elsif (To_Token_Enum (Config.Error_Token.ID) in ALIASED_ID | CONSTANT_ID 
| IDENTIFIER_ID and
+               Config.Stack.Peek.Token.ID = +COLON_ID) and then
+        Push_Back_Valid (Config)
+      then
+         --  Code looks like:
+         --
+         --  <statement> <variable_identifier> : [aliased constant] 
<subtype_indication> <expression> ...
+         --
+         --  The variable_name looks like a block_label. compare to "variable 
decl as
+         --  param" case above.
+         --
+         --  1) This is a copied variable declaration that the user is 
converting
+         --  to an assignment. See
+         --  test/ada_mode-recover_constant_as_statement_1.adb. Delete
+         --  ': [aliased constant] <subtype_indication>'
+         --
+         --  We cannot reliably search ahead in the unparsed tokens for ':=";
+         --  <subtype_indication> can include a constraint with an arbitrarily
+         --  complex expression. So we only handle the common case where the
+         --  <subtype_indication> is a simple identifier or selected_component.
+         --
+         --  2) There is a missing 'end;' before <variable_name>. See
+         --  test/ada_mode-recover_25.adb. Push_Back + Minimal_Complete also
+         --  handles this case, but we enqueue the same solution here at lower
+         --  cost, so it can compete with the solution for cases 1 and 3.
+         --
+         --  3) There is an extra 'begin' before the <variable_name>. See
+         --  test/ada_mode-recover_27.adb. Delete the 'begin'.
+
+         --  case 1
          declare
             New_Config : Configuration := Config;
-            Delete_Index : WisiToken.Token_Index := 
Config.Current_Shared_Token;
+            I          : WisiToken.Token_Index;
          begin
-            Delete_Check (Terminals, New_Config, Delete_Index, +COLON_ID);
-            if Terminals (Delete_Index).ID = +ALIASED_ID then
-               Delete_Check (Terminals, New_Config, Delete_Index, +ALIASED_ID);
+            Push_Back_Check (New_Config, +COLON_ID);
+            I := New_Config.Current_Shared_Token;
+            Delete_Check (Terminals, New_Config, I, +COLON_ID);
+            if Terminals (I).ID = +ALIASED_ID then
+               Delete_Check (Terminals, New_Config, I, +ALIASED_ID);
             end if;
-            if Terminals (Delete_Index).ID = +CONSTANT_ID then
-               Delete_Check (Terminals, New_Config, Delete_Index, 
+CONSTANT_ID);
+            if Terminals (I).ID = +CONSTANT_ID then
+               Delete_Check (Terminals, New_Config, I, +CONSTANT_ID);
             end if;
-            if Terminals (Delete_Index).ID = +NOT_ID then
-               Delete_Check (Terminals, New_Config, Delete_Index, +NOT_ID);
+            if Terminals (I).ID = +NOT_ID then
+               Delete_Check (Terminals, New_Config, I, +NOT_ID);
             end if;
-            if Terminals (Delete_Index).ID = +NULL_ID then
-               Delete_Check (Terminals, New_Config, Delete_Index, +NULL_ID);
+            if Terminals (I).ID = +NULL_ID then
+               Delete_Check (Terminals, New_Config, I, +NULL_ID);
             end if;
-            if Terminals (Delete_Index).ID = +IDENTIFIER_ID then
-               Delete_Check (Terminals, New_Config, Delete_Index, 
+IDENTIFIER_ID);
 
-               --  There might be more to the subtype_indication; we'll let 
explore sort that out.
-               Local_Config_Heap.Add (New_Config);
-               if Trace_McKenzie > Detail then
-                  Put ("Language_Fixes variable decl as param", New_Config);
-               end if;
-            else
-               --  Something else is going on, abandon this
-               return;
+            --  look for and keep ':='
+            loop
+               exit when I = Terminals.Last_Index; --  last is EOI
+               case To_Token_Enum (Terminals (I).ID) is
+               when IDENTIFIER_ID =>
+                  Delete_Check (Terminals, New_Config, I, +IDENTIFIER_ID);
+
+               when DOT_ID =>
+                  Delete_Check (Terminals, New_Config, I, +DOT_ID);
+
+               when COLON_EQUAL_ID =>
+                  exit;
+
+               when others =>
+                  raise Bad_Config;
+
+               end case;
+            end loop;
+
+            New_Config.Cost := New_Config.Cost + 1;
+            New_Config.Strategy_Counts (Language_Fix) := 
New_Config.Strategy_Counts (Language_Fix) + 1;
+            Local_Config_Heap.Add (New_Config);
+            if Trace_McKenzie > Detail then
+               Put ("Language_Fixes variable decl as statement", New_Config);
+            end if;
+         exception
+         when Bad_Config =>
+            null;
+         end;
+
+         declare
+            New_Config_1 : Configuration := Config;
+         begin
+            --  Case 2
+            Push_Back_Check (New_Config_1, (+COLON_ID, +IDENTIFIER_ID));
+
+            --  maybe case 3.
+            if -New_Config_1.Stack.Peek.Token.ID = BEGIN_ID and 
Push_Back_Valid (New_Config_1) then
+               declare
+                  New_Config_2 : Configuration := New_Config_1;
+               begin
+                  Push_Back_Check (New_Config_2, +BEGIN_ID);
+                  if Undo_Reduce_Valid (New_Config_2.Stack, Tree) and then
+                    -New_Config_2.Stack.Peek.Token.ID in 
declarative_part_opt_ID | block_label_opt_ID
+                  then
+                     Undo_Reduce_Check (New_Config_2, Tree, 
New_Config_2.Stack.Peek.Token.ID);
+                  else
+                     if Trace_McKenzie > Detail then
+                        Put ("Language_Fixes extra begin 1 unimplemented 
case", New_Config_2);
+                     end if;
+                     raise Bad_Config;
+                  end if;
+                  Delete_Check (Terminals, New_Config_2, +BEGIN_ID);
+
+                  --  This is a guess, so add a cost, equal to case 1, 2.
+                  New_Config_2.Cost := New_Config_2.Cost + 1;
+                  New_Config_2.Strategy_Counts (Language_Fix) := 
New_Config_2.Strategy_Counts (Language_Fix) + 1;
+                  Local_Config_Heap.Add (New_Config_2);
+
+                  if Trace_McKenzie > Detail then
+                     Put ("Language_Fixes extra begin 1", New_Config_2);
+                  end if;
+               exception
+               when Bad_Config =>
+                  null;
+               end;
+            end if;
+
+            Insert (New_Config_1, +END_ID);
+
+            Insert (New_Config_1, +SEMICOLON_ID);
+            --  If we don't insert the ';' here, <variable_name> looks like a
+            --  block end name.
+
+            --  This is a guess, so add a cost, equal to case 1.
+            New_Config_1.Cost := New_Config_1.Cost + 1;
+            New_Config_1.Strategy_Counts (Language_Fix) := 
New_Config_1.Strategy_Counts (Language_Fix) + 1;
+            Local_Config_Heap.Add (New_Config_1);
+
+            if Trace_McKenzie > Detail then
+               Put ("Language_Fixes missing end 1", New_Config_1);
             end if;
          end;
 
@@ -770,7 +944,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
             --  'begin's, so parsing expects <end_name_token_1> to match the
             --  second 'begin', which looks like an unnamed block. See
             --  test_mckenzie_recover Match_Selected_Component_1. 'declare ...'
-            --  may _not_ be present on the second begin. The solution is to
+            --  is _not_ present on the second begin. The solution is to
             --  insert 'end ;' before the second 'begin'.
             --
             --  Case 2) is missing 'end;' after the second 'begin'. See
@@ -788,60 +962,77 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
             declare
                Label        : constant String := "selected_component 1";
                New_Config_1 : Configuration   := Config;
-               New_Config_2 : Configuration;
             begin
                New_Config_1.Error_Token.ID := Invalid_Token_ID;
 
                New_Config_1.Strategy_Counts (Language_Fix) := 
New_Config_1.Strategy_Counts (Language_Fix) + 1;
 
                Push_Back_Check (New_Config_1, (+IDENTIFIER_ID, +END_ID));
-               if New_Config_1.Stack.Peek (1).Token.ID = 
+handled_sequence_of_statements_ID then
-                  Undo_Reduce_Check
-                    (New_Config_1, Tree,
-                     (+handled_sequence_of_statements_ID,
-                      +sequence_of_statements_opt_ID));
-               end if;
 
                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
-
-                  New_Config_2 := New_Config_1;
-                  New_Config_2.Strategy_Counts (Language_Fix) := 
New_Config_2.Strategy_Counts (Language_Fix) + 1;
+                  --  no 'declare'; either case 1 or 2, so enqueue both
 
-                  Insert (New_Config_2, +END_ID);
-                  --  Let Minimal_Complete_Actions finish insert.
+                  declare
+                     New_Config_2 : Configuration := New_Config_1;
+                  begin
+                     case To_Token_Enum (New_Config_2.Stack.Peek.Token.ID) is
+                     when handled_sequence_of_statements_ID =>
+                        Push_Back_Check
+                          (New_Config_2,
+                           (+handled_sequence_of_statements_ID, +BEGIN_ID, 
+block_label_opt_ID));
 
-                  Push_Back_Check
-                    (New_Config_1,
-                     (+handled_sequence_of_statements_ID, +BEGIN_ID, 
+block_label_opt_ID));
+                     when sequence_of_statements_ID =>
+                        --  see test/ada_mode-recover_partial_24.adb
+                        Push_Back_Check
+                          (New_Config_2,
+                           (+sequence_of_statements_ID, +BEGIN_ID, 
+block_label_opt_ID));
+
+                     when others =>
+                        if Trace_McKenzie > Outline then
+                           Put ("Language_Fixes " & Label & " missing case 1 " 
& Image
+                                  (New_Config_2.Stack.Peek.Token.ID, 
Descriptor), Config);
+                        end if;
+                        raise Bad_Config;
+                     end case;
+
+                     Insert (New_Config_2, +END_ID);
+                     --  for case 1; let Minimal_Complete_Actions finish 
insert.
+
+                     Local_Config_Heap.Add (New_Config_2);
+                     if Length (New_Config_2.Ops) > 0 then
+                        Put ("Language_Fixes " & Label, New_Config_2);
+                     end if;
+                  exception
+                  when Bad_Config =>
+                     --  We don't check Debug_Mode here, because the failure 
is probably
+                     --  due to pushing back a virtual token, which is not a 
programming
+                     --  error.
+                     null;
+                  end;
 
                   Insert (New_Config_1, +END_ID);
-                  --  Let Minimal_Complete_Actions finish insert.
+                  --  for case 2; let Minimal_Complete_Actions finish insert.
 
                   Local_Config_Heap.Add (New_Config_1);
-                  Local_Config_Heap.Add (New_Config_2);
 
                when declarative_part_opt_ID =>
-                  --  case 2
+                  --  'declare' is present; case 2
                   Insert (New_Config_1, +END_ID);
                   Local_Config_Heap.Add (New_Config_1);
 
                when others =>
                   if Trace_McKenzie > Outline then
-                     Put ("Language_Fixes " & Label & " missing case " & Image
+                     Put ("Language_Fixes " & Label & " missing case 2 " & 
Image
                             (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;
+                  raise Bad_Config;
                end case;
 
                if Trace_McKenzie > Detail then
                   Put ("Language_Fixes " & Label, New_Config_1);
 
-                  if Length (New_Config_2.Ops) > 0 then
-                     Put ("Language_Fixes " & Label, New_Config_2);
-                  end if;
                end if;
             exception
             when Bad_Config =>
@@ -853,7 +1044,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
         Config.Stack.Peek.Token.ID = +END_ID
       then
          --  We've encountered an identifier after 'end' when expecting a
-         --  keyword. See test/ada_mode-recover_26.adb.
+         --  keyword. See test/ada_mode-recover_26.adb, 
test/ada_mode-recover_20.adb.
          --
          --  If a matching 'begin name' is found on the stack, the input looks 
like:
          --
@@ -863,12 +1054,32 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
          --  'end'. We can get the ID to insert from Parse_Table
          --  Minimal_Complete_Actions.
          --
-         --  Minimal_Complete_Actions does not handle this case well; it
-         --  ignores the name.
+         --  When searching for the matching name, we must allow name to be a
+         --  selected_component; see test/ada_mode-recover_20.adb.
+         --
+         --  Minimal_Complete_Actions can handle this case, but it inserts
+         --  '<compound_statement_id> ; end' instead. We want to insert 'end
+         --  <id> ;' before the existing 'end', so Insert_After places the
+         --  tokens better; see test/ada_mode-recover_20.adb.
          declare
+            function Get_End_Name return String
+            is
+               use Standard.Ada.Strings.Unbounded;
+               Result : Unbounded_String := +Lexer.Buffer_Text 
(Config.Error_Token.Byte_Region);
+               I : WisiToken.Token_Index := 
Config.Error_Token.Min_Terminal_Index + 1;
+            begin
+               loop
+                  exit when I > Terminals.Last_Index;
+                  exit when -Terminals (I).ID not in IDENTIFIER_ID | DOT_ID;
+                  Result := Result & Lexer.Buffer_Text (Terminals 
(I).Byte_Region);
+                  I := I + 1;
+               end loop;
+               return -Result;
+            end Get_End_Name;
+
             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);
+            End_Name       : constant String := Get_End_Name;
 
             Matching_Name_Index : SAL.Peek_Type := 2; -- start search before 
'end'
          begin
@@ -903,65 +1114,44 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
             end if;
          end;
 
-      elsif To_Token_Enum (Config.Error_Token.ID) in CONSTANT_ID | 
IDENTIFIER_ID and
-        Config.Stack.Peek.Token.ID = +COLON_ID
+      elsif To_Token_Enum (Config.Error_Token.ID) in PRAGMA_ID | USE_ID and
+        Config.Stack.Peek.Token.ID = +BEGIN_ID
       then
          --  Code looks like:
          --
-         --  ... <subprogram|package start> begin ... <variable_name> : 
[constant] <type_name>;
-         --
-         --  The variable_name looks like a block_label. compare to "variable 
decl as
-         --  param" case above.
-         --
-         --  1) There is a missing 'end;' before the <variable_name>. See
-         --  test/ada_mode-recover_25.adb. Minimal_Complete now handles this
-         --  case, but we enqueue the same solution here at lower cost, so it
-         --  can compete with the solution for case 2..
+         --  a) <subprogram|package start> is ... begin use <name>;
+         --  b) <subprogram|package start> is ... begin pragma ...
          --
-         --  2) There is an extra 'begin' before the <variable_name>. See
-         --  test/ada_mode-recover_27.adb.
-         --
-         --  FIXME: if there is a sequence_of_statements between the 'begin'
-         --  and the error point, or declarations before the 'begin', this is
-         --  either a copied variable declaration that the user is converting
-         --  to an assignment (solution: delete ': type'), or a subprogram
-         --  begin split in two (solution: insert 'declare' or 'end; procedure
-         --  name'). Need test cases.
-
-         declare
-            New_Config_1 : Configuration := Config;
-            New_Config_2 : Configuration;
-         begin
-            New_Config_1.Strategy_Counts (Language_Fix) := 
New_Config_1.Strategy_Counts (Language_Fix) + 1;
-
-            Push_Back_Check (New_Config_1, (+COLON_ID, +IDENTIFIER_ID));
-            New_Config_2 := New_Config_1;
+         --  There is an extra 'begin' before 'use' or 'pragma'. See
+         --  test/ada_mode-recover_14.adb. Delete the 'begin'.
 
-            Insert (New_Config_1, +END_ID);
-            --  Let Minimal_Complete finish insert; that will add cost, so no 
cost here.
-            Local_Config_Heap.Add (New_Config_1);
+         if Push_Back_Valid (Config) then
+            declare
+               New_Config : Configuration := Config;
+            begin
+               New_Config.Strategy_Counts (Language_Fix) := 
New_Config.Strategy_Counts (Language_Fix) + 1;
 
-            if Trace_McKenzie > Detail then
-               Put ("Language_Fixes missing begin", New_Config_1);
-            end if;
+               Push_Back_Check (New_Config, +BEGIN_ID);
 
-            --  Case 2.
-            Push_Back_Check (New_Config_2, +BEGIN_ID);
-            if Undo_Reduce_Valid (New_Config_2.Stack, Tree) then
-               Undo_Reduce_Check (New_Config_2, Tree, 
+declarative_part_opt_ID);
-            else
-               return;
-            end if;
-            Delete_Check (Terminals, New_Config_2, +BEGIN_ID);
+               if Undo_Reduce_Valid (New_Config.Stack, Tree) and then
+                 -New_Config.Stack.Peek.Token.ID in declarative_part_opt_ID | 
block_label_opt_ID
+               then
+                  Undo_Reduce_Check (New_Config, Tree, 
New_Config.Stack.Peek.Token.ID);
+               else
+                  if Trace_McKenzie > Detail then
+                     Put ("Language_Fixes extra begin 2 unimplemented case", 
New_Config);
+                  end if;
+                  raise Bad_Config;
+               end if;
+               Delete_Check (Terminals, New_Config, +BEGIN_ID);
 
-            --  This is a guess, so add a cost.
-            New_Config_2.Cost := New_Config_2.Cost + 1;
-            Local_Config_Heap.Add (New_Config_2);
+               Local_Config_Heap.Add (New_Config);
 
-            if Trace_McKenzie > Detail then
-               Put ("Language_Fixes extra begin", New_Config_2);
-            end if;
-         end;
+               if Trace_McKenzie > Detail then
+                  Put ("Language_Fixes extra begin 2", New_Config);
+               end if;
+            end;
+         end if;
 
       elsif Config.Error_Token.ID = +OR_ID and then
         Config.Stack.Peek.Token.ID = +expression_opt_ID
@@ -982,7 +1172,12 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
          begin
             New_Config.Strategy_Counts (Language_Fix) := 
New_Config.Strategy_Counts (Language_Fix) + 1;
 
-            Push_Back_Check (New_Config, +expression_opt_ID);
+            if Push_Back_Valid (New_Config) then
+               Push_Back_Check (New_Config, +expression_opt_ID);
+            else
+               raise Bad_Config;
+            end if;
+
             Insert (New_Config, +LEFT_PAREN_ID);
             --  Minimal_Complete will add the matching right paren.
 
@@ -992,8 +1187,11 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
             end if;
          end;
 
-      elsif Config.Error_Token.ID = +TICK_1_ID then
+      elsif Config.Error_Token.ID = +TICK_1_ID and Config.Error_Token.Virtual 
= False then
          --  Editing "Put ('|');" => "Put ('|-');"; need to change ' to ".
+         --
+         --  We can get here with Virtual = False if this Error_Token comes
+         --  from McKenzie_Recover.Parse.Parse rather than the main parser.
 
          declare
             New_Config : Configuration := Config;
@@ -1029,8 +1227,15 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
    when Bad_Config =>
       null;
 
-   when System.Assertions.Assert_Failure =>
-      if Trace_McKenzie > Outline then
+   when E : System.Assertions.Assert_Failure =>
+      if Debug_Mode then
+         Trace.Put
+           ("Language_Fixes Handle_Parse_Error assert fail: " &
+              Standard.Ada.Exceptions.Exception_Message (E),
+            Prefix => True);
+         Trace.New_Line;
+         raise;
+      elsif Trace_McKenzie > Outline then
          Trace.Put_Line ("Language_Fixes Handle_Parse_Error assert fail");
       end if;
    end Handle_Parse_Error;
@@ -1102,29 +1307,24 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Ada is
       end Matching_Begin_For_End;
 
    begin
-      if Config.Stack.Depth > 0 and then Config.Stack.Peek.Token.ID = +END_ID 
then
-         Matching_Tokens := Matching_Begin_For_End (1);
-
-      else
-         case To_Token_Enum (Tokens (1)) is
-         when END_ID =>
-            Matching_Tokens := Matching_Begin_For_End (2);
+      case To_Token_Enum (Tokens (1)) is
+      when END_ID =>
+         Matching_Tokens := Matching_Begin_For_End (2);
 
-         when ELSE_ID | ELSIF_ID | THEN_ID =>
-            Matching_Tokens := To_Vector (+IF_ID);
+      when ELSE_ID | ELSIF_ID | THEN_ID =>
+         Matching_Tokens := To_Vector (+IF_ID);
 
-         when EXCEPTION_ID =>
-            Matching_Tokens := To_Vector (+BEGIN_ID);
+      when EXCEPTION_ID =>
+         Matching_Tokens := To_Vector (+BEGIN_ID);
 
-            --  We don't return LEFT_PAREN for RIGHT_PAREN; better to delete 
it.
+         --  We don't return LEFT_PAREN for RIGHT_PAREN; better to delete it.
 
-         when WHEN_ID =>
-            Matching_Tokens := To_Vector ((+CASE_ID, +IDENTIFIER_ID, +IS_ID));
+      when WHEN_ID =>
+         Matching_Tokens := To_Vector ((+CASE_ID, +IDENTIFIER_ID, +IS_ID));
 
-         when others =>
-            null;
-         end case;
-      end if;
+      when others =>
+         null;
+      end case;
 
       if Config.Stack.Peek.Token.ID = +END_ID and
         ((Tokens (1) = +IDENTIFIER_ID and
diff --git a/packages/ada-mode/wisitoken-parse-lr-mckenzie_recover-ada.ads 
b/packages/ada-mode/wisitoken-parse-lr-mckenzie_recover-ada.ads
index 36a71c5..a6df020 100644
--- a/packages/ada-mode/wisitoken-parse-lr-mckenzie_recover-ada.ads
+++ b/packages/ada-mode/wisitoken-parse-lr-mckenzie_recover-ada.ads
@@ -1,48 +1,48 @@
---  Abstract :
---
---  Ada language specific algorithms for McKenzie_Recover
---
---  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 WisiToken.Parse.LR.McKenzie_Recover.Ada is
-
-   procedure Language_Fixes
-     (Trace             : in out WisiToken.Trace'Class;
-      Lexer             : access constant WisiToken.Lexer.Instance'Class;
-      Parser_Label      : in     Natural;
-      Parse_Table       : in     WisiToken.Parse.LR.Parse_Table;
-      Terminals         : in     Base_Token_Arrays.Vector;
-      Tree              : in     Syntax_Trees.Tree;
-      Local_Config_Heap : in out Config_Heaps.Heap_Type;
-      Config            : in     Configuration);
-   --  See wisitoken-parse-lr-parser.ads Language_Fixes_Access for description.
-
-   procedure Matching_Begin_Tokens
-     (Tokens                  : in     Token_ID_Array_1_3;
-      Config                  : in     Configuration;
-      Matching_Tokens         :    out Token_ID_Arrays.Vector;
-      Forbid_Minimal_Complete :    out Boolean);
-   --  See wisitoken-parse-lr-parser.ads Language_Matching_Begin_Tokens_Access
-   --  for description.
-
-   function String_ID_Set
-     (Descriptor        : in WisiToken.Descriptor;
-      String_Literal_ID : in Token_ID)
-     return Token_ID_Set;
-   --  See wisitoken-parse-lr-parser.ads Language_String_ID_Set_Access for
-   --  description.
-
-end WisiToken.Parse.LR.McKenzie_Recover.Ada;
+--  Abstract :
+--
+--  Ada language specific algorithms for McKenzie_Recover
+--
+--  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 WisiToken.Parse.LR.McKenzie_Recover.Ada is
+
+   procedure Language_Fixes
+     (Trace             : in out WisiToken.Trace'Class;
+      Lexer             : access constant WisiToken.Lexer.Instance'Class;
+      Parser_Label      : in     Natural;
+      Parse_Table       : in     WisiToken.Parse.LR.Parse_Table;
+      Terminals         : in     Base_Token_Arrays.Vector;
+      Tree              : in     Syntax_Trees.Tree;
+      Local_Config_Heap : in out Config_Heaps.Heap_Type;
+      Config            : in     Configuration);
+   --  See wisitoken-parse-lr-parser.ads Language_Fixes_Access for description.
+
+   procedure Matching_Begin_Tokens
+     (Tokens                  : in     Token_ID_Array_1_3;
+      Config                  : in     Configuration;
+      Matching_Tokens         :    out Token_ID_Arrays.Vector;
+      Forbid_Minimal_Complete :    out Boolean);
+   --  See wisitoken-parse-lr-parser.ads Language_Matching_Begin_Tokens_Access
+   --  for description.
+
+   function String_ID_Set
+     (Descriptor        : in WisiToken.Descriptor;
+      String_Literal_ID : in Token_ID)
+     return Token_ID_Set;
+   --  See wisitoken-parse-lr-parser.ads Language_String_ID_Set_Access for
+   --  description.
+
+end WisiToken.Parse.LR.McKenzie_Recover.Ada;
diff --git a/packages/wisi/NEWS b/packages/wisi/NEWS
index 277c1ea..38c8057 100644
--- a/packages/wisi/NEWS
+++ b/packages/wisi/NEWS
@@ -6,6 +6,26 @@ Please send wisi bug reports to address@hidden, with
 'wisi' in the subject. If possible, use M-x report-emacs-bug.
 
 
+* wisi 3.1.0
+11 May 2020
+
+** Add Wisitoken.Syntax_Trees.Insert_Token, to allow using inserted
+   virtual terminals tokens in indent. Several related changes to
+   allow treating virtual terminals on par with actual terminals.
+
+** New elisp generic functions: wisi-xref-completion-table, 
wisi-xref-completion-regexp, wisi-xref-completion-at-point-table
+
+** New elisp functions: wisi-filter-table, wisi-completion-at-point, 
wisi-skel-add-token-after
+
+** wisi-get-identifier uses wisi-xref-completion-table.
+
+** wisi-prj-identifier-at-point returns (IDENT START END)
+
+** In wisi.ads: augmented tokens are no stored only in the syntax
+   tree; new functions Get_Aug_Token_Const_1, Get_Aug_Token_Const,
+   Get_Aug_Token_Var provide access to them. Parse_Data_Type contains
+   a reference to the shared Terminals.
+
 * wisi 3.0.1
 30 Jan 2020
 
diff --git a/packages/wisi/README b/packages/wisi/README
index f2c5329..f189c8d 100644
--- a/packages/wisi/README
+++ b/packages/wisi/README
@@ -1,4 +1,4 @@
-Emacs wisi package 3.0.1
+Emacs wisi package 3.1.0
 
 The wisi package provides utilities for using generalized
 error-correcting LR parsers (in external processes) to do indentation,
diff --git a/packages/wisi/emacs_wisi_common_parse.adb 
b/packages/wisi/emacs_wisi_common_parse.adb
index 183aaf7..59d20e5 100644
--- a/packages/wisi/emacs_wisi_common_parse.adb
+++ b/packages/wisi/emacs_wisi_common_parse.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -24,7 +24,6 @@ with Ada.Exceptions;
 with Ada.Strings.Fixed;
 with Ada.Text_IO;
 with GNAT.OS_Lib;
-with GNAT.Traceback.Symbolic;
 with SAL;
 with System.Multiprocessors;
 with System.Storage_Elements;
@@ -504,8 +503,6 @@ package body Emacs_Wisi_Common_Parse is
       Put_Line
         ("(error ""unhandled exception: " & Ada.Exceptions.Exception_Name (E) 
& ": " &
            Ada.Exceptions.Exception_Message (E) & """)");
-      Put_Line (GNAT.Traceback.Symbolic.Symbolic_Traceback (E));
-
    end Process_Stream;
 
 end Emacs_Wisi_Common_Parse;
diff --git a/packages/wisi/gen_emacs_wisi_lr_parse.adb 
b/packages/wisi/gen_emacs_wisi_lr_parse.adb
index 951a871..0f81868 100644
--- a/packages/wisi/gen_emacs_wisi_lr_parse.adb
+++ b/packages/wisi/gen_emacs_wisi_lr_parse.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2014, 2017 - 2019 All Rights Reserved.
+--  Copyright (C) 2014, 2017 - 2020 All Rights Reserved.
 --
 --  This program is free software; you can redistribute it and/or
 --  modify it under terms of the GNU General Public License as
@@ -25,7 +25,7 @@ procedure Gen_Emacs_Wisi_LR_Parse
 is
    Trace      : aliased WisiToken.Text_IO_Trace.Trace 
(Descriptor'Unrestricted_Access);
    Parser     : WisiToken.Parse.LR.Parser.Parser;
-   Parse_Data : aliased Parse_Data_Type (Parser.Line_Begin_Token'Access);
+   Parse_Data : aliased Parse_Data_Type (Parser.Terminals'Access, 
Parser.Line_Begin_Token'Access);
 
    Params : constant Process_Start_Params := Get_Process_Start_Params;
 begin
diff --git a/packages/wisi/gen_emacs_wisi_lr_text_rep_parse.adb 
b/packages/wisi/gen_emacs_wisi_lr_text_rep_parse.adb
index f74144c..31f1052 100644
--- a/packages/wisi/gen_emacs_wisi_lr_text_rep_parse.adb
+++ b/packages/wisi/gen_emacs_wisi_lr_text_rep_parse.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2014, 2017 - 2019 All Rights Reserved.
+--  Copyright (C) 2014, 2017 - 2020 All Rights Reserved.
 --
 --  This program is free software; you can redistribute it and/or
 --  modify it under terms of the GNU General Public License as
@@ -29,7 +29,7 @@ is
 
    Trace      : aliased WisiToken.Text_IO_Trace.Trace 
(Descriptor'Unrestricted_Access);
    Parser     : WisiToken.Parse.LR.Parser.Parser;
-   Parse_Data : aliased Parse_Data_Type (Parser.Line_Begin_Token'Access);
+   Parse_Data : aliased Parse_Data_Type (Parser.Terminals'Access, 
Parser.Line_Begin_Token'Access);
 
    Params : constant Process_Start_Params := Get_Process_Start_Params;
 begin
diff --git a/packages/wisi/gen_run_wisi_lr_parse.adb 
b/packages/wisi/gen_run_wisi_lr_parse.adb
index ee63c77..84498de 100644
--- a/packages/wisi/gen_run_wisi_lr_parse.adb
+++ b/packages/wisi/gen_run_wisi_lr_parse.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2017 - 2019 All Rights Reserved.
+--  Copyright (C) 2017 - 2020 All Rights Reserved.
 --
 --  This program is free software; you can redistribute it and/or
 --  modify it under terms of the GNU General Public License as
@@ -24,7 +24,7 @@ procedure Gen_Run_Wisi_LR_Parse
 is
    Trace      : aliased WisiToken.Text_IO_Trace.Trace 
(Descriptor'Unrestricted_Access);
    Parser     : WisiToken.Parse.LR.Parser.Parser;
-   Parse_Data : aliased Parse_Data_Type (Parser.Line_Begin_Token'Access);
+   Parse_Data : aliased Parse_Data_Type (Parser.Terminals'Access, 
Parser.Line_Begin_Token'Access);
 begin
    --  Create parser first so Put_Usage has defaults from Parser.Table,
    --  and Get_CL_Params can override them.
diff --git a/packages/wisi/gen_run_wisi_lr_text_rep_parse.adb 
b/packages/wisi/gen_run_wisi_lr_text_rep_parse.adb
index 09efefd..45bc5e1 100644
--- a/packages/wisi/gen_run_wisi_lr_text_rep_parse.adb
+++ b/packages/wisi/gen_run_wisi_lr_text_rep_parse.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2017 - 2019 All Rights Reserved.
+--  Copyright (C) 2017 - 2020 All Rights Reserved.
 --
 --  This program is free software; you can redistribute it and/or
 --  modify it under terms of the GNU General Public License as
@@ -26,7 +26,7 @@ procedure Gen_Run_Wisi_LR_Text_Rep_Parse
 is
    Trace      : aliased WisiToken.Text_IO_Trace.Trace 
(Descriptor'Unrestricted_Access);
    Parser     : WisiToken.Parse.LR.Parser.Parser;
-   Parse_Data : aliased Parse_Data_Type (Parser.Line_Begin_Token'Access);
+   Parse_Data : aliased Parse_Data_Type (Parser.Terminals'Access, 
Parser.Line_Begin_Token'Access);
 begin
    --  Create parser first so Put_Usage has defaults from Parser.Table,
    --  and Get_CL_Params can override them.
diff --git a/packages/wisi/recover_stats.adb b/packages/wisi/recover_stats.adb
index 9172cb8..e1fed7b 100644
--- a/packages/wisi/recover_stats.adb
+++ b/packages/wisi/recover_stats.adb
@@ -2,7 +2,7 @@
 --
 --  Summarize error recover log.
 --
---  Copyright (C) 2019 Stephen Leake All Rights Reserved.
+--  Copyright (C) 2019 - 2020 Stephen Leake All Rights Reserved.
 --
 --  This program is free software; you can redistribute it and/or
 --  modify it under terms of the GNU General Public License as
@@ -52,9 +52,6 @@ is
       Strat_Counts_Present : Strategy_Counts := (others => 0);
       --  1 per recover event if used
 
-      Ignore_Error : Integer := 0;
-      --  ie, error is name mismatch.
-
       Recover_Count_Present : Integer := 0;
       --  1 per parser in recover result
 
@@ -176,10 +173,8 @@ begin
                   Summary (Label).Recover_Count_Present := Summary 
(Label).Recover_Count_Present + 1;
 
                   if not Strategy_Found then
-                     Summary (Label).Ignore_Error := Summary 
(Label).Ignore_Error + 1;
+                     raise SAL.Programmer_Error;
                   else
-                     --  We don't include Ignore_Error enqueue and check 
counts in the
-                     --  stats, because they distort them towards 1.
                      Summary (Label).Enqueue_Stats.Accumulate (Long_Float 
(Enqueue_Count));
                      Summary (Label).Check_Stats.Accumulate (Long_Float 
(Check_Count));
                      for I in Strategies loop
@@ -265,7 +260,6 @@ begin
                   Summary (I).Strat_Counts_Total (J),
                   J'Image);
             end loop;
-            Put_Percent (I, Summary (I).Ignore_Error, Summary 
(I).Ignore_Error, "Ignore_Error");
          end if;
          New_Line;
       end loop;
diff --git a/packages/wisi/run_wisi_common_parse.adb 
b/packages/wisi/run_wisi_common_parse.adb
index 517b631..c79f2e7 100644
--- a/packages/wisi/run_wisi_common_parse.adb
+++ b/packages/wisi/run_wisi_common_parse.adb
@@ -23,7 +23,6 @@ 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
@@ -134,6 +133,8 @@ package body Run_Wisi_Common_Parse is
                   Arg                      := Arg + 3;
                end case;
 
+               WisiToken.Debug_Mode := WisiToken.Trace_Parse > Outline or 
WisiToken.Trace_McKenzie > Outline;
+
             elsif Argument (Arg) = "--check_limit" then
                Parser.Table.McKenzie_Param.Check_Limit := Token_Index'Value 
(Argument (Arg + 1));
                Arg := Arg + 2;
@@ -199,7 +200,16 @@ package body Run_Wisi_Common_Parse is
 
       Start     : Ada.Real_Time.Time;
       End_Line  : WisiToken.Line_Number_Type;
+
+      function Image_Augmented (Aug : in Base_Token_Class_Access) return String
+      is begin
+         --  For Syntax_Trees.Print_Tree
+         return Wisi.Image (Aug, Descriptor);
+      end Image_Augmented;
+
    begin
+      Parser.Trace.Set_Prefix (";; "); -- so we get the same debug messages as 
Emacs_Wisi_Common_Parse
+
       declare
          Cl_Params : constant Command_Line_Params := Get_CL_Params (Parser);
       begin
@@ -286,7 +296,7 @@ package body Run_Wisi_Common_Parse is
                   null;
                end;
 
-               Parser.Execute_Actions;
+               Parser.Execute_Actions (Image_Augmented'Unrestricted_Access);
 
                case Cl_Params.Command is
                when Parse =>
@@ -310,11 +320,13 @@ package body Run_Wisi_Common_Parse is
 
             when E : WisiToken.Parse_Error =>
                Clean_Up;
-               Put_Line ("(parse_error """ & Ada.Exceptions.Exception_Message 
(E) & """)");
+               Put_Line ("(parse_error """ & Ada.Exceptions.Exception_Name (E) 
& " " &
+                           Ada.Exceptions.Exception_Message (E) & """)");
 
             when E : others => -- includes Fatal_Error
                Clean_Up;
-               Put_Line ("(error """ & Ada.Exceptions.Exception_Message (E) & 
""")");
+               Put_Line ("(error """ & Ada.Exceptions.Exception_Name (E) & " " 
&
+                           Ada.Exceptions.Exception_Message (E) & """)");
             end;
          end loop;
 
@@ -339,7 +351,6 @@ package body Run_Wisi_Common_Parse is
       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/wisi/sal-gen_bounded_definite_stacks.ads 
b/packages/wisi/sal-gen_bounded_definite_stacks.ads
index f743508..e2ba7ab 100644
--- a/packages/wisi/sal-gen_bounded_definite_stacks.ads
+++ b/packages/wisi/sal-gen_bounded_definite_stacks.ads
@@ -3,7 +3,7 @@
 --  Bounded stack implementation, with full Spark verification,
 --  optimized for speed.
 --
---  Copyright (C) 1998-2000, 2002-2003, 2009, 2015, 2017 - 2019 Free Software 
Foundation, Inc.
+--  Copyright (C) 1998-2000, 2002-2003, 2009, 2015, 2017 - 2020 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
@@ -98,6 +98,6 @@ private
       --  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;
+     Dynamic_Predicate => Stack.Top in 0 .. Stack.Size;
 
 end SAL.Gen_Bounded_Definite_Stacks;
diff --git a/packages/wisi/sal-gen_bounded_definite_vectors_sorted.adb 
b/packages/wisi/sal-gen_bounded_definite_vectors_sorted.adb
index 9979f28..8b89a7f 100644
--- a/packages/wisi/sal-gen_bounded_definite_vectors_sorted.adb
+++ b/packages/wisi/sal-gen_bounded_definite_vectors_sorted.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -54,8 +54,16 @@ package body SAL.Gen_Bounded_Definite_Vectors_Sorted is
       end if;
 
       loop
-         pragma Loop_Invariant (J < Container.Elements'Last);
+         --  These seem obvious, but gnatprove needs them (in 2019).
+         pragma Loop_Invariant (J <= Container.Last);
+         pragma Loop_Invariant (J <= Container.Elements'Last);
          pragma Loop_Variant (Decreases => J);
+
+         --  This is less obvious, helps a lot.
+         pragma Loop_Invariant
+           ((for all I in J + 1 .. Container.Last => Element_Compare
+             (New_Item, Container.Elements (I)) = Less));
+
          exit when J < 1;
 
          case Element_Compare (New_Item, Container.Elements (J)) is
@@ -74,6 +82,12 @@ package body SAL.Gen_Bounded_Definite_Vectors_Sorted is
          end case;
       end loop;
 
+      --  Note that this assertion is _not_ a Loop_Invariant; the whole
+      --  point here is to find the right J.
+      pragma Assert
+        (for all I in 1 .. J - 1 =>
+           Element_Compare (Container.Elements (I), New_Item) in Less | Equal);
+
       Container.Elements (J + 2 .. K + 1) := Container.Elements (J + 1 .. K);
       Container.Elements (J + 1) := New_Item;
       Container.Last := Container.Last + 1;
diff --git a/packages/wisi/sal-gen_bounded_definite_vectors_sorted.ads 
b/packages/wisi/sal-gen_bounded_definite_vectors_sorted.ads
index 7bc398c..e86fbca 100644
--- a/packages/wisi/sal-gen_bounded_definite_vectors_sorted.ads
+++ b/packages/wisi/sal-gen_bounded_definite_vectors_sorted.ads
@@ -2,7 +2,7 @@
 --
 --  A simple bounded sorted vector of definite items, in Spark.
 --
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -26,8 +26,10 @@ package SAL.Gen_Bounded_Definite_Vectors_Sorted
 is
    use all type Ada.Containers.Count_Type;
 
+   No_Index : constant Base_Peek_Type := 0;
+
    type Vector is private with
-     Default_Initial_Condition => Length (Vector) = 0;
+     Default_Initial_Condition => Last_Index (Vector) = No_Index;
 
    function Length (Container : in Vector) return Ada.Containers.Count_Type 
with
      Post => Length'Result in 0 .. Capacity;
@@ -36,7 +38,7 @@ is
      Post => Is_Full'Result = (Length (Container) = Capacity);
 
    procedure Clear (Container : in out Vector) with
-     Post => Length (Container) = 0;
+     Post => Last_Index (Container) = No_Index;
 
    function First_Index (Container : in Vector) return Peek_Type
      is (Peek_Type'First) with
@@ -49,37 +51,50 @@ is
      Pre => Index in First_Index (Container) .. Last_Index (Container);
 
    function Is_Sorted (Container : in Vector) return Boolean is
+     --  See comment on similar Is_Sorted below
      (for all I in First_Index (Container) .. Last_Index (Container) - 1 =>
-        Element_Compare (Element (Container, I), Element (Container, I + 1)) 
in Less | Equal);
+        (for all J in I + 1 .. Last_Index (Container) =>
+           Element_Compare (Element (Container, I), Element (Container, J)) 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,
+     Pre  => Last_Index (Container) < Peek_Type (Capacity),
      Post => Is_Sorted (Container) and
-             (Length (Container) = Length (Container'Old) or
-              Length (Container) = Length (Container'Old) + 1);
+             (if Ignore_If_Equal then
+                (Last_Index (Container) = Last_Index (Container'Old) or
+                 Last_Index (Container) = Last_Index (Container'Old) + 1)
+              else
+                Last_Index (Container) = Last_Index (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;
+   function Is_Sorted (Container : in Array_Type; Last : in Base_Peek_Type) 
return Boolean
+     --  This is too hard for gnatprove (in 2019):
+     --  is (for all I in Container'First .. Last - 1 =>
+     --        Element_Compare (Container (I), Container (I + 1)) in Less | 
Equal)
+     --  This works:
+     is (for all I in Container'First .. Last - 1 =>
+           (for all J in I + 1 .. Last =>
+              Element_Compare (Container (I), Container (J)) in Less | Equal))
+     with Pre => Last <= Container'Last;
+
+   subtype Index_Type is Base_Peek_Type range No_Index .. Base_Peek_Type 
(Capacity);
+   --  Helps with proofs
 
    type Vector is record
       Elements : Array_Type;
-      Last     : Base_Peek_Type := No_Index;
+      Last     : Index_Type := No_Index;
    end record with
-     Type_Invariant => Last <= Elements'Last and Is_Sorted (Vector);
+     Type_Invariant => Last <= Elements'Last and Is_Sorted (Vector.Elements, 
Vector.Last);
    pragma Annotate (GNATprove, Intentional, "type ""Vector"" is not fully 
initialized",
-                    "Only items in Elements with index < Last are accessed");
+                    "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 f0c5776..d86441a 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 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2017 - 2020 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
@@ -141,18 +141,18 @@ package body SAL.Gen_Definite_Doubly_Linked_Lists is
    function First (Container : in List) return Cursor
    is begin
       if Container.Head = null then
-         return No_Element;
+         return (Ptr => null);
       else
-         return (Container'Unrestricted_Access, Container.Head);
+         return (Ptr => Container.Head);
       end if;
    end First;
 
    function Last (Container : in List) return Cursor
    is begin
       if Container.Tail = null then
-         return No_Element;
+         return (Ptr => null);
       else
-         return (Container'Unrestricted_Access, Container.Tail);
+         return (Ptr => Container.Tail);
       end if;
    end Last;
 
@@ -160,7 +160,7 @@ package body SAL.Gen_Definite_Doubly_Linked_Lists is
    is begin
       if Position.Ptr /= null then
          if Position.Ptr.Next = null then
-            Position := No_Element;
+            Position.Ptr := null;
          else
             Position.Ptr := Position.Ptr.Next;
          end if;
@@ -173,9 +173,9 @@ package body SAL.Gen_Definite_Doubly_Linked_Lists is
          return Position;
       else
          if Position.Ptr.Next = null then
-            return No_Element;
+            return (Ptr => null);
          else
-            return (Position.Container, Position.Ptr.Next);
+            return (Ptr => Position.Ptr.Next);
          end if;
       end if;
    end Next;
@@ -186,9 +186,9 @@ package body SAL.Gen_Definite_Doubly_Linked_Lists is
          return Position;
       else
          if Position.Ptr.Prev = null then
-            return No_Element;
+            return (Ptr => null);
          else
-            return (Position.Container, Position.Ptr.Prev);
+            return (Ptr => Position.Ptr.Prev);
          end if;
       end if;
    end Previous;
@@ -203,7 +203,7 @@ package body SAL.Gen_Definite_Doubly_Linked_Lists is
       use all type Ada.Containers.Count_Type;
    begin
       Delete_Node (Container, Position.Ptr);
-      Position        := No_Element;
+      Position        := (Ptr => null);
       Container.Count := Container.Count - 1;
    end Delete;
 
@@ -223,7 +223,7 @@ package body SAL.Gen_Definite_Doubly_Linked_Lists is
    is
       use all type Ada.Containers.Count_Type;
    begin
-      if Before = No_Element then
+      if Before = (Ptr => null) then
          Container.Append (Element);
       else
          if Before.Ptr = Container.Head then
@@ -287,7 +287,7 @@ package body SAL.Gen_Definite_Doubly_Linked_Lists is
 
    function Iterate (Container : aliased in List) return 
Iterator_Interfaces.Reversible_Iterator'Class
    is begin
-      return Iterator'(Container => Container'Unrestricted_Access);
+      return Iterator'(Container => Container'Access);
    end Iterate;
 
    overriding function First (Object : Iterator) return Cursor
diff --git a/packages/wisi/sal-gen_definite_doubly_linked_lists.ads 
b/packages/wisi/sal-gen_definite_doubly_linked_lists.ads
index 9648320..8470daf 100644
--- a/packages/wisi/sal-gen_definite_doubly_linked_lists.ads
+++ b/packages/wisi/sal-gen_definite_doubly_linked_lists.ads
@@ -3,7 +3,7 @@
 --  A generic doubly linked list with definite elements, allowing
 --  permanent references to elements.
 --
---  Copyright (C) 2017 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2017 - 2020 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
@@ -64,26 +64,25 @@ package SAL.Gen_Definite_Doubly_Linked_Lists is
 
    type Cursor is private;
 
-   No_Element : constant Cursor;
-
    function Has_Element (Position : in Cursor) return Boolean;
 
+   No_Element : constant Cursor;
    function First (Container : in List) return Cursor;
    function Last (Container : in List) return Cursor;
 
    procedure Next (Position : in out Cursor)
-   with Pre => Position /= No_Element;
+   with Pre => Has_Element (Position);
 
    function Next (Position : in Cursor) return Cursor
-   with Pre => Position /= No_Element;
+   with Pre => Has_Element (Position);
    function Previous (Position : in Cursor) return Cursor
-   with Pre => Position /= No_Element;
+   with Pre => Has_Element (Position);
 
    function Element (Position : in Cursor) return Element_Type
-   with Pre => Position /= No_Element;
+   with Pre => Has_Element (Position);
 
    procedure Delete (Container : in out List; Position : in out Cursor)
-   with Pre => Position /= No_Element;
+   with Pre => Has_Element (Position);
 
    procedure Delete_First (Container : in out List);
 
@@ -94,26 +93,26 @@ package SAL.Gen_Definite_Doubly_Linked_Lists is
    --  If Before is No_Element, insert after Last.
 
    function Persistent_Ref (Position : in Cursor) return access Element_Type
-   with Pre => Position /= No_Element;
+   with Pre => Has_Element (Position);
 
    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;
+   with Inline, Pre => Has_Element (Position);
    --  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 Inline, Pre => Position /= No_Element;
+   with Inline, Pre => Has_Element (Position);
 
    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;
+   with Inline, Pre => Has_Element (Position);
 
    function Variable_Ref (Position : in Cursor) return Variable_Reference_Type
-   with Inline, Pre => Position /= No_Element;
+   with Inline, Pre => Has_Element (Position);
 
    package Iterator_Interfaces is new Ada.Iterator_Interfaces (Cursor, 
Has_Element);
 
@@ -139,8 +138,7 @@ private
    end record;
 
    type Cursor is record
-      Container : List_Access;
-      Ptr       : Node_Access;
+      Ptr : Node_Access;
    end record;
 
    type Constant_Reference_Type (Element : not null access constant 
Element_Type) is
@@ -153,14 +151,12 @@ private
       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 := (Ptr => null);
 
-   No_Element : constant Cursor := (null, null);
+   Empty_List : constant List := (Ada.Finalization.Controlled with null, null, 
0);
 
-   type Iterator is new Iterator_Interfaces.Reversible_Iterator with
-   record
-      Container : List_Access;
-   end record;
+   type Iterator (Container : not null access constant List) is new 
Iterator_Interfaces.Reversible_Iterator with
+   null record;
 
    overriding function First (Object : Iterator) return Cursor;
    overriding function Last  (Object : Iterator) return Cursor;
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 7a4bb11..702914d 100644
--- a/packages/wisi/sal-gen_definite_doubly_linked_lists_sorted.adb
+++ b/packages/wisi/sal-gen_definite_doubly_linked_lists_sorted.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2018, 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -375,25 +375,25 @@ package body SAL.Gen_Definite_Doubly_Linked_Lists_Sorted 
is
       return Position.Ptr /= null;
    end Has_Element;
 
-   function First (Container : in List) return Cursor
+   function First (Container : aliased in List) return Cursor
    is begin
       if Container.Head = null then
-         return No_Element;
+         return (Container'Access, null);
       else
-         return (Container'Unrestricted_Access, Container.Head);
+         return (Container'Access, Container.Head);
       end if;
    end First;
 
-   function Last (Container : in List) return Cursor
+   function Last (Container : aliased in List) return Cursor
    is begin
       if Container.Tail = null then
-         return No_Element;
+         return (Container'Access, null);
       else
-         return (Container'Unrestricted_Access, Container.Tail);
+         return (Container'Access, Container.Tail);
       end if;
    end Last;
 
-   function Find (Container : in List; Element : in Element_Type) return Cursor
+   function Find (Container : aliased in List; Element : in Element_Type) 
return Cursor
    is
       Node    : Node_Access;
       Compare : Compare_Result;
@@ -401,11 +401,11 @@ package body SAL.Gen_Definite_Doubly_Linked_Lists_Sorted 
is
       Find (Container, Element, Node, Compare);
 
       if Node = null then
-         return No_Element;
+         return (Container'Access, null);
       elsif Compare = Equal then
-         return (Container'Unrestricted_Access, Node);
+         return (Container'Access, Node);
       else
-         return No_Element;
+         return (Container'Access, null);
       end if;
    end Find;
 
@@ -413,7 +413,7 @@ package body SAL.Gen_Definite_Doubly_Linked_Lists_Sorted is
    is begin
       if Position.Ptr /= null then
          if Position.Ptr.Next = null then
-            Position := No_Element;
+            Position.Ptr := null;
          else
             Position.Ptr := Position.Ptr.Next;
          end if;
@@ -426,7 +426,7 @@ package body SAL.Gen_Definite_Doubly_Linked_Lists_Sorted is
          return Position;
       else
          if Position.Ptr.Next = null then
-            return No_Element;
+            return (Position.Container, null);
          else
             return (Position.Container, Position.Ptr.Next);
          end if;
@@ -439,7 +439,7 @@ package body SAL.Gen_Definite_Doubly_Linked_Lists_Sorted is
          return Position;
       else
          if Position.Ptr.Prev = null then
-            return No_Element;
+            return (Position.Container, null);
          else
             return (Position.Container, Position.Ptr.Prev);
          end if;
@@ -466,7 +466,7 @@ package body SAL.Gen_Definite_Doubly_Linked_Lists_Sorted is
          Node.Prev.Next := Node.Next;
       end if;
       Free (Node);
-      Position        := No_Element;
+      Position        := (Container'Access, null);
       Container.Count := Container.Count - 1;
    end Delete;
 
@@ -512,7 +512,7 @@ package body SAL.Gen_Definite_Doubly_Linked_Lists_Sorted is
 
    function Iterate (Container : aliased in List) return 
Iterator_Interfaces.Reversible_Iterator'Class
    is begin
-      return Iterator'(Container => Container'Unrestricted_Access);
+      return Iterator'(Container => Container'Access);
    end Iterate;
 
    overriding function First (Object : Iterator) return Cursor
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 bbac90f..91ffeda 100644
--- a/packages/wisi/sal-gen_definite_doubly_linked_lists_sorted.ads
+++ b/packages/wisi/sal-gen_definite_doubly_linked_lists_sorted.ads
@@ -2,7 +2,7 @@
 --
 --  A generic sorted doubly linked list with definite elements.
 --
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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,31 +81,31 @@ package SAL.Gen_Definite_Doubly_Linked_Lists_Sorted is
    --
    --  Added is True if any element was not already present.
 
-   type Cursor is private;
+   type Cursor (<>) is private;
 
-   No_Element : constant Cursor;
+   function No_Element (Container : aliased in List) return Cursor;
 
    function Has_Element (Position : in Cursor) return Boolean;
 
-   function First (Container : in List) return Cursor;
-   function Last (Container : in List) return Cursor;
+   function First (Container : aliased in List) return Cursor;
+   function Last (Container : aliased in List) return Cursor;
 
-   function Find (Container : in List; Element : in Element_Type) return 
Cursor;
+   function Find (Container : aliased 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;
+   with Pre => Has_Element (Position);
 
    function Next (Position : in Cursor) return Cursor
-   with Pre => Position /= No_Element;
+   with Pre => Has_Element (Position);
    function Previous (Position : in Cursor) return Cursor
-   with Pre => Position /= No_Element;
+   with Pre => Has_Element (Position);
 
    function Element (Position : in Cursor) return Element_Type
-   with Pre => Position /= No_Element;
+   with Pre => Has_Element (Position);
 
    procedure Delete (Container : in out List; Position : in out Cursor)
-   with Pre => Position /= No_Element;
+   with Pre => Has_Element (Position);
 
    function Pop (Container : in out List) return Element_Type
    with Pre => Container.Length > 0;
@@ -115,19 +115,19 @@ package SAL.Gen_Definite_Doubly_Linked_Lists_Sorted is
      Implicit_Dereference => Element;
 
    function Constant_Reference (Container : in List; Position : in Cursor) 
return Constant_Reference_Type with
-     Inline, Pre => Position /= No_Element;
+     Inline, Pre => Has_Element (Position);
 
    function Constant_Ref (Position : in Cursor) return Constant_Reference_Type 
with
-     Inline, Pre => Position /= No_Element;
+     Inline, Pre => Has_Element (Position);
 
    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;
+   with Inline, Pre => Has_Element (Position);
 
    function Variable_Ref (Position : in Cursor) return Variable_Reference_Type
-   with Inline, Pre => Position /= No_Element;
+   with Inline, Pre => Has_Element (Position);
    --  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);
@@ -153,9 +153,9 @@ private
       Count : Ada.Containers.Count_Type := 0;
    end record;
 
-   type Cursor is record
-      Container : List_Access;
-      Ptr       : Node_Access;
+   type Cursor (Container : not null access constant List) is
+   record
+      Ptr : Node_Access;
    end record;
 
    type Constant_Reference_Type (Element : not null access constant 
Element_Type) is
@@ -170,12 +170,11 @@ private
 
    Empty_List : constant List := (Ada.Finalization.Controlled with null, null, 
0);
 
-   No_Element : constant Cursor := (null, null);
+   function No_Element (Container : aliased in List) return Cursor
+     is (Container'Access, null);
 
-   type Iterator is new Iterator_Interfaces.Reversible_Iterator with
-   record
-      Container : List_Access;
-   end record;
+   type Iterator (Container : not null access constant List) is new 
Iterator_Interfaces.Reversible_Iterator with
+   null record;
 
    overriding function First (Object : Iterator) return Cursor;
    overriding function Last  (Object : Iterator) return Cursor;
diff --git a/packages/wisi/sal-gen_graphs.ads b/packages/wisi/sal-gen_graphs.ads
index 9a66f5c..03cc1c6 100644
--- a/packages/wisi/sal-gen_graphs.ads
+++ b/packages/wisi/sal-gen_graphs.ads
@@ -20,7 +20,7 @@
 --  Tarjan, SIAM J. Comput. Vol. 1, No 2, June 1972.
 --  https://epubs.siam.org/doi/abs/10.1137/0201010
 --
---  Copyright (C) 2017, 2019 Free Software Foundation All Rights Reserved.
+--  Copyright (C) 2017, 2019, 2020 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
@@ -131,7 +131,7 @@ package SAL.Gen_Graphs is
    --  multigraphs.
    --
    --  Time complexity is exponential in the number of nodes. Used in
-   --  unit tests for Find_Cycles_Johnson, since [2] is easier to
+   --  unit tests for Find_Cycles, since [2] is easier to
    --  implement.
 
    function Find_Cycles (Graph : in Gen_Graphs.Graph) return 
Path_Arrays.Vector;
diff --git a/packages/wisi/sal-gen_indefinite_doubly_linked_lists.adb 
b/packages/wisi/sal-gen_indefinite_doubly_linked_lists.adb
index ced09c2..71d3f61 100644
--- a/packages/wisi/sal-gen_indefinite_doubly_linked_lists.adb
+++ b/packages/wisi/sal-gen_indefinite_doubly_linked_lists.adb
@@ -2,7 +2,7 @@
 --
 --  see spec
 --
---  Copyright (C) 2018, 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -118,9 +118,9 @@ package body SAL.Gen_Indefinite_Doubly_Linked_Lists is
    function First (Container : in List) return Cursor
    is begin
       if Container.Head = null then
-         return No_Element;
+         return (Ptr => null);
       else
-         return (Container'Unrestricted_Access, Container.Head);
+         return (Ptr => Container.Head);
       end if;
    end First;
 
@@ -128,7 +128,7 @@ package body SAL.Gen_Indefinite_Doubly_Linked_Lists is
    is begin
       if Position.Ptr /= null then
          if Position.Ptr.Next = null then
-            Position := No_Element;
+            Position.Ptr := null;
          else
             Position.Ptr := Position.Ptr.Next;
          end if;
@@ -141,9 +141,9 @@ package body SAL.Gen_Indefinite_Doubly_Linked_Lists is
          return Position;
       else
          if Position.Ptr.Next = null then
-            return No_Element;
+            return (Ptr => null);
          else
-            return (Position.Container, Position.Ptr.Next);
+            return (Ptr => Position.Ptr.Next);
          end if;
       end if;
    end Next;
@@ -169,7 +169,7 @@ package body SAL.Gen_Indefinite_Doubly_Linked_Lists is
       end if;
       Free (Node.Element);
       Free (Node);
-      Position        := No_Element;
+      Position        := (Ptr => null);
       Container.Count := Container.Count - 1;
    end Delete;
 
diff --git a/packages/wisi/sal-gen_indefinite_doubly_linked_lists.ads 
b/packages/wisi/sal-gen_indefinite_doubly_linked_lists.ads
index 609e26c..b1d1cdb 100644
--- a/packages/wisi/sal-gen_indefinite_doubly_linked_lists.ads
+++ b/packages/wisi/sal-gen_indefinite_doubly_linked_lists.ads
@@ -3,7 +3,7 @@
 --  A generic doubly linked list with indefinite elements, allowing
 --  permanent references to elements.
 --
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -108,8 +108,7 @@ private
    end record;
 
    type Cursor is record
-      Container : access List;
-      Ptr       : Node_Access;
+      Ptr : Node_Access;
    end record;
 
    type Constant_Reference_Type (Element : not null access constant 
Element_Type) is
@@ -124,6 +123,6 @@ private
 
    Empty_List : constant List := (Ada.Finalization.Controlled with null, null, 
0);
 
-   No_Element : constant Cursor := (null, null);
+   No_Element : constant Cursor := (Ptr => null);
 
 end SAL.Gen_Indefinite_Doubly_Linked_Lists;
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 adea0d4..b7c8c44 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 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2017 - 2020 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
@@ -318,7 +318,12 @@ package body SAL.Gen_Unbounded_Definite_Red_Black_Trees is
       if Node = null then
          raise Not_Found;
       else
-         return (Element => Node.all.Element'Access, Dummy => 1);
+         --  WORKAROUND: GNAT Community 2019 requires .all here, GNAT Pro 21.0w
+         --  20200426 requires it _not_ be here. The code is technically legal
+         --  either way, so both compilers have a bug. Keeping .all for now;
+         --  just delete it if you are using 21.0w. Hopefully 21 will fix the
+         --  bug. AdaCore ticket T503-001 on Eurocontrol support contract.
+         return (Element => Node.Element'Access, Dummy => 1);
       end if;
    end Constant_Reference;
 
@@ -329,6 +334,7 @@ package body SAL.Gen_Unbounded_Definite_Red_Black_Trees is
    is
       pragma Unreferenced (Container);
    begin
+      --  WORKAROUND: see note in Constant_Reference
       return (Element => Position.Node.all.Element'Access, Dummy => 1);
    end Variable_Reference;
 
@@ -342,7 +348,8 @@ package body SAL.Gen_Unbounded_Definite_Red_Black_Trees is
       if Node = null then
          raise Not_Found;
       else
-         return (Element => Node.all.Element'Access, Dummy => 1);
+         --  WORKAROUND: see note in Constant_Reference
+         return (Element => Node.Element'Access, Dummy => 1);
       end if;
    end Variable_Reference;
 
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 b51e4b9..f886ed9 100644
--- a/packages/wisi/sal-gen_unbounded_definite_red_black_trees.ads
+++ b/packages/wisi/sal-gen_unbounded_definite_red_black_trees.ads
@@ -8,7 +8,7 @@
 --  [1] Introduction to Algorithms, Thomas H. Cormen, Charles E.
 --  Leiserson, Ronald L. Rivest, Clifford Stein.
 --
---  Copyright (C) 2017 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2017 - 2020 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
@@ -65,13 +65,14 @@ package SAL.Gen_Unbounded_Definite_Red_Black_Trees is
      (Container : aliased in Tree;
       Position  :         in Cursor)
      return Constant_Reference_Type with
-     Inline;
+     Inline, Pre => Has_Element (Position);
 
    function Constant_Reference
      (Container : aliased in Tree;
       Key       :         in Key_Type)
      return Constant_Reference_Type with
      Inline;
+   --  Raises Not_Found if Key not found in Container.
 
    type Variable_Reference_Type (Element : not null access Element_Type) is 
private with
      Implicit_Dereference => Element;
@@ -80,7 +81,7 @@ package SAL.Gen_Unbounded_Definite_Red_Black_Trees is
      (Container : aliased in Tree;
       Position  :         in Cursor)
      return Variable_Reference_Type with
-     Inline;
+     Inline, Pre => Has_Element (Position);
 
    function Variable_Reference
      (Container : aliased in Tree;
diff --git a/packages/wisi/sal-gen_unbounded_definite_stacks.adb 
b/packages/wisi/sal-gen_unbounded_definite_stacks.adb
index 2ead18f..072c104 100644
--- a/packages/wisi/sal-gen_unbounded_definite_stacks.adb
+++ b/packages/wisi/sal-gen_unbounded_definite_stacks.adb
@@ -2,7 +2,7 @@
 --
 --  see spec
 --
---  Copyright (C) 1998, 2003, 2009, 2015, 2017 - 2019 Free Software 
Foundation, Inc.
+--  Copyright (C) 1998, 2003, 2009, 2015, 2017 - 2020 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
@@ -190,9 +190,18 @@ package body SAL.Gen_Unbounded_Definite_Stacks is
       return Position.Container.Depth >= Position.Ptr;
    end Has_Element;
 
+   type Iterator (Container : not null access constant Stack) is new 
Iterator_Interfaces.Forward_Iterator with
+   null record;
+
+   overriding function First (Object : Iterator) return Cursor;
+
+   overriding function Next
+     (Object   : Iterator;
+      Position : Cursor) return Cursor;
+
    function Iterate (Container : aliased in Stack) return 
Iterator_Interfaces.Forward_Iterator'Class
    is begin
-      return Iterator'(Container => Container'Unrestricted_Access);
+      return Iterator'(Container => Container'Access);
    end Iterate;
 
    overriding function First (Object : Iterator) return Cursor
diff --git a/packages/wisi/sal-gen_unbounded_definite_stacks.ads 
b/packages/wisi/sal-gen_unbounded_definite_stacks.ads
index 26d0466..3d1e1e7 100644
--- a/packages/wisi/sal-gen_unbounded_definite_stacks.ads
+++ b/packages/wisi/sal-gen_unbounded_definite_stacks.ads
@@ -2,7 +2,7 @@
 --
 --  Stack implementation.
 --
---  Copyright (C) 1998-2000, 2002-2003, 2009, 2015, 2017 - 2019 Free Software 
Foundation, Inc.
+--  Copyright (C) 1998-2000, 2002-2003, 2009, 2015, 2017 - 2020 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
@@ -112,14 +112,16 @@ package SAL.Gen_Unbounded_Definite_Stacks is
    function Constant_Reference
      (Container : aliased in Stack'Class;
       Position  :         in Peek_Type)
-     return Constant_Reference_Type with Inline;
+     return Constant_Reference_Type
+   with Inline, Pre => Position in 1 .. Container.Depth;
 
-   type Cursor is private;
+   type Cursor (<>) is private;
 
    function Constant_Reference
      (Container : aliased in Stack'Class;
       Position  :         in Cursor)
-     return Constant_Reference_Type with Inline;
+     return Constant_Reference_Type
+   with Inline, Pre => Has_Element (Position);
 
    function Has_Element (Position : in Cursor) return Boolean;
 
@@ -141,8 +143,6 @@ private
       --  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";
@@ -150,20 +150,9 @@ private
 
    Empty_Stack : constant Stack := (Ada.Finalization.Controlled with 
Invalid_Peek_Index, null);
 
-   type Cursor is record
-      Container : Stack_Access;
-      Ptr       : Peek_Type;
-   end record;
-
-   type Iterator is new Iterator_Interfaces.Forward_Iterator with
+   type Cursor (Container : not null access constant Stack) is
    record
-      Container : Stack_Access;
+      Ptr : Peek_Type;
    end record;
 
-   overriding function First (Object : Iterator) return Cursor;
-
-   overriding function Next
-     (Object   : Iterator;
-      Position : Cursor) return Cursor;
-
 end SAL.Gen_Unbounded_Definite_Stacks;
diff --git a/packages/wisi/sal-gen_unbounded_definite_vectors.adb 
b/packages/wisi/sal-gen_unbounded_definite_vectors.adb
index be77f9c..faf1b45 100644
--- a/packages/wisi/sal-gen_unbounded_definite_vectors.adb
+++ b/packages/wisi/sal-gen_unbounded_definite_vectors.adb
@@ -1,588 +1,581 @@
---  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_Unbounded_Definite_Vectors is
-
-   function To_Peek_Type (Item : in Extended_Index) return Base_Peek_Type
-   is begin
-      return Base_Peek_Type'Base (Item - Index_Type'First) + Peek_Type'First;
-   end To_Peek_Type;
-
-   function To_Index_Type (Item : in Base_Peek_Type) return Extended_Index
-   is begin
-      return Extended_Index (Item - Peek_Type'First) + Index_Type'First;
-   end To_Index_Type;
-
-   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;
-
-   ----------
-   --  public subprograms
-
-   overriding procedure Finalize (Container : in out Vector)
-   is begin
-      Free (Container.Elements);
-      Container.First := No_Index;
-      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 (To_Peek_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;
-      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));
-   end Element;
-
-   procedure Replace_Element (Container : Vector; Index : Index_Type; New_Item 
: in Element_Type)
-   is begin
-      Container.Elements (To_Peek_Type (Index)) := New_Item;
-   end Replace_Element;
-
-   function First_Index (Container : Vector) return Extended_Index
-   is begin
-      if Container.First = No_Index then
-         return No_Index + 1;
-      else
-         return Container.First;
-      end if;
-   end First_Index;
-
-   function Last_Index (Container : Vector) return Extended_Index
-   is begin
-      return Container.Last;
-   end Last_Index;
-
-   procedure Append (Container : in out Vector; New_Item : in Element_Type)
-   is begin
-      if Container.First = No_Index then
-         Container.First := Index_Type'First;
-         Container.Last  := Index_Type'First;
-      else
-         Container.Last := Container.Last + 1;
-      end if;
-
-      declare
-         J : constant Base_Peek_Type := To_Peek_Type (Container.Last);
-      begin
-         if Container.Elements = null then
-            Container.Elements := new Array_Type (J .. J);
-
-         elsif J > Container.Elements'Last then
-            Grow (Container.Elements, J);
-         end if;
-
-         Container.Elements (J) := New_Item;
-      end;
-   end Append;
-
-   procedure Append (Container : in out Vector; New_Items : in Vector)
-   is
-      use all type Ada.Containers.Count_Type;
-      Old_Last : Extended_Index := Container.Last;
-   begin
-      if New_Items.Length = 0 then
-         return;
-      end if;
-
-      if Container.First = No_Index then
-         Container.First := Index_Type'First;
-         Old_Last        := Container.First - 1;
-         Container.Last  := Container.First + Extended_Index 
(New_Items.Length) - 1;
-      else
-         Container.Last := Container.Last + Extended_Index (New_Items.Length);
-      end if;
-
-      declare
-         I : constant Peek_Type := To_Peek_Type (Old_Last + 1);
-         J : constant Peek_Type := To_Peek_Type (Container.Last);
-      begin
-         if Container.Elements = null then
-            Container.Elements := new Array_Type (I .. J);
-         elsif J > Container.Elements'Last then
-            Grow (Container.Elements, J);
-         end if;
-
-         Container.Elements (I .. J) := New_Items.Elements
-           (To_Peek_Type (New_Items.First) .. To_Peek_Type (New_Items.Last));
-      end;
-   end Append;
-
-   procedure Prepend (Container : in out Vector; New_Item : in Element_Type)
-   is begin
-      if Container.First = No_Index then
-         Container.First := Index_Type'First;
-         Container.Last  := Index_Type'First;
-      else
-         Container.First := Container.First - 1;
-      end if;
-
-      declare
-         J : constant Peek_Type := To_Peek_Type (Container.First);
-      begin
-         if Container.Elements = null then
-            Container.Elements := new Array_Type (J .. J);
-
-         elsif J < Container.Elements'First then
-            Grow (Container.Elements, J);
-         end if;
-
-         Container.Elements (J) := New_Item;
-      end;
-   end Prepend;
-
-   procedure Prepend
-     (Target       : in out Vector;
-      Source       : in     Vector;
-      Source_First : in     Index_Type;
-      Source_Last  : in     Index_Type)
-   is
-      Source_I : constant Peek_Type := To_Peek_Type (Source_First);
-      Source_J : constant Peek_Type := To_Peek_Type (Source_Last);
-   begin
-      if Target.Elements = null then
-         Target.Elements := new Array_Type'(Source.Elements (Source_I .. 
Source_J));
-         Target.First    := Source_First;
-         Target.Last     := Source_Last;
-      else
-         declare
-            New_First : constant Index_Type := Target.First - (Source_Last - 
Source_First + 1);
-            I         : constant Peek_Type  := To_Peek_Type (New_First);
-            J         : constant Peek_Type  := To_Peek_Type (Target.First - 1);
-         begin
-            if Target.Elements'First > I then
-               Grow (Target.Elements, I);
-            end if;
-            Target.Elements (I .. J) := Source.Elements (Source_I .. Source_J);
-            Target.First := New_First;
-         end;
-      end if;
-   end Prepend;
-
-   procedure Insert
-     (Container : in out Vector;
-      Element   : in     Element_Type;
-      Before    : in     Index_Type)
-   is
-      use all type Ada.Containers.Count_Type;
-   begin
-      if Container.Length = 0 then
-         Container.Append (Element);
-      else
-         Container.Last := Container.Last + 1;
-
-         declare
-            J : constant Peek_Type := To_Peek_Type (Before);
-            K : constant Base_Peek_Type := To_Peek_Type (Container.Last);
-         begin
-            if K > Container.Elements'Last then
-               Grow (Container.Elements, K);
-            end if;
-
-            Container.Elements (J + 1 .. K) := Container.Elements (J .. K - 1);
-            Container.Elements (J) := Element;
-         end;
-      end if;
-   end Insert;
-
-   procedure Merge
-     (Target : in out Vector;
-      Source : in out Vector)
-   is
-      use all type Ada.Containers.Count_Type;
-   begin
-      if Source.Length = 0 then
-         Source.Clear;
-
-      elsif Target.Length = 0 then
-         Target := Source;
-         Source.Clear;
-
-      else
-         declare
-            New_First : constant Index_Type := Extended_Index'Min 
(Target.First, Source.First);
-            New_Last  : constant Index_Type := Extended_Index'Max 
(Target.Last, Source.Last);
-            New_I     : constant Peek_Type  := To_Peek_Type (New_First);
-            New_J     : constant Base_Peek_Type  := To_Peek_Type (New_Last);
-         begin
-            if New_I < Target.Elements'First then
-               Grow (Target.Elements, New_I);
-            end if;
-            if New_J > Target.Elements'Last then
-               Grow (Target.Elements, New_J);
-            end if;
-
-            Target.Elements (To_Peek_Type (Source.First) .. To_Peek_Type 
(Source.Last)) := Source.Elements
-              (To_Peek_Type (Source.First) .. To_Peek_Type (Source.Last));
-
-            Target.First := New_First;
-            Target.Last  := New_Last;
-
-            Source.Clear;
-         end;
-      end if;
-   end Merge;
-
-   function To_Vector (Item : in Element_Type; Count : in 
Ada.Containers.Count_Type := 1) return Vector
-   is begin
-      return Result : Vector do
-         for I in 1 .. Count loop
-            Result.Append (Item);
-         end loop;
-      end return;
-   end To_Vector;
-
-   function "+" (Element : in Element_Type) return Vector
-   is begin
-      return Result : Vector do
-         Result.Append (Element);
-      end return;
-   end "+";
-
-   function "&" (Left, Right : in Element_Type) return Vector
-   is begin
-      return Result : Vector do
-         Result.Append (Left);
-         Result.Append (Right);
-      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 Set_First (Container : in out Vector; First : in Index_Type)
-   is
-      J : constant Peek_Type := To_Peek_Type (First);
-   begin
-      Container.First := First;
-      if Container.Last = No_Index then
-         Container.Last := First - 1;
-      end if;
-
-      if Container.Last >= First then
-         if Container.Elements = null then
-            Container.Elements := new Array_Type'(J .. To_Peek_Type 
(Container.Last) => Default_Element);
-
-         elsif Container.Elements'First > J then
-            Grow (Container.Elements, J);
-         end if;
-      end if;
-   end Set_First;
-
-   procedure Set_Last (Container : in out Vector; Last : in Extended_Index)
-   is
-      J : constant Base_Peek_Type := To_Peek_Type (Last);
-   begin
-      Container.Last := Last;
-      if Container.First = No_Index then
-         Container.First := Last + 1;
-      end if;
-
-      if Last >= Container.First then
-         if Container.Elements = null then
-            Container.Elements := new Array_Type'(To_Peek_Type 
(Container.First) .. J => Default_Element);
-
-         elsif Container.Elements'Last < J then
-            Grow (Container.Elements, J);
-         end if;
-      end if;
-   end Set_Last;
-
-   procedure Set_First_Last
-     (Container : in out Vector;
-      First     : in     Index_Type;
-      Last      : in     Extended_Index)
-   is begin
-      Set_First (Container, First);
-      Set_Last (Container, Last);
-   end Set_First_Last;
-
-   procedure Delete (Container : in out Vector; Index : in Index_Type)
-   is
-      J : constant Peek_Type := To_Peek_Type (Index);
-   begin
-      Container.Elements (J .. J) := (J => <>);
-      if Index = Container.Last then
-         Container.Last := Container.Last - 1;
-      end if;
-   end Delete;
-
-   function Contains (Container : in Vector; Element : in Element_Type) return 
Boolean
-   is
-      use all type Ada.Containers.Count_Type;
-   begin
-      if Container.Length = 0 then
-         return False;
-      else
-         for It of Container.Elements.all loop
-            if It = Element then
-               return True;
-            end if;
-         end loop;
-         return False;
-      end if;
-   end Contains;
-
-   function Has_Element (Position : Cursor) return Boolean is
-   begin
-      return Position.Index /= Invalid_Peek_Index;
-   end Has_Element;
-
-   function Element (Position : Cursor) return Element_Type
-   is begin
-      return Position.Container.Elements (Position.Index);
-   end Element;
-
-   function First (Container : aliased in Vector) return Cursor
-   is begin
-      if Container.First = No_Index then
-         return No_Element;
-      else
-         return (Container'Access, To_Peek_Type (Container.First));
-      end if;
-   end First;
-
-   function Next (Position : in Cursor) return Cursor
-   is begin
-      if Position = No_Element then
-         return No_Element;
-      elsif Position.Index < To_Peek_Type (Position.Container.Last) then
-         return (Position.Container, Position.Index + 1);
-      else
-         return No_Element;
-      end if;
-   end Next;
-
-   procedure Next (Position : in out Cursor)
-   is begin
-      if Position = No_Element then
-         null;
-      elsif Position.Index < To_Peek_Type (Position.Container.Last) then
-         Position.Index := Position.Index + 1;
-      else
-         Position := No_Element;
-      end if;
-   end Next;
-
-   function Prev (Position : in Cursor) return Cursor
-   is begin
-      if Position = No_Element then
-         return No_Element;
-      elsif Position.Index > To_Peek_Type (Position.Container.First) then
-         return (Position.Container, Position.Index - 1);
-      else
-         return No_Element;
-      end if;
-   end Prev;
-
-   procedure Prev (Position : in out Cursor)
-   is begin
-      if Position = No_Element then
-         null;
-      elsif Position.Index > To_Peek_Type (Position.Container.First) then
-         Position.Index := Position.Index - 1;
-      else
-         Position := No_Element;
-      end if;
-   end Prev;
-
-   function To_Cursor
-     (Container : aliased in Vector;
-      Index     :         in Extended_Index)
-     return Cursor
-   is begin
-      if Index not in Container.First .. Container.Last then
-         return No_Element;
-      else
-         return (Container'Access, To_Peek_Type (Index));
-      end if;
-   end To_Cursor;
-
-   function To_Index (Position : in Cursor) return Extended_Index
-   is begin
-      if Position = No_Element then
-         return No_Index;
-      else
-         return To_Index_Type (Position.Index);
-      end if;
-   end To_Index;
-
-   function Constant_Ref (Container : aliased Vector; Index : in Index_Type) 
return Constant_Reference_Type
-   is
-      J : constant Peek_Type := To_Peek_Type (Index);
-   begin
-      return (Element => Container.Elements (J)'Access, Dummy => 1);
-   end Constant_Ref;
-
-   function Variable_Ref
-     (Container : aliased in Vector;
-      Index     :         in Index_Type)
-     return Variable_Reference_Type
-   is
-      J : constant Peek_Type := To_Peek_Type (Index);
-   begin
-      return (Element => Container.Elements (J)'Access, Dummy => 1);
-   end Variable_Ref;
-
-   overriding function First (Object : Iterator) return Cursor
-   is begin
-      if Object.Container.Elements = null then
-         return (null, Invalid_Peek_Index);
-      else
-         return (Object.Container, To_Peek_Type (Object.Container.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, To_Peek_Type (Object.Container.Last));
-      end if;
-   end Last;
-
-   overriding function Next (Object : in Iterator; Position : in Cursor) 
return Cursor
-   is begin
-      if Position.Index = To_Peek_Type (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 = To_Peek_Type (Index_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 Variable_Ref
-     (Container : aliased in Vector;
-      Position  :         in Cursor)
-     return Variable_Reference_Type
-   is begin
-      return (Element => Container.Elements (Position.Index)'Access, Dummy => 
1);
-   end Variable_Ref;
-
-end SAL.Gen_Unbounded_Definite_Vectors;
+--  Abstract :
+--
+--  See spec.
+--
+--  Copyright (C) 2018 - 2020 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 is
+
+   function To_Peek_Type (Item : in Extended_Index) return Base_Peek_Type
+   is begin
+      return Base_Peek_Type'Base (Item - Index_Type'First) + Peek_Type'First;
+   end To_Peek_Type;
+
+   function To_Index_Type (Item : in Base_Peek_Type) return Extended_Index
+   is begin
+      return Extended_Index (Item - Peek_Type'First) + Index_Type'First;
+   end To_Index_Type;
+
+   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;
+
+   ----------
+   --  public subprograms
+
+   overriding procedure Finalize (Container : in out Vector)
+   is begin
+      Free (Container.Elements);
+      Container.First := No_Index;
+      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 (To_Peek_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;
+      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));
+   end Element;
+
+   procedure Replace_Element (Container : Vector; Index : Index_Type; New_Item 
: in Element_Type)
+   is begin
+      Container.Elements (To_Peek_Type (Index)) := New_Item;
+   end Replace_Element;
+
+   function First_Index (Container : Vector) return Extended_Index
+   is begin
+      if Container.First = No_Index then
+         return No_Index + 1;
+      else
+         return Container.First;
+      end if;
+   end First_Index;
+
+   function Last_Index (Container : Vector) return Extended_Index
+   is begin
+      return Container.Last;
+   end Last_Index;
+
+   procedure Append (Container : in out Vector; New_Item : in Element_Type)
+   is begin
+      if Container.First = No_Index then
+         Container.First := Index_Type'First;
+         Container.Last  := Index_Type'First;
+      else
+         Container.Last := Container.Last + 1;
+      end if;
+
+      declare
+         J : constant Base_Peek_Type := To_Peek_Type (Container.Last);
+      begin
+         if Container.Elements = null then
+            Container.Elements := new Array_Type (J .. J);
+
+         elsif J > Container.Elements'Last then
+            Grow (Container.Elements, J);
+         end if;
+
+         Container.Elements (J) := New_Item;
+      end;
+   end Append;
+
+   procedure Append (Container : in out Vector; New_Items : in Vector)
+   is
+      use all type Ada.Containers.Count_Type;
+      Old_Last : Extended_Index := Container.Last;
+   begin
+      if New_Items.Length = 0 then
+         return;
+      end if;
+
+      if Container.First = No_Index then
+         Container.First := Index_Type'First;
+         Old_Last        := Container.First - 1;
+         Container.Last  := Container.First + Extended_Index 
(New_Items.Length) - 1;
+      else
+         Container.Last := Container.Last + Extended_Index (New_Items.Length);
+      end if;
+
+      declare
+         I : constant Peek_Type := To_Peek_Type (Old_Last + 1);
+         J : constant Peek_Type := To_Peek_Type (Container.Last);
+      begin
+         if Container.Elements = null then
+            Container.Elements := new Array_Type (I .. J);
+         elsif J > Container.Elements'Last then
+            Grow (Container.Elements, J);
+         end if;
+
+         Container.Elements (I .. J) := New_Items.Elements
+           (To_Peek_Type (New_Items.First) .. To_Peek_Type (New_Items.Last));
+      end;
+   end Append;
+
+   procedure Prepend (Container : in out Vector; New_Item : in Element_Type)
+   is begin
+      if Container.First = No_Index then
+         Container.First := Index_Type'First;
+         Container.Last  := Index_Type'First;
+      else
+         Container.First := Container.First - 1;
+      end if;
+
+      declare
+         J : constant Peek_Type := To_Peek_Type (Container.First);
+      begin
+         if Container.Elements = null then
+            Container.Elements := new Array_Type (J .. J);
+
+         elsif J < Container.Elements'First then
+            Grow (Container.Elements, J);
+         end if;
+
+         Container.Elements (J) := New_Item;
+      end;
+   end Prepend;
+
+   procedure Prepend
+     (Target       : in out Vector;
+      Source       : in     Vector;
+      Source_First : in     Index_Type;
+      Source_Last  : in     Index_Type)
+   is
+      Source_I : constant Peek_Type := To_Peek_Type (Source_First);
+      Source_J : constant Peek_Type := To_Peek_Type (Source_Last);
+   begin
+      if Target.Elements = null then
+         Target.Elements := new Array_Type'(Source.Elements (Source_I .. 
Source_J));
+         Target.First    := Source_First;
+         Target.Last     := Source_Last;
+      else
+         declare
+            New_First : constant Index_Type := Target.First - (Source_Last - 
Source_First + 1);
+            I         : constant Peek_Type  := To_Peek_Type (New_First);
+            J         : constant Peek_Type  := To_Peek_Type (Target.First - 1);
+         begin
+            if Target.Elements'First > I then
+               Grow (Target.Elements, I);
+            end if;
+            Target.Elements (I .. J) := Source.Elements (Source_I .. Source_J);
+            Target.First := New_First;
+         end;
+      end if;
+   end Prepend;
+
+   procedure Insert
+     (Container : in out Vector;
+      Element   : in     Element_Type;
+      Before    : in     Index_Type)
+   is
+      use all type Ada.Containers.Count_Type;
+   begin
+      if Container.Length = 0 then
+         Container.Append (Element);
+      else
+         Container.Last := Container.Last + 1;
+
+         declare
+            J : constant Peek_Type := To_Peek_Type (Before);
+            K : constant Base_Peek_Type := To_Peek_Type (Container.Last);
+         begin
+            if K > Container.Elements'Last then
+               Grow (Container.Elements, K);
+            end if;
+
+            Container.Elements (J + 1 .. K) := Container.Elements (J .. K - 1);
+            Container.Elements (J) := Element;
+         end;
+      end if;
+   end Insert;
+
+   procedure Merge
+     (Target : in out Vector;
+      Source : in out Vector)
+   is
+      use all type Ada.Containers.Count_Type;
+   begin
+      if Source.Length = 0 then
+         Source.Clear;
+
+      elsif Target.Length = 0 then
+         Target := Source;
+         Source.Clear;
+
+      else
+         declare
+            New_First : constant Index_Type := Extended_Index'Min 
(Target.First, Source.First);
+            New_Last  : constant Index_Type := Extended_Index'Max 
(Target.Last, Source.Last);
+            New_I     : constant Peek_Type  := To_Peek_Type (New_First);
+            New_J     : constant Base_Peek_Type  := To_Peek_Type (New_Last);
+         begin
+            if New_I < Target.Elements'First then
+               Grow (Target.Elements, New_I);
+            end if;
+            if New_J > Target.Elements'Last then
+               Grow (Target.Elements, New_J);
+            end if;
+
+            Target.Elements (To_Peek_Type (Source.First) .. To_Peek_Type 
(Source.Last)) := Source.Elements
+              (To_Peek_Type (Source.First) .. To_Peek_Type (Source.Last));
+
+            Target.First := New_First;
+            Target.Last  := New_Last;
+
+            Source.Clear;
+         end;
+      end if;
+   end Merge;
+
+   function To_Vector (Item : in Element_Type; Count : in 
Ada.Containers.Count_Type := 1) return Vector
+   is begin
+      return Result : Vector do
+         for I in 1 .. Count loop
+            Result.Append (Item);
+         end loop;
+      end return;
+   end To_Vector;
+
+   function "+" (Element : in Element_Type) return Vector
+   is begin
+      return Result : Vector do
+         Result.Append (Element);
+      end return;
+   end "+";
+
+   function "&" (Left, Right : in Element_Type) return Vector
+   is begin
+      return Result : Vector do
+         Result.Append (Left);
+         Result.Append (Right);
+      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 Set_First (Container : in out Vector; First : in Index_Type)
+   is
+      J : constant Peek_Type := To_Peek_Type (First);
+   begin
+      Container.First := First;
+      if Container.Last = No_Index then
+         Container.Last := First - 1;
+      end if;
+
+      if Container.Last >= First then
+         if Container.Elements = null then
+            Container.Elements := new Array_Type'(J .. To_Peek_Type 
(Container.Last) => Default_Element);
+
+         elsif Container.Elements'First > J then
+            Grow (Container.Elements, J);
+         end if;
+      end if;
+   end Set_First;
+
+   procedure Set_Last (Container : in out Vector; Last : in Extended_Index)
+   is
+      J : constant Base_Peek_Type := To_Peek_Type (Last);
+   begin
+      Container.Last := Last;
+      if Container.First = No_Index then
+         Container.First := Last + 1;
+      end if;
+
+      if Last >= Container.First then
+         if Container.Elements = null then
+            Container.Elements := new Array_Type'(To_Peek_Type 
(Container.First) .. J => Default_Element);
+
+         elsif Container.Elements'Last < J then
+            Grow (Container.Elements, J);
+         end if;
+      end if;
+   end Set_Last;
+
+   procedure Set_First_Last
+     (Container : in out Vector;
+      First     : in     Index_Type;
+      Last      : in     Extended_Index)
+   is begin
+      Set_First (Container, First);
+      Set_Last (Container, Last);
+   end Set_First_Last;
+
+   procedure Delete (Container : in out Vector; Index : in Index_Type)
+   is
+      J : constant Peek_Type := To_Peek_Type (Index);
+   begin
+      Container.Elements (J .. J) := (J => <>);
+      if Index = Container.Last then
+         Container.Last := Container.Last - 1;
+      end if;
+   end Delete;
+
+   function Contains (Container : in Vector; Element : in Element_Type) return 
Boolean
+   is
+      use all type Ada.Containers.Count_Type;
+   begin
+      if Container.Length = 0 then
+         return False;
+      else
+         for It of Container.Elements.all loop
+            if It = Element then
+               return True;
+            end if;
+         end loop;
+         return False;
+      end if;
+   end Contains;
+
+   function Element (Position : Cursor) return Element_Type
+   is begin
+      return Position.Container.Elements (Position.Index);
+   end Element;
+
+   function First (Container : aliased in Vector) return Cursor
+   is
+      use all type Ada.Containers.Count_Type;
+   begin
+      if Container.Length = 0 then
+         return (Container'Access, Invalid_Peek_Index);
+      else
+         return (Container'Access, To_Peek_Type (Container.First));
+      end if;
+   end First;
+
+   function Next (Position : in Cursor) return Cursor
+   is begin
+      if Position.Index = Invalid_Peek_Index then
+         return (Position.Container, Invalid_Peek_Index);
+      elsif Position.Index < To_Peek_Type (Position.Container.Last) then
+         return (Position.Container, Position.Index + 1);
+      else
+         return (Position.Container, Invalid_Peek_Index);
+      end if;
+   end Next;
+
+   procedure Next (Position : in out Cursor)
+   is begin
+      if Position.Index = Invalid_Peek_Index then
+         null;
+      elsif Position.Index < To_Peek_Type (Position.Container.Last) then
+         Position.Index := Position.Index + 1;
+      else
+         Position := (Position.Container, Invalid_Peek_Index);
+      end if;
+   end Next;
+
+   function Prev (Position : in Cursor) return Cursor
+   is begin
+      if Position.Index = Invalid_Peek_Index then
+         return (Position.Container, Invalid_Peek_Index);
+      elsif Position.Index > To_Peek_Type (Position.Container.First) then
+         return (Position.Container, Position.Index - 1);
+      else
+         return (Position.Container, Invalid_Peek_Index);
+      end if;
+   end Prev;
+
+   procedure Prev (Position : in out Cursor)
+   is begin
+      if Position.Index = Invalid_Peek_Index then
+         null;
+      elsif Position.Index > To_Peek_Type (Position.Container.First) then
+         Position.Index := Position.Index - 1;
+      else
+         Position := (Position.Container, Invalid_Peek_Index);
+      end if;
+   end Prev;
+
+   function To_Cursor
+     (Container : aliased in Vector;
+      Index     :         in Extended_Index)
+     return Cursor
+   is begin
+      return (Container'Access, To_Peek_Type (Index));
+   end To_Cursor;
+
+   function To_Index (Position : in Cursor) return Extended_Index
+   is begin
+      if Position.Index = Invalid_Peek_Index then
+         return No_Index;
+      else
+         return To_Index_Type (Position.Index);
+      end if;
+   end To_Index;
+
+   function Constant_Ref (Container : aliased Vector; Index : in Index_Type) 
return Constant_Reference_Type
+   is
+      J : constant Peek_Type := To_Peek_Type (Index);
+   begin
+      return (Element => Container.Elements (J)'Access, Dummy => 1);
+   end Constant_Ref;
+
+   function Variable_Ref
+     (Container : aliased in Vector;
+      Index     :         in Index_Type)
+     return Variable_Reference_Type
+   is
+      J : constant Peek_Type := To_Peek_Type (Index);
+   begin
+      return (Element => Container.Elements (J)'Access, Dummy => 1);
+   end Variable_Ref;
+
+   overriding function First (Object : Iterator) return Cursor
+   is begin
+      if Object.Container.Elements = null then
+         return (Object.Container, Invalid_Peek_Index);
+      else
+         return (Object.Container, To_Peek_Type (Object.Container.First));
+      end if;
+   end First;
+
+   overriding function Last  (Object : Iterator) return Cursor
+   is begin
+      if Object.Container.Elements = null then
+         return (Object.Container, Invalid_Peek_Index);
+      else
+         return (Object.Container, To_Peek_Type (Object.Container.Last));
+      end if;
+   end Last;
+
+   overriding function Next (Object : in Iterator; Position : in Cursor) 
return Cursor
+   is begin
+      if Position.Index = To_Peek_Type (Object.Container.Last) then
+         return (Object.Container, 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 = To_Peek_Type (Index_Type'First) then
+         return (Object.Container, 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'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 Variable_Ref
+     (Container : aliased in Vector;
+      Position  :         in Cursor)
+     return Variable_Reference_Type
+   is begin
+      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 76cca13..818a223 100644
--- a/packages/wisi/sal-gen_unbounded_definite_vectors.ads
+++ b/packages/wisi/sal-gen_unbounded_definite_vectors.ads
@@ -8,7 +8,13 @@
 --  It provides no checking of cursor tampering; higher level code
 --  must ensure that.
 --
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--  Design:
+--
+--  See ARM 3.10.2 "explicitly aliased" for why we need 'aliased' in
+--  several subprogram argument modes, and why Container must be an
+--  access discriminant in Cursor and Iterator.
+--
+--  Copyright (C) 2018 - 2020 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
@@ -39,10 +45,10 @@ package SAL.Gen_Unbounded_Definite_Vectors is
    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;
+     Constant_Indexing => Constant_Ref,
+     Variable_Indexing => Variable_Ref,
+     Default_Iterator  => Iterate,
+     Iterator_Element  => Element_Type;
 
    Empty_Vector : constant Vector;
 
@@ -68,6 +74,8 @@ package SAL.Gen_Unbounded_Definite_Vectors is
    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.
+   --
+   --  If you need No_Index for an empty Container, use To_Index 
(Container.First).
 
    function Last_Index (Container : Vector) return Extended_Index;
    --  No_Index when Container is empty.
@@ -145,13 +153,11 @@ package SAL.Gen_Unbounded_Definite_Vectors is
    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;
+   type Cursor (<>) is private;
 
    function Has_Element (Position : Cursor) return Boolean;
    function Element (Position : Cursor) return Element_Type
-   with Pre => Position /= No_Element;
+   with Pre => Has_Element (Position);
    function First (Container : aliased in Vector) return Cursor;
    function Next (Position : in Cursor) return Cursor;
    procedure Next (Position : in out Cursor);
@@ -161,7 +167,8 @@ package SAL.Gen_Unbounded_Definite_Vectors is
    function To_Cursor
      (Container : aliased in Vector;
       Index     :         in Extended_Index)
-     return Cursor;
+     return Cursor
+   with Pre => Index = No_Index or Index in Container.First_Index .. 
Container.Last_Index;
 
    function To_Index (Position : in Cursor) return Extended_Index;
 
@@ -195,16 +202,14 @@ private
    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
+   type Cursor (Container : not null access constant Vector) is
    record
-      Container : Vector_Access;
+      Index : Base_Peek_Type := Invalid_Peek_Index;
    end record;
 
+   type Iterator (Container : not null access constant Vector) is new 
Iterator_Interfaces.Reversible_Iterator with
+     null record;
+
    overriding function First (Object : Iterator) return Cursor;
    overriding function Last  (Object : Iterator) return Cursor;
 
@@ -228,7 +233,11 @@ private
 
    Empty_Vector : constant Vector := (Ada.Finalization.Controlled with others 
=> <>);
 
-   No_Element : constant Cursor := (others => <>);
+   ----------
+   --  Visible for contracts/SPARK
+
+   function Has_Element (Position : Cursor) return Boolean
+     is (Position.Index /= Invalid_Peek_Index);
 
    ----------
    --  Visible for child package
diff --git a/packages/wisi/sal-gen_unbounded_definite_vectors_sorted.adb 
b/packages/wisi/sal-gen_unbounded_definite_vectors_sorted.adb
index 6d836c5..8e40695 100644
--- a/packages/wisi/sal-gen_unbounded_definite_vectors_sorted.adb
+++ b/packages/wisi/sal-gen_unbounded_definite_vectors_sorted.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2019 - 2020 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
@@ -163,7 +163,6 @@ package body SAL.Gen_Unbounded_Definite_Vectors_Sorted is
      (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
@@ -312,42 +311,44 @@ package body SAL.Gen_Unbounded_Definite_Vectors_Sorted is
    overriding function First (Object : Iterator) return Cursor
    is begin
       if Object.Container.Elements = null then
-         return (null, Invalid_Peek_Index);
+         return (Index => Invalid_Peek_Index);
       else
-         return (Object.Container, Peek_Type'First);
+         return (Index => 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);
+         return (Index => Invalid_Peek_Index);
       else
-         return (Object.Container, Object.Container.Last);
+         return (Index => 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);
+         return (Index => Invalid_Peek_Index);
       else
-         return (Object.Container, Position.Index + 1);
+         return (Index => Position.Index + 1);
       end if;
    end Next;
 
    overriding function Previous (Object : in Iterator; Position : in Cursor) 
return Cursor
-   is begin
+   is
+      pragma Unreferenced (Object);
+   begin
       if Position.Index = Peek_Type'First then
-         return (null, Invalid_Peek_Index);
+         return (Index => Invalid_Peek_Index);
       else
-         return (Object.Container, Position.Index - 1);
+         return (Index => 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);
+      return Iterator'(Container => Container'Access);
    end Iterate;
 
    function Constant_Ref (Container : aliased Vector; Position : in Cursor) 
return Constant_Reference_Type
@@ -355,11 +356,16 @@ package body SAL.Gen_Unbounded_Definite_Vectors_Sorted is
       return (Element => Container.Elements (Position.Index)'Access, Dummy => 
1);
    end Constant_Ref;
 
-   function Last_Index (Container : aliased Vector) return Base_Peek_Type
+   function Last_Index (Container : in Vector) return Base_Peek_Type
    is begin
       return Container.Last;
    end Last_Index;
 
+   function To_Index (Position : in Cursor) return Base_Peek_Type
+   is begin
+      return Position.Index;
+   end To_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);
diff --git a/packages/wisi/sal-gen_unbounded_definite_vectors_sorted.ads 
b/packages/wisi/sal-gen_unbounded_definite_vectors_sorted.ads
index c197ec4..2a52c74 100644
--- a/packages/wisi/sal-gen_unbounded_definite_vectors_sorted.ads
+++ b/packages/wisi/sal-gen_unbounded_definite_vectors_sorted.ads
@@ -2,7 +2,7 @@
 --
 --  A simple unbounded sorted vector of definite items.
 --
---  Copyright (C) 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2019 - 2020 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
@@ -27,6 +27,8 @@ generic
    with function Key_Compare (Left, Right : in Key_Type) return Compare_Result;
 package SAL.Gen_Unbounded_Definite_Vectors_Sorted is
 
+   use all type Ada.Containers.Count_Type;
+
    type Vector is new Ada.Finalization.Controlled with private with
       Constant_Indexing => Constant_Ref,
       Default_Iterator  => Iterate,
@@ -94,13 +96,16 @@ package SAL.Gen_Unbounded_Definite_Vectors_Sorted is
      Implicit_Dereference => Element;
 
    function Constant_Ref (Container : aliased Vector; Position : in Cursor) 
return Constant_Reference_Type
-   with Inline;
+   with Inline,
+     Pre => To_Index (Position) in Container.First_Index .. 
Container.Last_Index;
 
-   function First_Index (Container : aliased Vector) return Peek_Type is 
(Peek_Type'First);
-   function Last_Index (Container : aliased Vector) return Base_Peek_Type
+   function First_Index (Container : in Vector) return Peek_Type is 
(Peek_Type'First);
+   function Last_Index (Container : in Vector) return Base_Peek_Type
    with Inline;
+   function To_Index (Position : in Cursor) return Base_Peek_Type;
    function Constant_Ref (Container : aliased Vector; Index : in Peek_Type) 
return Constant_Reference_Type
-   with Inline;
+   with Inline,
+     Pre => Index in Container.First_Index .. Container.Last_Index;
 
 private
 
@@ -123,14 +128,11 @@ private
    for Vector_Access'Storage_Size use 0;
 
    type Cursor is record
-      Container : Vector_Access  := null;
-      Index     : Base_Peek_Type := No_Index;
+      Index : Base_Peek_Type := No_Index;
    end record;
 
-   type Iterator is new Iterator_Interfaces.Reversible_Iterator with
-   record
-      Container : Vector_Access;
-   end record;
+   type Iterator (Container : not null access constant Vector) is new 
Iterator_Interfaces.Reversible_Iterator
+     with null record;
 
    overriding function First (Object : Iterator) return Cursor;
    overriding function Last  (Object : Iterator) return Cursor;
diff --git a/packages/wisi/sal.adb b/packages/wisi/sal.adb
index e3f5d52..08a2184 100644
--- a/packages/wisi/sal.adb
+++ b/packages/wisi/sal.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 1997 - 2004, 2006, 2009, 2019 Free Software Foundation, Inc.
+--  Copyright (C) 1997 - 2004, 2006, 2009, 2019, 2020 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
@@ -26,7 +26,7 @@ package body SAL is
 
    function Version return String is
    begin
-      return "SAL 3.3";
+      return "SAL 3.4";
    end Version;
 
 end SAL;
diff --git a/packages/wisi/standard_common.gpr 
b/packages/wisi/standard_common.gpr
index 2ba758a..ce019c7 100644
--- a/packages/wisi/standard_common.gpr
+++ b/packages/wisi/standard_common.gpr
@@ -2,7 +2,7 @@
 --
 --  Standard settings for all of Stephe's Ada projects.
 --
---  Copyright (C) 2018, 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -61,7 +61,7 @@ project Standard_Common is
       --  suppress that warning with -gnatwP.
       Debug_Switches := Common_Switches &
         (
-         "-O0",
+         "-O0", --  we don't use -Og because that causes gdb to report 
incorrect results in some cases in Ada.
          "-gnata",  -- assertions, pre/post-conditions
          "-gnatVa", -- validity checks
          "-gnateE", -- extra info in exceptions
diff --git a/packages/wisi/wisi-prj.el b/packages/wisi/wisi-prj.el
index 833a514..ba3932d 100644
--- a/packages/wisi/wisi-prj.el
+++ b/packages/wisi/wisi-prj.el
@@ -1,4 +1,4 @@
-;;; wisi-prj.el --- project definition files -*- lexical-binding:t -*-
+;;; wisi-prj.el --- project integration -*- lexical-binding:t -*-
 ;;
 ;; Copyright (C) 2019 - 2020  Free Software Foundation, Inc.
 ;;
@@ -184,10 +184,29 @@ after the project file PRJ-FILE-NAME is parsed."
 slow refresh operations may be skipped."
   nil)
 
-(cl-defgeneric wisi-xref-definitions (_xref project item)
+(cl-defgeneric wisi-xref-completion-table (xref project)
+  "Return a completion table of names defined in PROJECT, for navigating to 
the declarations.
+The table is an alist of (ANNOTATED-SYMBOL . LOC), where:
+
+- ANNOTATED-SYMBOL is the simple name and possibly annotations
+such as function arguments, controlling type, containing package,
+and line number.
+
+- LOC is the declaration of the name as a list (FILE LINE
+COLUMN).")
+
+(cl-defgeneric wisi-xref-completion-regexp (xref)
+  "Return a regular expression matching the result of completing with 
`wisi-xref-completion-table'.
+Group 1 must be the simple symbol; the rest of the item may be annotations.")
+
+(cl-defgeneric wisi-xref-completion-at-point-table (xref project)
+  "Return a completion table of names defined in PROJECT, for 
`completion-at-point'.
+The table is a simple list of symbols.")
+
+(cl-defgeneric wisi-xref-definitions (xref project item)
   "Return all definitions (classwide) of ITEM (an xref-item), as a list of 
xref-items.")
 
-(cl-defgeneric wisi-xref-references (_xref project item)
+(cl-defgeneric wisi-xref-references (xref project item)
   "Return all references to ITEM (an xref-item), as a list of xref-items.")
 
 (cl-defgeneric wisi-xref-other (project &key identifier filename line column)
@@ -240,62 +259,128 @@ LINE, COLUMN are Emacs origin."
 (defun wisi-show-xref (xref)
   "Display XREF location."
   (let ((marker (xref-location-marker (xref-item-location xref))))
+    (push-mark)
     (pop-to-buffer (marker-buffer marker) (list #'display-buffer-same-window))
     (goto-char (marker-position marker))))
 
+(defun wisi-filter-table (table file)
+  "If FILE is nil, return TABLE. Otherwise return only items in TABLE with 
location FILE."
+  (cond
+   ((null file)
+    table)
+
+   (t
+    (let (result)
+      (dolist (item table)
+       (when (string= file (car (cdr item)))
+         (push item result)))
+      result))))
+
 (defun wisi-get-identifier (prompt)
-  "Get identifier at point, or if no identifier at point, or with user arg, 
prompt for one."
+  "Get identifier at point, or if no identifier at point, or with user arg, 
prompt for one.
+Single user arg completes on all identifiers in project; double
+user arg limits completion to current file."
   ;; Similar to xref--read-identifier, but uses a different completion
   ;; table, because we want a more specific reference.
-  (let* ((backend (xref-find-backend))
-         (def (xref-backend-identifier-at-point backend)))
+  (let* ((prj (project-current))
+         (def (xref-backend-identifier-at-point prj)))
 
     (cond
      ((or current-prefix-arg
           (not def))
-      (let ((id
-             (completing-read
-              (if def
-                 (format "%s (default %s): " prompt def)
-                prompt)
-              (wisi-names t)
-              nil nil nil
-              'xref--read-identifier-history def)))
+      (let* ((table (wisi-filter-table (wisi-xref-completion-table 
(wisi-prj-xref prj) prj)
+                                      (when (equal '(16) current-prefix-arg) 
(buffer-file-name))))
+            (id
+             ;; Since the user decided not to use the identifier at
+             ;; point, don't use it as the default.
+              (completing-read prompt table nil nil nil 
'xref--read-identifier-history)))
         (if (equal id "")
             (user-error "No identifier provided")
-          id)))
+
+         ;; The user may have forced exit from completing-read with a
+         ;; string that is not in the table (because gpr-query is out
+         ;; of date, for example).
+          (or (and (consp (car table)) ;; alist; return key and value.
+                  (assoc id table))
+             id))))
      (t def))))
 
 (defun wisi-goto-spec/body (identifier)
   "Goto declaration or body for IDENTIFIER (default symbol at point).
 If no symbol at point, or with prefix arg, prompt for symbol, goto spec."
   (interactive (list (wisi-get-identifier "Goto spec/body of: ")))
-  (let ((prj (project-current)))
-    (wisi-show-xref
-     (wisi-xref-ident-make
-      identifier
-      (lambda (ident file line column)
-       (let ((target (wisi-xref-other
-                      (wisi-prj-xref prj) prj
-                      :identifier ident
-                      :filename file
-                      :line line
-                      :column column)))
-         (xref-make ident
-                    (xref-make-file-location
-                     (nth 0 target) ;; file
-                     (nth 1 target) ;; line
-                     (nth 2 target))) ;; column
-         ))))
+  (let ((prj (project-current))
+       desired-loc)
+    (cond
+     ((consp identifier)
+      ;; alist element from wisi-xref-completion-table; desired
+      ;; location is primary declaration
+      (setq desired-loc
+           (xref-make (car identifier)
+                      (xref-make-file-location
+                       (nth 0 (cdr identifier)) ;; file
+                       (nth 1 (cdr identifier)) ;; line
+                       (nth 2 (cdr identifier)) ;; column
+                       ))))
+
+     ((stringp identifier)
+      ;; from xref-backend-identifier-at-point; desired location is 'other'
+      (let ((item (wisi-xref-item identifier prj)))
+       (condition-case-unless-debug err
+           (with-slots (summary location) item
+             (let ((eieio-skip-typecheck t))
+               (with-slots (file line column) location
+                 (let ((target
+                        (wisi-xref-other
+                         (wisi-prj-xref prj) prj
+                         :identifier summary
+                         :filename file
+                         :line line
+                         :column column)))
+                   (setq desired-loc
+                         (xref-make summary
+                                    (xref-make-file-location
+                                     (nth 0 target) ;; file
+                                     (nth 1 target) ;; line
+                                     (nth 2 target))) ;; column
+                         )))))
+         (user-error ;; from gpr-query; current file might be new to project, 
so try wisi-names
+          (let ((item (assoc identifier (wisi-names nil t))))
+            (if item
+                (setq desired-loc
+                      (xref-make identifier
+                                 (xref-make-file-location
+                                  (nth 1 item) ;; file
+                                  (nth 2 item) ;; line
+                                  (nth 3 item))))
+              (signal (car err) (cdr err)))))
+         )))
+
+     (t ;; something else
+      (error "unknown case in wisi-goto-spec/body")))
+         (wisi-show-xref desired-loc)
     ))
 
 (cl-defgeneric wisi-prj-identifier-at-point (_project)
-  "Return the identifier at point, move point to start of
-identifier.  Signal an error if no identifier is at point."
-  (let ((ident (thing-at-point 'symbol)))
-    (when ident
-      (skip-syntax-backward "w_")
-      ident)))
+  "Return (IDENT START END) giving the identifier and its bounds at point.
+Return nil if no identifier is at point."
+  ;; default implementation
+  (let ((bounds (bounds-of-thing-at-point 'symbol)))
+    (when bounds
+      (list (car bounds) (cdr bounds) (buffer-substring-no-properties (car 
bounds) (cdr bounds))))))
+
+(defun wisi-completion-at-point ()
+  "For `completion-at-point-functions'."
+  (let ((prj (project-current)))
+    (when (wisi-prj-p prj)
+      (save-excursion
+       (let ((table (wisi-xref-completion-at-point-table (wisi-prj-xref prj) 
prj))
+             (bounds (wisi-prj-identifier-at-point prj)))
+         (when bounds
+           ;; xref symbol table may be out of date; try dabbrevs
+           (list (nth 0 bounds) (nth 1 bounds) table :exclusive 'no))
+         )))
+    ))
 
 (defun wisi-check-current-project (file-name &optional default-prj-function)
   "If FILE-NAME (must be absolute) is found in the current
@@ -343,14 +428,15 @@ Displays a buffer in compilation-mode giving locations of 
the parent type declar
 (defun wisi-show-declaration-parents ()
   "Display the locations of the parent type declarations of the type 
identifier around point."
   (interactive)
-  (let ((project (wisi-check-current-project (buffer-file-name))))
+  (let* ((project (wisi-check-current-project (buffer-file-name)))
+        (id (wisi-prj-identifier-at-point project)))
     (wisi-xref-parents
      (wisi-prj-xref project)
      project
-     :identifier (wisi-prj-identifier-at-point project)
+     :identifier (nth 2 id)
      :filename (file-name-nondirectory (buffer-file-name))
      :line (line-number-at-pos)
-     :column (current-column))
+     :column (save-excursion (goto-char (nth 0 id)) (current-column)))
     ))
 
 (cl-defgeneric wisi-xref-all (xref project &key identifier filename line 
column local-only append)
@@ -370,14 +456,15 @@ identifier is declared or referenced.")
   "Show all references of identifier at point.
 With prefix, keep previous references in output buffer."
   (interactive "P")
-  (let ((project (wisi-check-current-project (buffer-file-name))))
+  (let* ((project (wisi-check-current-project (buffer-file-name)))
+        (id (wisi-prj-identifier-at-point project)))
     (wisi-xref-all
      (wisi-prj-xref project)
      project
-     :identifier (wisi-prj-identifier-at-point project)
+     :identifier (nth 2 id)
      :filename (file-name-nondirectory (buffer-file-name))
      :line (line-number-at-pos)
-     :column (current-column)
+     :column (save-excursion (goto-char (nth 0 id)) (current-column))
      :local-only nil
      :append append)
     ))
@@ -386,14 +473,15 @@ With prefix, keep previous references in output buffer."
   "Show all references of identifier at point occuring in current file.
 With prefix, keep previous references in output buffer."
   (interactive "P")
-  (let ((project (wisi-check-current-project (buffer-file-name))))
+  (let* ((project (wisi-check-current-project (buffer-file-name)))
+        (id (wisi-prj-identifier-at-point project)))
     (wisi-xref-all
      (wisi-prj-xref project)
      project
-     :identifier (wisi-prj-identifier-at-point project)
+     :identifier (nth 2 id)
      :filename (file-name-nondirectory (buffer-file-name))
      :line (line-number-at-pos)
-     :column (current-column)
+     :column (save-excursion (goto-char (nth 0 id)) (current-column))
      :local-only t
      :append append)
     ))
@@ -410,14 +498,15 @@ COLUMN - Emacs column of the start of the identifier ")
 (defun wisi-show-overriding ()
   "Show all overridings of identifier at point."
   (interactive)
-  (let ((project (wisi-check-current-project (buffer-file-name))))
+  (let* ((project (wisi-check-current-project (buffer-file-name)))
+        (id (wisi-prj-identifier-at-point project)))
     (wisi-xref-overriding
      (wisi-prj-xref project)
      project
-     :identifier (wisi-prj-identifier-at-point project)
+     :identifier (nth 2 id)
      :filename (file-name-nondirectory (buffer-file-name))
      :line (line-number-at-pos)
-     :column (current-column))
+     :column (save-excursion (goto-char (nth 0 id)) (current-column)))
     ))
 
 (cl-defgeneric wisi-xref-overridden (xref project &key identifier filename 
line column)
@@ -433,14 +522,15 @@ COLUMN - Emacs column of the start of the identifier")
   "Show the overridden declaration of identifier at point."
   (interactive)
   (let* ((project (wisi-check-current-project (buffer-file-name)))
+        (id (wisi-prj-identifier-at-point project))
         (target
          (wisi-xref-overridden
           (wisi-prj-xref project)
           project
-          :identifier (wisi-prj-identifier-at-point project)
+          :identifier (nth 2 id)
           :filename (file-name-nondirectory (buffer-file-name))
           :line (line-number-at-pos)
-          :column (current-column))))
+          :column (save-excursion (goto-char (nth 0 id)) (current-column)))))
 
     (wisi-goto-source (nth 0 target)
                      (nth 1 target)
@@ -511,8 +601,8 @@ absolute file name.")
        (setq wisi-prj--cache (delete (cons prj-file project) wisi-prj--cache))
        (setq project (wisi-prj-default project))
        (wisi-prj-parse-file :prj-file prj-file :init-prj project :cache t)
-       (wisi-prj-select project)))
-  (wisi-xref-refresh-cache (wisi-prj-xref project) project not-full))
+       (wisi-xref-refresh-cache (wisi-prj-xref project) project not-full)
+       (wisi-prj-select project))))
 
 (cl-defmethod wisi-prj-select ((project wisi-prj))
   (setq compilation-search-path (wisi-prj-source-path project))
@@ -1139,31 +1229,85 @@ with \\[universal-argument]."
 
 ;;;; xref backend
 
+(defconst wisi-file-line-col-regexp
+  ;; matches Gnu-style file references:
+  ;; 
C:\Projects\GDS\work_dscovr_release\common\1553\gds-mil_std_1553-utf.ads:252:25
+  ;; 
/Projects/GDS/work_dscovr_release/common/1553/gds-mil_std_1553-utf.ads:252:25
+  ;; gds-mil_std_1553-utf.ads:252:25 - when wisi-xref-full-path is nil
+  "\\(\\(?:.:\\\\\\|/\\)?[^:]*\\):\\([0-9]+\\):\\([0-9]+\\)"
+  ;; 1                              2            3
+  "Regexp matching <file>:<line>:<column> where <file> is an absolute file 
name or basename.")
+
+(defun wisi-xref-item (identifier prj)
+  "Given IDENTIFIER, return an xref-item, with line, column nil if unknown.
+IDENTIFIER is from a user prompt with completion, or from
+`xref-backend-identifier-at-point'."
+  (let* ((t-prop (get-text-property 0 'xref-identifier identifier))
+        ident file line column)
+    (cond
+     (t-prop
+      ;; IDENTIFIER is from wisi-xref-identifier-at-point.
+      (setq ident (substring-no-properties identifier 0 nil))
+      (setq file (plist-get t-prop :file))
+      (setq line (plist-get t-prop :line))
+      (setq column (plist-get t-prop :column))
+      )
+
+     ((string-match (wisi-xref-completion-regexp (wisi-prj-xref prj)) 
identifier)
+      ;; IDENTIFIER is from prompt/completion on wisi-xref-completion-table
+      (setq ident (match-string 1 identifier))
+
+      (let* ((table (wisi-xref-completion-table (wisi-prj-xref prj) prj))
+            (loc (cdr (assoc identifier table))))
+
+       (setq file (nth 0 loc))
+       (setq line (nth 1 loc))
+       (setq column (nth 2 loc))
+       ))
+
+     ((string-match wisi-names-regexp identifier)
+      ;; IDENTIFIER is from prompt/completion on wisi-names.
+      (setq ident (match-string 1 identifier))
+      (setq file (buffer-file-name))
+      (when (match-string 2 identifier)
+       (setq line (string-to-number (match-string 2 identifier))))
+      )
+
+     (t
+      ;; IDENTIFIER has no line/column info
+      (setq ident identifier)
+      (setq file (buffer-file-name)))
+     )
+
+    (unless (file-name-absolute-p file)
+      (setq file (locate-file file compilation-search-path)))
+
+    (let ((eieio-skip-typecheck t)) ;; allow line, column nil.
+      (xref-make ident (xref-make-file-location file line column)))
+    ))
+
 (cl-defmethod xref-backend-definitions ((prj wisi-prj) identifier)
-  (wisi-xref-definitions (wisi-prj-xref prj) prj (wisi-xref-item identifier)))
+  (wisi-xref-definitions (wisi-prj-xref prj) prj (wisi-xref-item identifier 
prj)))
 
 (cl-defmethod xref-backend-identifier-at-point ((prj wisi-prj))
   (save-excursion
-    (condition-case nil
-       (let ((ident (wisi-prj-identifier-at-point prj))) ;; moves point to 
start of ident
-         (put-text-property
-          0 1
-          'xref-identifier
-          (list ':file (buffer-file-name)
-                ':line (line-number-at-pos)
-                ':column (current-column))
-          ident)
-         ident)
-       (error
-        ;; from wisi-prj-identifier-at-point; no identifier
-        nil))))
-
-(cl-defmethod xref-backend-identifier-completion-table ((_prj wisi-prj))
-  ;; Current buffer only.
-  (wisi-names nil))
+    (let ((id (wisi-prj-identifier-at-point prj)))
+      (when id
+       (put-text-property
+        0 1
+        'xref-identifier
+        (list ':file (buffer-file-name)
+              ':line (line-number-at-pos)
+              ':column (save-excursion (goto-char (nth 0 id)) 
(current-column)))
+        (nth 2 id))
+       (nth 2 id)))))
+
+(cl-defmethod xref-backend-identifier-completion-table ((prj wisi-prj))
+  (wisi-filter-table (wisi-xref-completion-table (wisi-prj-xref prj) prj)
+                    (when (equal '(16) current-prefix-arg) 
(buffer-file-name))))
 
 (cl-defmethod xref-backend-references  ((prj wisi-prj) identifier)
-  (wisi-xref-references (wisi-prj-xref prj) prj (wisi-xref-item identifier)))
+  (wisi-xref-references (wisi-prj-xref prj) prj (wisi-xref-item identifier 
prj)))
 
 ;;;###autoload
 (defun wisi-prj-xref-backend ()
diff --git a/packages/wisi/wisi-process-parse.el 
b/packages/wisi/wisi-process-parse.el
index 46abc92..bddd033 100644
--- a/packages/wisi/wisi-process-parse.el
+++ b/packages/wisi/wisi-process-parse.el
@@ -104,17 +104,20 @@ Otherwise add PARSER to ‘wisi-process--alist’, return it."
   ;; 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)))
-    ))
+    (if (search-forward-regexp "protocol: process version \\([0-9]+\\) 
language version \\([0-9]+\\)" nil t)
+       (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)))
+      ;; Search failed
+      (error "%s parser process protocol version message not found"
+            (wisi-process--parser-label parser))
+    )))
 
 (defun wisi-process-parse--require-process (parser)
   "Start the process for PARSER if not already started."
@@ -138,7 +141,6 @@ Otherwise add PARSER to ‘wisi-process--alist’, return it."
                              (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)
@@ -195,7 +197,7 @@ parse region."
                      (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
+                     (if (> wisi-debug 0) 1 0) ;; debug_mode
                      (1- wisi-debug) ;; trace_parse
                      wisi-trace-mckenzie
                      wisi-trace-action
@@ -518,8 +520,6 @@ complete."
 (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.
@@ -541,6 +541,13 @@ complete."
     ;; accept-process-output below.
     (setf (wisi-process--parser-busy parser) t)
 
+    ;; If the parser process has not started yet,
+    ;; wisi-process-parse--require-process calls
+    ;; wisi-process-parse--wait, which can let font-lock invoke the
+    ;; parser again. Thus this call must be after we set
+    ;; wisi-process--parser-busy t
+    (wisi-process-parse--require-process parser)
+
     (setf (wisi-process--parser-total-wait-time parser) 0.0)
     (setf (wisi-parser-lexer-errors parser) nil)
     (setf (wisi-parser-parse-errors parser) nil)
@@ -598,7 +605,7 @@ complete."
                (set-buffer source-buffer) ;; for put-text-property in actions
                (cond
                 ((listp response)
-                 ;; error of some sort
+                 ;; non-syntax error of some sort
                  (cond
                   ((equal '(parse_error) response)
                    ;; Parser detected a syntax error, and recovery failed, so 
signal it.
@@ -654,7 +661,7 @@ complete."
                     (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.
+                   (error ;; ie from un-commented 
[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")))
diff --git a/packages/wisi/wisi-run-indent-test.el 
b/packages/wisi/wisi-run-indent-test.el
index 269b3d9..8c0eef0 100644
--- a/packages/wisi/wisi-run-indent-test.el
+++ b/packages/wisi/wisi-run-indent-test.el
@@ -42,8 +42,9 @@ FACE may be a list."
        (error "can't find '%s'" token)))
 
     (save-match-data
-      (wisi-validate-cache (line-beginning-position 0) (line-end-position 5) 
nil 'face))
-
+      (wisi-validate-cache (line-beginning-position) (line-end-position) nil 
'face)
+      (font-lock-ensure (line-beginning-position) (line-end-position)))
+    
     ;; 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.
@@ -331,12 +332,28 @@ Each item is a list (ACTION PARSE-BEGIN PARSE-END 
EDIT-BEGIN)")
     (wisi-case-adjust-buffer))
   )
 
+(defvar cl-print-readably); cl-print.el, used by edebug
+
+(defun large-frame ()
+  (interactive)
+  (modify-frame-parameters
+      nil
+      (list
+       (cons 'width 120) ;; characters; fringe extra
+       (cons 'height 71) ;; characters
+       (cons 'left 0) ;; pixels
+       (cons 'top 0))))
+(define-key global-map "\C-cp" 'large-screen)
+
 (defun run-test (file-name)
   "Run an indentation and casing test on FILE-NAME."
   (interactive "f")
 
   (package-initialize) ;; for uniquify-files
 
+  ;; Let edebug display strings full-length, and show internals of records
+  (setq cl-print-readably t)
+
   ;; we'd like to run emacs from a makefile as:
   ;;
   ;; emacs -Q --batch -l runtest.el -f run-test-here <filename>
diff --git a/packages/wisi/wisi-skel.el b/packages/wisi/wisi-skel.el
index 96693fd..9af5b9b 100644
--- a/packages/wisi/wisi-skel.el
+++ b/packages/wisi/wisi-skel.el
@@ -1,6 +1,6 @@
 ;;; wisi-skel.el --- Extensions skeleton  -*- lexical-binding:t -*-
 
-;; Copyright (C) 1987, 1993, 1994, 1996-2019  Free Software Foundation, Inc.
+;; Copyright (C) 1987, 1993, 1994, 1996-2020  Free Software Foundation, Inc.
 
 ;; Authors: Stephen Leake <address@hidden>
 
@@ -24,18 +24,42 @@
 ;; The primary user command is `wisi-skel-expand', which inserts the
 ;; skeleton associated with the previous word (possibly skipping a
 ;; name).
-;;
+
+(require 'skeleton)
 
 (defvar-local wisi-skel-token-alist nil
   "Alist of (STRING . ELEMENT), used by `wisi-skel-expand'.
-STRING must be a symbol in the current syntax, and is normally
-the first language keyword in the skeleton.
+STRING should be a grammar symbol in the current language.
 
 ELEMENT may be:
 - a skeleton, which is inserted
 - an alist of (STRING . SKELETON). User is prompted with `completing-read',
   selected skeleton is inserted.")
 
+(defun wisi-skel-add-token-after (alist token skel after-1 &optional after-2)
+  "Add a new entry in ALIST (should be an instance of `wisi-skel-token-alist')
+after AFTER-1. If AFTER-1 is a nested alist, add the new entry after AFTER-2."
+  (let ((tail alist)
+       done)
+    (if (string= after-1 (car (car alist)))
+       (setcdr alist (cons (cons token skel) (cdr alist)))
+
+      (while (and (not done) tail)
+       (if (string= after-1 (car-safe (car (cdr tail))))
+           (cond
+            ((symbolp (cdr (car (cdr tail))))
+             (setcdr tail (cons (cons token skel) (cdr (cdr tail))))
+             (setq done t))
+
+            ((consp (cdr (car (cdr tail))))
+             (wisi-skel-add-token-after (cdr (car (cdr tail))) token skel 
after-2)
+             (setq done t))
+            )
+         ;; else
+         (setq tail (cdr tail))
+         ))
+      )))
+
 (defun wisi-skel-build-prompt (alist count)
   "Build a prompt from the keys of the ALIST.
 The prompt consists of the first COUNT keys from the alist, separated by `|', 
with
@@ -93,7 +117,8 @@ before that as the token."
               (skip-syntax-forward " ")
               (skip-syntax-forward "w_."))
             (point)))
-         (funcall (cdr skel) name)
+         (let ((skeleton-end-newline nil))
+           (funcall (cdr skel) name))
          (setq handled t))
 
       ;; word in point .. end is not a token; assume it is a name
@@ -107,10 +132,18 @@ before that as the token."
          ;; on tokens and placeholders.
          (save-excursion (wisi-case-adjust-region (point) end)))
 
-       (wisi-skel-expand (buffer-substring-no-properties (point) end))
-       (setq handled t)))
+       (condition-case-unless-debug nil
+           (progn
+             (wisi-skel-expand (buffer-substring-no-properties (point) end))
+             (setq handled t))
+         (user-error ;; leave handled nil
+          ))
+       ))
 
     (when (not handled)
+      (setq name (buffer-substring-no-properties (point) end))
+      ;; restore point
+      (goto-char end)
       (user-error "'%s' is not a skeleton token" name))
     ))
 
diff --git a/packages/wisi/wisi.adb b/packages/wisi/wisi.adb
index 227c45c..66b55fd 100644
--- a/packages/wisi/wisi.adb
+++ b/packages/wisi/wisi.adb
@@ -41,6 +41,7 @@ package body Wisi is
 
    function Paren_In_Anchor_Line
      (Data         : in out Parse_Data_Type'Class;
+      Tree         : in     Syntax_Trees.Tree'Class;
       Anchor_Token : in     Augmented_Token;
       Offset       : in     Integer)
      return Integer;
@@ -48,6 +49,31 @@ package body Wisi is
    ----------
    --  body subprograms bodies, alphabetical
 
+   procedure Adjust_Paren_State
+     (Data              : in out Parse_Data_Type;
+      Tree              : in     Syntax_Trees.Tree'Class;
+      First_Token_Index : in     Token_Index;
+      First_Line        : in     Line_Number_Type;
+      Adjust            : in     Integer)
+   is begin
+      for I in First_Token_Index .. Data.Terminals.Last_Index loop
+         declare
+            Aug : Augmented_Token renames Get_Aug_Token_Var (Data, Tree, I);
+         begin
+            Aug.Paren_State := Aug.Paren_State + Adjust;
+         end;
+      end loop;
+
+      for Line in First_Line .. Data.Line_Paren_State.Last_Index loop
+         Data.Line_Paren_State (Line) := Data.Line_Paren_State (Line) + Adjust;
+      end loop;
+   end Adjust_Paren_State;
+
+   function Image (Aug : in WisiToken.Base_Token_Class_Access; Descriptor : in 
WisiToken.Descriptor) return String
+   is begin
+      return Image (Augmented_Token_Access (Aug).all, Descriptor);
+   end Image;
+
    function Image (Anchor_IDs : in Anchor_ID_Vectors.Vector) return String
    is
       use Ada.Strings.Unbounded;
@@ -243,10 +269,14 @@ package body Wisi is
 
    function Paren_In_Anchor_Line
      (Data         : in out Parse_Data_Type'Class;
+      Tree         : in     Syntax_Trees.Tree'Class;
       Anchor_Token : in     Augmented_Token;
       Offset       : in     Integer)
      return Integer
    is
+      use Valid_Node_Index_Arrays;
+      use all type Ada.Containers.Count_Type;
+
       Left_Paren_ID  : Token_ID renames Data.Left_Paren_ID;
       Right_Paren_ID : Token_ID renames Data.Right_Paren_ID;
 
@@ -255,11 +285,15 @@ package body Wisi is
       Paren_Char_Pos : Buffer_Pos       := Invalid_Buffer_Pos;
       Text_Begin_Pos : Buffer_Pos       := Invalid_Buffer_Pos;
    begin
+      Find_First :
       loop
          declare
-            Tok : Augmented_Token renames Data.Terminals (I);
+            Tok : Aug_Token_Const_Ref renames Get_Aug_Token_Const (Data, Tree, 
I);
          begin
-            if Tok.ID = Left_Paren_ID then
+            if Tok.Deleted then
+               null;
+
+            elsif Tok.ID = Left_Paren_ID then
                Paren_Count := Paren_Count + 1;
                if Paren_Count = 1 then
                   Paren_Char_Pos := Tok.Char_Region.First;
@@ -272,11 +306,35 @@ package body Wisi is
 
             if Tok.First then
                Text_Begin_Pos := Tok.Char_Region.First;
-               exit;
+               exit Find_First;
+            else
+               if Length (Tok.Inserted_Before) > 0 then
+                  for Node of Tok.Inserted_Before loop
+                     declare
+                        Ins_Tok : Augmented_Token renames Augmented_Token 
(Tree.Augmented (Node).all);
+                     begin
+                        if Ins_Tok.ID = Left_Paren_ID then
+                           Paren_Count := Paren_Count + 1;
+                           if Paren_Count = 1 then
+                              Paren_Char_Pos := Tok.Char_Region.First;
+                           end if;
+
+                        elsif Ins_Tok.ID = Right_Paren_ID then
+                           Paren_Count := Paren_Count - 1;
+
+                        end if;
+
+                        if Ins_Tok.First then
+                           Text_Begin_Pos := Tok.Char_Region.First;
+                           exit Find_First;
+                        end if;
+                     end;
+                  end loop;
+               end if;
             end if;
          end;
          I := I - 1;
-      end loop;
+      end loop Find_First;
 
       if Paren_Char_Pos /= Invalid_Buffer_Pos and Text_Begin_Pos /= 
Invalid_Buffer_Pos then
          return 1 + Offset + Integer (Paren_Char_Pos - Text_Begin_Pos);
@@ -363,10 +421,9 @@ package body Wisi is
    end Put;
 
    procedure Put
-     (Item                          : in Parse.LR.Configuration;
-      Terminals                     : in Augmented_Token_Arrays.Vector;
-      Descriptor                    : in WisiToken.Descriptor;
-      Embedded_Quote_Escape_Doubled : in Boolean)
+     (Item : in Parse.LR.Configuration;
+      Data : in Parse_Data_Type;
+      Tree : in Syntax_Trees.Tree)
    is
       use Ada.Strings.Unbounded;
       use Parse.LR;
@@ -390,7 +447,7 @@ package body Wisi is
       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, Get_Aug_Token_Const (Data, Tree, Parse.LR.Token_Index 
(Op)).Char_Region.First'Image);
          Append (Line, "[");
       end Start_Edit_Region;
 
@@ -412,8 +469,8 @@ package body Wisi is
          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));
+      if Trace_Action > Outline then
+         Ada.Text_IO.Put_Line (";; " & Parse.LR.Image (Item.Ops, 
Data.Descriptor.all));
       end if;
 
       Append (Line, Recover_Code);
@@ -446,7 +503,7 @@ package body Wisi is
                State := Inserted;
 
             when Delete =>
-               Deleted_Region := Deleted_Region and Terminals 
(Op.Del_Token_Index).Char_Region;
+               Deleted_Region := Deleted_Region and Get_Aug_Token_Const (Data, 
Tree, Op.Del_Token_Index).Char_Region;
                declare
                   Skip : Boolean := False;
                begin
@@ -459,13 +516,16 @@ package body Wisi is
                      Append (Line, "][");
 
                   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))
+                     if Data.Embedded_Quote_Escape_Doubled and then
+                       ((Last_Deleted.Del_ID = Data.Descriptor.String_1_ID and
+                           Op.Del_ID = Data.Descriptor.String_1_ID) or
+                          (Last_Deleted.Del_ID = Data.Descriptor.String_2_ID 
and
+                             Op.Del_ID = Data.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);
+                           Tok_1 : Augmented_Token renames Get_Aug_Token_Const
+                             (Data, Tree, Last_Deleted.Del_Token_Index);
+                           Tok_2 : Augmented_Token renames Get_Aug_Token_Const 
(Data, Tree, 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
@@ -605,7 +665,7 @@ package body Wisi is
    is
       pragma Unreferenced (Params);
    begin
-      Data.Line_Begin_Pos.Set_First_Last
+      Data.Line_Begin_Char_Pos.Set_First_Last
         (First   => Begin_Line,
          Last    => End_Line);
 
@@ -639,10 +699,11 @@ package body Wisi is
 
    overriding procedure Reset (Data : in out Parse_Data_Type)
    is begin
-      Data.Terminals.Clear;
+      Data.Last_Terminal_Node := WisiToken.Invalid_Node_Index;
+
       Data.Leading_Non_Grammar.Clear;
-      --  Data.Line_Begin_Pos  set in Initialize, overwritten in 
Lexer_To_Augmented
-      --  Data.Line_Begin_Token set in WisiToken.Parse.Next_Grammar_Token.
+
+      --  Data.Line_Begin_Char_Pos  set in Initialize, overwritten in 
Lexer_To_Augmented
 
       for S of Data.Line_Paren_State loop
          S := 0;
@@ -651,11 +712,12 @@ package body Wisi is
 
       Data.Navigate_Caches.Finalize;
       Data.Navigate_Caches.Initialize;
-      Data.End_Positions.Clear;
 
       Data.Name_Caches.Finalize;
       Data.Name_Caches.Initialize;
 
+      Data.End_Positions.Clear;
+
       Data.Face_Caches.Finalize;
       Data.Face_Caches.Initialize;
 
@@ -678,29 +740,30 @@ package body Wisi is
    overriding
    procedure Lexer_To_Augmented
      (Data  : in out          Parse_Data_Type;
+      Tree  : in out          Syntax_Trees.Tree'Class;
       Token : in              Base_Token;
       Lexer : not null access WisiToken.Lexer.Instance'Class)
    is
       use all type Ada.Containers.Count_Type;
    begin
       if Lexer.First then
-         Data.Line_Begin_Pos (Token.Line) := Token.Char_Region.First;
+         Data.Line_Begin_Char_Pos (Token.Line) := Token.Char_Region.First;
 
-         if Token.Line > Data.Line_Begin_Pos.First_Index and then
-           Data.Line_Begin_Pos (Token.Line - 1) = Invalid_Buffer_Pos
+         if Token.Line > Data.Line_Begin_Char_Pos.First_Index and then
+           Data.Line_Begin_Char_Pos (Token.Line - 1) = Invalid_Buffer_Pos
          then
             --  Previous token contains multiple lines; ie %code in 
wisitoken_grammar.wy
             declare
                First_Set_Line : Line_Number_Type;
             begin
-               for Line in reverse Data.Line_Begin_Pos.First_Index .. 
Token.Line - 1 loop
-                  if Data.Line_Begin_Pos (Line) /= Invalid_Buffer_Pos then
+               for Line in reverse Data.Line_Begin_Char_Pos.First_Index .. 
Token.Line - 1 loop
+                  if Data.Line_Begin_Char_Pos (Line) /= Invalid_Buffer_Pos then
                      First_Set_Line := Line;
                      exit;
                   end if;
                end loop;
                for Line in First_Set_Line + 1 .. Token.Line - 1 loop
-                  Data.Line_Begin_Pos (Line) := Data.Line_Begin_Pos 
(First_Set_Line); -- good enough
+                  Data.Line_Begin_Char_Pos (Line) := Data.Line_Begin_Char_Pos 
(First_Set_Line); -- good enough
                end loop;
             end;
          end if;
@@ -713,11 +776,11 @@ package body Wisi is
             Data.Line_Paren_State (Token.Line + 1) := Data.Current_Paren_State;
          end if;
 
-         if Data.Terminals.Length = 0 then
+         if Data.Last_Terminal_Node = Invalid_Node_Index then
             Data.Leading_Non_Grammar.Append ((Token with Lexer.First));
          else
             declare
-               Containing_Token : Augmented_Token renames Data.Terminals 
(Data.Terminals.Last_Index);
+               Containing_Token : Aug_Token_Var_Ref renames Get_Aug_Token_Var 
(Tree, Data.Last_Terminal_Node);
 
                Trailing_Blank : constant Boolean :=
                  Token.ID = Data.Descriptor.New_Line_ID and
@@ -742,23 +805,22 @@ package body Wisi is
       else
          --  grammar token
          declare
-            Temp : constant Augmented_Token :=
-              (Token.ID,
-               Byte_Region                 => Token.Byte_Region,
-               Line                        => Token.Line,
-               Column                      => Token.Column,
-               Char_Region                 => Token.Char_Region,
+            Temp : constant Augmented_Token_Access := new Augmented_Token'
+              (Token with
                Deleted                     => False,
                First                       => Lexer.First,
                Paren_State                 => Data.Current_Paren_State,
-               First_Terminals_Index       => Data.Terminals.Last_Index + 1,
-               Last_Terminals_Index        => Data.Terminals.Last_Index + 1,
+               First_Terminals_Index       => Data.Terminals.Last_Index,
+               Last_Terminals_Index        => Data.Terminals.Last_Index,
                First_Indent_Line           => (if Lexer.First then Token.Line 
else Invalid_Line_Number),
                Last_Indent_Line            => (if Lexer.First then Token.Line 
else Invalid_Line_Number),
                First_Trailing_Comment_Line => Invalid_Line_Number, -- Set by 
Reduce
                Last_Trailing_Comment_Line  => Invalid_Line_Number,
-               Non_Grammar                 => <>);
+               Non_Grammar                 => 
Non_Grammar_Token_Arrays.Empty_Vector,
+               Inserted_Before             => 
Valid_Node_Index_Arrays.Empty_Vector);
          begin
+            Data.Last_Terminal_Node := Token.Tree_Index;
+
             if Token.ID = Data.Left_Paren_ID then
                Data.Current_Paren_State := Data.Current_Paren_State + 1;
 
@@ -766,18 +828,164 @@ package body Wisi is
                Data.Current_Paren_State := Data.Current_Paren_State - 1;
             end if;
 
-            Data.Terminals.Append (Temp);
+            Tree.Set_Augmented (Token.Tree_Index, Base_Token_Class_Access 
(Temp));
          end;
       end if;
    end Lexer_To_Augmented;
 
    overriding
+   procedure Insert_Token
+     (Data  : in out Parse_Data_Type;
+      Tree  : in out Syntax_Trees.Tree'Class;
+      Token : in     Valid_Node_Index)
+   is
+      use Valid_Node_Index_Arrays;
+
+      Before_Index : constant Token_Index := Tree.Before (Token);
+      Before_Aug : Aug_Token_Var_Ref renames Get_Aug_Token_Var (Data, Tree, 
Before_Index);
+
+      --  Set data that allows using Token when computing indent.
+
+      Indent_Line : constant Line_Number_Type :=
+        (if Before_Aug.First
+         then Before_Aug.Line
+         else Invalid_Line_Number);
+
+      --  Set for Insert_After False; see below for True.
+      New_Aug : constant Augmented_Token_Access := new Augmented_Token'
+        (ID                          => Tree.ID (Token),
+         Tree_Index                  => Token,
+         Byte_Region                 => (First | Last => 
Before_Aug.Byte_Region.First),
+         Line                        => Before_Aug.Line,
+         Column                      => Before_Aug.Column,
+         Char_Region                 => (First | Last => 
Before_Aug.Char_Region.First),
+         Deleted                     => False,
+         First                       => Before_Aug.First,
+         Paren_State                 => Before_Aug.Paren_State,
+         First_Terminals_Index       => Invalid_Token_Index,
+         Last_Terminals_Index        => Invalid_Token_Index,
+         First_Indent_Line           => Indent_Line,
+         Last_Indent_Line            => Indent_Line,
+         First_Trailing_Comment_Line => Invalid_Line_Number,
+         Last_Trailing_Comment_Line  => Invalid_Line_Number,
+         Non_Grammar                 => Non_Grammar_Token_Arrays.Empty_Vector,
+         Inserted_Before             => Valid_Node_Index_Arrays.Empty_Vector);
+
+      Prev_Terminal : constant Node_Index := Tree.Prev_Terminal (Token);
+      --  Invalid_Node_Index if Token is inserted before first grammar token
+
+      Insert_After : Boolean := False;
+   begin
+      Tree.Set_Augmented (Token, Base_Token_Class_Access (New_Aug));
+
+      Append (Before_Aug.Inserted_Before, Token);
+
+      if Prev_Terminal /= Invalid_Node_Index and Before_Aug.First then
+         declare
+            use all type Ada.Containers.Count_Type;
+            use all type Ada.Text_IO.Count;
+
+            --  See test/ada_mode-interactive_2.adb, "Typing ..."; three tests.
+            --
+            --  When typing new code, we want a new blank line to be indented 
as
+            --  if the code was there already. To accomplish that, we put the
+            --  inserted tokens at the end of the line before the Before token;
+            --  that will be after the non-grammar on the previous terminal.
+            --
+            --  Compare to test/ada_mode-recover_20.adb. There we are not 
typing
+            --  new code, but there is a blank line; the right paren is placed 
at
+            --  the end of the blank line, causing the comment to be indented.
+
+            Prev_Aug : Aug_Token_Var_Ref renames Get_Aug_Token_Var (Tree, 
Prev_Terminal);
+
+            --  Prev_Aug.Non_Grammar must have at least one New_Line, since
+            --  Before_Aug.First is True. The whitespace after the New_Line is 
not
+            --  given a token.
+            --
+            --  If the first two tokens in Prev_Non_Grammar are both New_Lines,
+            --  there is a blank line after the code line (and before any
+            --  comments); assume that is the edit point.
+            Insert_On_Blank_Line : constant Boolean := 
Prev_Aug.Non_Grammar.Length >= 2 and then
+              (Prev_Aug.Non_Grammar (Prev_Aug.Non_Grammar.First_Index).ID = 
Data.Descriptor.New_Line_ID and
+                 Prev_Aug.Non_Grammar (Prev_Aug.Non_Grammar.First_Index + 
1).ID = Data.Descriptor.New_Line_ID);
+
+            --  In Ada, 'end' is Insert_After except when Insert_On_Blank_Line 
is
+            --  True (see test/ada_mode-interactive_2.adb Record_1), so 
Insert_After
+            --  needs Insert_On_Blank_Line.
+         begin
+            Insert_After := Parse_Data_Type'Class (Data).Insert_After (Tree, 
Token, Insert_On_Blank_Line);
+
+            if Insert_After then
+               if Insert_On_Blank_Line then
+                  declare
+                     Prev_Non_Grammar : constant Non_Grammar_Token :=
+                       Prev_Aug.Non_Grammar (Prev_Aug.Non_Grammar.First_Index 
+ 1);
+                     --  The newline nominally after the inserted token.
+                  begin
+                     New_Aug.Byte_Region := (First | Last => 
Prev_Non_Grammar.Byte_Region.Last - 1);
+                     New_Aug.Char_Region := (First | Last => 
Prev_Non_Grammar.Char_Region.Last - 1);
+
+                     New_Aug.First  := True;
+                     New_Aug.Line   := Prev_Non_Grammar.Line;
+                     New_Aug.Column := Prev_Aug.Column + Ada.Text_IO.Count 
(Length (New_Aug.Char_Region)) - 1;
+
+                     New_Aug.First_Indent_Line := Prev_Non_Grammar.Line;
+                     New_Aug.Last_Indent_Line  := Prev_Non_Grammar.Line;
+
+                     for I in Prev_Aug.Non_Grammar.First_Index + 1 .. 
Prev_Aug.Non_Grammar.Last_Index loop
+                        New_Aug.Non_Grammar.Append (Prev_Aug.Non_Grammar (I));
+                     end loop;
+
+                     Prev_Aug.Non_Grammar.Set_First_Last
+                       (Prev_Aug.Non_Grammar.First_Index, 
Prev_Aug.Non_Grammar.First_Index);
+                  end;
+               else
+                  New_Aug.Byte_Region := (First | Last => 
Prev_Aug.Byte_Region.Last);
+                  New_Aug.Char_Region := (First | Last => 
Prev_Aug.Char_Region.Last);
+
+                  New_Aug.First  := False;
+                  New_Aug.Line   := Prev_Aug.Line;
+                  New_Aug.Column := Prev_Aug.Column + Ada.Text_IO.Count 
(Length (Prev_Aug.Char_Region)) - 1;
+
+                  New_Aug.First_Indent_Line := Invalid_Line_Number;
+                  New_Aug.Last_Indent_Line  := Invalid_Line_Number;
+
+                  New_Aug.Non_Grammar  := Prev_Aug.Non_Grammar;
+                  Prev_Aug.Non_Grammar := 
Non_Grammar_Token_Arrays.Empty_Vector;
+
+               end if;
+
+               New_Aug.First_Trailing_Comment_Line := 
Prev_Aug.First_Trailing_Comment_Line;
+               New_Aug.Last_Trailing_Comment_Line  := 
Prev_Aug.Last_Trailing_Comment_Line;
+
+               Prev_Aug.First_Trailing_Comment_Line := Invalid_Line_Number;
+               Prev_Aug.Last_Trailing_Comment_Line  := Invalid_Line_Number;
+            end if;
+         end;
+      end if;
+
+      if New_Aug.First and not Insert_After then
+         Before_Aug.First             := False;
+         Before_Aug.First_Indent_Line := Invalid_Line_Number;
+         Before_Aug.Last_Indent_Line  := Invalid_Line_Number;
+      end if;
+
+      if New_Aug.ID = Data.Left_Paren_ID then
+         Adjust_Paren_State (Data, Tree, Before_Index, New_Aug.Line + 1, +1);
+
+      elsif New_Aug.ID = Data.Right_Paren_ID then
+         Adjust_Paren_State (Data, Tree, Before_Index, New_Aug.Line + 1, -1);
+      end if;
+   end Insert_Token;
+
+   overriding
    procedure Delete_Token
      (Data                : in out Parse_Data_Type;
+      Tree                : in out Syntax_Trees.Tree'Class;
       Deleted_Token_Index : in     WisiToken.Token_Index)
    is
       use all type Ada.Containers.Count_Type;
-      Deleted_Token    : Augmented_Token renames Data.Terminals 
(Deleted_Token_Index);
+      Deleted_Token    : Augmented_Token renames Get_Aug_Token_Var (Data, 
Tree, Deleted_Token_Index);
       Prev_Token_Index : Base_Token_Index := Deleted_Token_Index - 1;
       Next_Token_Index : Base_Token_Index := Deleted_Token_Index + 1;
    begin
@@ -799,7 +1007,7 @@ package body Wisi is
 
          loop
             exit when Prev_Token_Index = Base_Token_Index'First;
-            exit when Data.Terminals (Prev_Token_Index).Deleted = False;
+            exit when Get_Aug_Token_Const (Data, Tree, 
Prev_Token_Index).Deleted = False;
             Prev_Token_Index := Prev_Token_Index - 1;
          end loop;
 
@@ -808,7 +1016,7 @@ package body Wisi is
             Data.Leading_Non_Grammar.Append (Deleted_Token.Non_Grammar);
          else
             declare
-               Prev_Token : Augmented_Token renames Data.Terminals 
(Prev_Token_Index);
+               Prev_Token : Augmented_Token renames Get_Aug_Token_Var (Data, 
Tree, Prev_Token_Index);
             begin
                Prev_Token.Non_Grammar.Append (Deleted_Token.Non_Grammar);
 
@@ -824,20 +1032,20 @@ package body Wisi is
 
       --  Data.Terminals.Last_Index is Wisi_EOI; it is never deleted
       loop
-         exit when Data.Terminals (Next_Token_Index).Deleted = False;
+         exit when Get_Aug_Token_Const (Data, Tree, Next_Token_Index).Deleted 
= False;
          Next_Token_Index := Next_Token_Index + 1;
          exit when Next_Token_Index = Data.Terminals.Last_Index;
       end loop;
 
       if Deleted_Token.First and
         (Next_Token_Index = Data.Terminals.Last_Index or else
-           Data.Terminals (Next_Token_Index).Line > Deleted_Token.Line)
+           Get_Aug_Token_Const (Data, Tree, Next_Token_Index).Line > 
Deleted_Token.Line)
       then
          --  Deleted_Token.Line is now blank; add to previous token non
          --  grammar.
          if Prev_Token_Index > Base_Token_Index'First then
             declare
-               Prev_Token : Augmented_Token renames Data.Terminals 
(Prev_Token_Index);
+               Prev_Token : Augmented_Token renames Get_Aug_Token_Var (Data, 
Tree, Prev_Token_Index);
             begin
                if Prev_Token.First_Trailing_Comment_Line = Invalid_Line_Number 
then
                   Prev_Token.First_Trailing_Comment_Line := Deleted_Token.Line;
@@ -855,15 +1063,23 @@ package body Wisi is
       end if;
 
       if Deleted_Token.First and Next_Token_Index < Data.Terminals.Last_Index 
then
-         if not Data.Terminals (Next_Token_Index).First then
-            declare
-               Next_Token : Augmented_Token renames Data.Terminals 
(Next_Token_Index);
-            begin
+         declare
+            Next_Token : Augmented_Token renames Get_Aug_Token_Var (Data, 
Tree, Next_Token_Index);
+         begin
+            if not Next_Token.First then
                Next_Token.First             := True;
                Next_Token.First_Indent_Line := Deleted_Token.First_Indent_Line;
                Next_Token.Last_Indent_Line  := Deleted_Token.Last_Indent_Line;
-            end;
-         end if;
+            end if;
+         end;
+      end if;
+
+      if Deleted_Token.ID = Data.Left_Paren_ID then
+         Adjust_Paren_State (Data, Tree, Deleted_Token_Index + 1, 
Deleted_Token.Line + 1, -1);
+
+      elsif Deleted_Token.ID = Data.Right_Paren_ID then
+         Adjust_Paren_State (Data, Tree, Deleted_Token_Index + 1, 
Deleted_Token.Line + 1, +1);
+
       end if;
    end Delete_Token;
 
@@ -871,8 +1087,8 @@ package body Wisi is
    procedure Reduce
      (Data    : in out Parse_Data_Type;
       Tree    : in out Syntax_Trees.Tree'Class;
-      Nonterm : in     Syntax_Trees.Valid_Node_Index;
-      Tokens  : in     Syntax_Trees.Valid_Node_Index_Array)
+      Nonterm : in     Valid_Node_Index;
+      Tokens  : in     Valid_Node_Index_Array)
    is
       Aug_Nonterm : constant Augmented_Token_Access := new Augmented_Token'
         (ID          => Tree.ID (Nonterm),
@@ -885,73 +1101,70 @@ package body Wisi is
 
       for I in reverse Tokens'Range loop
          --  'reverse' to find token containing trailing comments; last
-         --  non-virtual and non-empty token.
-         if Tree.Byte_Region (Tokens (I)) /= Null_Buffer_Region then
-            --  Token not entirely virtual
-            declare
-               Aug_Token : constant Aug_Token_Ref := Get_Aug_Token (Data, 
Tree, Tokens (I));
-            begin
+         --  non-empty token.
+         declare
+            Aug_Token : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1 
(Tree, Tokens (I));
+         begin
 
-               if Data.Post_Parse_Action = Indent then
-                  if Aug_Token.First_Terminals_Index /= 
Augmented_Token_Arrays.No_Index then
-                     Aug_Nonterm.First_Terminals_Index := 
Aug_Token.First_Terminals_Index;
-                  end if;
+            if Data.Post_Parse_Action = Indent then
+               if Aug_Token.First_Terminals_Index /= Invalid_Token_Index then
+                  Aug_Nonterm.First_Terminals_Index := 
Aug_Token.First_Terminals_Index;
+               end if;
 
-                  if Aug_Nonterm.Last_Terminals_Index = 
Augmented_Token_Arrays.No_Index then
-                     Aug_Nonterm.Last_Terminals_Index := 
Aug_Token.Last_Terminals_Index;
-                  end if;
+               if Aug_Nonterm.Last_Terminals_Index = Invalid_Token_Index then
+                  Aug_Nonterm.Last_Terminals_Index := 
Aug_Token.Last_Terminals_Index;
+               end if;
 
-                  Aug_Nonterm.First := Aug_Nonterm.First or Aug_Token.First;
+               Aug_Nonterm.First := Aug_Nonterm.First or Aug_Token.First;
 
-                  if Aug_Token.First_Indent_Line /= Invalid_Line_Number then
-                     Aug_Nonterm.First_Indent_Line := 
Aug_Token.First_Indent_Line;
-                  elsif Trailing_Comment_Done and 
Aug_Token.First_Trailing_Comment_Line /= Invalid_Line_Number then
-                     Aug_Nonterm.First_Indent_Line := 
Aug_Token.First_Trailing_Comment_Line;
-                  end if;
+               if Aug_Token.First_Indent_Line /= Invalid_Line_Number then
+                  Aug_Nonterm.First_Indent_Line := Aug_Token.First_Indent_Line;
+               elsif Trailing_Comment_Done and 
Aug_Token.First_Trailing_Comment_Line /= Invalid_Line_Number then
+                  Aug_Nonterm.First_Indent_Line := 
Aug_Token.First_Trailing_Comment_Line;
+               end if;
 
-                  if Aug_Nonterm.Last_Indent_Line = Invalid_Line_Number then
-                     if Trailing_Comment_Done and 
Aug_Token.Last_Trailing_Comment_Line /= Invalid_Line_Number then
-                        Aug_Nonterm.Last_Indent_Line := 
Aug_Token.Last_Trailing_Comment_Line;
-                     elsif Aug_Token.Last_Indent_Line /= Invalid_Line_Number 
then
-                        Aug_Nonterm.Last_Indent_Line := 
Aug_Token.Last_Indent_Line;
-                     end if;
+               if Aug_Nonterm.Last_Indent_Line = Invalid_Line_Number then
+                  if Trailing_Comment_Done and 
Aug_Token.Last_Trailing_Comment_Line /= Invalid_Line_Number then
+                     Aug_Nonterm.Last_Indent_Line := 
Aug_Token.Last_Trailing_Comment_Line;
+                  elsif Aug_Token.Last_Indent_Line /= Invalid_Line_Number then
+                     Aug_Nonterm.Last_Indent_Line := 
Aug_Token.Last_Indent_Line;
                   end if;
+               end if;
 
-                  if not Trailing_Comment_Done then
-                     Aug_Nonterm.First_Trailing_Comment_Line := 
Aug_Token.First_Trailing_Comment_Line;
-                     Aug_Nonterm.Last_Trailing_Comment_Line  := 
Aug_Token.Last_Trailing_Comment_Line;
-                     Trailing_Comment_Done := True;
-                  end if;
+               if not Trailing_Comment_Done then
+                  Aug_Nonterm.First_Trailing_Comment_Line := 
Aug_Token.First_Trailing_Comment_Line;
+                  Aug_Nonterm.Last_Trailing_Comment_Line  := 
Aug_Token.Last_Trailing_Comment_Line;
+                  Trailing_Comment_Done := True;
+               end if;
 
-               end if; --  Compute_Indent
+            end if; --  Compute_Indent
 
-               if Aug_Token.Line /= Invalid_Line_Number then
-                  Aug_Nonterm.Line   := Aug_Token.Line;
-                  Aug_Nonterm.Column := Aug_Token.Column;
-               end if;
+            if Aug_Token.Line /= Invalid_Line_Number then
+               Aug_Nonterm.Line   := Aug_Token.Line;
+               Aug_Nonterm.Column := Aug_Token.Column;
+            end if;
 
-               if Aug_Nonterm.Char_Region.First > Aug_Token.Char_Region.First 
then
-                  Aug_Nonterm.Char_Region.First := Aug_Token.Char_Region.First;
-               end if;
+            if Aug_Nonterm.Char_Region.First > Aug_Token.Char_Region.First then
+               Aug_Nonterm.Char_Region.First := Aug_Token.Char_Region.First;
+            end if;
 
-               if Aug_Nonterm.Char_Region.Last < Aug_Token.Char_Region.Last 
then
-                  Aug_Nonterm.Char_Region.Last := Aug_Token.Char_Region.Last;
-               end if;
+            if Aug_Nonterm.Char_Region.Last < Aug_Token.Char_Region.Last then
+               Aug_Nonterm.Char_Region.Last := Aug_Token.Char_Region.Last;
+            end if;
 
-               Aug_Nonterm.Paren_State := Aug_Token.Paren_State;
-            end;
-         end if; -- Aug_Token not virtual
+            Aug_Nonterm.Paren_State := Aug_Token.Paren_State;
+         end;
       end loop;
    end Reduce;
 
    procedure Statement_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;
+      Nonterm : in     Valid_Node_Index;
+      Tokens  : in     Valid_Node_Index_Array;
       Params  : in     Statement_Param_Array)
    is
-      Nonterm_Tok        : constant Aug_Token_Ref := Get_Aug_Token (Data, 
Tree, Nonterm);
+      Nonterm_Tok        : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1 
(Tree, Nonterm);
       First_Item         : Boolean                := True;
       Start_Set          : Boolean                := False;
       Override_Start_Set : Boolean                := False;
@@ -971,11 +1184,12 @@ package body Wisi is
          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
-                    Tree.Label (Tokens (Pair.Index)) = 
WisiToken.Syntax_Trees.Nonterm
-                  then To_Aug_Token_Ref (Data.Terminals 
(Tree.Max_Terminal_Index (Tokens (Pair.Index))))
-                  else Get_Aug_Token (Data, Tree, Tokens (Pair.Index)));
+               Token  : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1
+                 (Tree,
+                  (if Pair.Class = Statement_End and then
+                     Tree.Label (Tokens (Pair.Index)) = 
WisiToken.Syntax_Trees.Nonterm
+                   then Tree.Last_Terminal (Tokens (Pair.Index))
+                   else Tokens (Pair.Index)));
 
                Cache_Pos : constant Buffer_Pos         := 
Token.Char_Region.First;
                Cursor    : Navigate_Cache_Trees.Cursor := 
Navigate_Cache_Trees.Find
@@ -1062,15 +1276,15 @@ package body Wisi is
    procedure Name_Action
      (Data    : in out Parse_Data_Type;
       Tree    : in     WisiToken.Syntax_Trees.Tree;
-      Nonterm : in     Syntax_Trees.Valid_Node_Index;
-      Tokens  : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array;
+      Nonterm : in     Valid_Node_Index;
+      Tokens  : in     WisiToken.Valid_Node_Index_Array;
       Name    : in     WisiToken.Positive_Index_Type)
    is
       use all type WisiToken.Syntax_Trees.Node_Label;
    begin
       if not (Name in Tokens'Range) then
          declare
-            Token : constant Aug_Token_Ref := Get_Aug_Token (Data, Tree, 
Tokens (Tokens'First));
+            Token : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1 (Tree, 
Tokens (Tokens'First));
          begin
             raise Fatal_Error with Error_Message
               (File_Name => Data.Lexer.File_Name,
@@ -1078,7 +1292,7 @@ package body Wisi is
                Column    => Token.Column,
                Message   => "wisi-name-action: " & Trimmed_Image 
(Tree.Production_ID (Nonterm)) & " name (" &
                  Trimmed_Image (Name) & ") not in Tokens range (" & 
SAL.Peek_Type'Image (Tokens'First) & " .." &
-                    SAL.Peek_Type'Image (Tokens'Last) & "); bad grammar 
action.");
+                 SAL.Peek_Type'Image (Tokens'Last) & "); bad grammar action.");
          end;
       end if;
 
@@ -1088,7 +1302,7 @@ package body Wisi is
 
       declare
          use Name_Cache_Trees;
-         Name_Token : constant Aug_Token_Ref           := Get_Aug_Token (Data, 
Tree, Tokens (Name));
+         Name_Token : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1 (Tree, 
Tokens (Name));
          Cursor     : constant Name_Cache_Trees.Cursor := Find
            (Data.Name_Caches.Iterate, Name_Token.Char_Region.First,
             Direction => Name_Cache_Trees.Unknown);
@@ -1110,8 +1324,8 @@ package body Wisi is
    procedure Motion_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;
+      Nonterm : in     Valid_Node_Index;
+      Tokens  : in     Valid_Node_Index_Array;
       Params  : in     Motion_Param_Array)
    is
       use Navigate_Cache_Trees;
@@ -1130,7 +1344,7 @@ package body Wisi is
          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));
+               Token  : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1 
(Tree, Tokens (Param.Index));
                Region : constant Buffer_Region := Token.Char_Region;
                Skip   : Boolean                := False;
             begin
@@ -1221,8 +1435,8 @@ package body Wisi is
    procedure Face_Apply_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;
+      Nonterm : in     Valid_Node_Index;
+      Tokens  : in     Valid_Node_Index_Array;
       Params  : in     Face_Apply_Param_Array)
    is
       pragma Unreferenced (Nonterm);
@@ -1236,7 +1450,7 @@ package body Wisi is
       for Param of Params loop
          if Tree.Byte_Region (Tokens (Param.Index)) /= Null_Buffer_Region then
             declare
-               Token : constant Aug_Token_Ref := Get_Aug_Token (Data, Tree, 
Tokens (Param.Index));
+               Token : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1 
(Tree, Tokens (Param.Index));
             begin
                Cache_Cur := Find (Iter, Token.Char_Region.First, Direction => 
Ascending);
                if Has_Element (Cache_Cur) then
@@ -1276,8 +1490,8 @@ package body Wisi is
    procedure Face_Apply_List_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;
+      Nonterm : in     Valid_Node_Index;
+      Tokens  : in     Valid_Node_Index_Array;
       Params  : in     Face_Apply_Param_Array)
    is
       pragma Unreferenced (Nonterm);
@@ -1289,7 +1503,7 @@ package body Wisi is
       for Param of Params loop
          if Tree.Byte_Region (Tokens (Param.Index)) /= Null_Buffer_Region then
             declare
-               Token : constant Aug_Token_Ref := Get_Aug_Token (Data, Tree, 
Tokens (Param.Index));
+               Token : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1 
(Tree, Tokens (Param.Index));
             begin
                Cache_Cur := Find_In_Range (Iter, Ascending, 
Token.Char_Region.First, Token.Char_Region.Last);
                loop
@@ -1316,8 +1530,8 @@ package body Wisi is
    procedure Face_Mark_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;
+      Nonterm : in     Valid_Node_Index;
+      Tokens  : in     Valid_Node_Index_Array;
       Params  : in     Face_Mark_Param_Array)
    is
       pragma Unreferenced (Nonterm);
@@ -1330,7 +1544,7 @@ package body Wisi is
       for Param of Params loop
          if Tree.Byte_Region (Tokens (Param.Index)) /= Null_Buffer_Region then
             declare
-               Token : constant Aug_Token_Ref := Get_Aug_Token (Data, Tree, 
Tokens (Param.Index));
+               Token : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1 
(Tree, Tokens (Param.Index));
             begin
                Cache_Cur := Find (Iter, Token.Char_Region.First, Direction => 
Ascending);
                if Has_Element (Cache_Cur) then
@@ -1362,8 +1576,8 @@ package body Wisi is
    procedure Face_Remove_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;
+      Nonterm : in     Valid_Node_Index;
+      Tokens  : in     Valid_Node_Index_Array;
       Params  : in     Face_Remove_Param_Array)
    is
       pragma Unreferenced (Nonterm);
@@ -1376,7 +1590,7 @@ package body Wisi is
       for I of Params loop
          if Tree.Byte_Region (Tokens (I)) /= Null_Buffer_Region then
             declare
-               Token : constant Aug_Token_Ref := Get_Aug_Token (Data, Tree, 
Tokens (I));
+               Token : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1 
(Tree, Tokens (I));
             begin
                Cache_Cur := Find_In_Range (Iter, Ascending, 
Token.Char_Region.First, Token.Char_Region.Last);
                loop
@@ -1444,8 +1658,8 @@ package body Wisi is
    procedure Indent_Action_0
      (Data    : in out Parse_Data_Type'Class;
       Tree    : in     Syntax_Trees.Tree;
-      Nonterm : in     Syntax_Trees.Valid_Node_Index;
-      Tokens  : in     Syntax_Trees.Valid_Node_Index_Array;
+      Nonterm : in     Valid_Node_Index;
+      Tokens  : in     Valid_Node_Index_Array;
       Params  : in     Indent_Param_Array)
    is begin
       if Trace_Action > Outline then
@@ -1453,14 +1667,14 @@ package body Wisi is
       end if;
 
       for I in Tokens'Range loop
-         if Tree.Byte_Region (Tokens (I)) /= Null_Buffer_Region and
+         if (Tree.Is_Virtual_Terminal (Tokens (I)) or
+               Tree.Byte_Region (Tokens (I)) /= Null_Buffer_Region) and
            I in Params'Range -- in some translated EBNF, not every token has 
an indent param
          then
             declare
-               use all type WisiToken.Syntax_Trees.Node_Index;
                use all type SAL.Base_Peek_Type;
-               Tree_Token        : constant Syntax_Trees.Valid_Node_Index := 
Tokens (I);
-               Token             : constant Aug_Token_Ref                 := 
Get_Aug_Token (Data, Tree, Tree_Token);
+               Tree_Token        : constant Valid_Node_Index := Tokens (I);
+               Token             : Aug_Token_Const_Ref renames 
Get_Aug_Token_Const_1 (Tree, Tree_Token);
                Pair              : Indent_Pair renames Params (I);
                Code_Delta        : Delta_Type;
                Comment_Param     : Indent_Param;
@@ -1476,7 +1690,7 @@ package body Wisi is
                   Code_Delta := Indent_Compute_Delta
                     (Data, Tree, Tokens, Pair.Code_Delta, Tree_Token, 
Indenting_Comment => False);
 
-                  Indent_Token_1 (Data, Token, Code_Delta, Indenting_Comment 
=> False);
+                  Indent_Token_1 (Data, Tree, Token, Code_Delta, 
Indenting_Comment => False);
                end if;
 
                if Token.First_Trailing_Comment_Line /= Invalid_Line_Number then
@@ -1494,7 +1708,7 @@ package body Wisi is
                      Comment_Delta := Indent_Compute_Delta
                        (Data, Tree, Tokens, Comment_Param, Tree_Token, 
Indenting_Comment => True);
 
-                     Indent_Token_1 (Data, Token, Comment_Delta, 
Indenting_Comment => True);
+                     Indent_Token_1 (Data, Tree, Token, Comment_Delta, 
Indenting_Comment => True);
                   end if;
                end if;
             end;
@@ -1505,28 +1719,30 @@ package body Wisi is
    procedure Indent_Action_1
      (Data    : in out Parse_Data_Type'Class;
       Tree    : in     Syntax_Trees.Tree;
-      Nonterm : in     Syntax_Trees.Valid_Node_Index;
-      Tokens  : in     Syntax_Trees.Valid_Node_Index_Array;
+      Nonterm : in     Valid_Node_Index;
+      Tokens  : in     Valid_Node_Index_Array;
       N       : in     Positive_Index_Type;
       Params  : in     Indent_Param_Array)
    is
       use all type Syntax_Trees.Node_Label;
    begin
       for I in Tokens'First .. N loop
-         if Tree.Label (Tokens (I)) /= Virtual_Terminal and then
-           Get_Aug_Token (Data, Tree, Tokens (I)).First
-         then
-            Indent_Action_0 (Data, Tree, Nonterm, Tokens, Params);
-            return;
-         end if;
+         declare
+            Aug : Aug_Token_Const_Ref renames Wisi.Get_Aug_Token_Const_1 
(Tree, Tokens (I));
+         begin
+            if Tree.Label (Tokens (I)) /= Virtual_Terminal and then Aug.First 
then
+               Indent_Action_0 (Data, Tree, Nonterm, Tokens, Params);
+               return;
+            end if;
+         end;
       end loop;
    end Indent_Action_1;
 
    function Indent_Hanging_1
      (Data              : in out Parse_Data_Type;
       Tree              : in     Syntax_Trees.Tree;
-      Tokens            : in     Syntax_Trees.Valid_Node_Index_Array;
-      Tree_Indenting    : in     Syntax_Trees.Valid_Node_Index;
+      Tokens            : in     Valid_Node_Index_Array;
+      Tree_Indenting    : in     Valid_Node_Index;
       Indenting_Comment : in     Boolean;
       Delta_1           : in     Simple_Indent_Param;
       Delta_2           : in     Simple_Indent_Param;
@@ -1534,7 +1750,7 @@ package body Wisi is
       Accumulate        : in     Boolean)
      return Delta_Type
    is
-      Indenting_Token : constant Aug_Token_Ref := Get_Aug_Token (Data, Tree, 
Tree_Indenting);
+      Indenting_Token : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1 
(Tree, Tree_Indenting);
    begin
       if Indenting_Comment then
          return Indent_Compute_Delta
@@ -1570,11 +1786,12 @@ package body Wisi is
    is
       use all type Ada.Containers.Count_Type;
 
-      Last_Term : constant Base_Token_Index := Parser.Tree.Max_Terminal_Index 
(Parser.Tree.Root);
+      Last_Term : constant Node_Index := Parser.Tree.Last_Terminal 
(Parser.Tree.Root);
 
       function Get_Last_Char_Pos return Buffer_Pos
       is begin
-         if Parser.Terminals.Length = 0 then
+
+         if Last_Term = Invalid_Node_Index then
             --  All comments, or empty
             if Data.Leading_Non_Grammar.Length > 0 then
                return Data.Leading_Non_Grammar 
(Data.Leading_Non_Grammar.Last_Index).Char_Region.Last;
@@ -1582,21 +1799,15 @@ package body Wisi is
                return Buffer_Pos'First;
             end if;
          else
-            if Last_Term = Invalid_Token_Index then
-               --  All grammar tokens inserted by recover
-               if Data.Leading_Non_Grammar.Length > 0 then
-                  return Data.Leading_Non_Grammar 
(Data.Leading_Non_Grammar.Last_Index).Char_Region.Last;
-               else
-                  return Buffer_Pos'First;
-               end if;
-            else
-               if Data.Terminals (Last_Term).Non_Grammar.Length > 0 then
-                  return Data.Terminals (Last_Term).Non_Grammar
-                    (Data.Terminals 
(Last_Term).Non_Grammar.Last_Index).Char_Region.Last;
+            declare
+               Aug : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1 
(Parser.Tree, Last_Term);
+            begin
+               if Aug.Non_Grammar.Length = 0 then
+                  return Aug.Char_Region.Last;
                else
-                  return Parser.Terminals (Last_Term).Char_Region.Last;
+                  return Aug.Non_Grammar 
(Aug.Non_Grammar.Last_Index).Char_Region.Last;
                end if;
-            end if;
+            end;
          end if;
       end Get_Last_Char_Pos;
 
@@ -1604,11 +1815,11 @@ package body Wisi is
 
       function Get_Last_Line return Line_Number_Type
       is begin
-         for I in Data.Line_Begin_Pos.First_Index .. 
Data.Line_Begin_Pos.Last_Index loop
-            if Data.Line_Begin_Pos (I) = Invalid_Buffer_Pos then
+         for I in Data.Line_Begin_Char_Pos.First_Index .. 
Data.Line_Begin_Char_Pos.Last_Index loop
+            if Data.Line_Begin_Char_Pos (I) = Invalid_Buffer_Pos then
                raise SAL.Programmer_Error with "line_begin_pos" & 
Line_Number_Type'Image (I) & " invalid";
             end if;
-            if Data.Line_Begin_Pos (I) > Last_Char_Pos then
+            if Data.Line_Begin_Char_Pos (I) > Last_Char_Pos then
                if I > Line_Number_Type'First then
                   return I - 1;
                else
@@ -1616,7 +1827,7 @@ package body Wisi is
                end if;
             end if;
          end loop;
-         return Data.Line_Begin_Pos.Last_Index;
+         return Data.Line_Begin_Char_Pos.Last_Index;
       end Get_Last_Line;
 
    begin
@@ -1694,7 +1905,7 @@ package body Wisi is
       use Ada.Text_IO;
       use Semantic_Checks;
 
-      function Safe_Pos (Node : in Syntax_Trees.Valid_Node_Index) return 
Buffer_Pos
+      function Safe_Pos (Node : in Valid_Node_Index) return Buffer_Pos
       is
          --  Return a reasonable position for the error at Node.
          --
@@ -1712,7 +1923,7 @@ package body Wisi is
          loop
             if Tree.Label (N) /= Virtual_Terminal then
                declare
-                  Ref : constant Aug_Token_Ref := Get_Aug_Token (Data, Tree, 
N);
+                  Ref : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1 
(Tree, N);
                begin
                   if Ref.Char_Region /= Null_Buffer_Region then
                      return Ref.Element.Char_Region.First;
@@ -1758,7 +1969,7 @@ package body Wisi is
                   when Ok => "",
                   when Error =>
                      Buffer_Pos'Image (Safe_Pos 
(Item.Check_Status.Begin_Name)) &
-                     Buffer_Pos'Image (Safe_Pos (Item.Check_Status.End_Name)) &
+                       Buffer_Pos'Image (Safe_Pos 
(Item.Check_Status.End_Name)) &
                        " ""block name error""]"));
 
          when Parse.LR.Message =>
@@ -1768,7 +1979,7 @@ package body Wisi is
          end case;
 
          if Item.Recover.Stack.Depth > 0 then
-            Put (Item.Recover, Data.Terminals, Data.Descriptor.all, 
Data.Embedded_Quote_Escape_Doubled);
+            Put (Item.Recover, Data, Tree);
          end if;
       end loop;
    end Put;
@@ -1810,24 +2021,9 @@ package body Wisi is
       Offset       : in Integer)
      return Integer
    is begin
-      return Offset + Integer (Anchor_Token.Char_Region.First - 
Data.Line_Begin_Pos (Anchor_Token.Line));
+      return Offset + Integer (Anchor_Token.Char_Region.First - 
Data.Line_Begin_Char_Pos (Anchor_Token.Line));
    end Current_Indent_Offset;
 
-   function Find
-     (Data  : in Parse_Data_Type;
-      ID    : in Token_ID;
-      Token : in Augmented_Token'Class)
-     return Base_Token_Index
-   is begin
-      --  linear search for ID.
-      for I in Token.First_Terminals_Index .. Token.Last_Terminals_Index loop
-         if Data.Terminals (I).ID = ID then
-            return I;
-         end if;
-      end loop;
-      return Augmented_Token_Arrays.No_Index;
-   end Find;
-
    function First_Line
      (Token             : in Augmented_Token;
       Indenting_Comment : in Boolean)
@@ -1844,26 +2040,44 @@ package body Wisi is
             else Token.First_Indent_Line));
    end First_Line;
 
-   function Get_Aug_Token
-     (Data       : in Parse_Data_Type'Class;
-      Tree       : in Syntax_Trees.Tree'Class;
-      Tree_Index : in Syntax_Trees.Valid_Node_Index)
-     return Aug_Token_Ref
-   is
-      use all type Syntax_Trees.Node_Label;
-   begin
-      return
-        (case Tree.Label (Tree_Index) is
-         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 => To_Aug_Token_Ref (Tree.Augmented (Tree_Index)));
-   end Get_Aug_Token;
+   function Get_Aug_Token_Const_1
+     (Tree       : in Syntax_Trees.Tree'Class;
+      Tree_Index : in Valid_Node_Index)
+     return Aug_Token_Const_Ref
+   is begin
+      return To_Aug_Token_Const_Ref (Tree.Augmented (Tree_Index));
+   end Get_Aug_Token_Const_1;
+
+   function Get_Aug_Token_Const
+     (Data  : in Parse_Data_Type;
+      Tree  : in WisiToken.Syntax_Trees.Tree'Class;
+      Token : in WisiToken.Token_Index)
+     return Aug_Token_Const_Ref
+   is begin
+      return Get_Aug_Token_Const_1 (Tree, Data.Terminals.all 
(Token).Tree_Index);
+   end Get_Aug_Token_Const;
+
+   function Get_Aug_Token_Var
+     (Tree       : in Syntax_Trees.Tree'Class;
+      Tree_Index : in Valid_Node_Index)
+     return Aug_Token_Var_Ref
+   is begin
+      return To_Aug_Token_Var_Ref (Tree.Augmented (Tree_Index));
+   end Get_Aug_Token_Var;
+
+   function Get_Aug_Token_Var
+     (Data  : in Parse_Data_Type;
+      Tree  : in WisiToken.Syntax_Trees.Tree'Class;
+      Token : in WisiToken.Token_Index)
+     return Aug_Token_Var_Ref
+   is begin
+      return Get_Aug_Token_Var (Tree, Data.Terminals.all (Token).Tree_Index);
+   end Get_Aug_Token_Var;
 
    function Get_Text
      (Data       : in Parse_Data_Type;
       Tree       : in WisiToken.Syntax_Trees.Tree;
-      Tree_Index : in WisiToken.Syntax_Trees.Valid_Node_Index)
+      Tree_Index : in WisiToken.Valid_Node_Index)
      return String
    is
       use all type Syntax_Trees.Node_Label;
@@ -1902,7 +2116,7 @@ package body Wisi is
    is
       ID_Image : constant String := Image (Item.ID, Descriptor);
    begin
-      if Item.Line /= Invalid_Line_Number and Trace_Action <= Detail then
+      if Item.Line /= Invalid_Line_Number then
          return "(" & ID_Image &
            Line_Number_Type'Image (Item.Line) & ":" & Trimmed_Image (Integer 
(Item.Column)) & ")";
 
@@ -1970,13 +2184,13 @@ package body Wisi is
    function Indent_Compute_Delta
      (Data              : in out Parse_Data_Type'Class;
       Tree              : in     Syntax_Trees.Tree;
-      Tokens            : in     Syntax_Trees.Valid_Node_Index_Array;
+      Tokens            : in     Valid_Node_Index_Array;
       Param             : in     Indent_Param;
-      Tree_Indenting    : in     Syntax_Trees.Valid_Node_Index;
+      Tree_Indenting    : in     Valid_Node_Index;
       Indenting_Comment : in     Boolean)
      return Delta_Type
    is
-      Indenting_Token : constant Aug_Token_Ref := Get_Aug_Token (Data, Tree, 
Tree_Indenting);
+      Indenting_Token : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1 
(Tree, Tree_Indenting);
    begin
       --  Evaluate wisi-anchored*, wisi-hanging*.
       case Param.Label is
@@ -1989,19 +2203,41 @@ package body Wisi is
             return (Simple, (Int, Param.Param.Int_Delta));
 
          when Anchored_Label =>
-            if Indenting_Token.Byte_Region = Null_Buffer_Region or
-              Tree.Byte_Region (Tokens (Param.Param.Anchored_Index)) = 
Null_Buffer_Region
-            then
-               --  One of these is an entirely virtual token
-               return Null_Delta;
-            else
-               declare
-                  Anchor_Token : constant Aug_Token_Ref := Get_Aug_Token
-                    (Data, Tree, Tokens (Param.Param.Anchored_Index));
-               begin
-                  case Anchored_Label'(Param.Param.Label) is
-                  when Anchored_0 =>
-                     --  [2] wisi-anchored
+            declare
+               Anchor_Token : Aug_Token_Const_Ref renames Get_Aug_Token_Const_1
+                 (Tree, Tokens (Param.Param.Anchored_Index));
+            begin
+               case Anchored_Label'(Param.Param.Label) is
+               when Anchored_0 =>
+                  --  [2] wisi-anchored
+                  return Indent_Anchored_2
+                    (Data,
+                     Anchor_Line => Anchor_Token.Line,
+                     Last_Line   => Indenting_Token.Last_Line 
(Indenting_Comment),
+                     Offset      => Current_Indent_Offset (Data, Anchor_Token, 
Param.Param.Anchored_Delta),
+                     Accumulate  => True);
+
+               when Anchored_1 =>
+                  --  [2] wisi-anchored%
+                  return Indent_Anchored_2
+                    (Data,
+                     Anchor_Line => Anchor_Token.Line,
+                     Last_Line   => Indenting_Token.Last_Line 
(Indenting_Comment),
+                     Offset      => Paren_In_Anchor_Line (Data, Tree, 
Anchor_Token, Param.Param.Anchored_Delta),
+                     Accumulate  => True);
+
+               when Anchored_2 =>
+                  --  [2] wisi-anchored%-
+                  return Indent_Anchored_2
+                    (Data,
+                     Anchor_Line => Anchor_Token.Line,
+                     Last_Line   => Indenting_Token.Last_Line 
(Indenting_Comment),
+                     Offset      => Paren_In_Anchor_Line (Data, Tree, 
Anchor_Token, Param.Param.Anchored_Delta),
+                     Accumulate  => False);
+
+               when Anchored_3 =>
+                  --  [2] wisi-anchored*
+                  if Indenting_Token.First then
                      return Indent_Anchored_2
                        (Data,
                         Anchor_Line => Anchor_Token.Line,
@@ -2009,50 +2245,21 @@ package body Wisi is
                         Offset      => Current_Indent_Offset (Data, 
Anchor_Token, Param.Param.Anchored_Delta),
                         Accumulate  => True);
 
-                  when Anchored_1 =>
-                     --  [2] wisi-anchored%
-                     return Indent_Anchored_2
-                       (Data,
-                        Anchor_Line => Anchor_Token.Line,
-                        Last_Line   => Indenting_Token.Last_Line 
(Indenting_Comment),
-                        Offset      => Paren_In_Anchor_Line (Data, 
Anchor_Token, Param.Param.Anchored_Delta),
-                        Accumulate  => True);
-
-                  when Anchored_2 =>
-                     --  [2] wisi-anchored%-
-                     return Indent_Anchored_2
-                       (Data,
-                        Anchor_Line => Anchor_Token.Line,
-                        Last_Line   => Indenting_Token.Last_Line 
(Indenting_Comment),
-                        Offset      => Paren_In_Anchor_Line (Data, 
Anchor_Token, Param.Param.Anchored_Delta),
-                        Accumulate  => False);
-
-                  when Anchored_3 =>
-                     --  [2] wisi-anchored*
-                     if Indenting_Token.First then
-                        return Indent_Anchored_2
-                          (Data,
-                           Anchor_Line => Anchor_Token.Line,
-                           Last_Line   => Indenting_Token.Last_Line 
(Indenting_Comment),
-                           Offset      => Current_Indent_Offset (Data, 
Anchor_Token, Param.Param.Anchored_Delta),
-                           Accumulate  => True);
-
-                     else
-                        return Null_Delta;
-                     end if;
+                  else
+                     return Null_Delta;
+                  end if;
 
-                  when Anchored_4 =>
-                     --  [2] wisi-anchored*-
-                     return Indent_Anchored_2
-                       (Data,
-                        Anchor_Line => Anchor_Token.Line,
-                        Last_Line   => Indenting_Token.Last_Line 
(Indenting_Comment),
-                        Offset      => Current_Indent_Offset (Data, 
Anchor_Token, Param.Param.Anchored_Delta),
-                        Accumulate  => False);
+               when Anchored_4 =>
+                  --  [2] wisi-anchored*-
+                  return Indent_Anchored_2
+                    (Data,
+                     Anchor_Line => Anchor_Token.Line,
+                     Last_Line   => Indenting_Token.Last_Line 
(Indenting_Comment),
+                     Offset      => Current_Indent_Offset (Data, Anchor_Token, 
Param.Param.Anchored_Delta),
+                     Accumulate  => False);
 
-                  end case;
-               end;
-            end if;
+               end case;
+            end;
 
          when Language =>
             return Param.Param.Function_Ptr
@@ -2087,6 +2294,7 @@ package body Wisi is
 
    procedure Indent_Token_1
      (Data              : in out Parse_Data_Type;
+      Tree              : in     Syntax_Trees.Tree;
       Indenting_Token   : in     Augmented_Token'Class;
       Delta_Indent      : in     Delta_Type;
       Indenting_Comment : in     Boolean)
@@ -2127,13 +2335,15 @@ package body Wisi is
                   end loop;
 
                   J := Data.Line_Begin_Token.all (I);
-                  if Line in Data.Terminals (J).First_Trailing_Comment_Line ..
-                    Data.Terminals (J).Last_Trailing_Comment_Line
-                  then
-                     return J;
-                  else
-                     return Invalid_Token_Index;
-                  end if;
+                  declare
+                     Aug : Augmented_Token renames Get_Aug_Token_Const (Data, 
Tree, J);
+                  begin
+                     if Line in Aug.First_Trailing_Comment_Line .. 
Aug.Last_Trailing_Comment_Line then
+                        return J;
+                     else
+                        return Invalid_Token_Index;
+                     end if;
+                  end;
                end Containing_Token;
 
                Indent     : Boolean                   := True;
@@ -2154,7 +2364,7 @@ package body Wisi is
                   end loop;
 
                elsif Containing /= Invalid_Token_Index then
-                  for Tok of Data.Terminals (Containing).Non_Grammar loop
+                  for Tok of Get_Aug_Token_Const (Data, Tree, 
Containing).Non_Grammar loop
                      if Tok.Line = Line and then
                        Tok.ID in Data.First_Comment_ID .. Data.Last_Comment_ID 
and then
                        Tok.Column = 0
diff --git a/packages/wisi/wisi.ads b/packages/wisi/wisi.ads
index f871888..db37e5d 100644
--- a/packages/wisi/wisi.ads
+++ b/packages/wisi/wisi.ads
@@ -35,10 +35,14 @@ with WisiToken.Syntax_Trees;
 package Wisi is
    use all type WisiToken.Base_Buffer_Pos;
 
+   function Image (Aug : in WisiToken.Base_Token_Class_Access; Descriptor : in 
WisiToken.Descriptor) return String;
+   --  For Syntax_Trees.Print_Tree
+
    type Post_Parse_Action_Type is (Navigate, Face, Indent);
 
    type Parse_Data_Type
-     (Line_Begin_Token : not null access constant 
WisiToken.Line_Begin_Token_Vectors.Vector)
+     (Terminals        : not null access constant 
WisiToken.Base_Token_Arrays.Vector;
+      Line_Begin_Token : not null access constant 
WisiToken.Line_Begin_Token_Vectors.Vector)
      is new WisiToken.Syntax_Trees.User_Data_Type with private;
 
    procedure Initialize
@@ -63,20 +67,28 @@ package Wisi is
    overriding
    procedure Lexer_To_Augmented
      (Data  : in out          Parse_Data_Type;
+      Tree  : in out          WisiToken.Syntax_Trees.Tree'Class;
       Token : in              WisiToken.Base_Token;
       Lexer : not null access WisiToken.Lexer.Instance'Class);
 
    overriding
+   procedure Insert_Token
+     (Data  : in out Parse_Data_Type;
+      Tree  : in out WisiToken.Syntax_Trees.Tree'Class;
+      Token : in     WisiToken.Valid_Node_Index);
+
+   overriding
    procedure Delete_Token
      (Data                : in out Parse_Data_Type;
+      Tree                : in out WisiToken.Syntax_Trees.Tree'Class;
       Deleted_Token_Index : in     WisiToken.Token_Index);
 
    overriding
    procedure Reduce
      (Data    : in out Parse_Data_Type;
       Tree    : in out WisiToken.Syntax_Trees.Tree'Class;
-      Nonterm : in     WisiToken.Syntax_Trees.Valid_Node_Index;
-      Tokens  : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
+      Nonterm : in     WisiToken.Valid_Node_Index;
+      Tokens  : in     WisiToken.Valid_Node_Index_Array);
 
    type Navigate_Class_Type is (Motion, Statement_End, Statement_Override, 
Statement_Start, Misc);
    --  Matches [1] wisi-class-list.
@@ -91,16 +103,16 @@ package Wisi is
    procedure Statement_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;
+      Nonterm : in     WisiToken.Valid_Node_Index;
+      Tokens  : in     WisiToken.Valid_Node_Index_Array;
       Params  : in     Statement_Param_Array);
    --  Implements [2] wisi-statement-action.
 
    procedure Name_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;
+      Nonterm : in     WisiToken.Valid_Node_Index;
+      Tokens  : in     WisiToken.Valid_Node_Index_Array;
       Name    : in     WisiToken.Positive_Index_Type);
    --  Implements [2] wisi-name-action.
 
@@ -127,8 +139,8 @@ package Wisi is
    procedure Motion_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;
+      Nonterm : in     WisiToken.Valid_Node_Index;
+      Tokens  : in     WisiToken.Valid_Node_Index_Array;
       Params  : in     Motion_Param_Array);
    --  Implements [2] wisi-motion-action.
 
@@ -143,16 +155,16 @@ package Wisi is
    procedure Face_Apply_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;
+      Nonterm : in     WisiToken.Valid_Node_Index;
+      Tokens  : in     WisiToken.Valid_Node_Index_Array;
       Params  : in     Face_Apply_Param_Array);
    --  Implements [2] wisi-face-apply-action.
 
    procedure Face_Apply_List_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;
+      Nonterm : in     WisiToken.Valid_Node_Index;
+      Tokens  : in     WisiToken.Valid_Node_Index_Array;
       Params  : in     Face_Apply_Param_Array);
    --  Implements [2] wisi-face-apply-list-action.
 
@@ -168,8 +180,8 @@ package Wisi is
    procedure Face_Mark_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;
+      Nonterm : in     WisiToken.Valid_Node_Index;
+      Tokens  : in     WisiToken.Valid_Node_Index_Array;
       Params  : in     Face_Mark_Param_Array);
    --  Implements [2] wisi-face-mark-action.
 
@@ -178,8 +190,8 @@ package Wisi is
    procedure Face_Remove_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;
+      Nonterm : in     WisiToken.Valid_Node_Index;
+      Tokens  : in     WisiToken.Valid_Node_Index_Array;
       Params  : in     Face_Remove_Param_Array);
    --  Implements [2] wisi-face-remove-action.
 
@@ -215,8 +227,8 @@ package Wisi is
    type Language_Indent_Function is access function
      (Data              : in out Parse_Data_Type'Class;
       Tree              : in     WisiToken.Syntax_Trees.Tree;
-      Tree_Tokens       : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array;
-      Tree_Indenting    : in     WisiToken.Syntax_Trees.Valid_Node_Index;
+      Tree_Tokens       : in     WisiToken.Valid_Node_Index_Array;
+      Tree_Indenting    : in     WisiToken.Valid_Node_Index;
       Indenting_Comment : in     Boolean;
       Args              : in     Indent_Arg_Arrays.Vector)
      return Delta_Type;
@@ -286,16 +298,16 @@ package Wisi is
    procedure Indent_Action_0
      (Data    : in out Parse_Data_Type'Class;
       Tree    : in     WisiToken.Syntax_Trees.Tree;
-      Nonterm : in     WisiToken.Syntax_Trees.Valid_Node_Index;
-      Tokens  : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array;
+      Nonterm : in     WisiToken.Valid_Node_Index;
+      Tokens  : in     WisiToken.Valid_Node_Index_Array;
       Params  : in     Indent_Param_Array);
    --  Implements [2] wisi-indent-action.
 
    procedure Indent_Action_1
      (Data    : in out Parse_Data_Type'Class;
       Tree    : in     WisiToken.Syntax_Trees.Tree;
-      Nonterm : in     WisiToken.Syntax_Trees.Valid_Node_Index;
-      Tokens  : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array;
+      Nonterm : in     WisiToken.Valid_Node_Index;
+      Tokens  : in     WisiToken.Valid_Node_Index_Array;
       N       : in     WisiToken.Positive_Index_Type;
       Params  : in     Indent_Param_Array);
    --  Implements [2] wisi-indent-action*.
@@ -303,8 +315,8 @@ package Wisi is
    function Indent_Hanging_1
      (Data              : in out Parse_Data_Type;
       Tree              : in     WisiToken.Syntax_Trees.Tree;
-      Tokens            : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array;
-      Tree_Indenting    : in     WisiToken.Syntax_Trees.Valid_Node_Index;
+      Tokens            : in     WisiToken.Valid_Node_Index_Array;
+      Tree_Indenting    : in     WisiToken.Valid_Node_Index;
       Indenting_Comment : in     Boolean;
       Delta_1           : in     Simple_Indent_Param;
       Delta_2           : in     Simple_Indent_Param;
@@ -377,8 +389,8 @@ private
       Paren_State : Integer := 0;
       --  Parenthesis nesting count, before token.
 
-      First_Terminals_Index : WisiToken.Base_Token_Index := 
WisiToken.Base_Token_Arrays.No_Index;
-      --  For virtual tokens, No_Index.
+      First_Terminals_Index : WisiToken.Base_Token_Index := 
WisiToken.Invalid_Token_Index;
+      --  For virtual tokens, Invalid_Token_Index
       --
       --  For terminal tokens, index of this token in Parser.Terminals.
       --
@@ -410,15 +422,25 @@ private
       --  For terminals, non-grammar tokens immediately following. For
       --  nonterminals, empty.
 
+      Inserted_Before : WisiToken.Valid_Node_Index_Arrays.Vector;
+      --  Tokens inserted before this token by error recovery.
+
    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
+
+   type Aug_Token_Const_Ref (Element : not null 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
+   function To_Aug_Token_Const_Ref (Item : in 
WisiToken.Base_Token_Class_Access) return Aug_Token_Const_Ref
      is (Element => Augmented_Token_Access_Constant (Item));
 
+   type Aug_Token_Var_Ref (Element : not null access Augmented_Token) is null 
record with
+     Implicit_Dereference => Element;
+
+   function To_Aug_Token_Var_Ref (Item : in WisiToken.Base_Token_Class_Access) 
return Aug_Token_Var_Ref
+     is (Element => Augmented_Token_Access (Item));
+
    overriding
    function Image
      (Item       : in Augmented_Token;
@@ -440,9 +462,12 @@ private
      (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
+   function To_Aug_Token_Const_Ref (Item : in 
Augmented_Token_Arrays.Constant_Reference_Type) return Aug_Token_Const_Ref
      is (Element => 
Augmented_Token_Access_Constant'(Item.Element.all'Unchecked_Access));
 
+   function To_Aug_Token_Var_Ref (Item : in 
Augmented_Token_Arrays.Variable_Reference_Type) return Aug_Token_Var_Ref
+     is (Element => 
Augmented_Token_Access'(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
@@ -523,7 +548,7 @@ private
 
       when Anchor_Int =>
          Anchor_Int_IDs    : Anchor_ID_Vectors.Vector; --  Largest ID first.
-         Anchor_Int_Indent : Integer;
+         Anchor_Int_Indent : Integer; --  Indent for this token.
 
       when Anchored =>
          Anchored_ID    : Positive;
@@ -543,7 +568,8 @@ private
      (Navigate_Cache_Trees.Cursor, Navigate_Cache_Trees."=");
 
    type Parse_Data_Type
-     (Line_Begin_Token : not null access constant 
WisiToken.Line_Begin_Token_Vectors.Vector)
+     (Terminals        : not null access constant 
WisiToken.Base_Token_Arrays.Vector;
+      Line_Begin_Token : not null access constant 
WisiToken.Line_Begin_Token_Vectors.Vector)
      is new WisiToken.Syntax_Trees.User_Data_Type with
    record
       --  Aux token info
@@ -556,20 +582,20 @@ private
 
       --  Data from parsing
 
-      Terminals : Augmented_Token_Arrays.Vector;
-      --  All terminal grammar tokens, in lexical order. Each contains any
-      --  immediately following non-grammar tokens. Does not contain
-      --  nonterminal or virtual tokens.
+      --  All Augmented_Tokens are stored in the syntax tree.
+      Last_Terminal_Node : WisiToken.Node_Index := 
WisiToken.Invalid_Node_Index;
 
       Leading_Non_Grammar : Non_Grammar_Token_Arrays.Vector;
       --  non-grammar tokens before first grammar token.
 
-      Line_Begin_Pos : Line_Begin_Pos_Vectors.Vector;
+      Line_Begin_Char_Pos : Line_Begin_Pos_Vectors.Vector;
       --  Character position at the start of the first token on each line.
+      --  Cached from Line_Begin_Token to simplify indent computations.
 
       Line_Paren_State : Line_Paren_Vectors.Vector;
       --  Parenthesis nesting state at the start of each line; used by
-      --  Indent. Set by Lexer_To_Augmented on New_Line_ID.
+      --  Indent. Set by Lexer_To_Augmented on New_Line_ID, updated by
+      --  Insert_Token, Delete_Token.
 
       Current_Paren_State : Integer;
       --  Current parenthesis nesting state; used by Indent. Set by
@@ -665,25 +691,43 @@ private
    --  Return offset from beginning of first token on line containing
    --  Anchor_Token, to beginning of Anchor_Token, plus Offset.
 
-   function Find
+   function Get_Aug_Token_Const_1
+     (Tree       : in WisiToken.Syntax_Trees.Tree'Class;
+      Tree_Index : in WisiToken.Valid_Node_Index)
+     return Aug_Token_Const_Ref;
+   --  WORKAROUND: GNAT Community 2019 can't do the overload resolution
+   --  between the two Get_Aug_Token_Const without an explicit renames,
+   --  so we add _1 to this one.
+
+   function Get_Aug_Token_Const
      (Data  : in Parse_Data_Type;
-      ID    : in WisiToken.Token_ID;
-      Token : in Augmented_Token'Class)
-     return WisiToken.Base_Token_Index;
-   --  Return index in Parser.Terminals of first token in
-   --  Token.Char_Region with ID. If not found, return
-   --  No_Index.
-
-   function Get_Aug_Token
-     (Data       : in Parse_Data_Type'Class;
-      Tree       : in WisiToken.Syntax_Trees.Tree'Class;
-      Tree_Index : in WisiToken.Syntax_Trees.Valid_Node_Index)
-     return Aug_Token_Ref;
+      Tree  : in WisiToken.Syntax_Trees.Tree'Class;
+      Token : in WisiToken.Token_Index)
+     return Aug_Token_Const_Ref;
+
+   function Get_Aug_Token_Var
+     (Tree       : in WisiToken.Syntax_Trees.Tree'Class;
+      Tree_Index : in WisiToken.Valid_Node_Index)
+     return Aug_Token_Var_Ref;
+
+   function Get_Aug_Token_Var
+     (Data  : in Parse_Data_Type;
+      Tree  : in WisiToken.Syntax_Trees.Tree'Class;
+      Token : in WisiToken.Token_Index)
+     return Aug_Token_Var_Ref;
+
+   --  function Get_First_Terminal
+   --    (Data  : in Parse_Data_Type;
+   --     Tree  : in WisiToken.Syntax_Trees.Tree'Class;
+   --     Token : in WisiToken.Token_Index)
+   --    return Aug_Token_Const_Ref;
+   --  Return Augmented for first Token.Inserted_Before, or if that is
+   --  empty, for Token.
 
    function Get_Text
      (Data       : in Parse_Data_Type;
       Tree       : in WisiToken.Syntax_Trees.Tree;
-      Tree_Index : in WisiToken.Syntax_Trees.Valid_Node_Index)
+      Tree_Index : in WisiToken.Valid_Node_Index)
      return String;
    --  Return text contained by Tree_Index token in source file
    --  (lexer.buffer).
@@ -702,14 +746,15 @@ private
    function Indent_Compute_Delta
      (Data              : in out Parse_Data_Type'Class;
       Tree              : in     WisiToken.Syntax_Trees.Tree;
-      Tokens            : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array;
+      Tokens            : in     WisiToken.Valid_Node_Index_Array;
       Param             : in     Indent_Param;
-      Tree_Indenting    : in     WisiToken.Syntax_Trees.Valid_Node_Index;
+      Tree_Indenting    : in     WisiToken.Valid_Node_Index;
       Indenting_Comment : in     Boolean)
      return Delta_Type;
 
    procedure Indent_Token_1
      (Data              : in out Parse_Data_Type;
+      Tree              : in     WisiToken.Syntax_Trees.Tree;
       Indenting_Token   : in     Augmented_Token'Class;
       Delta_Indent      : in     Delta_Type;
       Indenting_Comment : in     Boolean);
diff --git a/packages/wisi/wisi.el b/packages/wisi/wisi.el
index 6cdf2b5..7dce87b 100644
--- a/packages/wisi/wisi.el
+++ b/packages/wisi/wisi.el
@@ -7,7 +7,7 @@
 ;; Keywords: parser
 ;;  indentation
 ;;  navigation
-;; Version: 3.0.1
+;; Version: 3.1.0
 ;; package-requires: ((emacs "25.0") (seq "2.20"))
 ;; URL: http://stephe-leake.org/ada/wisitoken.html
 ;;
@@ -197,15 +197,9 @@ If PARSE-RESULT is non-nil, use it instead of calling 
`syntax-ppss'."
   ;; 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))
+  (forward-char -1)
+  (funcall indent-line-function)
+  (forward-char 1)
   (funcall indent-line-function))
 
 ;;;; token info cache
@@ -428,9 +422,11 @@ Truncate any region that overlaps POS."
   "Force a parse."
   (interactive)
   (syntax-ppss-flush-cache (point-min)) ;; necessary after edit during 
ediff-regions
-  (wisi-invalidate-cache 'indent (point-min))
-  (wisi-invalidate-cache 'face (point-min))
-  (wisi-invalidate-cache 'navigate (point-min))
+  (setq wisi--cached-regions ;; necessary instead of wisi-invalidate after 
ediff-regions
+       (list
+        (cons 'face nil)
+        (cons 'navigate nil)
+        (cons 'indent nil)))
   (wisi-set-parse-try t 'indent)
   (wisi-set-parse-try t 'face)
   (wisi-set-parse-try t 'navigate)
@@ -782,7 +778,9 @@ Usefull if the parser appears to be hung."
          (with-current-buffer wisi-error-buffer
            (setq buffer-read-only nil)
            (erase-buffer)
-           (setq buffer-read-only t))))
+           (setq buffer-read-only t)
+           (when (get-buffer-window wisi-error-buffer)
+             (delete-window (get-buffer-window wisi-error-buffer))))))
 
       (condition-case-unless-debug err
          (save-excursion
@@ -814,6 +812,8 @@ Usefull if the parser appears to be hung."
            nil))
         (setq wisi-parse-failed t)
         ;; parser should have stored this error message in parser-error-msgs
+        (when (> wisi-debug 0)
+          (signal (car err) (cdr err)))
         )
        (error
         ;; parser failed for other reason
@@ -1439,84 +1439,6 @@ If non-nil, only repair errors in BEG END region."
     ))
 
 ;;; xref integration
-(defconst wisi-xref-ident-regexp "\\([^<]*\\)\\(?:<\\([0-9]+\\)>\\)?"
-  "Match line number encoded into identifier by 
`wisi-xref-identifier-at-point'.")
-
-(defun wisi-xref-ident-make (identifier &optional other-function)
-  "Return an xref-item for IDENTIFIER."
-  (let* ((t-prop (get-text-property 0 'xref-identifier identifier))
-        ;; If t-prop is non-nil: identifier is from
-        ;; identifier-at-point, the desired location is the ’other’
-        ;; (spec/body).
-        ;;
-        ;; If t-prop is nil: identifier is from prompt/completion,
-        ;; the line number may be included in the identifier wrapped
-        ;; in <>, and the desired location is that line in the current
-        ;; file.
-        (ident
-         (if t-prop
-             (substring-no-properties identifier 0 nil)
-           (string-match wisi-xref-ident-regexp identifier)
-           (match-string 1 identifier)
-           ))
-        (file
-         (if t-prop
-             (plist-get t-prop ':file)
-           (buffer-file-name)))
-        (line
-         (if t-prop
-             (plist-get t-prop ':line)
-           (when (match-string 2 identifier)
-             (string-to-number (match-string 2 identifier)))))
-        (column
-         (if t-prop
-             (plist-get t-prop ':column)
-           0))
-        )
-
-    (if t-prop
-       (funcall other-function ident file line column)
-
-      (xref-make ident (xref-make-file-location file (or line 1) column))
-      )))
-
-(defun wisi-xref-item (identifier)
-  "Given IDENTIFIER, return an xref-item, with line, column nil if unknown.
-IDENTIFIER is from a user prompt with completion, or from
-`xref-backend-identifier-at-point'."
-  (let* ((t-prop (get-text-property 0 'xref-identifier identifier))
-        ;; If t-prop is non-nil: identifier is from
-        ;; identifier-at-point.
-        ;;
-        ;; If t-prop is nil: identifier is from prompt/completion,
-        ;; the line number may be included in the identifier
-        ;; wrapped in <>.
-        (ident
-         (if t-prop
-             (substring-no-properties identifier 0 nil)
-           (string-match wisi-xref-ident-regexp identifier)
-           (match-string 1 identifier)
-           ))
-        (file
-         (if t-prop
-             (plist-get t-prop ':file)
-           (buffer-file-name)))
-        (line
-         (if t-prop
-             (plist-get t-prop ':line)
-           (when (match-string 2 identifier)
-             (string-to-number (match-string 2 identifier)))))
-        (column
-         (when t-prop
-           (plist-get t-prop ':column)))
-        )
-
-    (unless (file-name-absolute-p file)
-      (setq file (locate-file file compilation-search-path)))
-
-    (let ((eieio-skip-typecheck t)) ;; allow line, column nil.
-      (xref-make ident (xref-make-file-location file line column)))
-    ))
 
 (defun wisi-xref-identifier-at-point ()
   (let ((ident (thing-at-point 'symbol)))
@@ -1524,9 +1446,9 @@ IDENTIFIER is from a user prompt with completion, or from
       (put-text-property
        0 1
        'xref-identifier
-       (list ':file (buffer-file-name)
-            ':line (line-number-at-pos)
-            ':column (current-column))
+       (list :file (buffer-file-name)
+            :line (line-number-at-pos)
+            :column (current-column))
        ident)
       ident)))
 
@@ -1558,9 +1480,14 @@ IDENTIFIER is from a user prompt with completion, or from
   (let ((region (wisi-prev-name-region)))
     (buffer-substring-no-properties (car region) (cdr region))))
 
-(defun wisi-names (append-lines)
+(defconst wisi-names-regexp "\\([^<]*\\)<\\([0-9]+\\)>"
+  "Match line number encoded into identifier by `wisi-names'.")
+
+(defun wisi-names (append-lines alist)
   "List of names; each is text from one 'wisi-name property in current buffer.
-If APPEND-LINES is non-nil, each has the line number it occurs on appended."
+If APPEND-LINES is non-nil, each name has the line number it
+occurs on appended. If ALIST is non-nil, the result is an alist
+where the car is a list (FILE LINE COL)."
   (when wisi--parser
     ;; wisi--parser is nil in a non-language buffer, like Makefile
     (wisi-validate-cache (point-min) (point-max) t 'navigate)
@@ -1573,13 +1500,19 @@ If APPEND-LINES is non-nil, each has the line number it 
occurs on appended."
        ;; number in the identifier string. This also serves to
        ;; disambiguate overloaded identifiers in the user interface.
        (setq end-pos (next-single-property-change pos 'wisi-name))
-       (push
-        (if append-lines
-            (format "%s<%d>"
-                    (buffer-substring-no-properties pos end-pos)
-                    (line-number-at-pos pos))
-          (buffer-substring-no-properties pos end-pos))
-        table)
+       (let* ((line (line-number-at-pos pos))
+              (summary
+               (if append-lines
+                   (format "%s<%d>"
+                           (buffer-substring-no-properties pos end-pos)
+                           line)
+                 (buffer-substring-no-properties pos end-pos))))
+         (if alist
+             (save-excursion
+               (goto-char pos)
+               (push (cons summary (list (buffer-file-name) line 
(current-column)))
+                     table))
+           (push summary table)))
        (setq pos end-pos)
        )
       table)))
@@ -1758,7 +1691,6 @@ If APPEND-LINES is non-nil, each has the line number it 
occurs on appended."
         (cons 'navigate nil)
         (cons 'indent nil)))
 
-  ;; file local variables may have modified wisi-indent-calculate-functions
   (setq wisi-indent-calculate-functions (append 
wisi-indent-calculate-functions indent-calculate))
   (set (make-local-variable 'indent-line-function) #'wisi-indent-line)
   (set (make-local-variable 'indent-region-function) #'wisi-indent-region)
@@ -1773,6 +1705,8 @@ If APPEND-LINES is non-nil, each has the line number it 
occurs on appended."
 
   (set (make-local-variable 'comment-indent-function) 'wisi-comment-indent)
 
+  (add-hook 'completion-at-point-functions #'wisi-completion-at-point -90 t)
+
   (add-hook 'hack-local-variables-hook 'wisi-post-local-vars nil t)
   )
 
diff --git a/packages/wisi/wisi.info b/packages/wisi/wisi.info
new file mode 100644
index 0000000..e338347
--- /dev/null
+++ b/packages/wisi/wisi.info
@@ -0,0 +1,1294 @@
+This is wisi.info, produced by makeinfo version 6.7 from wisi.texi.
+
+Copyright (C) 1999 - 2020 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."
+INFO-DIR-SECTION Emacs
+START-INFO-DIR-ENTRY
+* Wisi: (wisi).         Error-correcting LR parsers and project integration.
+END-INFO-DIR-ENTRY
+
+
+File: wisi.info,  Node: Top,  Next: Overview,  Up: (dir)
+
+Top
+***
+
+Wisi Version 3.1.0
+
+* Menu:
+
+* Overview::
+* Grammar actions::
+* Project extension::
+* GNU Free Documentation License::
+* Index::
+
+
+File: wisi.info,  Node: Overview,  Next: Grammar actions,  Prev: Top,  Up: Top
+
+1 Overview
+**********
+
+"wisi" used to be an acronym, but now it's just a name.
+
+   The wisi package provides an elisp interface to an external parser.
+It assumes the parser generator package WisiToken
+(<http://stephe-leake.org/ada/wisitoken.html>, implemented in Ada), but
+can use any parser that meets the same API. wisi provides several
+grammar actions, to implement indentation, navigating, and syntax
+highlighting (fontification).
+
+   wisi also provides an extension to Emacs 'project.el', providing
+operations useful for compilation and cross-reference.
+
+
+File: wisi.info,  Node: Grammar actions,  Next: Project extension,  Prev: 
Overview,  Up: Top
+
+2 Grammar Actions
+*****************
+
+Grammar actions are specified in the grammar file, in a nonterminal
+declaration.  We assume the user is familiar with parser grammars and
+grammar actions.  For example, a simple "if" statement can be declared
+as:
+
+     if_statement
+       : IF expression THEN statements elsif_list ELSE statements END IF 
SEMICOLON
+         %((wisi-statement-action [1 statement-start 3 motion 6 motion 10 
statement-end])
+           (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]))%
+
+   The item before ':' is the "left hand side", or "nonterminal".  The
+list of tokens after ':' is the "right hand side"; in general there can
+be more than one right hand side for each nonterminal (separated by
+'|').
+
+   The items enclosed in "%()%" are the grammar actions.  They are
+specified as list of elisp forms; an earlier version of the wisi package
+generated an elisp parser.  We keep the elisp form because it is
+compact, and easier to read and write than the equivalent Ada code.  The
+'wisi-bnf-generate' tool converts the elisp into the required Ada
+statements.
+
+   There are two classes of actions; in-parse and post-parse.  WisiToken
+calls these "semantic checks" and "user actions".  The in-parse actions
+are done as parsing procedes; they provide extra checks that can cause
+the parse to fail.  Currently the only one provided is 'match-names'; it
+is used to check that the declaration and end names in named Ada blocks
+are the same (which can aid significantly in error correction).  In the
+grammar file, in-parse actions are specified in a second '%()%' block,
+which can be omitted if empty.  In this document, the term "action"
+means "post-parse action", we use "in-parse action" unless the meaning
+is clear from context.
+
+   Executing the wisi grammar actions creates text properties in the
+source file; those text properties are then used by elisp code for
+various purposes.
+
+   The text properties applied are:
+
+'wisi-cache'
+     This should be named 'wisi-navigate', but isn't for historical
+     reasons (there used to be only one kind of text property).
+
+     The property contains a 'wisi-cache' object, containing:
+
+     'nonterm'
+          The nonterminal in the grammar production that specified the
+          action that produced this text property.
+
+     'token'
+          A token identifier naming a token in the production right hand
+          side containing the text this text property is applied to.
+
+     'last'
+          The position of the last character in the token, relative to
+          the first character (0 indexed).  The text property is only
+          applied to the first character in the token (mostly for
+          historical reasons).
+
+     'class'
+          A token class; see the list of possible values in
+          'wisi-statement-action' below.
+
+     'containing'
+          A marker pointing to the start of the containing token for
+          this token; only 'nil' for the outermost containing token in a
+          file.
+
+     'prev'
+          A marker pointing to the previous "motion token" in the
+          statement or declaration.  These are normally language
+          keywords, but can be other things.
+
+     'next'
+          A marker pointing to the next "motion token" in the statement
+          or declaration.
+
+     'end'
+          A marker pointing to the end of the statement or declaration.
+
+     wisi provides motion commands for going to the various markers.
+
+'wisi-name'
+     Contains no data, applied to a "name" of some sort.  wisi provides
+     commands for finding the next/previous name, and returning the
+     text.  Useful for the names of subprograms, which can then be used
+     to build a completion table; see
+     'wisi-xref-identifier-completion-table'.
+
+'font-lock-face'
+     The standard font-lock property, specifying the face for the text.
+
+     Some major modes do not use this for simple keywords; they use
+     font-lock regular expressions instead.  One reason for this is so
+     keywords are still highlighted when the parser fails, which can
+     happen if there are severe syntax errors.
+
+     Other items, like function and package names, are typically marked
+     with 'font-lock-face' by the parser.
+
+'fontified'
+     Another standard font-lock text property; applied whenever
+     'font-lock-face' is.
+
+'wisi-indent'
+     Contains the indent (in characters) for the next line; applied to
+     the newline character on the preceding line.  The first line in a
+     buffer is assumed to have indent 0.
+
+   Each action is classified as one of 'navigate, face, indent,
+in-parse'; when actions are executed, only one of the first three
+classes is executed (in-parse is always executed).  This reflects the
+reasons the parser is run; to figure out how to go somehere (end of
+current statement, start of current procedure, etc), to apply faces for
+syntax highlighting, or to indent the code.
+
+* Menu:
+
+* Navigate actions::
+* Face actions::
+* Indent actions::
+* In-parse actions::
+
+
+File: wisi.info,  Node: Navigate actions,  Next: Face actions,  Up: Grammar 
actions
+
+2.1 Navigate actions
+====================
+
+'wisi-statement-action [TOKEN CLASS ...]'
+     The argument is a vector; alternating items are a token index (an
+     integer or label indicating a token in the right hand side) and a
+     "token class"; one of:
+
+     'motion'
+          Create a 'wisi-cache' text property on the token, for use in a
+          subsequent 'wisi-motion-action'.
+
+     'statement-end'
+          Create a 'wisi-cache' text property on the token, enter a
+          pointer to it in the other 'wisi-cache' objects in the
+          statement or declaration.
+
+     'statement-start'
+          Create a 'wisi-cache' text property on the token, enter a
+          pointer to it in the other 'wisi-cache' objects (in the
+          'containing' slot) in the statement or declaration.
+
+     'statement-override'
+          Same as 'statement-start'; marks the token to be used as the
+          statement start if the first token is optional.
+
+     'misc'
+          Create a 'wisi-cache' text property on the token, to be used
+          for some other purpose.  It is good style to indicate the
+          purpose in a comment.
+
+          For example, ada-mode uses a 'misc' property on left
+          parentheses that start a subprogram parameter list; this
+          distinquishes them from other left parentheses, and makes it
+          possible to automatically call 'ada-format-paramlist' to
+          format the parameter list, instead of using the standard Emacs
+          'align'.
+
+'wisi-motion-action [TOKEN ...]'
+     The argument is a vector, where each element is either a token
+     index or a vector [INDEX ID].
+
+     Each terminal token must already have a 'wisi-cache' created by a
+     'wisi-statement-action' (this is checked at action execution, not
+     during grammar generation).  This action sets the 'prev, next'
+     slots for the chain of tokens, creating a chain of motion tokens.
+
+     If TOKEN is a nonterminal without an ID specified, the 'wisi-cache'
+     must be on the first token in the nonterminal, and it is assumed to
+     have a valid pointer in the 'next' slot, indicating a chain of
+     motion tokens.  That chain is linked into the chain for the current
+     right hand side.
+
+     If TOKEN is a nonterminal with an ID, the region contained by the
+     nonterminal is searched for all 'wisi-cache' with that token ID,
+     and for each one where prev/next is not already set, it is linked
+     into the motion chain.
+
+     Note that the "search" described here is done in the parser
+     process, on a tree data structure containing the data that will
+     eventually be stored in Emacs text properties.
+
+'wisi-name-action TOKEN'
+     TOKEN is a token index.  Create a 'wisi-name' text property on the
+     token.
+
+
+File: wisi.info,  Node: Face actions,  Next: Indent actions,  Prev: Navigate 
actions,  Up: Grammar actions
+
+2.2 Face actions
+================
+
+'wisi-face-mark-action [INDEX CLASS ...]'
+     The argument is a vector; alternating elements form pairs of INDEX
+     CLASS, where class is one of 'prefix, suffix'.
+
+     Mark the tokens as part of a compound name, for use by later face
+     actions.
+
+'wisi-face-apply-action [TOKEN PREFIX-FACE SUFFIX-FACE ...]'
+     The argument is a vector; triples of items specify TOKEN,
+     PREFIX-FACE, SUFFIX-FACE. The faces are the elisp names of face
+     objects (which must declared by an '%elisp_face' declaration).
+
+     If the token is a nonterminal, and it has been marked by a previous
+     'wisi-face-mark-action', the specified faces are applied to the
+     prefix and suffix in the token as 'font-lock-face' text properties.
+
+     If the token is a terminal, or a non-terminal with no face mark,
+     the suffix face is applied to the entire text contained by the
+     token.
+
+'wisi-face-apply-list-action [TOKEN PREFIX-FACE SUFFIX-FACE ...]'
+     Similar to ’wisi-face-apply-action’, but applies faces to all
+     tokens marked by 'wisi-face-mark-action' in each indicated
+     production token, and does not apply a face if there are no such
+     marks.
+
+
+File: wisi.info,  Node: Indent actions,  Next: In-parse actions,  Prev: Face 
actions,  Up: Grammar actions
+
+2.3 Indent actions
+==================
+
+Indents are computed for each line in a cumulative way as the grammar
+actions are executed.  Initially, each indent is set to 'nil', which
+means "not computed"; this is not the same as the value '0'.  The
+grammar actions are executed in a bottom-up fashion; low level
+productions are executed before higher level ones.  In general, the
+indent action for a production specifies a "delta indent"; the indent is
+incremented by that amount.  When all productions have been processed,
+the indent has been computed for all lines.
+
+   Indents are often given as a function call; the arguments to the
+function can be other function calls, or integer expressions.
+'wisitoken-bnf-generate' supports only simple integer expressions; those
+using integers, integer-valued variables, parenthesis, + (plus), -
+(minus), and * (multiply).
+
+'wisi-indent-action [INDENT ...]'
+     The argument is a vector, giving an indent for each token in the
+     production right-hand side.
+
+     For terminals, the indents only have meaning, and are only
+     computed, if the token is the first on a line.  For nonterminals
+     where the indent is not a variant of 'wisi-hanging', the indent is
+     only computed if the first terminal token in the nonterminal is the
+     first on a line.  See 'wisi-hanging' in *note Indent functions::
+     for the remaining case.
+
+     An indent can have several forms.  In the descriptions below, the
+     "current token" is given by the position of the indent expression
+     in the 'wisi-indent-action' argument list.
+
+     An integer
+          This gives a delta indent; it is added to the total indent for
+          the line.
+
+     A variable name
+          The name is translated to an Ada identifier by replacing "-"
+          with "_", and applying 'Camel_Case'.  The translated name must
+          identify a directly visible run-time Ada integer variable;
+          this is checked at Ada compile time.  It provides an integer
+          delta indent.
+
+          For example, in Ada two indent variable names are 'ada-indent'
+          and 'ada-indent-broken', giving the basic ident, and the
+          continuation line indent.  They are runtime variables so
+          different projects can specify them as part of a coding
+          standard.
+
+     A function call
+          A function that computes a delta indent.  See *note Indent
+          functions::.
+
+     [CODE-INDENT , COMMENT-INDENT]
+          A vector giving separate indents for code and comments.
+
+          Normally, the indent for trailing comments (on lines with no
+          code, after all code in the token) is given by the indent of
+          the following token in the production.  When the current token
+          is the last, or the following tokens may be empty, or the
+          indent of the following token would be wrong for some reason
+          (for example, it is a block end), the comment indent may be
+          specified separately.  If it is not specified, and the indent
+          from the next token is not available, the indent for the
+          current token is used for code and comments.
+
+          Comment lines that are not trailing are indented by
+          CODE-INDENT.
+
+     (label . INDENT)
+          If token labels are used in a right hand side, they must be
+          given explicitly in the indent arguments, using he lisp "cons"
+          syntax.  Labels are normally only used with EBNF grammars,
+          which expand into multiple right hand sides, with optional
+          tokens simply left out.  Explicit labels on the indent
+          arguments allow them to be left out as well.
+
+* Menu:
+
+* Indent functions::
+* Indent example::
+
+
+File: wisi.info,  Node: Indent functions,  Next: Indent example,  Up: Indent 
actions
+
+2.3.1 Indent functions
+----------------------
+
+'wisi-anchored TOKEN OFFSET'
+     Sets the indent for the current token to be OFFSET (an integer
+     expression) from the start of TOKEN (a token index); the current
+     token is "anchored to" TOKEN.
+
+'wisi-anchored* TOKEN OFFSET'
+     Sets the indent for the current token to be OFFSET from the start
+     of TOKEN, but only if TOKEN is the first token on a line; otherwise
+     no indent
+
+'wisi-anchored*- TOKEN OFFSET'
+     Sets the indent for the current token to be OFFSET from the start
+     of TOKEN, but only if TOKEN is the first token on a line and the
+     indent for the current token accumulated so far is nil.
+
+'wisi-anchored% TOKEN OFFSET'
+     If there is an opening parenthesis containing TOKEN in the line
+     containing TOKEN, set the current indent to OFFSET from that
+     parenthesis.  Otherwise, OFFSET gives an indent delta.
+
+'wisi-anchored%- TOKEN OFFSET'
+     Same as 'wisi-anchored%', but only if the current token accumulated
+     indent is nil.
+
+'wisi-hanging DELTA-1 DELTA-2'
+     The current token is assumed to be a nonterminal.  If the text it
+     contains spans multiple lines, use DELTA-1 for the first line,
+     DELTA-2 for the rest.  If the current token is only on one line,
+     use DELTA-1.
+
+     DELTA-1 and DELTA-2 can be any IDENT expression, except a variant
+     of 'wisi-hanging'.
+
+'wisi-hanging% DELTA-1 DELTA-2'
+     Similar to 'wisi-hanging'; if the first terminal token in the
+     current nonterminal is the first token on the first line, use
+     DELTA-1 for the first line and DELTA-2 for the rest.  Otherwise,
+     use DELTA-1 for all lines.
+
+'wisi-hanging%- DELTA-1 DELTA-2'
+     Same as 'wisi-hanging%', except applied only if the current token
+     accumulated indent is nil.
+
+'Language-specific function'
+     Language-specific indent functions are specified by an
+     '%elisp_indent' declaration in the grammar file.  Each function
+     specifies how many arguments it accepts; this is checked at action
+     runtime, not during grammar generation.  Each argument is an INDENT
+     as described above, or a token ID prefixed by ''' (to allow
+     distinguishing token IDs from variable names).
+
+
+File: wisi.info,  Node: Indent example,  Prev: Indent functions,  Up: Indent 
actions
+
+2.3.2 Indent example
+--------------------
+
+The example 'if_statement' grammar nonterminal is:
+
+     if_statement
+       : IF expression THEN statements elsif_list ELSE statements END IF 
SEMICOLON
+         %((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]))%
+
+   We trace how the indent is computed for this sample Ada code:
+
+      1: if A < B and
+      2:   C < D
+      3:   --  comment on expression
+      4: then
+      5:    if E then
+      6:       Do_E;
+      7:       -- comment on statement
+      8:    elsif F then
+      9:       G := A + Compute_Something
+     10:         (arg_1, arg_2);
+     11:    end if;
+     12: end if;
+
+   First, the indent for the lower-level nonterminals ('expression,
+statements, elsif_list') are computed.  Assume they set the indent for
+line 10 to 2 (for the hanging expression) and leave the rest at nil.
+
+   Next, the action for the inner 'if_statement' is executed.  Most of
+the tokens specify an indent of 'nil', which means the current
+accumulated indent is not changed.  For the others, the action is as
+follows:
+
+'expression:'
+     The expression 'E' is contained on one line, and it is not the
+     first token on that line, so the indent for line 5 is not changed.
+
+'statements: [ada-indent ada-indent]'
+     This specifies separate indents for code and trailing comments,
+     because otherwise the trailing comments would be indented with the
+     following 'THEN'; instead they are indented with the expression
+     code; see the comment on line 7.
+
+     Here 'ada-indent' is 3, so the indent for lines 6 and 7 (for the
+     first occurence of 'statments') is incremented from 'nil' to '3'.
+
+     For the second occurence of 'statements', line 9 is incremented
+     from 'nil' to '3', and line 10 from '2' to '5'.
+
+   At this point, the accumulated indents are (the indent is given after
+the line number):
+      1: nil : if A < B and
+      2: nil :   C < D
+      3: nil :   --  comment on expression
+      4: nil : then
+      5: nil :    if E then
+      6:   3 :       Do_E;
+      7:   3 :       -- comment on statement
+      8: nil :    elsif F then
+      9:   3 :       G := A + Compute_Something
+     10:   5 :         (arg_1, arg_2);
+     11: nil :    end if;
+     12: nil : end if;
+
+   Then the action is executed for the outer 'if_statement':
+
+'expression: [(wisi-hanging% ada-indent-broken (* 2 ada-indent-broken)) 
ada-indent-broken]'
+     This specifies separate indents for code and trailing comments,
+     because otherwise the trailing comments would be indented with the
+     following 'THEN'; instead they are indented with the expression
+     code; see the comment on line 3.
+
+     In this case, 'wisi-hanging%' returns DELTA-1, which is
+     'ada-indent-broken', which is 2.  So the indent for line 2 is
+     incremented from 'nil' to '2'.
+
+     The indent for line 3 is also incremented from 'nil' to '2'.
+
+'statements: [ada-indent ada-indent]'
+     Here there is only one statement; the nested 'if_statement'.  The
+     indent for lines 5 ..  11 are each incremented by 3.
+
+   The final result is:
+      1: nil : if A < B and
+      2:   2 :   C < D
+      3:   2 :   --  comment on expression
+      4: nil : then
+      5:   3 :    if E then
+      6:   6 :       Do_E;
+      7:   6 :       -- comment on statement
+      8:   3 :    elsif F then
+      9:   6 :       G := A + Compute_Something
+     10:   8 :         (arg_1, arg_2);
+     11:   6 :    end if;
+     12: nil : end if;
+
+   In a full grammar, the top production should specify an indent of 0,
+not nil, for tokens that are not indented; then every line will have a
+non-nil indent.  However, in normal operation a nil indent is treated as
+0; the 'wisi-indent' text property is not set for lines that have nil
+indent, and 'wisi-indent-region' detects that and uses 0 for the indent.
+You can set the variable 'wisi-debug' to a value > 0 to signal an error
+for nil indents; this is useful to catch indent errors during grammar
+development.
+
+
+File: wisi.info,  Node: In-parse actions,  Prev: Indent actions,  Up: Grammar 
actions
+
+2.4 In-parse actions
+====================
+
+'wisi-propagate-name TOKEN'
+     The argument is a token index.  Set the 'name' component of the
+     left-hand-side parse-time token object to the 'name' component of
+     the identified token, if it is not empty.  Otherwise use the
+     'byte_region' component.
+
+'wisi-merge-name FIRST-TOKEN, LAST-TOKEN'
+     The arguments are token indices, giving a range of tokens.
+     LAST-TOKEN may be omitted if it is the same as FIRST-TOKEN.
+
+     Set the 'name' component of the left-hand-side to the merger of the
+     'name' or 'byte-region' components of the identified tokens.
+
+'wisi-match-name START-TOKEN END-TOKEN'
+     The arguments are token indices.  Compare the text contained by the
+     'name' (or 'byte_region' if 'name' is empty) token components for
+     START-TOKEN and END-TOKEN; signal a parse error if they are
+     different.
+
+     The behavior when a name is missing is determined by the runtime
+     language variable given in the '%end_names_optional_option'
+     declaration; if True, a missing name that is supposed to match a
+     present name is an error.  Both names missing is not an error
+     (assuming that is allowed by the grammar).
+
+
+File: wisi.info,  Node: Project extension,  Next: GNU Free Documentation 
License,  Prev: Grammar actions,  Up: Top
+
+3 Project extension
+*******************
+
+wisi defines the 'cl-defstuct' 'wisi-prj', with operations suitable for
+compilation and cross-reference.
+
+   In order to use wisi projects, the user must write project files and
+customize 'project-find-functions' and 'xref-backend-functions'.
+
+* Menu:
+
+* Project files::
+* Selecting projects::
+* Casing exception files::
+* Other project functions::
+
+
+File: wisi.info,  Node: Project files,  Next: Selecting projects,  Up: Project 
extension
+
+3.1 Project files
+=================
+
+Project file names must have an extension given by
+'wisi-prj-file-extensions' (default '.adp, .prj').
+
+   Project files have a simple syntax; they may be edited directly.
+Each line specifies a project variable name and its value, separated by
+"=":
+
+     src_dir=/Projects/my_project/src_1
+     src_dir=/Projects/my_project/src_2
+
+   There must be no space between the variable name and "=", and no
+trailing spaces after the value.
+
+   Any line that does not have an "=" is a comment.
+
+   Some variables (like 'src_dir') are lists; each line in the project
+file specifies one element of the list.  The value on the last line is
+the last element in the list.
+
+   A variable name that starts with '$' is set as a process environment
+variable, for processes launched from Emacs for the project.
+
+   In values, process environment variables can be referenced using the
+normal '$var' syntax.
+
+   In values, relative file names are expanded relative to the directory
+containing the project file.
+
+   Here is the list of project variables defined by wisi; major modes
+may add more.
+
+'casing' [slot: 'case-exception-files']
+     List of files containing casing exceptions.  *Note Casing exception
+     files::.
+
+'src_dir' [slot: 'source-path']
+     A list of directories to search for source files.
+
+
+File: wisi.info,  Node: Selecting projects,  Next: Casing exception files,  
Prev: Project files,  Up: Project extension
+
+3.2 Selecting projects
+======================
+
+The current project can either be indicated by a global variable (called
+a "selected project"), or depend on the current buffer.
+
+   In addition, the project file can be parsed each time it is needed,
+or the result cached to improve response time,
+
+   One reason to use a selected project is to handle a hierarchy of
+projects; if projects B and C both depend on library project A, then
+when in a file of project A, there is no way to determine which of the
+three projects to return.  So the user must indicate which is active, by
+using one of 'wisi-prj-select-file' or 'wisi-prj-select-cache'.
+
+   In addition, if changing from one project to another requires setting
+global resources that must also be unset (such as a syntax propertize
+hook or compilation filter hook), then the project should define
+'wisi-prj-deselect' in addition to 'wisi-prj-select'.  Such projects
+require having a selected current project, so it can be deselected
+before a new one is selected.  One example of such projects is ada-mode.
+
+   One way to declare each project is to add a Local Variables section
+in the main Makefile for the project; when the Makefile is first
+visited, the project is declared.  In the examples here, we assume that
+approach is used; each gives an :eval line.
+
+   Note that 'wisi-prj-current-parse' and 'wisi-prj-current-cached'
+always succeed after some project is selected; no functions after them
+on 'project-find-functions' will be called.  That's why the depth is 90
+for those in the examples.
+
+No caching, current project depends on current buffer
+
+          (add-hook 'project-find-functions #'wisi-prj-find-dominating-parse 0)
+
+          :eval (wisi-prj-set-dominating "foo.prj" (foo-prj-default 
"prj-name"))
+
+     'wisi-prj-set-dominating' declares the name of a project file with
+     a default project object, and ensures that the current buffer file
+     name is in 'wisi-prj--dominating'.
+
+     'wisi-prj-find-dominating-parse' looks for the filenames in
+     'wisi-prj--dominiating' in the parent directories of the current
+     buffer.  When one is found, the associated project file is parsed,
+     using the default project object to dispatch to the appropriate
+     parsers.  Then the final project object is returned.
+
+Caching, current project depends on current buffer
+
+          (add-hook 'project-find-functions #'wisi-prj-find-dominating-cached 
0)
+
+          :eval (wisi-prj-cache-dominating "foo.prj" (foo-prj-default 
"prj-name"))
+
+     'wisi-prj-cache-dominating' declares the project file, parses it,
+     and saves the project object in a cache indexed by the absolute
+     project file name.
+
+     'wisi-prj-find-dominating-cached' finds the dominating project
+     file, and retrieves the object from the cache.
+
+No caching, last selected project is current
+
+          (add-hook 'project-find-functions #'wisi-prj-current-parse 90)
+
+          :eval: (wisi-prj-select-file <prj-file> (foo-prj-default "prj-name"))
+
+     'wisi-prj-select-file' sets the project file as the current
+     project, and saves the default project object.
+
+     'wisi-prj-current-parse' parses the current project file, using the
+     saved default project object, and returns the project object.
+
+Caching, last selected project is current
+
+          (add-hook 'project-find-functions #'wisi-prj-current-cached 90)
+
+          :eval: (wisi-prj-select-cache <prj-file> (foo-prj-default 
"prj-name"))
+
+     'wisi-prj-select-cache' parses the project file, caches the project
+     object.
+
+     'wisi-prj-current-cached' returns the cached current project
+     object.
+
+   In addition, the user should set 'xref-backend-functions'.
+Currently, there is only one choice for wisi projects:
+
+     (add-to-list 'xref-backend-functions #'wisi-prj-xref-backend 90)
+
+   'wisi-prj-xref-backend' returns the current wisi project object.
+
+
+File: wisi.info,  Node: Casing exception files,  Next: Other project 
functions,  Prev: Selecting projects,  Up: Project extension
+
+3.3 Casing exception files
+==========================
+
+Each line in a case exception file specifies the casing of one word or
+word fragment.  If an exception is defined in multiple files, the first
+occurrence is used.
+
+   If the word starts with an asterisk ('*'), it defines the casing of a
+word fragment (or "substring"); part of a word between two underscores
+or word boundary.
+
+   For example:
+
+     DOD
+     *IO
+     GNAT
+
+   The word fragment '*IO' applies to any word containing "_io";
+'Text_IO', 'Hardware_IO', etc.
+
+
+File: wisi.info,  Node: Other project functions,  Prev: Casing exception 
files,  Up: Project extension
+
+3.4 Other project functions
+===========================
+
+'wisi-refresh-prj-cache (not-full)'
+     Refreshes all cached data in the project, and re-selects the
+     project.  If NOT-FULL is non-nil, slow refresh operations are
+     skipped.
+
+     This reparses the project file, and any cross reference
+     information.
+
+'wisi-prj-select-dominating (dominating-file)'
+     Find a wisi-prj matching DOMINATING-FILE (defaults to the current
+     buffer file).  If the associated project is current, do nothing.
+     If it is not current, select it.
+
+     This is useful before running 'compilation-start', to ensure the
+     correct project is current.
+
+
+File: wisi.info,  Node: GNU Free Documentation License,  Next: Index,  Prev: 
Project extension,  Up: Top
+
+Appendix A GNU Free Documentation License
+*****************************************
+
+                     Version 1.3, 3 November 2008
+
+     Copyright (C) 2000, 2001, 2002, 2007, 2008, 2009 Free Software 
Foundation, Inc.
+     <http://fsf.org/>
+
+     Everyone is permitted to copy and distribute verbatim copies
+     of this license document, but changing it is not allowed.
+
+  0. PREAMBLE
+
+     The purpose of this License is to make a manual, textbook, or other
+     functional and useful document "free" in the sense of freedom: to
+     assure everyone the effective freedom to copy and redistribute it,
+     with or without modifying it, either commercially or
+     noncommercially.  Secondarily, this License preserves for the
+     author and publisher a way to get credit for their work, while not
+     being considered responsible for modifications made by others.
+
+     This License is a kind of "copyleft", which means that derivative
+     works of the document must themselves be free in the same sense.
+     It complements the GNU General Public License, which is a copyleft
+     license designed for free software.
+
+     We have designed this License in order to use it for manuals for
+     free software, because free software needs free documentation: a
+     free program should come with manuals providing the same freedoms
+     that the software does.  But this License is not limited to
+     software manuals; it can be used for any textual work, regardless
+     of subject matter or whether it is published as a printed book.  We
+     recommend this License principally for works whose purpose is
+     instruction or reference.
+
+  1. APPLICABILITY AND DEFINITIONS
+
+     This License applies to any manual or other work, in any medium,
+     that contains a notice placed by the copyright holder saying it can
+     be distributed under the terms of this License.  Such a notice
+     grants a world-wide, royalty-free license, unlimited in duration,
+     to use that work under the conditions stated herein.  The
+     "Document", below, refers to any such manual or work.  Any member
+     of the public is a licensee, and is addressed as "you".  You accept
+     the license if you copy, modify or distribute the work in a way
+     requiring permission under copyright law.
+
+     A "Modified Version" of the Document means any work containing the
+     Document or a portion of it, either copied verbatim, or with
+     modifications and/or translated into another language.
+
+     A "Secondary Section" is a named appendix or a front-matter section
+     of the Document that deals exclusively with the relationship of the
+     publishers or authors of the Document to the Document's overall
+     subject (or to related matters) and contains nothing that could
+     fall directly within that overall subject.  (Thus, if the Document
+     is in part a textbook of mathematics, a Secondary Section may not
+     explain any mathematics.)  The relationship could be a matter of
+     historical connection with the subject or with related matters, or
+     of legal, commercial, philosophical, ethical or political position
+     regarding them.
+
+     The "Invariant Sections" are certain Secondary Sections whose
+     titles are designated, as being those of Invariant Sections, in the
+     notice that says that the Document is released under this License.
+     If a section does not fit the above definition of Secondary then it
+     is not allowed to be designated as Invariant.  The Document may
+     contain zero Invariant Sections.  If the Document does not identify
+     any Invariant Sections then there are none.
+
+     The "Cover Texts" are certain short passages of text that are
+     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+     that says that the Document is released under this License.  A
+     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+     be at most 25 words.
+
+     A "Transparent" copy of the Document means a machine-readable copy,
+     represented in a format whose specification is available to the
+     general public, that is suitable for revising the document
+     straightforwardly with generic text editors or (for images composed
+     of pixels) generic paint programs or (for drawings) some widely
+     available drawing editor, and that is suitable for input to text
+     formatters or for automatic translation to a variety of formats
+     suitable for input to text formatters.  A copy made in an otherwise
+     Transparent file format whose markup, or absence of markup, has
+     been arranged to thwart or discourage subsequent modification by
+     readers is not Transparent.  An image format is not Transparent if
+     used for any substantial amount of text.  A copy that is not
+     "Transparent" is called "Opaque".
+
+     Examples of suitable formats for Transparent copies include plain
+     ASCII without markup, Texinfo input format, LaTeX input format,
+     SGML or XML using a publicly available DTD, and standard-conforming
+     simple HTML, PostScript or PDF designed for human modification.
+     Examples of transparent image formats include PNG, XCF and JPG.
+     Opaque formats include proprietary formats that can be read and
+     edited only by proprietary word processors, SGML or XML for which
+     the DTD and/or processing tools are not generally available, and
+     the machine-generated HTML, PostScript or PDF produced by some word
+     processors for output purposes only.
+
+     The "Title Page" means, for a printed book, the title page itself,
+     plus such following pages as are needed to hold, legibly, the
+     material this License requires to appear in the title page.  For
+     works in formats which do not have any title page as such, "Title
+     Page" means the text near the most prominent appearance of the
+     work's title, preceding the beginning of the body of the text.
+
+     The "publisher" means any person or entity that distributes copies
+     of the Document to the public.
+
+     A section "Entitled XYZ" means a named subunit of the Document
+     whose title either is precisely XYZ or contains XYZ in parentheses
+     following text that translates XYZ in another language.  (Here XYZ
+     stands for a specific section name mentioned below, such as
+     "Acknowledgements", "Dedications", "Endorsements", or "History".)
+     To "Preserve the Title" of such a section when you modify the
+     Document means that it remains a section "Entitled XYZ" according
+     to this definition.
+
+     The Document may include Warranty Disclaimers next to the notice
+     which states that this License applies to the Document.  These
+     Warranty Disclaimers are considered to be included by reference in
+     this License, but only as regards disclaiming warranties: any other
+     implication that these Warranty Disclaimers may have is void and
+     has no effect on the meaning of this License.
+
+  2. VERBATIM COPYING
+
+     You may copy and distribute the Document in any medium, either
+     commercially or noncommercially, provided that this License, the
+     copyright notices, and the license notice saying this License
+     applies to the Document are reproduced in all copies, and that you
+     add no other conditions whatsoever to those of this License.  You
+     may not use technical measures to obstruct or control the reading
+     or further copying of the copies you make or distribute.  However,
+     you may accept compensation in exchange for copies.  If you
+     distribute a large enough number of copies you must also follow the
+     conditions in section 3.
+
+     You may also lend copies, under the same conditions stated above,
+     and you may publicly display copies.
+
+  3. COPYING IN QUANTITY
+
+     If you publish printed copies (or copies in media that commonly
+     have printed covers) of the Document, numbering more than 100, and
+     the Document's license notice requires Cover Texts, you must
+     enclose the copies in covers that carry, clearly and legibly, all
+     these Cover Texts: Front-Cover Texts on the front cover, and
+     Back-Cover Texts on the back cover.  Both covers must also clearly
+     and legibly identify you as the publisher of these copies.  The
+     front cover must present the full title with all words of the title
+     equally prominent and visible.  You may add other material on the
+     covers in addition.  Copying with changes limited to the covers, as
+     long as they preserve the title of the Document and satisfy these
+     conditions, can be treated as verbatim copying in other respects.
+
+     If the required texts for either cover are too voluminous to fit
+     legibly, you should put the first ones listed (as many as fit
+     reasonably) on the actual cover, and continue the rest onto
+     adjacent pages.
+
+     If you publish or distribute Opaque copies of the Document
+     numbering more than 100, you must either include a machine-readable
+     Transparent copy along with each Opaque copy, or state in or with
+     each Opaque copy a computer-network location from which the general
+     network-using public has access to download using public-standard
+     network protocols a complete Transparent copy of the Document, free
+     of added material.  If you use the latter option, you must take
+     reasonably prudent steps, when you begin distribution of Opaque
+     copies in quantity, to ensure that this Transparent copy will
+     remain thus accessible at the stated location until at least one
+     year after the last time you distribute an Opaque copy (directly or
+     through your agents or retailers) of that edition to the public.
+
+     It is requested, but not required, that you contact the authors of
+     the Document well before redistributing any large number of copies,
+     to give them a chance to provide you with an updated version of the
+     Document.
+
+  4. MODIFICATIONS
+
+     You may copy and distribute a Modified Version of the Document
+     under the conditions of sections 2 and 3 above, provided that you
+     release the Modified Version under precisely this License, with the
+     Modified Version filling the role of the Document, thus licensing
+     distribution and modification of the Modified Version to whoever
+     possesses a copy of it.  In addition, you must do these things in
+     the Modified Version:
+
+       A. Use in the Title Page (and on the covers, if any) a title
+          distinct from that of the Document, and from those of previous
+          versions (which should, if there were any, be listed in the
+          History section of the Document).  You may use the same title
+          as a previous version if the original publisher of that
+          version gives permission.
+
+       B. List on the Title Page, as authors, one or more persons or
+          entities responsible for authorship of the modifications in
+          the Modified Version, together with at least five of the
+          principal authors of the Document (all of its principal
+          authors, if it has fewer than five), unless they release you
+          from this requirement.
+
+       C. State on the Title page the name of the publisher of the
+          Modified Version, as the publisher.
+
+       D. Preserve all the copyright notices of the Document.
+
+       E. Add an appropriate copyright notice for your modifications
+          adjacent to the other copyright notices.
+
+       F. Include, immediately after the copyright notices, a license
+          notice giving the public permission to use the Modified
+          Version under the terms of this License, in the form shown in
+          the Addendum below.
+
+       G. Preserve in that license notice the full lists of Invariant
+          Sections and required Cover Texts given in the Document's
+          license notice.
+
+       H. Include an unaltered copy of this License.
+
+       I. Preserve the section Entitled "History", Preserve its Title,
+          and add to it an item stating at least the title, year, new
+          authors, and publisher of the Modified Version as given on the
+          Title Page.  If there is no section Entitled "History" in the
+          Document, create one stating the title, year, authors, and
+          publisher of the Document as given on its Title Page, then add
+          an item describing the Modified Version as stated in the
+          previous sentence.
+
+       J. Preserve the network location, if any, given in the Document
+          for public access to a Transparent copy of the Document, and
+          likewise the network locations given in the Document for
+          previous versions it was based on.  These may be placed in the
+          "History" section.  You may omit a network location for a work
+          that was published at least four years before the Document
+          itself, or if the original publisher of the version it refers
+          to gives permission.
+
+       K. For any section Entitled "Acknowledgements" or "Dedications",
+          Preserve the Title of the section, and preserve in the section
+          all the substance and tone of each of the contributor
+          acknowledgements and/or dedications given therein.
+
+       L. Preserve all the Invariant Sections of the Document, unaltered
+          in their text and in their titles.  Section numbers or the
+          equivalent are not considered part of the section titles.
+
+       M. Delete any section Entitled "Endorsements".  Such a section
+          may not be included in the Modified Version.
+
+       N. Do not retitle any existing section to be Entitled
+          "Endorsements" or to conflict in title with any Invariant
+          Section.
+
+       O. Preserve any Warranty Disclaimers.
+
+     If the Modified Version includes new front-matter sections or
+     appendices that qualify as Secondary Sections and contain no
+     material copied from the Document, you may at your option designate
+     some or all of these sections as invariant.  To do this, add their
+     titles to the list of Invariant Sections in the Modified Version's
+     license notice.  These titles must be distinct from any other
+     section titles.
+
+     You may add a section Entitled "Endorsements", provided it contains
+     nothing but endorsements of your Modified Version by various
+     parties--for example, statements of peer review or that the text
+     has been approved by an organization as the authoritative
+     definition of a standard.
+
+     You may add a passage of up to five words as a Front-Cover Text,
+     and a passage of up to 25 words as a Back-Cover Text, to the end of
+     the list of Cover Texts in the Modified Version.  Only one passage
+     of Front-Cover Text and one of Back-Cover Text may be added by (or
+     through arrangements made by) any one entity.  If the Document
+     already includes a cover text for the same cover, previously added
+     by you or by arrangement made by the same entity you are acting on
+     behalf of, you may not add another; but you may replace the old
+     one, on explicit permission from the previous publisher that added
+     the old one.
+
+     The author(s) and publisher(s) of the Document do not by this
+     License give permission to use their names for publicity for or to
+     assert or imply endorsement of any Modified Version.
+
+  5. COMBINING DOCUMENTS
+
+     You may combine the Document with other documents released under
+     this License, under the terms defined in section 4 above for
+     modified versions, provided that you include in the combination all
+     of the Invariant Sections of all of the original documents,
+     unmodified, and list them all as Invariant Sections of your
+     combined work in its license notice, and that you preserve all
+     their Warranty Disclaimers.
+
+     The combined work need only contain one copy of this License, and
+     multiple identical Invariant Sections may be replaced with a single
+     copy.  If there are multiple Invariant Sections with the same name
+     but different contents, make the title of each such section unique
+     by adding at the end of it, in parentheses, the name of the
+     original author or publisher of that section if known, or else a
+     unique number.  Make the same adjustment to the section titles in
+     the list of Invariant Sections in the license notice of the
+     combined work.
+
+     In the combination, you must combine any sections Entitled
+     "History" in the various original documents, forming one section
+     Entitled "History"; likewise combine any sections Entitled
+     "Acknowledgements", and any sections Entitled "Dedications".  You
+     must delete all sections Entitled "Endorsements."
+
+  6. COLLECTIONS OF DOCUMENTS
+
+     You may make a collection consisting of the Document and other
+     documents released under this License, and replace the individual
+     copies of this License in the various documents with a single copy
+     that is included in the collection, provided that you follow the
+     rules of this License for verbatim copying of each of the documents
+     in all other respects.
+
+     You may extract a single document from such a collection, and
+     distribute it individually under this License, provided you insert
+     a copy of this License into the extracted document, and follow this
+     License in all other respects regarding verbatim copying of that
+     document.
+
+  7. AGGREGATION WITH INDEPENDENT WORKS
+
+     A compilation of the Document or its derivatives with other
+     separate and independent documents or works, in or on a volume of a
+     storage or distribution medium, is called an "aggregate" if the
+     copyright resulting from the compilation is not used to limit the
+     legal rights of the compilation's users beyond what the individual
+     works permit.  When the Document is included in an aggregate, this
+     License does not apply to the other works in the aggregate which
+     are not themselves derivative works of the Document.
+
+     If the Cover Text requirement of section 3 is applicable to these
+     copies of the Document, then if the Document is less than one half
+     of the entire aggregate, the Document's Cover Texts may be placed
+     on covers that bracket the Document within the aggregate, or the
+     electronic equivalent of covers if the Document is in electronic
+     form.  Otherwise they must appear on printed covers that bracket
+     the whole aggregate.
+
+  8. TRANSLATION
+
+     Translation is considered a kind of modification, so you may
+     distribute translations of the Document under the terms of section
+     4.  Replacing Invariant Sections with translations requires special
+     permission from their copyright holders, but you may include
+     translations of some or all Invariant Sections in addition to the
+     original versions of these Invariant Sections.  You may include a
+     translation of this License, and all the license notices in the
+     Document, and any Warranty Disclaimers, provided that you also
+     include the original English version of this License and the
+     original versions of those notices and disclaimers.  In case of a
+     disagreement between the translation and the original version of
+     this License or a notice or disclaimer, the original version will
+     prevail.
+
+     If a section in the Document is Entitled "Acknowledgements",
+     "Dedications", or "History", the requirement (section 4) to
+     Preserve its Title (section 1) will typically require changing the
+     actual title.
+
+  9. TERMINATION
+
+     You may not copy, modify, sublicense, or distribute the Document
+     except as expressly provided under this License.  Any attempt
+     otherwise to copy, modify, sublicense, or distribute it is void,
+     and will automatically terminate your rights under this License.
+
+     However, if you cease all violation of this License, then your
+     license from a particular copyright holder is reinstated (a)
+     provisionally, unless and until the copyright holder explicitly and
+     finally terminates your license, and (b) permanently, if the
+     copyright holder fails to notify you of the violation by some
+     reasonable means prior to 60 days after the cessation.
+
+     Moreover, your license from a particular copyright holder is
+     reinstated permanently if the copyright holder notifies you of the
+     violation by some reasonable means, this is the first time you have
+     received notice of violation of this License (for any work) from
+     that copyright holder, and you cure the violation prior to 30 days
+     after your receipt of the notice.
+
+     Termination of your rights under this section does not terminate
+     the licenses of parties who have received copies or rights from you
+     under this License.  If your rights have been terminated and not
+     permanently reinstated, receipt of a copy of some or all of the
+     same material does not give you any rights to use it.
+
+  10. FUTURE REVISIONS OF THIS LICENSE
+
+     The Free Software Foundation may publish new, revised versions of
+     the GNU Free Documentation License from time to time.  Such new
+     versions will be similar in spirit to the present version, but may
+     differ in detail to address new problems or concerns.  See
+     <http://www.gnu.org/copyleft/>.
+
+     Each version of the License is given a distinguishing version
+     number.  If the Document specifies that a particular numbered
+     version of this License "or any later version" applies to it, you
+     have the option of following the terms and conditions either of
+     that specified version or of any later version that has been
+     published (not as a draft) by the Free Software Foundation.  If the
+     Document does not specify a version number of this License, you may
+     choose any version ever published (not as a draft) by the Free
+     Software Foundation.  If the Document specifies that a proxy can
+     decide which future versions of this License can be used, that
+     proxy's public statement of acceptance of a version permanently
+     authorizes you to choose that version for the Document.
+
+  11. RELICENSING
+
+     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+     World Wide Web server that publishes copyrightable works and also
+     provides prominent facilities for anybody to edit those works.  A
+     public wiki that anybody can edit is an example of such a server.
+     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
+     site means any set of copyrightable works thus published on the MMC
+     site.
+
+     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+     license published by Creative Commons Corporation, a not-for-profit
+     corporation with a principal place of business in San Francisco,
+     California, as well as future copyleft versions of that license
+     published by that same organization.
+
+     "Incorporate" means to publish or republish a Document, in whole or
+     in part, as part of another Document.
+
+     An MMC is "eligible for relicensing" if it is licensed under this
+     License, and if all works that were first published under this
+     License somewhere other than this MMC, and subsequently
+     incorporated in whole or in part into the MMC, (1) had no cover
+     texts or invariant sections, and (2) were thus incorporated prior
+     to November 1, 2008.
+
+     The operator of an MMC Site may republish an MMC contained in the
+     site under CC-BY-SA on the same site at any time before August 1,
+     2009, provided the MMC is eligible for relicensing.
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+       Copyright (C)  YEAR  YOUR NAME.
+       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, no Front-Cover Texts, and no Back-Cover
+       Texts.  A copy of the license is included in the section entitled ``GNU
+       Free Documentation License''.
+
+   If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts."  line with this:
+
+         with the Invariant Sections being LIST THEIR TITLES, with
+         the Front-Cover Texts being LIST, and with the Back-Cover Texts
+         being LIST.
+
+   If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+   If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of free
+software license, such as the GNU General Public License, to permit
+their use in free software.
+
+
+File: wisi.info,  Node: Index,  Prev: GNU Free Documentation License,  Up: Top
+
+Index
+*****
+
+
+
+Tag Table:
+Node: Top920
+Node: Overview1119
+Node: Grammar actions1761
+Node: Navigate actions7174
+Node: Face actions10027
+Node: Indent actions11338
+Node: Indent functions15148
+Node: Indent example17443
+Node: In-parse actions21781
+Node: Project extension23077
+Node: Project files23586
+Node: Selecting projects25006
+Node: Casing exception files29008
+Node: Other project functions29666
+Node: GNU Free Documentation License30424
+Node: Index55580
+
+End Tag Table
+
+
+Local Variables:
+coding: utf-8
+End:
diff --git a/packages/wisi/wisi.texi b/packages/wisi/wisi.texi
new file mode 100644
index 0000000..3b9594a
--- /dev/null
+++ b/packages/wisi/wisi.texi
@@ -0,0 +1,812 @@
+\input texinfo  @c -*-texinfo-*-
+@settitle Wisi
+
+@copying
+Copyright @copyright{} 1999 - 2020  Free Software Foundation, Inc.
+
+@quotation
+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.''
+@end quotation
+@end copying
+
+@dircategory Emacs
+@direntry
+* Wisi: (wisi).         Error-correcting LR parsers and project integration.
+@end direntry
+
+@titlepage
+@sp 10
+@title Wisi Version 3.1.0
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+@end titlepage
+
+@contents
+
+@ifnottex
+@node Top
+@top Top
+
+Wisi Version 3.1.0
+@end ifnottex
+
+@menu
+* Overview::
+* Grammar actions::
+* Project extension::
+* GNU Free Documentation License::
+* Index::
+@end menu
+
+@node Overview
+@chapter Overview
+``wisi'' used to be an acronym, but now it's just a name.
+
+The wisi package provides an elisp interface to an external parser. It
+assumes the parser generator package WisiToken
+(@url{http://stephe-leake.org/ada/wisitoken.html}, implemented in
+Ada), but can use any parser that meets the same API. wisi provides
+several grammar actions, to implement indentation, navigating, and
+syntax highlighting (fontification).
+
+wisi also provides an extension to Emacs @file{project.el}, providing
+operations useful for compilation and cross-reference.
+
+@node Grammar actions
+@chapter Grammar Actions
+
+Grammar actions are specified in the grammar file, in a nonterminal
+declaration. We assume the user is familiar with parser grammars and
+grammar actions. For example, a simple ``if'' statement can be
+declared as:
+
+@example
+if_statement
+  : IF expression THEN statements elsif_list ELSE statements END IF SEMICOLON
+    %((wisi-statement-action [1 statement-start 3 motion 6 motion 10 
statement-end])
+      (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]))%
+@end example
+
+The item before @code{:} is the ``left hand side'', or
+``nonterminal''. The list of tokens after @code{:} is the ``right hand
+side''; in general there can be more than one right hand side for each
+nonterminal (separated by @code{|}).
+
+The items enclosed in ``%()%'' are the grammar actions. They are
+specified as list of elisp forms; an earlier version of the wisi
+package generated an elisp parser. We keep the elisp form because it
+is compact, and easier to read and write than the equivalent Ada
+code. The @code{wisi-bnf-generate} tool converts the elisp into the
+required Ada statements.
+
+There are two classes of actions; in-parse and post-parse. WisiToken
+calls these ``semantic checks'' and ``user actions''. The in-parse
+actions are done as parsing procedes; they provide extra checks that
+can cause the parse to fail. Currently the only one provided is
+@code{match-names}; it is used to check that the declaration and end
+names in named Ada blocks are the same (which can aid significantly in
+error correction). In the grammar file, in-parse actions are specified
+in a second @code{%()%} block, which can be omitted if empty. In this
+document, the term ``action'' means ``post-parse action'', we use
+``in-parse action'' unless the meaning is clear from context.
+
+Executing the wisi grammar actions creates text properties in the
+source file; those text properties are then used by elisp code for
+various purposes.
+
+The text properties applied are:
+
+@table @code
+@item wisi-cache
+This should be named @code{wisi-navigate}, but isn't for historical
+reasons (there used to be only one kind of text property).
+
+The property contains a @code{wisi-cache} object, containing:
+
+@table @code
+@item nonterm
+The nonterminal in the grammar production that specified the action
+that produced this text property.
+
+@item token
+A token identifier naming a token in the production right hand side
+containing the text this text property is applied to.
+
+@item last
+The position of the last character in the token, relative to the first
+character (0 indexed). The text property is only applied to the first
+character in the token (mostly for historical reasons).
+
+@item class
+A token class; see the list of possible values in
+@code{wisi-statement-action} below.
+
+@item containing
+A marker pointing to the start of the containing token for this token;
+only @code{nil} for the outermost containing token in a file.
+
+@item prev
+A marker pointing to the previous ``motion token'' in the statement or
+declaration. These are normally language keywords, but can be other
+things.
+
+@item next
+A marker pointing to the next ``motion token'' in the statement or
+declaration.
+
+@item end
+A marker pointing to the end of the statement or declaration.
+
+@end table
+
+wisi provides motion commands for going to the various markers.
+
+@item wisi-name
+Contains no data, applied to a ``name'' of some sort. wisi provides
+commands for finding the next/previous name, and returning the
+text. Useful for the names of subprograms, which can then be used to
+build a completion table; see @code{wisi-xref-identifier-completion-table}.
+
+@item font-lock-face
+The standard font-lock property, specifying the face for the
+text.
+
+Some major modes do not use this for simple keywords; they use
+font-lock regular expressions instead. One reason for this
+is so keywords are still highlighted when the parser fails, which
+can happen if there are severe syntax errors.
+
+Other items, like function and package names, are typically marked
+with @code{font-lock-face} by the parser.
+
+@item fontified
+Another standard font-lock text property; applied whenever
+@code{font-lock-face} is.
+
+@item wisi-indent
+Contains the indent (in characters) for the next line; applied to
+the newline character on the preceding line. The first line in a
+buffer is assumed to have indent 0.
+
+@end table
+
+Each action is classified as one of @code{navigate, face, indent,
+in-parse}; when actions are executed, only one of the first three classes
+is executed (in-parse is always executed). This reflects the reasons
+the parser is run; to figure out how to go somehere (end of current
+statement, start of current procedure, etc), to apply faces for syntax
+highlighting, or to indent the code.
+
+@menu
+* Navigate actions::
+* Face actions::
+* Indent actions::
+* In-parse actions::
+@end menu
+
+@node Navigate actions
+@section Navigate actions
+@table @code
+@item wisi-statement-action [TOKEN CLASS ...]
+The argument is a vector; alternating items are a token index (an
+integer or label indicating a token in the right hand side) and a
+``token class''; one of:
+
+@table @code
+@item motion
+Create a @code{wisi-cache} text property on the token, for use in a
+subsequent @code{wisi-motion-action}.
+
+@item statement-end
+Create a @code{wisi-cache} text property on the token, enter a pointer
+to it in the other @code{wisi-cache} objects in the statement or
+declaration.
+
+@item statement-start
+Create a @code{wisi-cache} text property on the token, enter a pointer
+to it in the other @code{wisi-cache} objects (in the @code{containing}
+slot) in the statement or declaration.
+
+@item statement-override
+Same as @code{statement-start}; marks the token to be used as the
+statement start if the first token is optional.
+
+@item misc
+Create a @code{wisi-cache} text property on the token, to be used for
+some other purpose. It is good style to indicate the purpose in a
+comment.
+
+For example, ada-mode uses a 'misc' property on left parentheses that
+start a subprogram parameter list; this distinquishes them from other
+left parentheses, and makes it possible to automatically call
+@code{ada-format-paramlist} to format the
+parameter list, instead of using the standard Emacs @code{align}.
+
+@end table
+
+@item wisi-motion-action [TOKEN ...]
+The argument is a vector, where each element is either a token index
+or a vector [INDEX ID].
+
+Each terminal token must already have a @code{wisi-cache} created by a
+@code{wisi-statement-action} (this is checked at action execution, not
+during grammar generation). This action sets the @code{prev, next}
+slots for the chain of tokens, creating a chain of motion tokens.
+
+If TOKEN is a nonterminal without an ID specified, the @code{wisi-cache}
+must be on the first token in the nonterminal, and it is assumed to
+have a valid pointer in the @code{next} slot, indicating a chain of
+motion tokens. That chain is linked into the chain for the current
+right hand side.
+
+If TOKEN is a nonterminal with an ID, the region contained by the
+nonterminal is searched for all @code{wisi-cache} with that token ID,
+and for each one where prev/next is not already set, it is linked into
+the motion chain.
+
+Note that the ``search'' described here is done in the parser process, on
+a tree data structure containing the data that will eventually be
+stored in Emacs text properties.
+
+@item wisi-name-action TOKEN
+TOKEN is a token index. Create a @code{wisi-name} text property on the
+token.
+
+@end table
+
+@node Face actions
+@section Face actions
+@table @code
+@item wisi-face-mark-action [INDEX CLASS ...]
+The argument is a vector; alternating elements form pairs of INDEX
+CLASS, where class is one of @code{prefix, suffix}.
+
+Mark the tokens as part of a compound name, for use by later face
+actions.
+
+@item wisi-face-apply-action [TOKEN PREFIX-FACE SUFFIX-FACE ...]
+The argument is a vector; triples of items specify TOKEN,
+PREFIX-FACE, SUFFIX-FACE. The faces are the elisp names of face
+objects (which must declared by an @code{%elisp_face} declaration).
+
+If the token is a nonterminal, and it has been marked by a previous
+@code{wisi-face-mark-action}, the specified faces are applied to the
+prefix and suffix in the token as @code{font-lock-face} text
+properties.
+
+If the token is a terminal, or a non-terminal with no face mark, the
+suffix face is applied to the entire text contained by the token.
+
+@item wisi-face-apply-list-action [TOKEN PREFIX-FACE SUFFIX-FACE ...]
+Similar to ’wisi-face-apply-action’, but applies faces to all tokens
+marked by @code{wisi-face-mark-action} in each indicated production
+token, and does not apply a face if there are no such marks.
+
+@end table
+
+@node Indent actions
+@section Indent actions
+
+Indents are computed for each line in a cumulative way as the grammar
+actions are executed. Initially, each indent is set to @code{nil},
+which means ``not computed''; this is not the same as the value
+@code{0}. The grammar actions are executed in a bottom-up fashion; low
+level productions are executed before higher level ones. In general,
+the indent action for a production specifies a ``delta indent''; the
+indent is incremented by that amount. When all productions have been
+processed, the indent has been computed for all lines.
+
+Indents are often given as a function call; the arguments to the
+function can be other function calls, or integer
+expressions. @code{wisitoken-bnf-generate} supports only simple integer
+expressions; those using integers, integer-valued variables,
+parenthesis, + (plus), - (minus), and * (multiply).
+
+@table @code
+@item wisi-indent-action [INDENT ...]
+The argument is a vector, giving an indent for each token in the
+production right-hand side.
+
+For terminals, the indents only have meaning, and are only computed,
+if the token is the first on a line. For nonterminals where the indent
+is not a variant of @code{wisi-hanging}, the indent is only computed
+if the first terminal token in the nonterminal is the first on a
+line. See @code{wisi-hanging} in @ref{Indent functions} for the
+remaining case.
+
+An indent can have several forms.  In the descriptions below, the
+``current token'' is given by the position of the indent expression in
+the @code{wisi-indent-action} argument list.
+
+@table @asis
+@item An integer
+This gives a delta indent; it is added to the total indent for the
+line.
+
+@item A variable name
+The name is translated to an Ada identifier by replacing ``-'' with
+``_'', and applying @code{Camel_Case}. The translated name must
+identify a directly visible run-time Ada integer variable; this is
+checked at Ada compile time. It provides an integer delta indent.
+
+For example, in Ada two indent variable names are @code{ada-indent}
+and @code{ada-indent-broken}, giving the basic ident, and the
+continuation line indent. They are runtime variables so different
+projects can specify them as part of a coding standard.
+
+@item A function call
+A function that computes a delta indent. See @ref{Indent functions}.
+
+@item [CODE-INDENT , COMMENT-INDENT]
+A vector giving separate indents for code and comments.
+
+Normally, the indent for trailing comments (on lines with no code,
+after all code in the token) is given by the indent of the following
+token in the production. When the current token is the last, or the
+following tokens may be empty, or the indent of the following token
+would be wrong for some reason (for example, it is a block end), the
+comment indent may be specified separately. If it is not specified,
+and the indent from the next token is not available, the indent for
+the current token is used for code and comments.
+
+Comment lines that are not trailing are indented by CODE-INDENT.
+
+@item (label . INDENT)
+If token labels are used in a right hand side, they must be given
+explicitly in the indent arguments, using he lisp ``cons''
+syntax. Labels are normally only used with EBNF grammars, which expand
+into multiple right hand sides, with optional tokens simply left
+out. Explicit labels on the indent arguments allow them to be left out
+as well.
+
+@end table
+
+@end table
+
+@menu
+* Indent functions::
+* Indent example::
+@end menu
+
+@node Indent functions
+@subsection Indent functions
+@table @code
+@item wisi-anchored TOKEN OFFSET
+Sets the indent for the current token to be OFFSET (an integer
+expression) from the start of TOKEN (a token index); the
+current token is ``anchored to'' TOKEN.
+
+@item wisi-anchored* TOKEN OFFSET
+Sets the indent for the current token to be OFFSET from the start of
+TOKEN, but only if TOKEN is the first token on a line; otherwise no indent
+
+@item wisi-anchored*- TOKEN OFFSET
+Sets the indent for the current token to be OFFSET from the start of
+TOKEN, but only if TOKEN is the first token on a line and the indent
+for the current token accumulated so far is nil.
+
+@item wisi-anchored% TOKEN OFFSET
+If there is an opening parenthesis containing TOKEN in the line
+containing TOKEN, set the current indent to OFFSET from that
+parenthesis. Otherwise, OFFSET gives an indent delta.
+
+@item wisi-anchored%- TOKEN OFFSET
+Same as @code{wisi-anchored%}, but only if the current token
+accumulated indent is nil.
+
+@item wisi-hanging DELTA-1 DELTA-2
+The current token is assumed to be a nonterminal. If the text it
+contains spans multiple lines, use DELTA-1 for the first line, DELTA-2
+for the rest. If the current token is only on one line, use DELTA-1.
+
+DELTA-1 and DELTA-2 can be any IDENT expression, except a variant of
+@code{wisi-hanging}.
+
+@item wisi-hanging% DELTA-1 DELTA-2
+Similar to @code{wisi-hanging}; if the first terminal token in the
+current nonterminal is the first token on the first line, use DELTA-1
+for the first line and DELTA-2 for the rest. Otherwise, use DELTA-1
+for all lines.
+
+@item wisi-hanging%- DELTA-1 DELTA-2
+Same as @code{wisi-hanging%}, except applied only if the current token
+accumulated indent is nil.
+
+@item Language-specific function
+Language-specific indent functions are specified by an
+@code{%elisp_indent} declaration in the grammar file. Each function
+specifies how many arguments it accepts; this is checked at action
+runtime, not during grammar generation. Each argument is an INDENT as
+described above, or a token ID prefixed by @code{'} (to allow
+distinguishing token IDs from variable names).
+@end table
+
+@node Indent example
+@subsection Indent example
+
+The example @code{if_statement} grammar nonterminal is:
+
+@example
+if_statement
+  : IF expression THEN statements elsif_list ELSE statements END IF SEMICOLON
+    %((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]))%
+@end example
+
+We trace how the indent is computed for this sample Ada code:
+
+@example
+ 1: if A < B and
+ 2:   C < D
+ 3:   --  comment on expression
+ 4: then
+ 5:    if E then
+ 6:       Do_E;
+ 7:       -- comment on statement
+ 8:    elsif F then
+ 9:       G := A + Compute_Something
+10:         (arg_1, arg_2);
+11:    end if;
+12: end if;
+@end example
+
+First, the indent for the lower-level nonterminals (@code{expression,
+statements, elsif_list}) are computed. Assume they set the indent for
+line 10 to 2 (for the hanging expression) and leave the rest at nil.
+
+Next, the action for the inner @code{if_statement} is executed. Most
+of the tokens specify an indent of @code{nil}, which means the current
+accumulated indent is not changed. For the others, the action is as
+follows:
+
+@table @code
+@item expression:
+The expression @code{E} is contained on one line, and it is not the
+first token on that line, so the indent for line 5 is not changed.
+
+@item statements: [ada-indent ada-indent]
+This specifies separate indents for code and trailing comments,
+because otherwise the trailing comments would be indented with the
+following @code{THEN}; instead they are indented with the expression
+code; see the comment on line 7.
+
+Here @code{ada-indent} is 3, so the indent for lines 6 and 7 (for the
+first occurence of @code{statments}) is
+incremented from @code{nil} to @code{3}.
+
+For the second occurence of @code{statements}, line 9 is incremented
+from @code{nil} to @code{3}, and line 10 from @code{2} to @code{5}.
+@end table
+
+At this point, the accumulated indents are (the indent is given after
+the line number):
+@example
+ 1: nil : if A < B and
+ 2: nil :   C < D
+ 3: nil :   --  comment on expression
+ 4: nil : then
+ 5: nil :    if E then
+ 6:   3 :       Do_E;
+ 7:   3 :       -- comment on statement
+ 8: nil :    elsif F then
+ 9:   3 :       G := A + Compute_Something
+10:   5 :         (arg_1, arg_2);
+11: nil :    end if;
+12: nil : end if;
+@end example
+
+Then the action is executed for the outer @code{if_statement}:
+
+@table @code
+@item expression: [(wisi-hanging% ada-indent-broken (* 2 ada-indent-broken)) 
ada-indent-broken]
+This specifies separate indents for code and trailing comments,
+because otherwise the trailing comments would be indented with the
+following @code{THEN}; instead they are indented with the expression
+code; see the comment on line 3.
+
+In this case, @code{wisi-hanging%} returns DELTA-1, which is
+@code{ada-indent-broken}, which is 2. So the indent for line 2 is
+incremented from @code{nil} to @code{2}.
+
+The indent for line 3 is also incremented from @code{nil} to @code{2}.
+
+@item statements: [ada-indent ada-indent]
+Here there is only one statement; the nested @code{if_statement}. The
+indent for lines 5 .. 11 are each incremented by 3.
+@end table
+
+The final result is:
+@example
+ 1: nil : if A < B and
+ 2:   2 :   C < D
+ 3:   2 :   --  comment on expression
+ 4: nil : then
+ 5:   3 :    if E then
+ 6:   6 :       Do_E;
+ 7:   6 :       -- comment on statement
+ 8:   3 :    elsif F then
+ 9:   6 :       G := A + Compute_Something
+10:   8 :         (arg_1, arg_2);
+11:   6 :    end if;
+12: nil : end if;
+@end example
+
+In a full grammar, the top production should specify an indent of 0,
+not nil, for tokens that are not indented; then every line will have a
+non-nil indent. However, in normal operation a nil indent is treated
+as 0; the @code{wisi-indent} text property is not set for lines that
+have nil indent, and @code{wisi-indent-region} detects that and uses 0
+for the indent. You can set the variable @code{wisi-debug} to a value
+> 0 to signal an error for nil indents; this is useful to catch indent
+errors during grammar development.
+
+@node In-parse actions
+@section In-parse actions
+@table @code
+
+@item wisi-propagate-name TOKEN
+The argument is a token index. Set the @code{name} component of the
+left-hand-side parse-time token object to the @code{name} component of
+the identified token, if it is not empty. Otherwise use the
+@code{byte_region} component.
+
+@item wisi-merge-name FIRST-TOKEN, LAST-TOKEN
+The arguments are token indices, giving a range of
+tokens. LAST-TOKEN may be omitted if it is the same as FIRST-TOKEN.
+
+Set the @code{name} component of the left-hand-side to the merger of
+the @code{name} or @code{byte-region} components of the identified tokens.
+
+@item wisi-match-name START-TOKEN END-TOKEN
+The arguments are token indices. Compare the text contained by the
+@code{name} (or @code{byte_region} if @code{name} is empty) token
+components for START-TOKEN and END-TOKEN; signal a parse error if they
+are different.
+
+The behavior when a name is missing is determined by the runtime
+language variable given in the @code{%end_names_optional_option}
+declaration; if True, a missing name that is supposed to match a
+present name is an error. Both names missing is not an error (assuming
+that is allowed by the grammar).
+
+@end table
+
+@node Project extension
+@chapter Project extension
+wisi defines the @code{cl-defstuct} @code{wisi-prj}, with operations
+suitable for compilation and cross-reference.
+
+In order to use wisi projects, the user must write project files and
+customize @code{project-find-functions} and
+@code{xref-backend-functions}.
+
+@menu
+* Project files::
+* Selecting projects::
+* Casing exception files::
+* Other project functions::
+@end menu
+
+@node Project files
+@section Project files
+
+Project file names must have an extension given by
+@code{wisi-prj-file-extensions} (default @file{.adp, .prj}).
+
+Project files have a simple syntax; they may be edited directly. Each
+line specifies a project variable name and its value, separated by
+``='':
+
+@example
+src_dir=/Projects/my_project/src_1
+src_dir=/Projects/my_project/src_2
+@end example
+
+There must be no space between the variable name and ``='', and no
+trailing spaces after the value.
+
+Any line that does not have an ``='' is a comment.
+
+Some variables (like @code{src_dir}) are lists; each line in the
+project file specifies one element of the list. The value on the last
+line is the last element in the list.
+
+A variable name that starts with @code{$} is set as a process
+environment variable, for processes launched from Emacs for the
+project.
+
+In values, process environment variables can be referenced
+using the normal @code{$var} syntax.
+
+In values, relative file names are expanded relative to the
+directory containing the project file.
+
+Here is the list of project variables defined by wisi; major modes may
+add more.
+
+@table @asis
+@item @code{casing}         [slot: @code{case-exception-files}]
+List of files containing casing exceptions. @xref{Casing exception files}.
+
+@item @code{src_dir}        [slot: @code{source-path}]
+A list of directories to search for source files.
+
+@end table
+
+@node Selecting projects
+@section Selecting projects
+The current project can either be indicated by a global variable
+(called a ``selected project''), or depend on the current buffer.
+
+In addition, the project file can be parsed each time it is needed, or
+the result cached to improve response time,
+
+One reason to use a selected project is to handle a hierarchy of
+projects; if projects B and C both depend on library project A, then
+when in a file of project A, there is no way to determine which of the
+three projects to return. So the user must indicate which is active,
+by using one of @code{wisi-prj-select-file} or
+@code{wisi-prj-select-cache}.
+
+In addition, if changing from one project to another requires setting
+global resources that must also be unset (such as a syntax propertize
+hook or compilation filter hook), then the project should define
+@code{wisi-prj-deselect} in addition to @code{wisi-prj-select}. Such
+projects require having a selected current project, so it can be
+deselected before a new one is selected. One example of such projects
+is ada-mode.
+
+One way to declare each project is to add a Local Variables section
+in the main Makefile for the project; when the Makefile is first
+visited, the project is declared. In the examples here, we assume
+that approach is used; each gives an :eval line.
+
+Note that @code{wisi-prj-current-parse} and
+@code{wisi-prj-current-cached} always succeed after some project is
+selected; no functions after them on @code{project-find-functions} will
+be called. That's why the depth is 90 for those in the examples.
+
+@table @asis
+@item No caching, current project depends on current buffer
+
+@example
+(add-hook 'project-find-functions #'wisi-prj-find-dominating-parse 0)
+
+:eval (wisi-prj-set-dominating "foo.prj" (foo-prj-default "prj-name"))
+@end example
+
+@code{wisi-prj-set-dominating} declares the name of a project file with a
+default project object, and ensures that the current buffer file name
+is in @code{wisi-prj--dominating}.
+
+@code{wisi-prj-find-dominating-parse} looks for the filenames in
+@code{wisi-prj--dominiating} in the parent directories of the current
+buffer. When one is found, the associated project file is parsed,
+using the default project object to dispatch to the appropriate
+parsers. Then the final project object is returned.
+
+@item Caching, current project depends on current buffer
+
+@example
+(add-hook 'project-find-functions #'wisi-prj-find-dominating-cached 0)
+
+:eval (wisi-prj-cache-dominating "foo.prj" (foo-prj-default "prj-name"))
+@end example
+
+@code{wisi-prj-cache-dominating} declares the project file, parses it,
+and saves the project object in a cache indexed by the absolute
+project file name.
+
+@code{wisi-prj-find-dominating-cached} finds the dominating
+project file, and retrieves the object from the cache.
+
+@item No caching, last selected project is current
+
+@example
+(add-hook 'project-find-functions #'wisi-prj-current-parse 90)
+
+:eval: (wisi-prj-select-file <prj-file> (foo-prj-default "prj-name"))
+@end example
+
+@code{wisi-prj-select-file} sets the project file as the current
+project, and saves the default project object.
+
+@code{wisi-prj-current-parse} parses the current project file, using
+the saved default project object, and returns the project object.
+
+@item Caching, last selected project is current
+
+@example
+(add-hook 'project-find-functions #'wisi-prj-current-cached 90)
+
+:eval: (wisi-prj-select-cache <prj-file> (foo-prj-default "prj-name"))
+@end example
+
+@code{wisi-prj-select-cache} parses the project file, caches the
+project object.
+
+@code{wisi-prj-current-cached} returns the cached current project
+object.
+
+@end table
+
+In addition, the user should set @code{xref-backend-functions}. Currently,
+there is only one choice for wisi projects:
+
+@example
+(add-to-list 'xref-backend-functions #'wisi-prj-xref-backend 90)
+@end example
+
+@code{wisi-prj-xref-backend} returns the current wisi project object.
+
+@node Casing exception files
+@section Casing exception files
+Each line in a case exception
+file specifies the casing of one word or word fragment. If an
+exception is defined in multiple files, the first occurrence is used.
+
+If the word starts with an asterisk (@code{*}), it defines the casing
+of a word fragment (or ``substring''); part of a word between two
+underscores or word boundary.
+
+For example:
+
+@example
+DOD
+*IO
+GNAT
+@end example
+
+The word fragment @code{*IO} applies to any word containing ``_io'';
+@code{Text_IO}, @code{Hardware_IO}, etc.
+
+@node Other project functions
+@section Other project functions
+
+@table @code
+@item wisi-refresh-prj-cache (not-full)
+Refreshes all cached data in the project, and re-selects the
+project. If NOT-FULL is non-nil, slow refresh operations are skipped.
+
+This reparses the project file, and any cross reference information.
+
+@item wisi-prj-select-dominating (dominating-file)
+  Find a wisi-prj matching DOMINATING-FILE (defaults to the current
+buffer file). If the associated project is current, do nothing. If it
+is not current, select it.
+
+This is useful before running `compilation-start', to ensure the correct
+project is current.
+
+@end table
+
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Index,  , GNU Free Documentation License, Top
+@unnumbered Index
+
+@printindex fn
+
+@bye
diff --git a/packages/wisi/wisitoken-bnf-generate.adb 
b/packages/wisi/wisitoken-bnf-generate.adb
index a7616b4..1fe407a 100644
--- a/packages/wisi/wisitoken-bnf-generate.adb
+++ b/packages/wisi/wisitoken-bnf-generate.adb
@@ -3,7 +3,7 @@
 --  Parser for Wisi grammar files, producing Ada source
 --  files for a parser.
 --
---  Copyright (C) 2012 - 2015, 2017 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2012 - 2015, 2017 - 2020 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
@@ -50,9 +50,7 @@ is
       use Ada.Text_IO;
       First : Boolean := True;
    begin
-      --  verbosity meaning is actually determined by output choice;
-      --  they should be consistent with this description.
-      Put_Line (Standard_Error, "version 1.3.1");
+      Put_Line (Standard_Error, "version 2.0"); -- matches release version in 
Docs/wisitoken.html
       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);
@@ -104,7 +102,11 @@ is
       New_Line (Standard_Error);
       Put_Line (Standard_Error, "options:");
       Put_Line (Standard_Error, "  --help: show this help");
-      Put_Line (Standard_Error, "  -v level: sets verbosity (default 0):");
+
+      --  verbosity meaning is actually determined by output choice;
+      --  they should be consistent with this description.
+      Put_Line
+        (Standard_Error, "  -v <EBNF level> <Table level> <Minimal_Complete 
level>: sets verbosity (default 0):");
       Put_Line (Standard_Error, "     0 - only error messages to standard 
error");
       Put_Line (Standard_Error, "     1 - add diagnostics to standard out");
       Put_Line (Standard_Error, "     2 - more diagnostics to standard out, 
ignore unused tokens, unknown conflicts");
@@ -183,7 +185,11 @@ begin
 
          elsif Argument (Arg_Next) = "-v" then
             Arg_Next  := Arg_Next + 1;
-            WisiToken.Trace_Generate := Integer'Value (Argument (Arg_Next));
+            WisiToken.Trace_Generate_EBNF := Integer'Value (Argument 
(Arg_Next));
+            Arg_Next  := Arg_Next + 1;
+            WisiToken.Trace_Generate_Table := Integer'Value (Argument 
(Arg_Next));
+            Arg_Next  := Arg_Next + 1;
+            WisiToken.Trace_Generate_Minimal_Complete := Integer'Value 
(Argument (Arg_Next));
             Arg_Next  := Arg_Next + 1;
 
          elsif Argument (Arg_Next) = "--ignore_conflicts" then
@@ -284,9 +290,6 @@ begin
       use all type Ada.Strings.Unbounded.Unbounded_String;
       use Ada.Text_IO;
 
-      --  Create a .parse_table file unless verbosity > 0
-      Parse_Table_File : File_Type;
-
       Generate_Set    : Generate_Set_Access;
       Multiple_Tuples : Boolean;
 
@@ -332,11 +335,11 @@ begin
                declare
                   Tree  : WisiToken.Syntax_Trees.Tree renames 
Grammar_Parser.Parsers.First_State_Ref.Tree;
                begin
-                  if Trace_Generate > Outline then
+                  if Trace_Generate_EBNF > Outline then
                      Ada.Text_IO.Put_Line ("Translate EBNF tree to BNF");
                   end if;
 
-                  if Trace_Generate > Detail then
+                  if Trace_Generate_EBNF > Detail then
                      Ada.Text_IO.Put_Line ("EBNF tree:");
                      Tree.Print_Tree (Wisitoken_Grammar_Actions.Descriptor);
                      Ada.Text_IO.New_Line;
@@ -344,7 +347,7 @@ begin
 
                   WisiToken_Grammar_Runtime.Translate_EBNF_To_BNF (Tree, 
Input_Data);
 
-                  if Trace_Generate > Detail then
+                  if Trace_Generate_EBNF > Detail then
                      Ada.Text_IO.New_Line;
                      Ada.Text_IO.Put_Line ("BNF tree:");
                      Tree.Print_Tree (Wisitoken_Grammar_Actions.Descriptor);
@@ -410,8 +413,28 @@ begin
               (Generate_Data.Descriptor.First_Terminal, 
Generate_Data.Descriptor.First_Nonterminal,
                Generate_Data.Descriptor.Last_Nonterminal);
 
-            Do_Parse_Table_File : constant Boolean := WisiToken.Trace_Generate 
= 0 and
-              Tuple.Gen_Alg in LALR .. Packrat_Proc;
+            Parse_Table_File_Name : constant String :=
+              (if WisiToken.Trace_Generate_Table = 0 and Tuple.Gen_Alg in LALR 
.. Packrat_Proc
+               then -Output_File_Name_Root & "_" & To_Lower 
(Generate_Algorithm'Image (Tuple.Gen_Alg)) &
+                 (if Input_Data.If_Lexer_Present
+                  then "_" & Lexer_Image (Input_Data.User_Lexer).all
+                  else "") &
+                  ".parse_table"
+               else "");
+
+            procedure Parse_Table_Append_Stats
+            is
+               Parse_Table_File : File_Type;
+            begin
+               Open (Parse_Table_File, Append_File, Parse_Table_File_Name);
+               Set_Output (Parse_Table_File);
+               Generate_Data.Parser_State_Count :=
+                 Generate_Data.LR_Parse_Table.State_Last - 
Generate_Data.LR_Parse_Table.State_First + 1;
+               WisiToken.BNF.Generate_Utils.Put_Stats (Input_Data, 
Generate_Data);
+               Set_Output (Standard_Output);
+               Close (Parse_Table_File);
+            end Parse_Table_Append_Stats;
+
          begin
             if not Lexer_Done (Input_Data.User_Lexer) then
                Lexer_Done (Input_Data.User_Lexer) := True;
@@ -424,17 +447,6 @@ begin
                end case;
             end if;
 
-            if Do_Parse_Table_File then
-               Create
-                 (Parse_Table_File, Out_File,
-                  -Output_File_Name_Root & "_" & To_Lower 
(Generate_Algorithm'Image (Tuple.Gen_Alg)) &
-                    (if Input_Data.If_Lexer_Present
-                     then "_" & Lexer_Image (Input_Data.User_Lexer).all
-                     else "") &
-                    ".parse_table");
-               Set_Output (Parse_Table_File);
-            end if;
-
             case Tuple.Gen_Alg is
             when None =>
                --  Just translate EBNF to BNF, done in Parse_Check
@@ -450,7 +462,7 @@ begin
                   Generate_Utils.To_Conflicts
                     (Generate_Data, Input_Data.Conflicts, 
Input_Data.Grammar_Lexer.File_Name),
                   Generate_Utils.To_McKenzie_Param (Generate_Data, 
Input_Data.McKenzie_Recover),
-                  Put_Parse_Table   => True,
+                  Parse_Table_File_Name,
                   Include_Extra     => Test_Main,
                   Ignore_Conflicts  => Ignore_Conflicts,
                   Partial_Recursion => 
Input_Data.Language_Params.Partial_Recursion);
@@ -464,9 +476,9 @@ begin
                        Duration'Image (To_Duration (Time_End - Time_Start)));
                end if;
 
-               Generate_Data.Parser_State_Count :=
-                 Generate_Data.LR_Parse_Table.State_Last - 
Generate_Data.LR_Parse_Table.State_First + 1;
-               WisiToken.BNF.Generate_Utils.Put_Stats (Input_Data, 
Generate_Data);
+               if Parse_Table_File_Name /= "" then
+                  Parse_Table_Append_Stats;
+               end if;
 
             when LR1 =>
                Time_Start := Clock;
@@ -477,7 +489,7 @@ begin
                   Generate_Utils.To_Conflicts
                     (Generate_Data, Input_Data.Conflicts, 
Input_Data.Grammar_Lexer.File_Name),
                   Generate_Utils.To_McKenzie_Param (Generate_Data, 
Input_Data.McKenzie_Recover),
-                  Put_Parse_Table   => True,
+                  Parse_Table_File_Name,
                   Include_Extra     => Test_Main,
                   Ignore_Conflicts  => Ignore_Conflicts,
                   Partial_Recursion => 
Input_Data.Language_Params.Partial_Recursion);
@@ -491,9 +503,9 @@ begin
                        Duration'Image (To_Duration (Time_End - Time_Start)));
                end if;
 
-               Generate_Data.Parser_State_Count :=
-                 Generate_Data.LR_Parse_Table.State_Last - 
Generate_Data.LR_Parse_Table.State_First + 1;
-               WisiToken.BNF.Generate_Utils.Put_Stats (Input_Data, 
Generate_Data);
+               if Parse_Table_File_Name /= "" then
+                  Parse_Table_Append_Stats;
+               end if;
 
             when Packrat_Generate_Algorithm =>
                --  The only significant computation done for Packrat is First, 
done
@@ -503,11 +515,21 @@ begin
                  (Input_Data.Grammar_Lexer.File_Name, Generate_Data.Grammar, 
Generate_Data.Source_Line_Map,
                   Generate_Data.Descriptor.First_Terminal);
 
-               Put_Line ("Tokens:");
-               WisiToken.Put_Tokens (Generate_Data.Descriptor.all);
-               New_Line;
-               Put_Line ("Productions:");
-               WisiToken.Productions.Put (Generate_Data.Grammar, 
Generate_Data.Descriptor.all);
+               if Parse_Table_File_Name /= "" then
+                  declare
+                     Parse_Table_File : File_Type;
+                  begin
+                     Create (Parse_Table_File, Out_File, 
Parse_Table_File_Name);
+                     Set_Output (Parse_Table_File);
+                     Put_Line ("Tokens:");
+                     WisiToken.Put_Tokens (Generate_Data.Descriptor.all);
+                     New_Line;
+                     Put_Line ("Productions:");
+                     WisiToken.Productions.Put (Generate_Data.Grammar, 
Generate_Data.Descriptor.all);
+                     Set_Output (Standard_Output);
+                     Close (Parse_Table_File);
+                  end;
+               end if;
 
                Packrat_Data.Check_All (Generate_Data.Descriptor.all);
 
@@ -515,11 +537,6 @@ begin
                null;
             end case;
 
-            if Do_Parse_Table_File then
-               Set_Output (Standard_Output);
-               Close (Parse_Table_File);
-            end if;
-
             if WisiToken.Generate.Error then
                raise WisiToken.Grammar_Error with "errors: aborting";
             end if;
diff --git a/packages/wisi/wisitoken-bnf-generate_packrat.adb 
b/packages/wisi/wisitoken-bnf-generate_packrat.adb
index 8c785c6..e76fbee 100644
--- a/packages/wisi/wisitoken-bnf-generate_packrat.adb
+++ b/packages/wisi/wisitoken-bnf-generate_packrat.adb
@@ -6,7 +6,7 @@
 --
 --  See wisitoken-parse-packrat.ads.
 --
---  Copyright (C) 2018 Free Software Foundation, Inc.
+--  Copyright (C) 2018, 2020 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
@@ -153,7 +153,7 @@ is
                      else Action_Names (Prod.LHS)(RHS_Index).all & 
"'Access,"));
 
                if RHS.Tokens.Length = 0 then
-                  Indent_Line (" Children        => (1 .. 0 => 
Syntax_Trees.Invalid_Node_Index),");
+                  Indent_Line (" Children        => (1 .. 0 => 
Invalid_Node_Index),");
 
                elsif RHS.Tokens.Length = 1 then
                   Indent_Start (" Children        => ");
diff --git a/packages/wisi/wisitoken-bnf-generate_utils.adb 
b/packages/wisi/wisitoken-bnf-generate_utils.adb
index 65f64e6..0e6eb4d 100644
--- a/packages/wisi/wisitoken-bnf-generate_utils.adb
+++ b/packages/wisi/wisitoken-bnf-generate_utils.adb
@@ -2,7 +2,7 @@
 --
 --  see spec
 --
---  Copyright (C) 2014, 2015, 2017 - 2019  All Rights Reserved.
+--  Copyright (C) 2014, 2015, 2017 - 2020  All Rights Reserved.
 --
 --  This program is free software; you can redistribute it and/or
 --  modify it under terms of the GNU General Public License as
@@ -134,7 +134,8 @@ package body WisiToken.BNF.Generate_Utils is
                         I := I + 1;
                      end loop;
                   end if;
-                  RHSs (RHS_Index) := (Tokens => Tokens, Action => null, Check 
=> null);
+                  RHSs (RHS_Index) :=
+                    (Tokens => Tokens, Action => null, Check => null, 
Recursion => <>);
                   if Length (Right_Hand_Side.Action) > 0 then
                      Action_All_Empty := False;
                      Action_Names (RHS_Index) := new String'
@@ -287,9 +288,8 @@ package body WisiToken.BNF.Generate_Utils is
       end case;
    end Constant_Reference;
 
-   type Token_Access_Constant is access constant Token_Container;
-   type Iterator is new Iterator_Interfaces.Forward_Iterator with record
-      Container    : Token_Access_Constant;
+   type Iterator (Container : not null access constant Token_Container)
+   is new Iterator_Interfaces.Forward_Iterator with record
       Non_Grammar  : Boolean;
       Nonterminals : Boolean;
    end record;
diff --git a/packages/wisi/wisitoken-bnf-generate_utils.ads 
b/packages/wisi/wisitoken-bnf-generate_utils.ads
index 0cd7508..a2f31a2 100644
--- a/packages/wisi/wisitoken-bnf-generate_utils.ads
+++ b/packages/wisi/wisitoken-bnf-generate_utils.ads
@@ -3,7 +3,7 @@
 --  Utilities for translating input file structures to WisiToken
 --  structures needed for LALR.Generate.
 --
---  Copyright (C) 2014, 2015, 2017 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2014, 2015, 2017 - 2020 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
@@ -33,8 +33,7 @@ package WisiToken.BNF.Generate_Utils is
 
    WisiToken_Accept_Name : constant String := "wisitoken_accept";
 
-   type Generate_Data is limited record
-      Tokens     : access constant WisiToken.BNF.Tokens;
+   type Generate_Data (Tokens : not null access constant WisiToken.BNF.Tokens) 
is limited record
       Descriptor : WisiToken.Descriptor_Access;
       Grammar    : WisiToken.Productions.Prod_Arrays.Vector;
 
@@ -77,7 +76,7 @@ package WisiToken.BNF.Generate_Utils is
      is null record
    with Implicit_Dereference => Element;
 
-   type Token_Cursor is private;
+   type Token_Cursor (<>) is private;
    --  Iterate thru Keywords, Tokens, Rules in a canonical order:
    --
    --  1. Non_Grammar
@@ -163,8 +162,7 @@ private
    type Token_Cursor_Kind is
      (Non_Grammar_Kind, Terminals_Keywords, Terminals_Others, EOI, 
WisiToken_Accept, Nonterminal, Done);
 
-   type Token_Cursor is record
-      Data        : not null access constant Generate_Data;
+   type Token_Cursor (Data : not null access constant Generate_Data) is record
       Kind        : Token_Cursor_Kind;
       ID          : Token_ID;
       Token_Kind  : WisiToken.BNF.Token_Lists.Cursor; -- Non_Grammar or 
Tokens, depending on Kind
diff --git a/packages/wisi/wisitoken-bnf-output_ada.adb 
b/packages/wisi/wisitoken-bnf-output_ada.adb
index 944e216..3857a0f 100644
--- a/packages/wisi/wisitoken-bnf-output_ada.adb
+++ b/packages/wisi/wisitoken-bnf-output_ada.adb
@@ -4,7 +4,7 @@
 --  parameters, and a parser for that grammar. The grammar parser
 --  actions must be Ada.
 --
---  Copyright (C) 2017 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2017 - 2020 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
@@ -187,8 +187,8 @@ is
                      Indent_Line ("procedure " & Name);
                      Indent_Line (" (User_Data : in out 
WisiToken.Syntax_Trees.User_Data_Type'Class;");
                      Indent_Line ("  Tree      : in out 
WisiToken.Syntax_Trees.Tree;");
-                     Indent_Line ("  Nonterm   : in     
WisiToken.Syntax_Trees.Valid_Node_Index;");
-                     Indent_Line ("  Tokens    : in     
WisiToken.Syntax_Trees.Valid_Node_Index_Array)");
+                     Indent_Line ("  Nonterm   : in     
WisiToken.Valid_Node_Index;");
+                     Indent_Line ("  Tokens    : in     
WisiToken.Valid_Node_Index_Array)");
                      Indent_Line ("is");
 
                      Indent := Indent + 3;
diff --git a/packages/wisi/wisitoken-bnf-output_ada_common.adb 
b/packages/wisi/wisitoken-bnf-output_ada_common.adb
index ed4ef64..3a594bb 100644
--- a/packages/wisi/wisitoken-bnf-output_ada_common.adb
+++ b/packages/wisi/wisitoken-bnf-output_ada_common.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2017 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2017 - 2020 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
@@ -34,7 +34,7 @@ package body WisiToken.BNF.Output_Ada_Common is
    is
       use Parse.LR;
       Action_Node : Parse_Action_Node_Ptr;
-      First       : Boolean               := True;
+      First       : Boolean := True;
       Action      : Reduce_Action_Rec;
    begin
       for Node of State.Action_List loop
@@ -47,8 +47,8 @@ package body WisiToken.BNF.Output_Ada_Common is
          end if;
 
          if First then
-            Action := Action_Node.Item;
-            First  := False;
+            Action    := Action_Node.Item;
+            First     := False;
          else
             if not Equal (Action, Action_Node.Item) then
                return False;
@@ -58,6 +58,9 @@ package body WisiToken.BNF.Output_Ada_Common is
       return True;
    end Duplicate_Reduce;
 
+   function Image (Item : in Boolean) return String
+     is (if Item then "True" else "False");
+
    function Symbols_Image (State : in Parse.LR.Parse_State) return String
    is
       use all type Ada.Containers.Count_Type;
@@ -209,8 +212,8 @@ package body WisiToken.BNF.Output_Ada_Common is
                   Indent_Line ("procedure " & Name.all);
                   Indent_Line (" (User_Data : in out 
WisiToken.Syntax_Trees.User_Data_Type'Class;");
                   Indent_Line ("  Tree      : in out 
WisiToken.Syntax_Trees.Tree;");
-                  Indent_Line ("  Nonterm   : in     
WisiToken.Syntax_Trees.Valid_Node_Index;");
-                  Indent_Line ("  Tokens    : in     
WisiToken.Syntax_Trees.Valid_Node_Index_Array);");
+                  Indent_Line ("  Nonterm   : in     
WisiToken.Valid_Node_Index;");
+                  Indent_Line ("  Tokens    : in     
WisiToken.Valid_Node_Index_Array);");
                end if;
             end loop;
          end if;
@@ -556,34 +559,37 @@ package body WisiToken.BNF.Output_Ada_Common is
                  Trimmed_Image (Table.States (State_Index).Action_List.Length) 
& ");");
 
             if Duplicate_Reduce (Table.States (State_Index)) then
-               declare
-                  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) & "), " &
-                    Symbols_Image (Table.States (State_Index)) & ", " &
-                    Image (Action.Production) & "," &
-                    Count_Type'Image (Action.Token_Count) & ", ";
-
-                  Append
-                    ((if Generate_Data.Action_Names (Action.Production.LHS) = 
null then "null"
-                      elsif Generate_Data.Action_Names
-                        (Action.Production.LHS)(Action.Production.RHS) = null 
then "null"
-                      else Generate_Data.Action_Names
-                        (Action.Production.LHS)(Action.Production.RHS).all & 
"'Access"));
-                  Append (", ");
-                  Append
-                    ((if Generate_Data.Check_Names (Action.Production.LHS) = 
null then "null"
-                      elsif Generate_Data.Check_Names
-                        (Action.Production.LHS)(Action.Production.RHS) = null 
then "null"
-                      else Generate_Data.Check_Names
-                        (Action.Production.LHS)(Action.Production.RHS).all & 
"'Access"));
-
-                  Indent_Wrap (-Line & ");");
-                  Line_Count := Line_Count + 1;
-                  Indent     := Base_Indent;
-               end;
+               if Table.States (State_Index).Action_List.Length > 0 then
+                  --  We only get here with Length = 0 when there's a bug in 
LALR_Generate.
+                  declare
+                     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) & "), " &
+                       Symbols_Image (Table.States (State_Index)) & ", " &
+                       Image (Action.Production) & ", " &
+                       Count_Type'Image (Action.Token_Count) & ", ";
+
+                     Append
+                       ((if Generate_Data.Action_Names (Action.Production.LHS) 
= null then "null"
+                         elsif Generate_Data.Action_Names
+                           (Action.Production.LHS)(Action.Production.RHS) = 
null then "null"
+                         else Generate_Data.Action_Names
+                           (Action.Production.LHS)(Action.Production.RHS).all 
& "'Access"));
+                     Append (", ");
+                     Append
+                       ((if Generate_Data.Check_Names (Action.Production.LHS) 
= null then "null"
+                         elsif Generate_Data.Check_Names
+                           (Action.Production.LHS)(Action.Production.RHS) = 
null then "null"
+                         else Generate_Data.Check_Names
+                           (Action.Production.LHS)(Action.Production.RHS).all 
& "'Access"));
+
+                     Indent_Wrap (-Line & ");");
+                     Line_Count := Line_Count + 1;
+                     Indent     := Base_Indent;
+                  end;
+               end if;
 
             else
                for Node of Table.States (State_Index).Action_List loop
@@ -594,8 +600,8 @@ package body WisiToken.BNF.Output_Ada_Common is
                      case Action_Node.Item.Verb is
                      when Shift =>
                         Line := +"Add_Action (Table.States (" & Trimmed_Image 
(State_Index) & "), " &
-                          Trimmed_Image (Node.Symbol);
-                        Append (", ");
+                          Trimmed_Image (Node.Symbol) & ", ";
+                        Append (Image (Action_Node.Item.Production) & ", ");
                         Append (Trimmed_Image (Action_Node.Item.State));
                         Append (");");
 
@@ -608,7 +614,7 @@ package body WisiToken.BNF.Output_Ada_Common is
                            Append (", Accept_It");
                         end if;
                         Append (", ");
-                        Append (Image (Action_Node.Item.Production) & ",");
+                        Append (Image (Action_Node.Item.Production) & ", ");
                         Append (Count_Type'Image 
(Action_Node.Item.Token_Count) & ", ");
                         Append
                           ((if Generate_Data.Action_Names 
(Action_Node.Item.Production.LHS) = null then "null"
@@ -644,7 +650,7 @@ package body WisiToken.BNF.Output_Ada_Common is
                         when Reduce | Accept_It =>
                            Line := +"Add_Conflict (Table.States (" & 
Trimmed_Image (State_Index) & "), " &
                              Trimmed_Image (Node.Symbol) & ", ";
-                           Append (Image (Action_Node.Item.Production) & ",");
+                           Append (Image (Action_Node.Item.Production) & ", ");
                            Append (Count_Type'Image 
(Action_Node.Item.Token_Count) & ", ");
                            Append
                              ((if Generate_Data.Action_Names 
(Action_Node.Item.Production.LHS) = null then "null"
@@ -700,10 +706,6 @@ package body WisiToken.BNF.Output_Ada_Common is
                Indent_Wrap
                  ("Table.States (" & Trimmed_Image (State_Index) & 
").Minimal_Complete_Actions := To_Vector (" &
                     Strict_Image (Table.States 
(State_Index).Minimal_Complete_Actions, Strict => True) & ");");
-               if Table.States 
(State_Index).Minimal_Complete_Actions_Recursive then
-                  Indent_Wrap
-                    ("Table.States (" & Trimmed_Image (State_Index) & 
").Minimal_Complete_Actions_Recursive := True;");
-               end if;
             end if;
          end if;
 
@@ -737,7 +739,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_Line ("Table.Error_Action := new Parse_Action_Node'((Verb => 
Error, others => <>), null);");
       Indent := Indent - 3;
       Indent_Line ("end;");
    end Create_LR_Parser_Table;
@@ -1170,6 +1172,7 @@ package body WisiToken.BNF.Output_Ada_Common is
 
       Put_Line ("/*!re2c");
       Indent_Line ("re2c:yyfill:enable   = 0;");
+      Indent_Line ("re2c:sentinel   = 4;");
       New_Line;
 
       --  Regexps used in definitions
@@ -1193,6 +1196,8 @@ package body WisiToken.BNF.Output_Ada_Common is
             null;
 
          elsif Kind (I) = "keyword" and 
Input_Data.Language_Params.Case_Insensitive then
+            --  This assumes re2c regular expression syntax, where single quote
+            --  means case insensitive.
             Indent_Line (Name (I) & " = '" & Strip_Quotes (Value (I)) & "';");
 
          else
diff --git a/packages/wisi/wisitoken-bnf-output_ada_emacs.adb 
b/packages/wisi/wisitoken-bnf-output_ada_emacs.adb
index 2de6e0c..c0e91c2 100644
--- a/packages/wisi/wisitoken-bnf-output_ada_emacs.adb
+++ b/packages/wisi/wisitoken-bnf-output_ada_emacs.adb
@@ -12,7 +12,7 @@
 --  If run in an Emacs dynamically loaded module, the parser actions
 --  call the elisp actions directly.
 --
---  Copyright (C) 2012 - 2015, 2017 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2012 - 2015, 2017 - 2020 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
@@ -1150,7 +1150,8 @@ is
               "Recover_Active, Nonterm);";
 
          elsif Is_Present (Input_Data.Tokens.Actions, Elisp_Name) then
-            --  Language-specific action
+            --  Language-specific action (used in wisitoken grammar mode for
+            --  wisi-check-parens).
             declare
                Item   : Elisp_Action_Type renames Input_Data.Tokens.Actions
                  (Input_Data.Tokens.Actions.Find (+Elisp_Name));
@@ -1264,8 +1265,8 @@ is
          Indent_Line ("procedure " & Name);
          Indent_Line (" (User_Data : in out 
WisiToken.Syntax_Trees.User_Data_Type'Class;");
          Indent_Line ("  Tree      : in out WisiToken.Syntax_Trees.Tree;");
-         Indent_Line ("  Nonterm   : in     
WisiToken.Syntax_Trees.Valid_Node_Index;");
-         Indent_Line ("  Tokens    : in     
WisiToken.Syntax_Trees.Valid_Node_Index_Array)");
+         Indent_Line ("  Nonterm   : in     WisiToken.Valid_Node_Index;");
+         Indent_Line ("  Tokens    : in     
WisiToken.Valid_Node_Index_Array)");
          Indent_Line ("is");
 
          Indent := Indent + 3;
diff --git a/packages/wisi/wisitoken-bnf.ads b/packages/wisi/wisitoken-bnf.ads
index d586c4a..5263008 100644
--- a/packages/wisi/wisitoken-bnf.ads
+++ b/packages/wisi/wisitoken-bnf.ads
@@ -13,7 +13,7 @@
 --  [1] https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form
 --  [2] http://www.nongnu.org/ada-mode/wisi/wisi-user_guide.html, (info 
"(wisi-user_guide)Top")
 --
---  Copyright (C) 2012 - 2015, 2017 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2012 - 2015, 2017 - 2020 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
@@ -211,26 +211,26 @@ package WisiToken.BNF is
       --  Of the %mckenzie_cost_default declaration; we assume the others
       --  are near.
 
-      Default_Insert              : Natural               := 0;
-      Default_Delete_Terminal     : Natural               := 0;
-      Default_Push_Back           : Natural               := 0; -- also 
default for undo_reduce
-      Delete                      : String_Pair_Lists.List;
-      Insert                      : String_Pair_Lists.List;
-      Push_Back                   : String_Pair_Lists.List;
-      Undo_Reduce                 : String_Pair_Lists.List;
-      Minimal_Complete_Cost_Delta : Integer               :=
+      Default_Insert                        : Natural               := 0;
+      Default_Delete_Terminal               : Natural               := 0;
+      Default_Push_Back                     : Natural               := 0; -- 
also default for undo_reduce
+      Delete                                : String_Pair_Lists.List;
+      Insert                                : String_Pair_Lists.List;
+      Push_Back                             : String_Pair_Lists.List;
+      Undo_Reduce                           : String_Pair_Lists.List;
+      Minimal_Complete_Cost_Delta           : Integer               :=
         WisiToken.Parse.LR.Default_McKenzie_Param.Minimal_Complete_Cost_Delta;
-      Fast_Forward                : Integer               :=
+      Fast_Forward                          : Integer               :=
         WisiToken.Parse.LR.Default_McKenzie_Param.Fast_Forward;
-      Matching_Begin              : Integer               :=
+      Matching_Begin                        : Integer               :=
         WisiToken.Parse.LR.Default_McKenzie_Param.Matching_Begin;
-      Ignore_Check_Fail           : Natural               :=
+      Ignore_Check_Fail                     : Natural               :=
         WisiToken.Parse.LR.Default_McKenzie_Param.Ignore_Check_Fail;
-      Check_Limit                 : WisiToken.Token_Index :=
+      Check_Limit                           : WisiToken.Token_Index :=
         WisiToken.Parse.LR.Default_McKenzie_Param.Check_Limit;
-      Check_Delta_Limit           : Natural               :=
+      Check_Delta_Limit                     : Natural               :=
         WisiToken.Parse.LR.Default_McKenzie_Param.Check_Delta_Limit;
-      Enqueue_Limit               : Natural               :=
+      Enqueue_Limit                         : Natural               :=
         WisiToken.Parse.LR.Default_McKenzie_Param.Enqueue_Limit;
    end record;
 
diff --git a/packages/wisi/wisitoken-generate-lr-lalr_generate.adb 
b/packages/wisi/wisitoken-generate-lr-lalr_generate.adb
index 3631f64..e544078 100644
--- a/packages/wisi/wisitoken-generate-lr-lalr_generate.adb
+++ b/packages/wisi/wisitoken-generate-lr-lalr_generate.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2002 - 2005, 2008 - 2015, 2017 - 2019 Free Software 
Foundation, Inc.
+--  Copyright (C) 2002 - 2005, 2008 - 2015, 2017 - 2020 Free Software 
Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -22,21 +22,48 @@ pragma License (Modified_GPL);
 
 with Ada.Containers;
 with Ada.Text_IO;
-with SAL.Gen_Definite_Doubly_Linked_Lists;
+with SAL.Gen_Definite_Doubly_Linked_Lists_Sorted;
 package body WisiToken.Generate.LR.LALR_Generate is
 
-   package Item_List_Cursor_Lists is new SAL.Gen_Definite_Doubly_Linked_Lists 
(LR1_Items.Item_Lists.Cursor);
+   type Item_ID is record
+      State : Unknown_State_Index                   := Unknown_State;
+      LHS   : Token_ID                              := Invalid_Token_ID;
+      RHS   : Productions.RHS_Arrays.Extended_Index := 
Productions.RHS_Arrays.No_Index;
+      Dot   : Token_ID_Arrays.Extended_Index        := 
Token_ID_Arrays.No_Index;
+   end record;
+
+   function Image (Item : in Item_ID) return String
+     is ("(" & Item.State'Image & ", " & Trimmed_Image ((Item.LHS, Item.RHS)) 
& ")");
+
+   function Compare (Left, Right : in Item_ID) return SAL.Compare_Result
+     is (if Left.State < Right.State then SAL.Less
+         elsif Left.State > Right.State then SAL.Greater
+         elsif Left.LHS < Right.LHS then SAL.Less
+         elsif Left.LHS > Right.LHS then SAL.Greater
+         elsif Left.RHS < Right.RHS then SAL.Less
+         elsif Left.RHS > Right.RHS then SAL.Greater
+         elsif Left.Dot < Right.Dot then SAL.Less
+         elsif Left.Dot > Right.Dot then SAL.Greater
+         else SAL.Equal);
+
+   package Item_ID_Lists is new SAL.Gen_Definite_Doubly_Linked_Lists_Sorted 
(Item_ID, Compare);
 
    type Item_Map is record
-      --  Keep track of all copies of Item, so Lookaheads can be updated
-      --  after they are initially copied.
-      From : LR1_Items.Item_Lists.Cursor;
-      To   : Item_List_Cursor_Lists.List;
+      From : Item_ID;
+      To   : Item_ID_Lists.List;
    end record;
 
-   package Item_Map_Lists is new SAL.Gen_Definite_Doubly_Linked_Lists 
(Item_Map);
-   --  IMPROVEME: should be a 3D array indexed by Prod, rhs_index,
-   --  dot_index. But it's not broken or slow, so we're not fixing it.
+   function Compare (Left, Right : in Item_Map) return SAL.Compare_Result
+     is (Compare (Left.From, Right.From));
+
+   package Propagation_Lists is new 
SAL.Gen_Definite_Doubly_Linked_Lists_Sorted (Item_Map, Compare);
+
+   function Item_Ref
+     (Kernels : in out LR1_Items.Item_Set_List;
+      ID      : in     Item_ID)
+     return LR1_Items.Item_Lists.Variable_Reference_Type
+     is (LR1_Items.Item_Lists.Variable_Ref
+           (LR1_Items.Find (Prod => (ID.LHS, ID.RHS), Dot => ID.Dot, Set => 
Kernels (ID.State))));
 
    function Propagate_Lookahead (Descriptor : in WisiToken.Descriptor) return 
Token_ID_Set_Access
    is begin
@@ -51,22 +78,15 @@ package body WisiToken.Generate.LR.LALR_Generate is
    ----------
    --  Debug output
 
-   procedure Put
-     (Grammar      : in WisiToken.Productions.Prod_Arrays.Vector;
-      Descriptor   : in WisiToken.Descriptor;
-      Propagations : in Item_Map_Lists.List)
+   procedure Put (Propagations : in Propagation_Lists.List)
    is
-      use LR1_Items.Item_Lists;
+      use Item_ID_Lists;
    begin
       for Map of Propagations loop
-         Ada.Text_IO.Put ("From ");
-         LR1_Items.Put (Grammar, Descriptor, Constant_Ref (Map.From), 
Show_Lookaheads => True);
-         Ada.Text_IO.New_Line;
+         Ada.Text_IO.Put_Line ("From " & Image (Map.From));
 
-         for Cur of Map.To loop
-            Ada.Text_IO.Put ("To   ");
-            LR1_Items.Put (Grammar, Descriptor, Constant_Ref (Cur), 
Show_Lookaheads => True);
-            Ada.Text_IO.New_Line;
+         for ID of Map.To loop
+            Ada.Text_IO.Put_Line ("To   " & Image (ID));
          end loop;
       end loop;
    end Put;
@@ -87,62 +107,68 @@ package body WisiToken.Generate.LR.LALR_Generate is
       use LR1_Items.Item_Lists;
 
       Goto_Set : Item_Set;
-      Dot_ID   : Token_ID;
    begin
       for Item of Kernel.Set loop
 
-         if Has_Element (Item.Dot) then
-
-            Dot_ID := Element (Item.Dot);
-            --  ID of token after Dot
-
-            --  If Symbol = EOF_Token, this is the start symbol accept
-            --  production; don't need a kernel with dot after EOF.
-            if (Dot_ID = Symbol and Symbol /= Descriptor.EOI_ID) and then
-              not Has_Element (Find (Item.Prod, Next (Item.Dot), Goto_Set))
-            then
-               Goto_Set.Set.Insert
-                 ((Prod       => Item.Prod,
-                   Dot        => Next (Item.Dot),
-                   Lookaheads => new Token_ID_Set'(Item.Lookaheads.all)));
-
-               if Trace_Generate > Detail then
-                  Ada.Text_IO.Put_Line ("LALR_Goto_Transitions 1 " & Image 
(Symbol, Descriptor));
-                  Put (Grammar, Descriptor, Goto_Set);
+         if Item.Dot /= No_Index then
+
+            declare
+               Dot      : constant Token_ID_Arrays.Cursor := 
Productions.Constant_Ref_RHS
+                 (Grammar, Item.Prod).Tokens.To_Cursor (Item.Dot);
+               Dot_ID   : constant Token_ID               := Element (Dot);
+               Next_Dot : constant Token_ID_Arrays.Cursor := Next (Dot);
+            begin
+               --  If Symbol = EOF_Token, this is the start symbol accept
+               --  production; don't need a kernel with dot after EOF.
+
+               if (Dot_ID = Symbol and Symbol /= Descriptor.EOI_ID) and then
+                 not Has_Element (Find (Item, Goto_Set))
+               then
+                  Goto_Set.Set.Insert
+                    ((Prod       => Item.Prod,
+                      Dot        => To_Index (Next_Dot),
+                      Lookaheads => new Token_ID_Set'(Item.Lookaheads.all)));
+
+                  if Trace_Generate_Table > Detail then
+                     Ada.Text_IO.Put_Line ("LALR_Goto_Transitions 1 " & Image 
(Symbol, Descriptor));
+                     Put (Grammar, Descriptor, Goto_Set);
+                  end if;
                end if;
-            end if;
 
-            if Dot_ID in Descriptor.First_Nonterminal .. 
Descriptor.Last_Nonterminal and then
-              First_Nonterm_Set (Dot_ID, Symbol)
-            then
-               --  Find the production(s) that create Dot_ID with first token 
Symbol
-               --  and put them in.
-               for Prod of Grammar loop
-                  for RHS_2_I in Prod.RHSs.First_Index .. Prod.RHSs.Last_Index 
loop
-                     declare
-                        P_ID  : constant Production_ID          := (Prod.LHS, 
RHS_2_I);
-                        Dot_2 : constant Token_ID_Arrays.Cursor := Prod.RHSs 
(RHS_2_I).Tokens.First;
-                     begin
-                        if (Dot_ID = Prod.LHS or First_Nonterm_Set (Dot_ID, 
Prod.LHS)) and
-                          (Has_Element (Dot_2) and then Element (Dot_2) = 
Symbol)
-                        then
-                           if not Has_Element (Find (P_ID, Next (Dot_2), 
Goto_Set)) then
-                              Goto_Set.Set.Insert
-                                ((Prod       => P_ID,
-                                  Dot        => Next (Dot_2),
-                                  Lookaheads => Null_Lookahead (Descriptor)));
-
-                              --  else already in goto set
+               if Dot_ID in Descriptor.First_Nonterminal .. 
Descriptor.Last_Nonterminal and then
+                 First_Nonterm_Set (Dot_ID, Symbol)
+               then
+                  --  Find the production(s) that create Dot_ID with first 
token Symbol
+                  --  and put them in.
+                  for Prod of Grammar loop
+                     for RHS_2_I in Prod.RHSs.First_Index .. 
Prod.RHSs.Last_Index loop
+                        declare
+                           P_ID       : constant Production_ID          := 
(Prod.LHS, RHS_2_I);
+                           Tokens     : Token_ID_Arrays.Vector renames 
Prod.RHSs (RHS_2_I).Tokens;
+                           Dot_2      : constant Token_ID_Arrays.Cursor := 
Tokens.First;
+                           Next_Dot_2 : constant Token_ID_Arrays.Cursor := 
Next (Dot_2);
+                        begin
+                           if (Dot_ID = Prod.LHS or First_Nonterm_Set (Dot_ID, 
Prod.LHS)) and
+                             (Has_Element (Dot_2) and then Element (Dot_2) = 
Symbol)
+                           then
+                              if not Has_Element (Find (P_ID, To_Index 
(Next_Dot_2), Goto_Set)) then
+                                 Goto_Set.Set.Insert
+                                   ((Prod       => P_ID,
+                                     Dot        => To_Index (Next_Dot_2),
+                                     Lookaheads => Null_Lookahead 
(Descriptor)));
+
+                                 --  else already in goto set
+                              end if;
                            end if;
-                        end if;
-                     end;
+                        end;
+                     end loop;
                   end loop;
-               end loop;
-               if Trace_Generate > Detail then
-                  Ada.Text_IO.Put_Line ("LALR_Goto_Transitions 2 " & Image 
(Symbol, Descriptor));
-                  Put (Grammar, Descriptor, Goto_Set);
+                  if Trace_Generate_Table > Detail then
+                     Ada.Text_IO.Put_Line ("LALR_Goto_Transitions 2 " & Image 
(Symbol, Descriptor));
+                     Put (Grammar, Descriptor, Goto_Set);
+                  end if;
                end if;
-            end if;
+            end;
          end if; -- item.dot /= null
       end loop;
 
@@ -155,7 +181,6 @@ package body WisiToken.Generate.LR.LALR_Generate is
       Descriptor        : in WisiToken.Descriptor)
      return LR1_Items.Item_Set_List
    is
-      use all type Token_ID_Arrays.Cursor;
       use all type Ada.Containers.Count_Type;
       use LR1_Items;
 
@@ -164,28 +189,28 @@ package body WisiToken.Generate.LR.LALR_Generate is
       Kernel_Tree       : LR1_Items.Item_Set_Trees.Tree; -- for fast find
       States_To_Check   : State_Index_Queues.Queue;
       Checking_State    : State_Index;
-
-      New_Item_Set : Item_Set :=
-        (Set            => Item_Lists.To_List
-           ((Prod       => (Grammar.First_Index, 0),
-             Dot        => Grammar (Grammar.First_Index).RHSs (0).Tokens.First,
-             Lookaheads => Null_Lookahead (Descriptor))),
-         Goto_List      => <>,
-         Dot_IDs        => <>,
-         State          => First_State_Index);
-
-      Found_State : Unknown_State_Index;
    begin
       Kernels.Set_First_Last (First_State_Index, First_State_Index - 1);
 
-      Add (New_Item_Set, Kernels, Kernel_Tree, Descriptor, Include_Lookaheads 
=> False);
+      Add (Grammar,
+           (Set               => Item_Lists.To_List
+              ((Prod          => (Grammar.First_Index, 0),
+                Dot           => Grammar (Grammar.First_Index).RHSs 
(0).Tokens.First_Index,
+                Lookaheads    => Null_Lookahead (Descriptor))),
+            Goto_List         => <>,
+            Dot_IDs           => <>,
+            State             => First_State_Index),
+           Kernels,
+           Kernel_Tree,
+           Descriptor,
+           Include_Lookaheads => False);
 
       States_To_Check.Put (First_State_Index);
       loop
          exit when States_To_Check.Is_Empty;
          Checking_State := States_To_Check.Get;
 
-         if Trace_Generate > Detail then
+         if Trace_Generate_Table > Detail then
             Ada.Text_IO.Put ("Checking ");
             Put (Grammar, Descriptor, Kernels (Checking_State));
          end if;
@@ -195,50 +220,53 @@ package body WisiToken.Generate.LR.LALR_Generate is
             --  Item_Set.Dot_IDs, so we can't iterate on that here as we do in
             --  LR1_Generate.
 
-            New_Item_Set := LALR_Goto_Transitions
-              (Kernels (Checking_State), Symbol, First_Nonterm_Set, Grammar, 
Descriptor);
-
-            if New_Item_Set.Set.Length > 0 then
-
-               Found_State := Find (New_Item_Set, Kernel_Tree, 
Match_Lookaheads => False);
-
-               if Found_State = Unknown_State then
-                  New_Item_Set.State := Kernels.Last_Index + 1;
+            declare
+               New_Item_Set : Item_Set := LALR_Goto_Transitions
+                 (Kernels (Checking_State), Symbol, First_Nonterm_Set, 
Grammar, Descriptor);
+               Found_State : Unknown_State_Index;
+            begin
+               if New_Item_Set.Set.Length > 0 then
 
-                  States_To_Check.Put (New_Item_Set.State);
+                  Found_State := Find (New_Item_Set, Kernel_Tree, 
Match_Lookaheads => False);
 
-                  Add (New_Item_Set, Kernels, Kernel_Tree, Descriptor, 
Include_Lookaheads => False);
+                  if Found_State = Unknown_State then
+                     New_Item_Set.State := Kernels.Last_Index + 1;
 
-                  if Trace_Generate > Detail then
-                     Ada.Text_IO.Put_Line ("  adding state" & 
Unknown_State_Index'Image (Kernels.Last_Index));
+                     States_To_Check.Put (New_Item_Set.State);
 
-                     Ada.Text_IO.Put_Line
-                       ("  state" & Unknown_State_Index'Image (Checking_State) 
&
-                          " adding goto on " & Image (Symbol, Descriptor) & " 
to state" &
-                          Unknown_State_Index'Image (Kernels.Last_Index));
-                  end if;
+                     Add (Grammar, New_Item_Set, Kernels, Kernel_Tree, 
Descriptor, Include_Lookaheads => False);
 
-                  Kernels (Checking_State).Goto_List.Insert ((Symbol, 
Kernels.Last_Index));
-               else
+                     if Trace_Generate_Table > Detail then
+                        Ada.Text_IO.Put_Line ("  adding state" & 
Unknown_State_Index'Image (Kernels.Last_Index));
 
-                  --  If there's not already a goto entry between these two 
sets, create one.
-                  if not Is_In ((Symbol, Found_State), Kernels 
(Checking_State).Goto_List) then
-                     if Trace_Generate > Detail then
                         Ada.Text_IO.Put_Line
                           ("  state" & Unknown_State_Index'Image 
(Checking_State) &
                              " adding goto on " & Image (Symbol, Descriptor) & 
" to state" &
-                             Unknown_State_Index'Image (Found_State));
-
+                             Unknown_State_Index'Image (Kernels.Last_Index));
                      end if;
 
-                     Kernels (Checking_State).Goto_List.Insert ((Symbol, 
Found_State));
+                     Kernels (Checking_State).Goto_List.Insert ((Symbol, 
Kernels.Last_Index));
+                  else
+
+                     --  If there's not already a goto entry between these two 
sets, create one.
+                     if not Is_In ((Symbol, Found_State), Kernels 
(Checking_State).Goto_List) then
+                        if Trace_Generate_Table > Detail then
+                           Ada.Text_IO.Put_Line
+                             ("  state" & Unknown_State_Index'Image 
(Checking_State) &
+                                " adding goto on " & Image (Symbol, 
Descriptor) & " to state" &
+                                Unknown_State_Index'Image (Found_State));
+
+                        end if;
+
+                        Kernels (Checking_State).Goto_List.Insert ((Symbol, 
Found_State));
+                     end if;
                   end if;
                end if;
-            end if;
+            end;
          end loop;
       end loop;
 
-      if Trace_Generate > Detail then
+      if Trace_Generate_Table > Detail then
          Ada.Text_IO.New_Line;
       end if;
 
@@ -248,60 +276,35 @@ package body WisiToken.Generate.LR.LALR_Generate is
    --  Add a propagation entry (if it doesn't already exist) from From in
    --  From_Set to To_Item.
    procedure Add_Propagation
-     (From         : in     LR1_Items.Item;
-      From_Set     : in     LR1_Items.Item_Set;
+     (From_Item    : in     LR1_Items.Item;
+      From_State   : in     State_Index;
       To_Item      : in     LR1_Items.Item_Lists.Cursor;
-      Propagations : in out Item_Map_Lists.List)
+      To_State     : in     State_Index;
+      Propagations : in out Propagation_Lists.List)
    is
-      use Item_Map_Lists;
-      use Item_List_Cursor_Lists;
+      use Propagation_Lists;
       use LR1_Items;
       use LR1_Items.Item_Lists;
+      use Item_ID_Lists;
+
+      To_Item_Ref : constant LR1_Items.Item_Lists.Constant_Reference_Type := 
Constant_Ref (To_Item);
 
-      From_Cur : constant Item_Lists.Cursor := Find (From, From_Set);
+      From_ID : constant Item_ID := (From_State, From_Item.Prod.LHS, 
From_Item.Prod.RHS, From_Item.Dot);
+      To_ID   : constant Item_ID := (To_State, To_Item_Ref.Prod.LHS, 
To_Item_Ref.Prod.RHS, To_Item_Ref.Dot);
 
-      From_Match : Item_Map_Lists.Cursor := Propagations.First;
-      To_Match   : Item_List_Cursor_Lists.Cursor;
+      From_Match : constant Propagation_Lists.Cursor := Propagations.Find 
((From_ID, Item_ID_Lists.Empty_List));
    begin
-      Find_From :
-      loop
-         exit Find_From when not Has_Element (From_Match);
+      if not Has_Element (From_Match) then
+         Propagations.Insert ((From_ID, To_List (To_ID)));
 
+      else
          declare
-            Map : Item_Map renames Constant_Ref (From_Match);
+            To_Match : constant Item_ID_Lists.Cursor := Constant_Ref 
(From_Match).To.Find (To_ID);
          begin
-            if From_Cur = Map.From then
-
-               To_Match := Map.To.First;
-               loop
-                  exit when not Has_Element (To_Match);
-
-                  declare
-                     use all type SAL.Compare_Result;
-                     Cur       : Item_Lists.Cursor renames Constant_Ref 
(To_Match);
-                     Test_Item : LR1_Items.Item renames Constant_Ref (Cur);
-                  begin
-                     if Equal = LR1_Items.Item_Compare (Test_Item, 
Constant_Ref (To_Item)) then
-                        exit Find_From;
-                     end if;
-                  end;
-                  Next (To_Match);
-               end loop;
-               exit Find_From;
+            if not Has_Element (To_Match) then
+               Variable_Ref (From_Match).To.Insert (To_ID);
             end if;
          end;
-
-         Next (From_Match);
-      end loop Find_From;
-
-      if not Has_Element (From_Match) then
-         Propagations.Append ((From_Cur, To_List (To_Item)));
-
-      elsif not Has_Element (To_Match) then
-         Variable_Ref (From_Match).To.Append (To_Item);
-
-      else
-         raise SAL.Programmer_Error with "Add_Propagation: unexpected case";
       end if;
    end Add_Propagation;
 
@@ -317,7 +320,7 @@ package body WisiToken.Generate.LR.LALR_Generate is
      (Source_Item  : in     LR1_Items.Item;
       Source_Set   : in     LR1_Items.Item_Set;
       Closure_Item : in     LR1_Items.Item;
-      Propagations : in out Item_Map_Lists.List;
+      Propagations : in out Propagation_Lists.List;
       Descriptor   : in     WisiToken.Descriptor;
       Grammar      : in     WisiToken.Productions.Prod_Arrays.Vector;
       Kernels      : in out LR1_Items.Item_Set_List)
@@ -328,62 +331,65 @@ package body WisiToken.Generate.LR.LALR_Generate is
 
       Spontaneous_Count : Integer := 0;
    begin
-      if Trace_Generate > Outline then
+      if Trace_Generate_Table > Outline then
          Ada.Text_IO.Put_Line ("  closure_item: ");
          LR1_Items.Put (Grammar, Descriptor, Closure_Item);
          Ada.Text_IO.New_Line;
       end if;
 
-      if not Has_Element (Closure_Item.Dot) then
+      if Closure_Item.Dot = No_Index then
          return;
       end if;
 
       declare
-         ID         : constant Token_ID               := Element 
(Closure_Item.Dot);
-         Next_Dot   : constant Token_ID_Arrays.Cursor := Next 
(Closure_Item.Dot);
+         Dot        : constant Token_ID_Arrays.Cursor := 
Productions.Constant_Ref_RHS
+           (Grammar, Closure_Item.Prod).Tokens.To_Cursor (Closure_Item.Dot);
+         ID         : constant Token_ID               := Element (Dot);
+         Next_Dot   : constant Token_ID_Arrays.Cursor := Next (Dot);
          Goto_State : constant Unknown_State_Index    := LR1_Items.Goto_State 
(Source_Set, ID);
-         To_Item    : constant Item_Lists.Cursor      :=
-           (if Goto_State = Unknown_State then Item_Lists.No_Element
-            else LR1_Items.Find (Closure_Item.Prod, Next_Dot, Kernels 
(Goto_State)));
       begin
-         if Closure_Item.Lookaheads (Descriptor.Last_Lookahead) and 
Has_Element (To_Item) then
-            Add_Propagation
-              (From         => Source_Item,
-               From_Set     => Source_Set,
-               To_Item      => To_Item,
-               Propagations => Propagations);
-         end if;
+         if Goto_State /= Unknown_State then
+            declare
+               To_Item : constant Item_Lists.Cursor :=
+                 LR1_Items.Find (Closure_Item.Prod, To_Index (Next_Dot), 
Kernels (Goto_State));
+            begin
+               if Closure_Item.Lookaheads (Descriptor.Last_Lookahead) then
+                  Add_Propagation
+                    (From_Item    => Source_Item,
+                     From_State   => Source_Set.State,
+                     To_Item      => To_Item,
+                     To_State     => Goto_State,
+                     Propagations => Propagations);
+               end if;
 
-         if Has_Element (To_Item) then
-            if Trace_Generate > Outline then
-               Spontaneous_Count := Spontaneous_Count + 1;
-               Ada.Text_IO.Put_Line ("  spontaneous: " & Lookahead_Image 
(Closure_Item.Lookaheads.all, Descriptor));
-            end if;
+               if Trace_Generate_Table > Outline then
+                  Spontaneous_Count := Spontaneous_Count + 1;
+                  Ada.Text_IO.Put_Line ("  spontaneous: " & Lookahead_Image 
(Closure_Item.Lookaheads.all, Descriptor));
+               end if;
 
-            LR1_Items.Include (Variable_Ref (To_Item), 
Closure_Item.Lookaheads.all, Descriptor);
+               LR1_Items.Include (Variable_Ref (To_Item), 
Closure_Item.Lookaheads.all, Descriptor);
+            end;
          end if;
       end;
    end Generate_Lookahead_Info;
 
    procedure Propagate_Lookaheads
-     (List       : in Item_Map_Lists.List;
-      Descriptor : in WisiToken.Descriptor)
+     (Propagations : in     Propagation_Lists.List;
+      Kernels      : in out LR1_Items.Item_Set_List;
+      Descriptor   : in     WisiToken.Descriptor)
    is
-      --  In List, update all To lookaheads from From lookaheads,
+      --  In Propagations, update all To lookaheads from From lookaheads,
       --  recursively.
-
-      use LR1_Items.Item_Lists;
-
       More_To_Check : Boolean := True;
       Added_One     : Boolean;
    begin
       while More_To_Check loop
 
          More_To_Check := False;
-         for Mapping of List loop
-            for Copy of Mapping.To loop
+         for Map of Propagations loop
+            for ID of Map.To loop
                LR1_Items.Include
-                 (Variable_Ref (Copy), Constant_Ref 
(Mapping.From).Lookaheads.all, Added_One, Descriptor);
+                 (Item_Ref (Kernels, ID), Item_Ref (Kernels, 
Map.From).Lookaheads.all, Added_One, Descriptor);
 
                More_To_Check := More_To_Check or Added_One;
             end loop;
@@ -401,53 +407,41 @@ package body WisiToken.Generate.LR.LALR_Generate is
       Kernels                 : in out LR1_Items.Item_Set_List;
       Descriptor              : in     WisiToken.Descriptor)
    is
-      pragma Warnings (Off, """Kernel_Item_Set"" is not modified, could be 
declared constant");
-      --  WORKAROUND: GNAT GPL 2018 complains Kernel_Item_Set could be a 
constant, but
-      --  when we declare that, it complains the target of the assignment of
-      --  .Prod, .Dot below must be a variable.
-
-      Kernel_Item_Set : LR1_Items.Item_Set := -- used for temporary arg to 
Closure
-        (Set            => LR1_Items.Item_Lists.To_List
-           ((Prod       => <>,
-             Dot        => <>,
-             Lookaheads => Propagate_Lookahead (Descriptor))),
-         Goto_List      => <>,
-         Dot_IDs        => <>,
-         State          => <>);
-
       Closure : LR1_Items.Item_Set;
-
-      Propagation_List : Item_Map_Lists.List;
-
+      Propagations : Propagation_Lists.List;
    begin
       for Kernel of Kernels loop
-         if Trace_Generate > Outline then
+         if Trace_Generate_Table > Outline then
             Ada.Text_IO.Put ("Adding lookaheads for ");
             LR1_Items.Put (Grammar, Descriptor, Kernel);
          end if;
 
          for Kernel_Item of Kernel.Set loop
-            Kernel_Item_Set.Set (Kernel_Item_Set.Set.First).Prod := 
Kernel_Item.Prod;
-            Kernel_Item_Set.Set (Kernel_Item_Set.Set.First).Dot  := 
Kernel_Item.Dot;
-
             Closure := LR1_Items.Closure
-              (Kernel_Item_Set, Has_Empty_Production, First_Terminal_Sequence, 
Grammar, Descriptor);
+              ((Set            => LR1_Items.Item_Lists.To_List
+                  ((Prod       => Kernel_Item.Prod,
+                    Dot        => Kernel_Item.Dot,
+                    Lookaheads => Propagate_Lookahead (Descriptor))),
+                Goto_List      => <>,
+                Dot_IDs        => <>,
+                State          => <>),
+               Has_Empty_Production, First_Terminal_Sequence, Grammar, 
Descriptor);
 
             for Closure_Item of Closure.Set loop
                Generate_Lookahead_Info
-                 (Kernel_Item, Kernel, Closure_Item, Propagation_List, 
Descriptor, Grammar, Kernels);
+                 (Kernel_Item, Kernel, Closure_Item, Propagations, Descriptor, 
Grammar, Kernels);
             end loop;
          end loop;
       end loop;
 
-      if Trace_Generate > Outline then
+      if Trace_Generate_Table > Outline then
          Ada.Text_IO.New_Line;
          Ada.Text_IO.Put_Line ("Propagations:");
-         Put (Grammar, Descriptor, Propagation_List);
+         Put (Propagations);
          Ada.Text_IO.New_Line;
       end if;
 
-      Propagate_Lookaheads (Propagation_List, Descriptor);
+      Propagate_Lookaheads (Propagations, Kernels, Descriptor);
    end Fill_In_Lookaheads;
 
    --  Add actions for all Kernels to Table.
@@ -475,38 +469,39 @@ package body WisiToken.Generate.LR.LALR_Generate is
             Conflict_Counts, Conflicts, Descriptor);
       end loop;
 
-      if Trace_Generate > Detail then
+      if Trace_Generate_Table > Detail then
          Ada.Text_IO.New_Line;
       end if;
    end Add_Actions;
 
    function Generate
-     (Grammar           : in WisiToken.Productions.Prod_Arrays.Vector;
-      Descriptor        : in WisiToken.Descriptor;
-      Known_Conflicts   : in Conflict_Lists.List := Conflict_Lists.Empty_List;
-      McKenzie_Param    : in McKenzie_Param_Type := Default_McKenzie_Param;
-      Put_Parse_Table   : in Boolean             := False;
-      Include_Extra     : in Boolean             := False;
-      Ignore_Conflicts  : in Boolean             := False;
-      Partial_Recursion : in Boolean             := True)
+     (Grammar               : in out WisiToken.Productions.Prod_Arrays.Vector;
+      Descriptor            : in     WisiToken.Descriptor;
+      Known_Conflicts       : in     Conflict_Lists.List := 
Conflict_Lists.Empty_List;
+      McKenzie_Param        : in     McKenzie_Param_Type := 
Default_McKenzie_Param;
+      Parse_Table_File_Name : in     String              := "";
+      Include_Extra         : in     Boolean             := False;
+      Ignore_Conflicts      : in     Boolean             := False;
+      Partial_Recursion     : in     Boolean             := True)
      return Parse_Table_Ptr
    is
       use all type Ada.Containers.Count_Type;
 
-      Ignore_Unused_Tokens     : constant Boolean := WisiToken.Trace_Generate 
> Detail;
-      Ignore_Unknown_Conflicts : constant Boolean := Ignore_Conflicts or 
WisiToken.Trace_Generate > Detail;
+      Ignore_Unused_Tokens     : constant Boolean := 
WisiToken.Trace_Generate_Table > Detail;
+      Ignore_Unknown_Conflicts : constant Boolean := Ignore_Conflicts or 
WisiToken.Trace_Generate_Table > Detail;
       Unused_Tokens            : constant Boolean := 
WisiToken.Generate.Check_Unused_Tokens (Descriptor, Grammar);
 
       Table : Parse_Table_Ptr;
 
-      Has_Empty_Production : constant Token_ID_Set := 
WisiToken.Generate.Has_Empty_Production (Grammar);
+      Nullable : constant Token_Array_Production_ID := 
WisiToken.Generate.Nullable (Grammar);
+      Has_Empty_Production : constant Token_ID_Set := 
WisiToken.Generate.Has_Empty_Production (Nullable);
 
       Recursions : constant WisiToken.Generate.Recursions :=
         (if Partial_Recursion
-         then WisiToken.Generate.Compute_Partial_Recursion (Grammar)
-         else WisiToken.Generate.Compute_Full_Recursion (Grammar));
+         then WisiToken.Generate.Compute_Partial_Recursion (Grammar, 
Descriptor)
+         else WisiToken.Generate.Compute_Full_Recursion (Grammar, Descriptor));
       Minimal_Terminal_Sequences : constant Minimal_Sequence_Array :=
-        Compute_Minimal_Terminal_Sequences (Descriptor, Grammar, Recursions);
+        Compute_Minimal_Terminal_Sequences (Descriptor, Grammar);
 
       Minimal_Terminal_First : constant Token_Array_Token_ID :=
         Compute_Minimal_Terminal_First (Descriptor, 
Minimal_Terminal_Sequences);
@@ -526,6 +521,11 @@ package body WisiToken.Generate.LR.LALR_Generate is
    begin
       WisiToken.Generate.Error := False; -- necessary in unit tests; some 
previous test might have encountered an error.
 
+      if Trace_Generate_Table + Trace_Generate_Minimal_Complete > Outline then
+         Ada.Text_IO.New_Line;
+         Ada.Text_IO.Put_Line ("LALR_Generate");
+      end if;
+
       Fill_In_Lookaheads (Grammar, Has_Empty_Production, 
First_Terminal_Sequence, Kernels, Descriptor);
 
       if Unused_Tokens then
@@ -533,7 +533,7 @@ package body WisiToken.Generate.LR.LALR_Generate is
          Ada.Text_IO.New_Line;
       end if;
 
-      if Trace_Generate > Detail then
+      if Trace_Generate_Table > Detail then
          Ada.Text_IO.New_Line;
          Ada.Text_IO.Put_Line ("LR(1) Kernels:");
          LR1_Items.Put (Grammar, Descriptor, Kernels, Show_Lookaheads => True);
@@ -575,17 +575,17 @@ package body WisiToken.Generate.LR.LALR_Generate is
          Unknown_Conflicts, Table.all, Descriptor);
 
       for State in Table.States'Range loop
-         if Trace_Generate > Extra then
+         if Trace_Generate_Minimal_Complete > Extra then
             Ada.Text_IO.Put_Line ("Set_Minimal_Complete_Actions:" & 
State_Index'Image (State));
          end if;
          WisiToken.Generate.LR.Set_Minimal_Complete_Actions
-           (Table.States (State), Kernels (State), Descriptor, Grammar, 
Minimal_Terminal_Sequences,
+           (Table.States (State), Kernels (State), Descriptor, Grammar, 
Nullable, Minimal_Terminal_Sequences,
             Minimal_Terminal_First);
       end loop;
 
-      if Put_Parse_Table then
+      if Parse_Table_File_Name /= "" then
          WisiToken.Generate.LR.Put_Parse_Table
-           (Table, "LALR", Grammar, Recursions, Minimal_Terminal_Sequences, 
Kernels, Conflict_Counts, Descriptor,
+           (Table, Parse_Table_File_Name, "LALR", Grammar, Recursions, 
Kernels, Conflict_Counts, Descriptor,
             Include_Extra);
       end if;
 
diff --git a/packages/wisi/wisitoken-generate-lr-lalr_generate.ads 
b/packages/wisi/wisitoken-generate-lr-lalr_generate.ads
index 9e33931..7527a9c 100644
--- a/packages/wisi/wisitoken-generate-lr-lalr_generate.ads
+++ b/packages/wisi/wisitoken-generate-lr-lalr_generate.ads
@@ -2,7 +2,7 @@
 --
 --  Generalized LALR parse table generator.
 --
---  Copyright (C) 2002 - 2003, 2009 - 2010, 2013 - 2015, 2017 - 2019 Free 
Software Foundation, Inc.
+--  Copyright (C) 2002 - 2003, 2009 - 2010, 2013 - 2015, 2017 - 2020 Free 
Software Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -25,14 +25,14 @@ with WisiToken.Productions;
 package WisiToken.Generate.LR.LALR_Generate is
 
    function Generate
-     (Grammar           : in WisiToken.Productions.Prod_Arrays.Vector;
-      Descriptor        : in WisiToken.Descriptor;
-      Known_Conflicts   : in Conflict_Lists.List := Conflict_Lists.Empty_List;
-      McKenzie_Param    : in McKenzie_Param_Type := Default_McKenzie_Param;
-      Put_Parse_Table   : in Boolean             := False;
-      Include_Extra     : in Boolean             := False;
-      Ignore_Conflicts  : in Boolean             := False;
-      Partial_Recursion : in Boolean             := True)
+     (Grammar               : in out WisiToken.Productions.Prod_Arrays.Vector;
+      Descriptor            : in     WisiToken.Descriptor;
+      Known_Conflicts       : in     Conflict_Lists.List := 
Conflict_Lists.Empty_List;
+      McKenzie_Param        : in     McKenzie_Param_Type := 
Default_McKenzie_Param;
+      Parse_Table_File_Name : in     String              := "";
+      Include_Extra         : in     Boolean             := False;
+      Ignore_Conflicts      : in     Boolean             := False;
+      Partial_Recursion     : in     Boolean             := True)
      return Parse_Table_Ptr
    with Pre =>
      Descriptor.Last_Lookahead = Descriptor.First_Nonterminal and
diff --git a/packages/wisi/wisitoken-generate-lr-lr1_generate.adb 
b/packages/wisi/wisitoken-generate-lr-lr1_generate.adb
index d148c67..8f688c9 100644
--- a/packages/wisi/wisitoken-generate-lr-lr1_generate.adb
+++ b/packages/wisi/wisitoken-generate-lr-lr1_generate.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2017 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2017 - 2020 Free Software Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -41,15 +41,23 @@ package body WisiToken.Generate.LR.LR1_Generate is
       Goto_Set : Item_Set;
    begin
       for Item of Set.Set loop
-         if Item.Dot /= No_Element then
-            if Element (Item.Dot) = Symbol and
-              --  We don't need a state with dot after EOI in the
-              --  accept production. EOI should only appear in the
-              --  accept production.
-              Symbol /= Descriptor.EOI_ID
-            then
-               Goto_Set.Set.Insert ((Item.Prod, Next (Item.Dot), new 
Token_ID_Set'(Item.Lookaheads.all)));
-            end if;
+         if Item.Dot /= No_Index then
+            declare
+               Dot : constant Token_ID_Arrays.Cursor := 
Productions.Constant_Ref_RHS
+                 (Grammar, Item.Prod).Tokens.To_Cursor (Item.Dot);
+            begin
+               if Element (Dot) = Symbol and
+                 --  We don't need a state with dot after EOI in the
+                 --  accept production. EOI should only appear in the
+                 --  accept production.
+                 Symbol /= Descriptor.EOI_ID
+               then
+                  Goto_Set.Set.Insert
+                    ((Item.Prod,
+                      To_Index (Next (Dot)),
+                      new Token_ID_Set'(Item.Lookaheads.all)));
+               end if;
+            end;
          end if;
       end loop;
 
@@ -90,7 +98,7 @@ package body WisiToken.Generate.LR.LR1_Generate is
       New_Item_Set : Item_Set := Closure
         ((Set            => Item_Lists.To_List
             ((Prod       => (Grammar.First_Index, 0),
-              Dot        => Grammar (Grammar.First_Index).RHSs 
(0).Tokens.First,
+              Dot        => Grammar (Grammar.First_Index).RHSs 
(0).Tokens.First_Index,
               Lookaheads => new Token_ID_Set'(To_Lookahead (Descriptor.EOI_ID, 
Descriptor)))),
           Goto_List      => <>,
           Dot_IDs        => <>,
@@ -102,14 +110,14 @@ package body WisiToken.Generate.LR.LR1_Generate is
    begin
       C.Set_First_Last (First_State_Index, First_State_Index - 1);
 
-      Add (New_Item_Set, C, C_Tree, Descriptor, Include_Lookaheads => True);
+      Add (Grammar, New_Item_Set, C, C_Tree, Descriptor, Include_Lookaheads => 
True);
 
       States_To_Check.Put (First_State_Index);
       loop
          exit when States_To_Check.Is_Empty;
          I := States_To_Check.Get;
 
-         if Trace_Generate > Outline then
+         if Trace_Generate_Table > Outline then
             Ada.Text_IO.Put ("Checking ");
             Put (Grammar, Descriptor, C (I), Show_Lookaheads => True, 
Show_Goto_List => True);
          end if;
@@ -134,9 +142,9 @@ package body WisiToken.Generate.LR.LR1_Generate is
 
                   States_To_Check.Put (New_Item_Set.State);
 
-                  Add (New_Item_Set, C, C_Tree, Descriptor, Include_Lookaheads 
=> True);
+                  Add (Grammar, New_Item_Set, C, C_Tree, Descriptor, 
Include_Lookaheads => True);
 
-                  if Trace_Generate > Outline then
+                  if Trace_Generate_Table > Outline then
                      Ada.Text_IO.Put_Line
                        ("  adding state" & Unknown_State_Index'Image 
(C.Last_Index) & ": from state" &
                           Unknown_State_Index'Image (I) & " on " & Image 
(Symbol, Descriptor));
@@ -148,7 +156,7 @@ package body WisiToken.Generate.LR.LR1_Generate is
 
                   --  If there's not already a goto entry between these two 
sets, create one.
                   if not Is_In ((Symbol, Found_State), Goto_List => C 
(I).Goto_List) then
-                     if Trace_Generate > Outline then
+                     if Trace_Generate_Table > Outline then
                         Ada.Text_IO.Put_Line
                           ("  adding goto on " & Image (Symbol, Descriptor) & 
" to state" &
                              Unknown_State_Index'Image (Found_State));
@@ -162,7 +170,7 @@ package body WisiToken.Generate.LR.LR1_Generate is
          end loop;
       end loop;
 
-      if Trace_Generate > Outline then
+      if Trace_Generate_Table > Outline then
          Ada.Text_IO.New_Line;
       end if;
 
@@ -186,38 +194,39 @@ package body WisiToken.Generate.LR.LR1_Generate is
            (Item_Set, Table, Grammar, Has_Empty_Production, First_Nonterm_Set, 
Conflict_Counts, Conflicts, Descriptor);
       end loop;
 
-      if Trace_Generate > Outline then
+      if Trace_Generate_Table > Outline then
          Ada.Text_IO.New_Line;
       end if;
    end Add_Actions;
 
    function Generate
-     (Grammar           : in WisiToken.Productions.Prod_Arrays.Vector;
-      Descriptor        : in WisiToken.Descriptor;
-      Known_Conflicts   : in Conflict_Lists.List := Conflict_Lists.Empty_List;
-      McKenzie_Param    : in McKenzie_Param_Type := Default_McKenzie_Param;
-      Put_Parse_Table   : in Boolean             := False;
-      Include_Extra     : in Boolean             := False;
-      Ignore_Conflicts  : in Boolean             := False;
-      Partial_Recursion : in Boolean             := True)
+     (Grammar               : in out WisiToken.Productions.Prod_Arrays.Vector;
+      Descriptor            : in     WisiToken.Descriptor;
+      Known_Conflicts       : in     Conflict_Lists.List := 
Conflict_Lists.Empty_List;
+      McKenzie_Param        : in     McKenzie_Param_Type := 
Default_McKenzie_Param;
+      Parse_Table_File_Name : in     String              := "";
+      Include_Extra         : in     Boolean             := False;
+      Ignore_Conflicts      : in     Boolean             := False;
+      Partial_Recursion     : in     Boolean             := True)
      return Parse_Table_Ptr
    is
       use type Ada.Containers.Count_Type;
 
-      Ignore_Unused_Tokens     : constant Boolean := WisiToken.Trace_Generate 
> Detail;
-      Ignore_Unknown_Conflicts : constant Boolean := Ignore_Conflicts or 
WisiToken.Trace_Generate > Detail;
+      Ignore_Unused_Tokens     : constant Boolean := 
WisiToken.Trace_Generate_Table > Detail;
+      Ignore_Unknown_Conflicts : constant Boolean := Ignore_Conflicts or 
WisiToken.Trace_Generate_Table > Detail;
       Unused_Tokens            : constant Boolean := 
WisiToken.Generate.Check_Unused_Tokens (Descriptor, Grammar);
 
       Table : Parse_Table_Ptr;
 
-      Has_Empty_Production : constant Token_ID_Set := 
WisiToken.Generate.Has_Empty_Production (Grammar);
+      Nullable : constant Token_Array_Production_ID := 
WisiToken.Generate.Nullable (Grammar);
+      Has_Empty_Production : constant Token_ID_Set := 
WisiToken.Generate.Has_Empty_Production (Nullable);
 
       Recursions : constant WisiToken.Generate.Recursions :=
         (if Partial_Recursion
-         then WisiToken.Generate.Compute_Partial_Recursion (Grammar)
-         else WisiToken.Generate.Compute_Full_Recursion (Grammar));
+         then WisiToken.Generate.Compute_Partial_Recursion (Grammar, 
Descriptor)
+         else WisiToken.Generate.Compute_Full_Recursion (Grammar, Descriptor));
       Minimal_Terminal_Sequences : constant Minimal_Sequence_Array :=
-        Compute_Minimal_Terminal_Sequences (Descriptor, Grammar, Recursions);
+        Compute_Minimal_Terminal_Sequences (Descriptor, Grammar);
 
       Minimal_Terminal_First : constant Token_Array_Token_ID :=
         Compute_Minimal_Terminal_First (Descriptor, 
Minimal_Terminal_Sequences);
@@ -235,10 +244,13 @@ package body WisiToken.Generate.LR.LR1_Generate is
       Unknown_Conflicts    : Conflict_Lists.List;
       Known_Conflicts_Edit : Conflict_Lists.List := Known_Conflicts;
    begin
-      if Trace_Generate > Outline then
+      if Trace_Generate_Table + Trace_Generate_Minimal_Complete > Outline then
          Ada.Text_IO.New_Line;
-         Ada.Text_IO.Put_Line ("LR(1) Item_Sets:");
-         LR1_Items.Put (Grammar, Descriptor, Item_Sets);
+         Ada.Text_IO.Put_Line ("LR1_Generate:");
+         if Trace_Generate_Table > Outline then
+            Ada.Text_IO.Put_Line ("Item_Sets:");
+            LR1_Items.Put (Grammar, Descriptor, Item_Sets);
+         end if;
       end if;
 
       Table := new Parse_Table
@@ -277,22 +289,22 @@ package body WisiToken.Generate.LR.LR1_Generate is
          Conflict_Counts, Unknown_Conflicts, Table.all, Descriptor);
 
       for State in Table.States'Range loop
-         if Trace_Generate > Extra then
+         if Trace_Generate_Minimal_Complete > Extra then
             Ada.Text_IO.Put_Line ("Set_Minimal_Complete_Actions:" & 
State_Index'Image (State));
          end if;
          WisiToken.Generate.LR.Set_Minimal_Complete_Actions
            (Table.States (State),
             LR1_Items.Filter (Item_Sets (State), Grammar, Descriptor, 
LR1_Items.In_Kernel'Access),
-            Descriptor, Grammar, Minimal_Terminal_Sequences, 
Minimal_Terminal_First);
+            Descriptor, Grammar, Nullable, Minimal_Terminal_Sequences, 
Minimal_Terminal_First);
       end loop;
 
-      if Put_Parse_Table then
+      if Parse_Table_File_Name /= "" then
          WisiToken.Generate.LR.Put_Parse_Table
-           (Table, "LR1", Grammar, Recursions, Minimal_Terminal_Sequences, 
Item_Sets, Conflict_Counts, Descriptor,
+           (Table, Parse_Table_File_Name, "LR1", Grammar, Recursions, 
Item_Sets, Conflict_Counts, Descriptor,
             Include_Extra);
       end if;
 
-      if Trace_Generate > Outline then
+      if Trace_Generate_Table > Outline then
          Ada.Text_IO.New_Line;
          Ada.Text_IO.Put_Line ("Has_Empty_Production: " & Image 
(Has_Empty_Production, Descriptor));
 
diff --git a/packages/wisi/wisitoken-generate-lr-lr1_generate.ads 
b/packages/wisi/wisitoken-generate-lr-lr1_generate.ads
index 6e8ade6..d0f2d9f 100644
--- a/packages/wisi/wisitoken-generate-lr-lr1_generate.ads
+++ b/packages/wisi/wisitoken-generate-lr-lr1_generate.ads
@@ -7,7 +7,7 @@
 --  [dragon] "Compilers Principles, Techniques, and Tools" by Aho,
 --  Sethi, and Ullman (aka: "The [Red] Dragon Book").
 --
---  Copyright (C) 2017 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2017 - 2020 Free Software Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -30,20 +30,22 @@ with WisiToken.Productions;
 package WisiToken.Generate.LR.LR1_Generate is
 
    function Generate
-     (Grammar           : in WisiToken.Productions.Prod_Arrays.Vector;
-      Descriptor        : in WisiToken.Descriptor;
-      Known_Conflicts   : in Conflict_Lists.List := Conflict_Lists.Empty_List;
-      McKenzie_Param    : in McKenzie_Param_Type := Default_McKenzie_Param;
-      Put_Parse_Table   : in Boolean             := False;
-      Include_Extra     : in Boolean             := False;
-      Ignore_Conflicts  : in Boolean             := False;
-      Partial_Recursion : in Boolean             := True)
+     (Grammar               : in out WisiToken.Productions.Prod_Arrays.Vector;
+      Descriptor            : in     WisiToken.Descriptor;
+      Known_Conflicts       : in     Conflict_Lists.List := 
Conflict_Lists.Empty_List;
+      McKenzie_Param        : in     McKenzie_Param_Type := 
Default_McKenzie_Param;
+      Parse_Table_File_Name : in     String              := "";
+      Include_Extra         : in     Boolean             := False;
+      Ignore_Conflicts      : in     Boolean             := False;
+      Partial_Recursion     : in     Boolean             := True)
      return Parse_Table_Ptr
    with Pre => Descriptor.First_Nonterminal = Descriptor.Accept_ID;
    --  Generate a generalized LR1 parse table for Grammar. The
    --  grammar start symbol is the LHS of the first production in
    --  Grammar.
    --
+   --  Sets Recursive components in Grammar.
+   --
    --  If Trace, output debug info to Standard_Error about generation
    --  process. We don't use WisiToken.Trace here; we often want to
    --  see a trace of the parser execution without the parser
diff --git a/packages/wisi/wisitoken-generate-lr.adb 
b/packages/wisi/wisitoken-generate-lr.adb
index 54ddfd6..d66746d 100644
--- a/packages/wisi/wisitoken-generate-lr.adb
+++ b/packages/wisi/wisitoken-generate-lr.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2017 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2017 - 2020 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
@@ -40,8 +40,8 @@ package body WisiToken.Generate.LR is
       Min_RHS    : Natural                   := Natural'Last;
    begin
       for RHS in Item.First_Index .. Item.Last_Index loop
-         if RHS_Set (RHS) and then Min_Length > Item (RHS).Sequence.Length then
-               Min_Length := Item (RHS).Sequence.Length;
+         if RHS_Set (RHS) and then Min_Length > Item (RHS).Length then
+               Min_Length := Item (RHS).Length;
                Min_RHS    := RHS;
          end if;
       end loop;
@@ -52,63 +52,15 @@ package body WisiToken.Generate.LR is
       end if;
    end Min;
 
-   function Net_Recursion (Cycle : in Recursion_Cycle; RHS : in Natural) 
return Recursion
-   is
-      Result : Recursion := None;
-   begin
-      if Cycle'Length = 1 then
-         for E of Cycle (Cycle'First).Edges loop
-            if E.Data.RHS = RHS then
-               Result := Net_Recursion (Result, E.Data.Recursive);
-            end if;
-         end loop;
-      else
-         for Item of Cycle loop
-            for E of Item.Edges loop
-               Result := Net_Recursion (Result, E.Data.Recursive);
-            end loop;
-         end loop;
-      end if;
-      return Result;
-   end Net_Recursion;
-
-   function Worst_Recursion (Cycle : in Recursion_Cycle; RHS : in Natural) 
return Recursion
-   is
-      Result : Recursion := None;
-   begin
-      if Cycle'Length = 1 then
-         for E of Cycle (Cycle'First).Edges loop
-            if E.Data.RHS = RHS then
-               Result := Worst_Recursion (Result, E.Data.Recursive);
-            end if;
-         end loop;
-      else
-         for Item of Cycle loop
-            for E of Item.Edges loop
-               Result := Worst_Recursion (Result, E.Data.Recursive);
-            end loop;
-         end loop;
-      end if;
-      return Result;
-   end Worst_Recursion;
-
-   function Worst_Recursion
-     (Recursion_IDs : in Recursion_Lists.List;
-      Recursions    : in Generate.Recursions;
-      RHS           : in Natural)
-     return Recursion
-   is
-      Result : Recursion := None;
-   begin
-      for ID of Recursion_IDs loop
-         Result := Worst_Recursion
-           (Result,
-            (if Recursions.Full
-             then Net_Recursion (Recursions.Recursions (ID), RHS)
-             else Worst_Recursion (Recursions.Recursions (ID), RHS)));
-      end loop;
-      return Result;
-   end Worst_Recursion;
+   function Image
+     (Nonterm    : in Token_ID;
+      Sequences  : in Minimal_Sequence_Array;
+      Descriptor : in WisiToken.Descriptor)
+     return String
+   is begin
+      return Trimmed_Image (Nonterm) & " " & Image (Nonterm, Descriptor) & " 
==> (" &
+        Sequences (Nonterm).Min_RHS'Image & ", " & Image (Sequences 
(Nonterm).Sequence, Descriptor) & ")";
+   end Image;
 
    procedure Terminal_Sequence
      (Grammar       : in     WisiToken.Productions.Prod_Arrays.Vector;
@@ -132,8 +84,8 @@ package body WisiToken.Generate.LR is
       is
          Prod : Productions.Instance renames Grammar (LHS);
       begin
-         if All_Sequences (LHS).Length = 0 then
-            All_Sequences (LHS).Set_First_Last (Prod.RHSs.First_Index, 
Prod.RHSs.Last_Index);
+         if All_Sequences (LHS).Sequence.Length = 0 then
+            All_Sequences (LHS).Sequence.Set_First_Last 
(Prod.RHSs.First_Index, Prod.RHSs.Last_Index);
          end if;
          if RHS_Seq_Set (LHS).Length = 0 then
             RHS_Seq_Set (LHS).Set_First_Last (Prod.RHSs.First_Index, 
Prod.RHSs.Last_Index);
@@ -155,12 +107,12 @@ package body WisiToken.Generate.LR is
 
       for RHS in Prod.RHSs.First_Index .. Prod.RHSs.Last_Index loop
          if not RHS_Seq_Set (Nonterm)(RHS) then
-            if Trace_Generate > Extra then
+            if Trace_Generate_Minimal_Complete > Extra then
                Ada.Text_IO.Put_Line (Trimmed_Image ((Nonterm, RHS)) & " " & 
Image (Nonterm, Descriptor) & " compute");
             end if;
             if Prod.RHSs (RHS).Tokens.Length = 0 then
                RHS_Seq_Set (Nonterm)(RHS) := True;
-               if Trace_Generate > Extra then
+               if Trace_Generate_Minimal_Complete > Extra then
                   Ada.Text_IO.Put_Line (Trimmed_Image (Production_ID'(Nonterm, 
RHS)) & " => () empty");
                end if;
 
@@ -170,7 +122,7 @@ package body WisiToken.Generate.LR is
                      ID : Token_ID renames Prod.RHSs (RHS).Tokens (I);
                   begin
                      if ID in Terminals then
-                        All_Sequences (Nonterm) (RHS).Sequence.Append (ID);
+                        All_Sequences (Nonterm).Sequence (RHS).Append (ID);
 
                      else
                         if (for some RHS of RHS_Seq_Set (ID) => RHS) then
@@ -179,7 +131,7 @@ package body WisiToken.Generate.LR is
                         else
                            if ID = Nonterm or Recursing (ID) then
                               --  Clear partial minimal sequence; we are 
starting over.
-                              All_Sequences (Nonterm)(RHS).Sequence.Clear;
+                              All_Sequences (Nonterm).Sequence (RHS).Clear;
                               goto Skip;
 
                            else
@@ -192,24 +144,26 @@ package body WisiToken.Generate.LR is
                                  --  Found a minimal sequence for ID; use it
                                  null;
                               else
-                                 All_Sequences (Nonterm)(RHS).Sequence.Clear;
+                                 All_Sequences (Nonterm).Sequence (RHS).Clear;
                                  goto Skip;
                               end if;
                            end if;
                         end if;
                         declare
-                           Min_RHS : constant Integer := Min (All_Sequences 
(ID), RHS_Seq_Set (ID));
+                           Min_RHS : constant Integer := Min (All_Sequences 
(ID).Sequence, RHS_Seq_Set (ID));
                         begin
-                           All_Sequences (Nonterm)(RHS).Sequence.Append 
(All_Sequences (ID)(Min_RHS).Sequence);
+                           All_Sequences (ID).Min_RHS := Min_RHS;
+
+                           All_Sequences (Nonterm).Sequence (RHS).Append 
(All_Sequences (ID).Sequence (Min_RHS));
                         end;
                      end if;
                   end;
                end loop;
                RHS_Seq_Set (Nonterm)(RHS) := True;
-               if Trace_Generate > Extra then
+               if Trace_Generate_Minimal_Complete > Extra then
                   Ada.Text_IO.Put_Line
                     (Trimmed_Image (Production_ID'(Nonterm, RHS)) & " => " &
-                       Image (All_Sequences (Nonterm)(RHS), Descriptor));
+                       Image (All_Sequences (Nonterm).Sequence (RHS), 
Descriptor));
                end if;
             end if;
          end if;
@@ -221,7 +175,7 @@ package body WisiToken.Generate.LR is
          if (for some RHS of RHS_Seq_Set (Nonterm) => not RHS) then
             --  Some RHSs are have unresolved recursion; we will
             --  eventually try again when the recursion is resolved.
-            if Trace_Generate > Extra then
+            if Trace_Generate_Minimal_Complete > Extra then
                Ada.Text_IO.Put_Line
                  (Trimmed_Image (Nonterm) & " " & Image (Nonterm, Descriptor) 
& " skipped some recursive");
             end if;
@@ -231,10 +185,8 @@ package body WisiToken.Generate.LR is
 
       All_Seq_Set (Nonterm) := True;
 
-      if Trace_Generate > Extra then
-         Ada.Text_IO.Put_Line
-           (Trimmed_Image (Nonterm) & " " & Image (Nonterm, Descriptor) & " 
==> " &
-              Image (All_Sequences (Nonterm), Descriptor));
+      if Trace_Generate_Minimal_Complete > Extra then
+         Ada.Text_IO.Put_Line (Image (Nonterm, All_Sequences, Descriptor));
       end if;
    end Terminal_Sequence;
 
@@ -265,7 +217,7 @@ package body WisiToken.Generate.LR is
    is
       Matching_Action : constant Action_Arrays.Find_Reference_Type := 
Action_List.Find (Symbol);
    begin
-      if Trace_Generate > Detail then
+      if Trace_Generate_Table > Detail then
          Ada.Text_IO.Put (Image (Symbol, Descriptor) & " => ");
          Put (Descriptor, Action);
          Ada.Text_IO.New_Line;
@@ -274,7 +226,7 @@ package body WisiToken.Generate.LR is
       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
+            if Trace_Generate_Table > Detail then
                Ada.Text_IO.Put_Line (" - already present");
             end if;
             return;
@@ -352,11 +304,11 @@ package body WisiToken.Generate.LR is
                   --  item set. Only add it to conflicts once.
                   Conflicts.Append (New_Conflict);
 
-                  if Trace_Generate > Detail then
+                  if Trace_Generate_Table > Detail then
                      Ada.Text_IO.Put_Line (" - conflict added: " & Image 
(New_Conflict, Descriptor));
                   end if;
                else
-                  if Trace_Generate > Detail then
+                  if Trace_Generate_Table > Detail then
                      Ada.Text_IO.Put_Line (" - conflict duplicate: " & Image 
(New_Conflict, Descriptor));
                   end if;
                end if;
@@ -383,71 +335,78 @@ package body WisiToken.Generate.LR is
       Conflicts            : in out Conflict_Lists.List;
       Descriptor           : in     WisiToken.Descriptor)
    is
-      use WisiToken.Token_ID_Arrays;
+      use Token_ID_Arrays;
 
       State : constant State_Index := Closure.State;
    begin
-      if Trace_Generate > Detail then
+      if Trace_Generate_Table > Detail then
          Ada.Text_IO.Put_Line ("adding actions for state" & State_Index'Image 
(State));
       end if;
 
       for Item of Closure.Set loop
-         if Item.Dot = No_Element then
-            --  Pointer is at the end of the production; add a reduce action.
+         declare
+            Dot : constant Token_ID_Arrays.Cursor := 
Productions.Constant_Ref_RHS
+              (Grammar, Item.Prod).Tokens.To_Cursor (Item.Dot);
+         begin
+            if not Has_Element (Dot) then
+               Add_Lookahead_Actions
+                 (Item, Table.States (State).Action_List, Grammar, 
Has_Empty_Production, First_Nonterm_Set,
+                  Conflict_Counts, Conflicts, Closure, Descriptor);
 
-            Add_Lookahead_Actions
-              (Item, Table.States (State).Action_List, Grammar, 
Has_Empty_Production, First_Nonterm_Set,
-               Conflict_Counts, Conflicts, Closure, Descriptor);
+            elsif Element (Dot) in
+              Descriptor.First_Terminal .. Descriptor.Last_Terminal
+            then
+               --  Dot is before a terminal token.
+               declare
+                  use all type Ada.Containers.Count_Type;
 
-         elsif Element (Item.Dot) in Descriptor.First_Terminal .. 
Descriptor.Last_Terminal then
-            --  Dot is before a terminal token.
-            declare
-               use all type Ada.Containers.Count_Type;
+                  P_ID : constant Production_ID := Item.Prod;
 
-               Dot_ID : constant Token_ID := Element (Item.Dot);
-               --  ID of token after Item.Dot
+                  Dot_ID : constant Token_ID := Element (Dot);
+                  --  ID of token after Item.Dot
 
-               Goto_State : constant Unknown_State_Index := 
LR1_Items.Goto_State (Closure, Dot_ID);
-            begin
-               if Dot_ID = Descriptor.EOI_ID then
-                  --  This is the start symbol production with dot before EOF.
-                  declare
-                     P_ID : constant Production_ID := Item.Prod;
-                     RHS  : Productions.Right_Hand_Side renames Grammar 
(P_ID.LHS).RHSs (P_ID.RHS);
-                  begin
-                     Add_Action
-                       (Dot_ID,
-                        (Accept_It, P_ID, RHS.Action, RHS.Check, 
RHS.Tokens.Length - 1),
-                        --  EOF is not pushed on stack in parser, because the 
action for EOF
-                        --  is Accept, not Shift.
-                        Table.States (State).Action_List, Closure,
-                        Grammar, Has_Empty_Production, First_Nonterm_Set, 
Conflict_Counts, Conflicts, Descriptor);
-                  end;
-               else
-                  if Goto_State /= Unknown_State then
-                     Add_Action
-                       (Dot_ID,
-                        (Shift, Goto_State),
-                        Table.States (State).Action_List,
-                        Closure, Grammar, Has_Empty_Production, 
First_Nonterm_Set,
-                        Conflict_Counts, Conflicts, Descriptor);
+                  Goto_State : constant Unknown_State_Index := 
LR1_Items.Goto_State (Closure, Dot_ID);
+               begin
+                  if Dot_ID = Descriptor.EOI_ID then
+                     --  This is the start symbol production with dot before 
EOF.
+                     declare
+                        RHS  : Productions.Right_Hand_Side renames Grammar 
(P_ID.LHS).RHSs (P_ID.RHS);
+                     begin
+                        Add_Action
+                          (Dot_ID,
+                           (Accept_It, P_ID, RHS.Action, RHS.Check, 
RHS.Tokens.Length - 1),
+                           --  EOF is not pushed on stack in parser, because 
the action for EOF
+                           --  is Accept, not Shift.
+                           Table.States (State).Action_List, Closure,
+                           Grammar, Has_Empty_Production, First_Nonterm_Set, 
Conflict_Counts, Conflicts, Descriptor);
+                     end;
+                  else
+                     if Goto_State /= Unknown_State then
+                        Add_Action
+                          (Dot_ID,
+                           (Shift, P_ID, Goto_State),
+                           Table.States (State).Action_List,
+                           Closure, Grammar, Has_Empty_Production, 
First_Nonterm_Set,
+                           Conflict_Counts, Conflicts, Descriptor);
+                     end if;
                   end if;
+               end;
+            else
+               --  Dot is before a non-terminal token; no action.
+               if Trace_Generate_Table > Detail then
+                  Ada.Text_IO.Put_Line (Image (Element (Dot), Descriptor) & " 
=> no action");
                end if;
-            end;
-         else
-            --  Dot is before a non-terminal token; no action.
-            if Trace_Generate > Detail then
-               Ada.Text_IO.Put_Line (Image (Element (Item.Dot), Descriptor) & 
" => no action");
             end if;
-         end if;
+         end;
       end loop;
 
       --  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);
+      Table.Error_Action := new Parse_Action_Node'((Verb => 
WisiToken.Parse.LR.Error, others => <>), null);
 
       for Item of Closure.Goto_List loop
          if Item.Symbol in Descriptor.First_Nonterminal .. 
Descriptor.Last_Nonterminal then
+            --  FIXME: Goto_List has terminals; either don't need to add 
those, or can use that instead of above code.
             Add_Goto (Table.States (State), Item.Symbol, Item.State); -- note 
list is already sorted.
          end if;
       end loop;
@@ -468,7 +427,7 @@ package body WisiToken.Generate.LR is
       RHS    : Productions.Right_Hand_Side renames Prod.RHSs (Item.Prod.RHS);
       Action : constant Parse_Action_Rec := (Reduce, Item.Prod, RHS.Action, 
RHS.Check, RHS.Tokens.Length);
    begin
-      if Trace_Generate > Detail then
+      if Trace_Generate_Table > Detail then
          Ada.Text_IO.Put_Line ("processing lookaheads");
       end if;
 
@@ -534,8 +493,6 @@ package body WisiToken.Generate.LR is
      return Token_ID
    is
       use WisiToken.Token_ID_Arrays;
-
-      ID_I : Cursor;
    begin
       case Action.Verb is
       when Reduce | Accept_It =>
@@ -553,30 +510,34 @@ package body WisiToken.Generate.LR is
          --  one, use that.
          for Item of Closure.Set loop
             if LR1_Items.In_Kernel (Grammar, Descriptor, Item) then
-               ID_I := Item.Dot;
-               loop
-                  if ID_I = No_Element then
-                     if Item.Lookaheads (Lookahead) then
-                        return Item.Prod.LHS;
-                     end if;
-                  else
-                     declare
-                        Dot_ID : Token_ID renames Element (ID_I);
-                     begin
-                        if Dot_ID = Lookahead or
-                          (Dot_ID in Descriptor.First_Nonterminal .. 
Descriptor.Last_Nonterminal and then
-                             First (Dot_ID, Lookahead))
-                        then
+               declare
+                  Dot : Token_ID_Arrays.Cursor := Productions.Constant_Ref_RHS
+                    (Grammar, Item.Prod).Tokens.To_Cursor (Item.Dot);
+               begin
+                  loop
+                     if not Has_Element (Dot) then
+                        if Item.Lookaheads (Lookahead) then
                            return Item.Prod.LHS;
                         end if;
-                        exit when Dot_ID in Descriptor.First_Nonterminal .. 
Descriptor.Last_Nonterminal and then
-                          not Has_Empty_Production (Dot_ID);
-                     end;
-                  end if;
+                     else
+                        declare
+                           Dot_ID : constant Token_ID := Element (Dot);
+                        begin
+                           if Dot_ID = Lookahead or
+                             (Dot_ID in Descriptor.First_Nonterminal .. 
Descriptor.Last_Nonterminal and then
+                                First (Dot_ID, Lookahead))
+                           then
+                              return Item.Prod.LHS;
+                           end if;
+                           exit when Dot_ID in Descriptor.First_Nonterminal .. 
Descriptor.Last_Nonterminal and then
+                             not Has_Empty_Production (Dot_ID);
+                        end;
+                     end if;
 
-                  exit when ID_I = No_Element;
-                  Next (ID_I);
-               end loop;
+                     exit when not Has_Element (Dot);
+                     Next (Dot);
+                  end loop;
+               end;
             end if;
          end loop;
 
@@ -586,25 +547,29 @@ package body WisiToken.Generate.LR is
             --  Lookahead (the token shifted) is starting a nonterm in a state
             --  production; it is in First of that nonterm.
             if LR1_Items.In_Kernel (Grammar, Descriptor, Item) then
-               ID_I := Item.Dot;
-               loop
-                  exit when ID_I = No_Element;
-                  declare
-                     Dot_ID : Token_ID renames Element (ID_I);
-                  begin
-                     if Dot_ID = Lookahead or
-                       (Dot_ID in Descriptor.First_Nonterminal .. 
Descriptor.Last_Nonterminal and then
-                          First (Dot_ID, Lookahead))
-                     then
-                        return Item.Prod.LHS;
-                     end if;
+               declare
+                  Dot : Token_ID_Arrays.Cursor := Productions.Constant_Ref_RHS
+                    (Grammar, Item.Prod).Tokens.To_Cursor (Item.Dot);
+               begin
+                  loop
+                     exit when not Has_Element (Dot);
+                     declare
+                        Dot_ID : constant Token_ID := Element (Dot);
+                     begin
+                        if Dot_ID = Lookahead or
+                          (Dot_ID in Descriptor.First_Nonterminal .. 
Descriptor.Last_Nonterminal and then
+                             First (Dot_ID, Lookahead))
+                        then
+                           return Item.Prod.LHS;
+                        end if;
 
-                     exit when Dot_ID in Descriptor.First_Nonterminal .. 
Descriptor.Last_Nonterminal and then
-                       not Has_Empty_Production (Dot_ID);
-                  end;
+                        exit when Dot_ID in Descriptor.First_Nonterminal .. 
Descriptor.Last_Nonterminal and then
+                          not Has_Empty_Production (Dot_ID);
+                     end;
 
-                  Next (ID_I);
-               end loop;
+                     Next (Dot);
+                  end loop;
+               end;
             end if;
          end loop;
 
@@ -661,13 +626,20 @@ package body WisiToken.Generate.LR is
    ----------
    --  Minimal terminal sequences.
 
-   function Image (Item : in RHS_Sequence; Descriptor : in 
WisiToken.Descriptor) return String
-   is begin
-      return "(" & Image (Item.Recursion) & ", " & Recursion'Image 
(Item.Worst_Recursion) & ", " &
-        Image (Item.Sequence, Descriptor) & ")";
-   end Image;
+   function Min_Length (Item : in RHS_Sequence_Arrays.Vector) return 
Ada.Containers.Count_Type
+   is
+      use Ada.Containers;
+      Min : Count_Type := Count_Type'Last;
+   begin
+      for RHS of Item loop
+         if RHS.Length < Min then
+            Min := RHS.Length;
+         end if;
+      end loop;
+      return Min;
+   end Min_Length;
 
-   function Min (Item : in RHS_Sequence_Arrays.Vector) return RHS_Sequence
+   function Min (Item : in RHS_Sequence_Arrays.Vector) return 
Token_ID_Arrays.Vector
    is
       use all type Ada.Containers.Count_Type;
       Min_Length : Ada.Containers.Count_Type := Ada.Containers.Count_Type'Last;
@@ -675,8 +647,8 @@ package body WisiToken.Generate.LR is
    begin
       --  This version assumes all RHS are computed.
       for RHS in Item.First_Index .. Item.Last_Index loop
-         if Min_Length > Item (RHS).Sequence.Length then
-            Min_Length := Item (RHS).Sequence.Length;
+         if Min_Length > Item (RHS).Length then
+            Min_Length := Item (RHS).Length;
             Min_RHS    := RHS;
          end if;
       end loop;
@@ -689,8 +661,7 @@ package body WisiToken.Generate.LR is
 
    function Compute_Minimal_Terminal_Sequences
      (Descriptor : in WisiToken.Descriptor;
-      Grammar    : in WisiToken.Productions.Prod_Arrays.Vector;
-      Recursions : in Generate.Recursions)
+      Grammar    : in WisiToken.Productions.Prod_Arrays.Vector)
      return Minimal_Sequence_Array
    is
       --  Result (ID).Sequence.Length = 0 is a valid result (ie the
@@ -711,8 +682,8 @@ package body WisiToken.Generate.LR is
          loop
             exit when (for all B of All_Seq_Set => B);
             Pass_Count := Pass_Count + 1;
-            if Trace_Generate > Detail then
-               if Trace_Generate > Extra then
+            if Trace_Generate_Minimal_Complete > Detail then
+               if Trace_Generate_Minimal_Complete > Extra then
                   Ada.Text_IO.New_Line;
                end if;
                Ada.Text_IO.Put_Line ("Compute_Minimal_Terminal_Sequences pass" 
& Integer'Image (Pass_Count));
@@ -728,45 +699,10 @@ package body WisiToken.Generate.LR is
             Last_Seq_Count := This_Count;
          end loop;
 
-         --  Set Result.Recursions
-         for Recursion_ID in Recursions.Recursions.First_Index .. 
Recursions.Recursions.Last_Index loop
-            declare
-               Cycle : Recursion_Cycle renames Recursions.Recursions 
(Recursion_ID);
-            begin
-               for I in Cycle'Range loop
-                  declare
-                     Edges : constant Grammar_Graphs.Edge_Lists.List :=
-                       (if Recursions.Full then
-                          (if I = Cycle'Last
-                           then Cycle (Cycle'First).Edges
-                           else Cycle (I + 1).Edges)
-                        else Cycle (I).Edges);
-                  begin
-                     for E of Edges loop
-                        Result (Cycle (I).Vertex)(E.Data.RHS).Recursion.Append 
(Recursion_ID);
-                     end loop;
-                  end;
-               end loop;
-            end;
-         end loop;
-
-         --  Set Result.Worst_Recursions
-         for Nonterm in Result'Range loop
-            for RHS in Result (Nonterm).First_Index .. Result 
(Nonterm).Last_Index loop
-               declare
-                  RHS_Seq : RHS_Sequence renames Result (Nonterm)(RHS);
-               begin
-                  RHS_Seq.Worst_Recursion := Worst_Recursion 
(RHS_Seq.Recursion, Recursions, RHS);
-               end;
-            end loop;
-         end loop;
-
-         if Trace_Generate > Detail then
+         if Trace_Generate_Minimal_Complete > Detail then
             Ada.Text_IO.Put_Line ("Minimal_Terminal_Sequences:");
             for LHS in Result'Range loop
-               Ada.Text_IO.Put_Line
-                 (Trimmed_Image (LHS) & " " & Image (LHS, Descriptor) & " ==> 
" &
-                    Image (Result (LHS), Descriptor));
+               Ada.Text_IO.Put_Line (Image (LHS, Result, Descriptor));
             end loop;
          end if;
       end return;
@@ -777,13 +713,13 @@ package body WisiToken.Generate.LR is
       Minimal_Terminal_Sequences : in Minimal_Sequence_Array)
      return Token_Array_Token_ID
    is
-      use all type Ada.Containers.Count_Type;
       use Token_ID_Arrays;
    begin
       return Result : Token_Array_Token_ID (Descriptor.First_Nonterminal .. 
Descriptor.Last_Nonterminal) do
          for ID in Result'Range loop
             declare
-               Min_Seq : Token_ID_Arrays.Vector renames Min 
(Minimal_Terminal_Sequences (ID)).Sequence;
+               use all type Ada.Containers.Count_Type;
+               Min_Seq : Token_ID_Arrays.Vector renames Min 
(Minimal_Terminal_Sequences (ID).Sequence);
             begin
                if Min_Seq.Length = 0 then
                   Result (ID) := Invalid_Token_ID;
@@ -800,6 +736,7 @@ package body WisiToken.Generate.LR is
       Kernel                     : in     LR1_Items.Item_Set;
       Descriptor                 : in     WisiToken.Descriptor;
       Grammar                    : in     
WisiToken.Productions.Prod_Arrays.Vector;
+      Nullable                   : in     Token_Array_Production_ID;
       Minimal_Terminal_Sequences : in     Minimal_Sequence_Array;
       Minimal_Terminal_First     : in     Token_Array_Token_ID)
    is
@@ -809,20 +746,20 @@ package body WisiToken.Generate.LR is
 
       subtype Terminals is Token_ID range Descriptor.First_Terminal .. 
Descriptor.Last_Terminal;
 
-      Working_Set : LR1_Items.Item_Lists.List := Kernel.Set;
-      Recursive   : Boolean := False;
-
       function Find_Action (List : in Action_Arrays.Vector; ID : in Token_ID) 
return Minimal_Action
       is begin
+         --  ID is a terminal after Dot in an item in a kernel that has List as
+         --  the actions; return the appropriate action.
          for Node of List loop
             if Node.Symbol = ID then
                case Node.Actions.Item.Verb is
                when Shift =>
-                  return (Shift, ID, Node.Actions.Item.State);
+                  return (Shift, Node.Actions.Item.Production, 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.Actions.Item.Production.LHS, 0);
+                  --  to that first. After any more such reductions, the 
action will be
+                  --  Shift ID.
+                  return (Reduce, Node.Actions.Item.Production, 0);
                when Accept_It | WisiToken.Parse.LR.Error =>
                   raise SAL.Programmer_Error;
                end case;
@@ -831,337 +768,339 @@ package body WisiToken.Generate.LR is
          raise SAL.Programmer_Error;
       end Find_Action;
 
-      function Min_Length (Item : in RHS_Sequence_Arrays.Vector) return 
Ada.Containers.Count_Type
-      is
-         use Ada.Containers;
-         Min : Count_Type := Count_Type'Last;
-      begin
-         for RHS of Item loop
-            if RHS.Sequence.Length < Min then
-               Min := RHS.Sequence.Length;
+      function Compute_Action (ID : in Token_ID) return Minimal_Action
+      is begin
+         if ID in Terminals then
+            return Find_Action (State.Action_List, ID);
+
+         else
+            if Minimal_Terminal_First (ID) = Invalid_Token_ID then
+               --  Item.Dot is a nullable nonterm; include a reduce to the null
+               --  nonterm, rather than a shift of the following terminal; 
recover
+               --  must do the reduce first.
+               return (Reduce, (ID, Minimal_Terminal_Sequences (ID).Min_RHS), 
Token_Count => 0);
+
+            else
+               return Find_Action (State.Action_List, Minimal_Terminal_First 
(ID));
             end if;
-         end loop;
-         return Min;
-      end Min_Length;
+         end if;
+      end Compute_Action;
 
-      function After_Dot_Length (Item : in LR1_Items.Item) return 
Ada.Containers.Count_Type
+      function Length_After_Dot (Item : in LR1_Items.Item) return 
Ada.Containers.Count_Type
       is
          use Ada.Containers;
          Prod   : constant Production_ID := Item.Prod;
-         I      : Token_ID_Arrays.Cursor := Item.Dot;
          Result : Count_Type             := 0;
          Tokens : Vector renames Grammar (Prod.LHS).RHSs (Prod.RHS).Tokens;
+         I      : Token_ID_Arrays.Cursor := Tokens.To_Cursor (Item.Dot);
       begin
+         if not Has_Element (I) then
+            --  Can only compute this at runtime.
+            return 0;
+         end if;
+
          loop
-            exit when I = Token_ID_Arrays.No_Element;
+            exit when not Has_Element (I);
 
-            if Tokens (I) in Terminals then
+            if Element (I) in Terminals then
                Result := Result + 1;
             else
-               Result := Result + Min_Length (Minimal_Terminal_Sequences 
(Tokens (I)));
+               Result := Result + Min_Length (Minimal_Terminal_Sequences 
(Tokens (I)).Sequence);
             end if;
             Next (I);
          end loop;
          return Result;
-      end After_Dot_Length;
+      end Length_After_Dot;
 
-      procedure Delete_Non_Minimal
-      is
-         use Ada.Containers;
+   begin
+      if Kernel.State = 0 then
+         --  State 0 has dot before all tokens, which is never needed in the
+         --  Minimal_Complete_Action algorithm.
+         return;
 
-         Min_Length       : Count_Type := Count_Type'Last;
-         I                : LR1_Items.Item_Lists.Cursor;
-         Recursive_Count  : Count_Type := 0;
-         Delete_Recursive : Boolean;
+      elsif (for some Item of Kernel.Set =>
+               Item.Prod.LHS = Descriptor.Accept_ID and
+               (Item.Dot /= No_Index and then Productions.Constant_Ref_RHS
+                  (Grammar, Item.Prod).Tokens (Item.Dot) = Descriptor.EOI_ID))
+      then
+         --  No actions
+         return;
+      end if;
+
+      --  Set State.Kernel, and delete Items from Working_Set that are known
+      --  to be non-minimal.
+      declare
+         use Ada.Containers;
 
-         function Immediate_Recursive return Boolean
+         function Before_Dot (Item : in LR1_Items.Item) return Token_ID
          is
-            --  Direct left recursion is never minimal; for example, consider
-            --  ada_lite LALR state 149:
-            --
-            --  61.0:association_list <= association_list ^ COMMA 
association_opt
-            --
-            --  If we already have an association_list, adding a COMMA to it
-            --  cannot be minimal.
-            --
-            --  Similarly, indirect left recursion is not minimal; consider
-            --  ada_lite LALR states 29 and 60:
-            --
-            --  State 29:
-            --  103.3:name <= selected_component ^,
-            --
-            --  State 60:
-            --   94.0:function_specification <= FUNCTION name ^ 
parameter_and_result_profile
-            --  103.0:name <= name ^ LEFT_PAREN range_list
-            --  103.1:name <= name ^ actual_parameter_part
-            --  123.0:selected_component <= name ^ DOT IDENTIFIER
-            --
-            --  If we already have a name, adding actual_parameter_part or DOT 
IDENTIFIER cannot be
-            --  minimal.
-
-            --  There is a trade off here between error recovery power and 
risk of
-            --  recursive loops. Consider ada_lite state 152:
-            --
-            --  103.0:name <= name LEFT_PAREN range_list ^ RIGHT_PAREN
-            --  117.0:range_list <= range_list ^ COMMA range_g
-            --
-            --  Both productions are Left_Recursive, but in the first item, 
dot is past
-            --  the recursion, and can be usefully completed.
-            --
-            --  However, that might allow loops; see java_enum_ch19.wy.
-            --
-            --  A similar argument applies to right recursive items; from
-            --  java_expressions_ch19.wy:
-            --
-            --  State 7:
-            --  27.0:Assignment <= LeftHandSide ^ EQUAL Expression
-            --
-            --  State 22:
-            --  28.0:LeftHandSide <= Identifier ^
-            --  34.0:ClassType <= Identifier ^
-            --
-            --  State 25:
-            --  24.1:Expression <= AssignmentExpression ^
-            --
-            --  State 26:
-            --  26.1:AssignmentExpression <= Assignment ^
-            --
-            --  Choosing LeftHandSide for the minimal action in state 22 will 
lead
-            --  to a loop thru state 7. However, Assignment can also occur in
-            --  Statement, where it is not recursive:
-            --
-            --  State 1:
-            --  23.0:Statement <= LEFT_CURLY_BRACKET ^ Assignment 
RIGHT_CURLY_BRACKET
-            --
-            --  This is not easy to check for.
-            --
-            --  It is not expensive to check for loops in 
Minimal_Complete_Action
-            --  at run-time, so given all the above we allow items that are 
"past
-            --  the recursion" here.
-
-            Item : LR1_Items.Item renames Constant_Ref (I).Element.all;
-            Prod : constant WisiToken.Production_ID := Item.Prod;
-            Min_Seq : RHS_Sequence renames Minimal_Terminal_Sequences 
(Prod.LHS)(Prod.RHS);
+            Tokens : Token_ID_Arrays.Vector renames Grammar 
(Item.Prod.LHS).RHSs (Item.Prod.RHS).Tokens;
          begin
-            return Min_Seq.Worst_Recursion in Right | Left and then
-              (Has_Element (Item.Dot) and then
-                 Item.Dot = To_Cursor (Grammar (Prod.LHS).RHSs 
(Prod.RHS).Tokens, 2));
-         end Immediate_Recursive;
-
-      begin
-         --  The absolute minimal production for an LHS may not be in this
-         --  state. For example, for an Ada aggregate, the absolute minimal
-         --  terminal sequence is:
-         --
-         --  aggregate <= LEFT_PAREN RIGHT_PAREN
-         --
-         --  but one state has only:
-         --
-         --  aggregate <= LEFT_PAREN expression_opt WITH ^ NULL RECORD 
RIGHT_PAREN
-         --  aggregate <= LEFT_PAREN expression_opt WITH ^ association_list 
RIGHT_PAREN
-         --
-         --  Find the minimum tokens after dot of the productions that are 
present
-
-         --  First see if all are recursive
-         I := Working_Set.First;
-         loop
-            exit when not Has_Element (I);
-
-            if Immediate_Recursive then
-               Recursive_Count := Recursive_Count + 1;
+            if Item.Dot = Token_ID_Arrays.No_Index then
+               return Tokens (Tokens.Last_Index);
+            else
+               return Tokens (Item.Dot - 1);
             end if;
+         end Before_Dot;
+
+         type State_Label is (Unknown, Keep_Always, Keep_If_Minimal, Drop);
+         type Item_State (Label : State_Label := Unknown)
+         is record
+            case Label is
+            when Keep_Always | Keep_If_Minimal =>
+               Minimal_Action : WisiToken.Parse.LR.Minimal_Action;
+               --  Minimal_Action.Production = Invalid_Production_ID (the 
default) if it is unknown.
+            when Unknown | Drop =>
+               null;
+            end case;
+         end record;
 
-            Next (I);
-         end loop;
-
-         Delete_Recursive := Recursive_Count < Working_Set.Length;
+         subtype Kernel_Index is Count_Type range 1 .. Kernel.Set.Length;
+         Item_States : array (Kernel_Index) of Item_State;
+         I           : Kernel_Index := Kernel_Index'First;
+         Min_Length  : Count_Type := Count_Type'Last;
+      begin
+         State.Kernel.Set_First_Last (Kernel_Index'First, Kernel_Index'Last);
+         for Item of Kernel.Set loop
+            declare
+               RHS    : WisiToken.Productions.Right_Hand_Side renames
+                 Grammar (Item.Prod.LHS).RHSs (Item.Prod.RHS);
+               Dot_ID : constant Token_ID :=
+                 (if Item.Dot = No_Index
+                  then Invalid_Token_ID
+                  else RHS.Tokens (Item.Dot));
+
+               --  Kernel components
+               Length_After_Dot  : constant Count_Type := 
Set_Minimal_Complete_Actions.Length_After_Dot (Item);
+               Reduce_Production : constant Production_ID :=
+                 (if Length_After_Dot = 0
+                  then (if Dot_ID in Nullable'Range then Nullable (Dot_ID) 
else Item.Prod)
+                  else Invalid_Production_ID);
+               Reduce_Count : constant Count_Type :=
+                 (if Reduce_Production = Invalid_Production_ID
+                  then 0
+                  else Grammar (Reduce_Production.LHS).RHSs 
(Reduce_Production.RHS).Tokens.Length);
+            begin
+               --  Here we must compute Item_State (I).Label and 
.Minimal_Action,
+               --  considering recursion.
+               --
+               --  Insert_Minimal_Complete_Actions does not need any recursion
+               --  information at runtim, because we elminate all cases where 
it
+               --  might here.
+               --
+               --  The strategy in Insert_Minimal_Complete_Actions when
+               --  Item.Length_After_Dot = 0 is to compute Length_After_Dot by 
doing
+               --  Reduce until a Shift is encountered, and using 
Length_After_Dot
+               --  for that item.               --
+               --
+               --  Consider these kernel items with possible recursion (from
+               --  ada_lite_lalr.parse_table - not listed in state order here, 
to
+               --  group related productions). The recursion of each 
production is
+               --  shown after ';', if not all None.
+               --
+               --  State 2:
+               --       86.0:exit_statement <= EXIT ^ identifier_opt WHEN 
expression_opt SEMICOLON
+               --       86.1:exit_statement <= EXIT ^ identifier_opt SEMICOLON
+               --
+               --  State 43:
+               --     103.2:name <= IDENTIFIER ^
+               --
+               --  State 30:
+               --     103.3:name <= selected_component ^ ; ( 1 => Other_Left)
+               --
+               --  State 47:
+               --      103.0:name <= name ^ LEFT_PAREN range_list RIGHT_PAREN 
; ( 1 => Direct_Left,  3 => Other)
+               --      103.1:name <= name ^ actual_parameter_part ; ( 1 => 
Direct_Left,  2 => Other)
+               --      113.2:primary <= name ^  ; ( 1 => Other_Left)
+               --      124.0:selected_component <= name ^ DOT IDENTIFIER ; ( 1 
=> Other_Left)
+               --
+               --  State 68:
+               --       95.1:generic_instantiation <= PROCEDURE name ^ IS NEW 
name SEMICOLON
+               --      103.0:name <= name ^ LEFT_PAREN range_list RIGHT_PAREN 
; ( 1 => Direct_Left,  3 => Other)
+               --      103.1:name <= name ^ actual_parameter_part ; ( 1 => 
Direct_Left,  2 => Other)
+               --      115.0:procedure_specification <= PROCEDURE name ^ 
parameter_profile_opt
+               --      124.0:selected_component <= name ^ DOT IDENTIFIER ; ( 1 
=> Other_Left)
+               --
+               --  State 50:
+               --       87.1:expression <= relation_and_list ^ ; ( 1 => 
Other_Left)
+               --      119.0:relation_and_list <= relation_and_list ^ AND 
relation ; ( 1 => Direct_Left,  3 => Other)
+               --
+               --
+               --  State 77:
+               --       57.0:actual_parameter_part <= LEFT_PAREN ^ 
association_list RIGHT_PAREN ; ( 2 => Other)
+               --      103.0:name <= name LEFT_PAREN ^ range_list RIGHT_PAREN 
; ( 1 => Direct_Left,  3 => Other)
+               --
+               --  State 154:
+               --      103.0:name <= name LEFT_PAREN range_list ^ RIGHT_PAREN
+               --      118.0:range_list <= range_list ^ COMMA range_g
+               --
+               --  State 251:
+               --      110.0:parameter_specification <= IDENTIFIER COLON 
IDENTIFIER ^ COLON_EQUAL expression_opt
+               --      110.1:parameter_specification <= IDENTIFIER COLON 
IDENTIFIER ^
+               --
+               --  From java_enum_ch19_lr1.parse_table:
+               --
+               --  State 8:
+               --       9.1:EnumConstantList <= EnumConstantList COMMA ^ 
EnumConstant ; (1 => Direct_Left, 3 => Other)
+               --      11.0:EnumBody <= LEFT_CURLY_BRACKET EnumConstantList 
COMMA ^ RIGHT_CURLY_BRACKET
+               --
+               --  From empty_production_2_lalar.parse_table:
+               --
+               --  State 5:
+               --        8.0:declarations <= declarations ^ declaration
+               --        9.0:body <= IS declarations ^ BEGIN SEMICOLON
+
+               --  case 0: In states 43 and 30, there is only one possible 
action, so
+               --  recursion is not considered. Minimal_Action is
+               --  computed by Compute_Minimal_Action, Label is Keep_Always.
+               --
+               --  In the following, we only consider kernels where there is 
more
+               --  than one item.
+               --
+               --  case 1: In state 47 production 113.2, Length_After_Dot is 
0, so
+               --  recursion is not considered. We set Label to Keep_Always, 
since
+               --  the true Length_After_Dot must be computed at runtime.
+               --  Minimal_Action is Reduce_Production.
+               --
+               --  Similarly in state 68 production 115.0, Length_After_Dot is 0
+               --  because parameter_profile_opt is nullable, and we set Label 
to
+               --  Keep_Always, Minimal_Action to Reduce_Production.
+               --
+               --  case 2: In state 47, if LEFT_PAREN or First
+               --  (actual_parameter_part) is inserted, a recursion cycle is 
followed
+               --  via 103.0 or 103.1; these have Direct_Left recursion, can 
never be
+               --  minimal, and we set Label to Drop. 113.2 breaks the 
recursion; it
+               --  has Length_After_Dot = 0 and is covered by case 1. 124.0 has
+               --  Other_Left; since Length_After_Dot is > 0, it follows the
+               --  recursion cycle and is never minimal, so it is the same as
+               --  Direct_Left. Similarly, in java_enum_ch19_lr1.parse_table 
state 8
+               --  production 9.1, inserting EnumConstant continues the 
recursion
+               --  cycle; left recursion applies even when it is not just 
before the
+               --  parse point. On the other hand, in ada_lite state 154, both
+               --  productions are left recursive; 103.0 could be preserved. 
In the
+               --  current algorithm, both are dropped.
+               --
+               --  It is possible for both case 1 and case 2 to apply; see
+               --  empty_production_2_lalar.parse_table State 5 above and
+               --  ada_lite_ebnf_lalr.parse_table state 46. case 1 has 
precedence if
+               --  Dot = No_Element.
+               --
+               --  case 3: In state 251, there is no recursion, and 
Length_After_Dot
+               --  is correct; Label is set to Keep_If_Minimal, Minimal_Action 
to
+               --  Compute_Minimal_Action. In State 77, Dot_ID is 
association_list
+               --  which has Other recursion; we say "there is recursion at 
the parse
+               --  point". However, Length_After_Dot is correct; it assumes the
+               --  recursion-breaking case for the expansion of 
association_list. So
+               --  this is the same as no recursion at the parse point
+               --
+               --  It is possible for both case 2 and 3 to be true; see
+               --  empty_production_2_lalr.parse_table state 5. Case 2 has
+               --  precedence (left recursion is worse).
+
+               if Item_States'Length = 1 then
+                  --  case 0
+                  Item_States (I) :=
+                    (Keep_Always,
+                     (if Length_After_Dot = 0
+                      then (Reduce, Reduce_Production, Reduce_Count)
+                      else Compute_Action (Dot_ID)));
+
+               elsif Length_After_Dot = 0 then
+                  if Item.Dot /= No_Index and RHS.Recursion (1) in Direct_Left 
| Other_Left then
+                     --  case 2
+                     Item_States (I) := (Label => Drop);
+                  else
+                     --  case 1
+                     Item_States (I) :=
+                       (Label          => Keep_Always,
+                        Minimal_Action => (Reduce, Reduce_Production, 
Reduce_Count));
+                  end if;
 
-         I := Working_Set.First;
-         loop
-            exit when not Has_Element (I);
+               elsif RHS.Recursion (1) in Direct_Left | Other_Left then
+                  --  case 2
+                  Item_States (I) := (Label => Drop);
 
-            if Delete_Recursive and Immediate_Recursive then
-               if Trace_Generate > Extra then
-                  Ada.Text_IO.Put_Line ("delete " & Image (Constant_Ref 
(I).Prod) & " recursive");
+               else
+                  --  case 3
+                  Item_States (I) := (Keep_If_Minimal, Compute_Action 
(Dot_ID));
                end if;
-               declare
-                  Del : LR1_Items.Item_Lists.Cursor := I;
-               begin
-                  Next (I);
-                  Working_Set.Delete (Del);
-               end;
-
-            else
-               Recursive := Recursive or Minimal_Terminal_Sequences
-                 (Constant_Ref (I).Prod.LHS)(Constant_Ref 
(I).Prod.RHS).Worst_Recursion in
-                 Left | Right;
-
-               declare
-                  Prod_Length : constant Count_Type := After_Dot_Length 
(Constant_Ref (I));
-               begin
-                  if Min_Length > Prod_Length then
-                     Min_Length := Prod_Length;
-                  end if;
-               end;
 
-               Next (I);
-            end if;
-         end loop;
-
-         --  Now we have the minimum length; check remaining items against that
-         I := Working_Set.First;
-         loop
-            exit when not Has_Element (I);
-            if Min_Length < After_Dot_Length (Constant_Ref (I)) then
-               declare
-                  Del : LR1_Items.Item_Lists.Cursor := I;
-               begin
-                  if Trace_Generate > Extra then
-                     Ada.Text_IO.Put_Line ("delete " & Image (Constant_Ref 
(I).Prod));
+               State.Kernel (I) :=
+                 (Production        => Item.Prod,
+                  Before_Dot        => Before_Dot (Item),
+                  Length_After_Dot  => Length_After_Dot,
+                  Reduce_Production => Reduce_Production,
+                  Reduce_Count      => Reduce_Count);
+
+               if Item_States (I).Label = Keep_If_Minimal then
+                  if Length_After_Dot < Min_Length then
+                     Min_Length := Length_After_Dot;
                   end if;
-                  Next (I);
-                  Working_Set.Delete (Del);
-               end;
-            else
-               if Trace_Generate > Extra then
-                  Ada.Text_IO.Put_Line ("keep " & Image (Constant_Ref 
(I).Prod));
                end if;
-               Next (I);
-            end if;
-         end loop;
-      end Delete_Non_Minimal;
 
-   begin
-      if Kernel.State > 0 then
-         declare
-            use Ada.Containers;
-            I : Count_Type := 1;
+               if Trace_Generate_Minimal_Complete > Extra then
+                  Ada.Text_IO.Put_Line
+                    ("kernel" & I'Image & " " & Strict_Image (State.Kernel 
(I)) &
+                       " ; " & Item_States (I).Label'Image &
+                       " " & State.Kernel (I).Length_After_Dot'Image);
+               end if;
 
-            function Before_Dot (Item : in LR1_Items.Item) return Token_ID
-            is
-               Tokens : Token_ID_Arrays.Vector renames Grammar 
(Item.Prod.LHS).RHSs (Item.Prod.RHS).Tokens;
-            begin
-               if Item.Dot = Token_ID_Arrays.No_Element then
-                  return Tokens (Tokens.Last_Index);
-               else
-                  return Tokens (Prev (Item.Dot));
+               if I < Kernel_Index'Last then
+                  I := I + 1;
                end if;
-            end Before_Dot;
-         begin
-            State.Kernel.Set_First_Last (1, Kernel.Set.Length);
-            for Item of Kernel.Set loop
-               State.Kernel (I) :=
-                 (LHS              => Item.Prod.LHS,
-                  Before_Dot       => Before_Dot (Item),
-                  Length_After_Dot => After_Dot_Length (Item),
-                  Recursive        => Minimal_Terminal_Sequences
-                    (Item.Prod.LHS)(Item.Prod.RHS).Worst_Recursion in Right | 
Left);
+            end;
+         end loop;
 
-               I := I + 1;
-            end loop;
-         end;
-      end if;
+         --  It is tempting to Assert that if all items are dropped, there is a
+         --  grammar recursion cycle with no exit. But that is not true; see
+         --  java_expressions_ch19_lr1.parse_table, state 8. However, that
+         --  state should never be encountered during Insert_Minimal_Complete,
+         --  because it is never minimal. So we set Minimal_Actions to empty.
 
-      --  The actions computed here are used in the error recovery
-      --  algorithm, to decide what terminals to insert in the input stream
-      --  in order to correct an error. The strategy is to complete a high
-      --  level production (ie declaration or statement) as quickly as
-      --  possible, because the next real token is known to be the start of
-      --  a high level production, or the end of a containing block-style
-      --  production.
-      --
-      --  The actions are empty in a state that includes the accept
-      --  production. That tells the error recovery algorithm to stop using
-      --  the minimal complete actions strategy.
+         --  Update State_Items based on Min_Length
+         for I in Item_States'Range loop
 
-      if (for some Item of Working_Set =>
-            Item.Prod.LHS = Descriptor.Accept_ID and
-            (Has_Element (Item.Dot) and then Element (Item.Dot) = 
Descriptor.EOI_ID))
-      then
-         --  No actions
-         return;
-      end if;
+            case Item_States (I).Label is
+            when Unknown =>
+               null;
 
-      Delete_Non_Minimal;
+            when Keep_Always =>
+               pragma Assert (Item_States (I).Minimal_Action.Production /= 
Invalid_Production_ID);
 
-      State.Minimal_Complete_Actions_Recursive := Recursive;
+            when Keep_If_Minimal =>
+               if State.Kernel (I).Length_After_Dot = Min_Length then
+                  null;
+               else
+                  Item_States (I) := (Label => Drop);
+               end if;
 
-      if Working_Set.Length > 0 then
-         --  There are one or more productions with equal after-dot length in
-         --  this state, all equally valid; the choice is determined by what
-         --  input error recovery inserts.
-         --
-         --  We could simply choose one arbitrarily, but that can lead to loops
-         --  (see discussion above in Immediate_Recursive). So we consider the
-         --  higher level production. However, in general we cannot precompute
-         --  what higher-level productions might be completed from each state;
-         --  we must use the parse stack during error recovery. In that case,
-         --  we store multiple minimal actions in the state (see
-         --  Insert_Minimal_Complete_Actions in
-         --  wisitoken-parse-lr-mckenzie_recover-explore.adb).
+            when Drop =>
+               null;
+            end case;
+         end loop;
 
-         declare
-            Actions : Minimal_Action_Array (1 .. Working_Set.Length) := 
(others => (others => <>));
+         --  Set State.Minimal_Actions
+         for Item_State of Item_States loop
+            case Item_State.Label is
+            when Unknown | Drop =>
+               null;
 
-            I    : Ada.Containers.Count_Type := 1;
-            Skip : Boolean;
-         begin
-            for Item of Working_Set loop
-
-               if not Has_Element (Item.Dot) then
-                  --  Item has no next terminal. Include a reduce action; the
-                  --  Minimal_Terminal_First for the resulting state will be 
used.
-                  Actions (I) :=
-                    (Reduce, Item.Prod.LHS,
-                     Token_Count => Grammar (Item.Prod.LHS).RHSs 
(Item.Prod.RHS).Tokens.Length);
+            when Keep_Always | Keep_If_Minimal =>
+               if (for some A of State.Minimal_Complete_Actions => A = 
Item_State.Minimal_Action) then
+                  --  Duplicate action; see 
three_action_conflict_lalr.parse_table state
+                  --  3 or lalr_generator_bug_01_lalr.parse_table state 28
+                  null;
                else
-                  declare
-                     ID : constant Token_ID := Element (Item.Dot);
-                  begin
-                     if ID in Terminals then
-                        Actions (I) := Find_Action (State.Action_List, ID);
-
-                     else
-                        if Minimal_Terminal_First (ID) = Invalid_Token_ID then
-                           --  Item.Dot is a nullable nonterm; include a 
reduce to the null
-                           --  nonterm, rather than a shift of the following 
terminal; recover
-                           --  must do the reduce first.
-                           Actions (I) := (Reduce, ID, Token_Count => 0);
-
-                        else
-                           Actions (I) := Find_Action (State.Action_List, 
Minimal_Terminal_First (ID));
-                        end if;
-                     end if;
-                  end;
+                  pragma Assert (Item_State.Minimal_Action.Production /= 
Invalid_Production_ID);
+                  State.Minimal_Complete_Actions.Append 
(Item_State.Minimal_Action);
                end if;
-               I := I + 1;
-            end loop;
-
-            if Actions'Length = 1 then
-               State.Minimal_Complete_Actions := 
Minimal_Action_Arrays.To_Vector (Actions (Actions'First));
-            else
-               --  Check for duplicates; see 
three_action_conflict_lalr.parse_table
-               --  state 3 or lalr_generator_bug_01_lalr.parse_table state 28
-               for I in Actions'Range loop
-                  Skip := False;
-                  for J in Actions'First .. I - 1 loop
-                     if Actions (I) = Actions (J) then
-                        Skip := True;
-                        exit;
-                     end if;
-                  end loop;
-                  if not Skip then
-                     State.Minimal_Complete_Actions.Append (Actions (I));
-                  end if;
-               end loop;
-            end if;
+            end case;
+         end loop;
 
-            if Trace_Generate > Extra then
-               Ada.Text_IO.Put_Line
-                 (Image (State.Minimal_Complete_Actions, Descriptor) & (if 
Recursive then " recursive" else ""));
-            end if;
-         end;
-      end if;
+         if Trace_Generate_Minimal_Complete > Extra then
+            Ada.Text_IO.Put_Line (Image (State.Minimal_Complete_Actions, 
Descriptor));
+         end if;
+      end;
    end Set_Minimal_Complete_Actions;
 
    ----------
@@ -1201,16 +1140,14 @@ package body WisiToken.Generate.LR is
                Node_J : Parse_Action_Node_Ptr := Node_I.Actions;
             begin
                loop
-                  Put (File, Parse_Action_Verbs'Image (Node_J.Item.Verb));
+                  Put (File, Node_J.Item.Verb'Image);
+                  Put (File, Node_J.Item.Production.LHS'Image & 
Node_J.Item.Production.RHS'Image);
 
                   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));
-
                      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
@@ -1256,15 +1193,18 @@ package body WisiToken.Generate.LR is
          New_Line (File);
 
          if State.Kernel.Length = 0 then
-            --  Not set for state 0
+            --  Kernel not set for state 0
             Put_Line (File, "0 -1");
 
          else
             Put (File, Count_Type'Image (State.Kernel.First_Index));
             Put (File, Count_Type'Image (State.Kernel.Last_Index));
             for Item of State.Kernel loop
-               Put (File, Token_ID'Image (Item.LHS) & Token_ID'Image 
(Item.Before_Dot) &
-                      Count_Type'Image (Item.Length_After_Dot));
+               Put (File, Token_ID'Image (Item.Production.LHS) & 
Item.Production.RHS'Image);
+               Put (File, Item.Before_Dot'Image);
+               Put (File, Count_Type'Image (Item.Length_After_Dot));
+               Put (File, Token_ID'Image (Item.Reduce_Production.LHS) & 
Item.Reduce_Production.RHS'Image);
+               Put (File, Item.Reduce_Count'Image);
             end loop;
             New_Line (File);
          end if;
@@ -1276,13 +1216,13 @@ package body WisiToken.Generate.LR is
             Put (File, Count_Type'Image 
(State.Minimal_Complete_Actions.Last_Index));
             for Action of State.Minimal_Complete_Actions loop
                Put (File, " ");
+               Put (File, Action.Verb'Image);
+               Put (File, Action.Production.LHS'Image & 
Action.Production.RHS'Image);
                case Action.Verb is
                when Shift =>
-                  Put (File, Minimal_Verbs'Image (Action.Verb));
                   Put (File, Token_ID'Image (Action.ID) & State_Index'Image 
(Action.State));
                when Reduce =>
-                  Put (File, Minimal_Verbs'Image (Action.Verb));
-                  Put (File, Token_ID'Image (Action.Nonterm) & 
Ada.Containers.Count_Type'Image (Action.Token_Count));
+                  Put (File, Action.Token_Count'Image);
                end case;
             end loop;
          end if;
@@ -1369,14 +1309,18 @@ package body WisiToken.Generate.LR is
       case Item.Verb is
       when Shift =>
          Put ("shift and goto state" & State_Index'Image (Item.State));
+         Put (" " & Trimmed_Image (Item.Production));
+
       when Reduce =>
          Put
            ("reduce" & Count_Type'Image (Item.Token_Count) & " tokens to " &
               Image (Item.Production.LHS, Descriptor));
          Put (" " & Trimmed_Image (Item.Production));
+
       when Accept_It =>
          Put ("accept it");
          Put (" " & Trimmed_Image (Item.Production));
+
       when Parse.LR.Error =>
          Put ("ERROR");
       end case;
@@ -1439,66 +1383,56 @@ package body WisiToken.Generate.LR is
             when Shift =>
                Put (Image (Action.ID, Descriptor));
             when Reduce =>
-               Put (Image (Action.Nonterm, Descriptor));
+               Put (Image (Action.Production.LHS, Descriptor));
             end case;
+            Put (" " & Trimmed_Image (Action.Production));
          end;
       when others =>
          Put ("(");
          for I in State.Minimal_Complete_Actions.First_Index .. 
State.Minimal_Complete_Actions.Last_Index loop
-            case State.Minimal_Complete_Actions (I).Verb is
-            when Shift =>
-               Put (Image (State.Minimal_Complete_Actions (I).ID, Descriptor));
-            when Reduce =>
-               Put (Image (State.Minimal_Complete_Actions (I).Nonterm, 
Descriptor));
-            end case;
+            declare
+               Action : Minimal_Action renames State.Minimal_Complete_Actions 
(I);
+            begin
+               case Action.Verb is
+               when Shift =>
+                  Put (Image (Action.ID, Descriptor));
+               when Reduce =>
+                  Put (Image (Action.Production.LHS, Descriptor));
+               end case;
+               Put (" " & Trimmed_Image (Action.Production));
+            end;
             if I < State.Minimal_Complete_Actions.Last_Index then
                Put (", ");
             end if;
          end loop;
          Put (")");
       end case;
-      if State.Minimal_Complete_Actions_Recursive then
-         Put_Line (" recursive");
-      else
-         New_Line;
-      end if;
+      New_Line;
    end Put;
 
    procedure Put_Parse_Table
-     (Table                      : in Parse_Table_Ptr;
-      Title                      : in String;
-      Grammar                    : in WisiToken.Productions.Prod_Arrays.Vector;
-      Recursions                 : in Generate.Recursions;
-      Minimal_Terminal_Sequences : in Minimal_Sequence_Array;
-      Kernels                    : in LR1_Items.Item_Set_List;
-      Conflicts                  : in Conflict_Count_Lists.List;
-      Descriptor                 : in WisiToken.Descriptor;
-      Include_Extra              : in Boolean := False)
+     (Table                 : in Parse_Table_Ptr;
+      Parse_Table_File_Name : in String;
+      Title                 : in String;
+      Grammar               : in WisiToken.Productions.Prod_Arrays.Vector;
+      Recursions            : in Generate.Recursions;
+      Kernels               : in LR1_Items.Item_Set_List;
+      Conflicts             : in Conflict_Count_Lists.List;
+      Descriptor            : in WisiToken.Descriptor;
+      Include_Extra         : in Boolean := False)
    is
       use all type Ada.Containers.Count_Type;
       use Ada.Text_IO;
+      Parse_Table_File : File_Type;
    begin
+      Create (Parse_Table_File, Out_File, Parse_Table_File_Name);
+      Set_Output (Parse_Table_File);
       Put_Line ("Tokens:");
       WisiToken.Put_Tokens (Descriptor);
 
       New_Line;
       Put_Line ("Productions:");
-      for LHS in Grammar.First_Index .. Grammar.Last_Index loop
-         declare
-            Prod : WisiToken.Productions.Instance renames Grammar (LHS);
-         begin
-            for RHS in Prod.RHSs.First_Index .. Prod.RHSs.Last_Index loop
-               Put (WisiToken.Productions.Image (Prod.LHS, RHS, Prod.RHSs 
(RHS).Tokens, Descriptor));
-               if not Include_Extra or Minimal_Terminal_Sequences 
(LHS)(RHS).Recursion.Length = 0 then
-                  New_Line;
-               else
-                  Put_Line
-                    (" ; " & Image (Minimal_Terminal_Sequences 
(LHS)(RHS).Recursion) & " " &
-                       Recursion'Image (Minimal_Terminal_Sequences 
(LHS)(RHS).Worst_Recursion));
-               end if;
-            end loop;
-         end;
-      end loop;
+      WisiToken.Productions.Put (Grammar, Descriptor);
 
       if Include_Extra then
          New_Line;
@@ -1509,8 +1443,8 @@ package body WisiToken.Generate.LR is
       end if;
 
       if 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
+        Table.McKenzie_Param.Check_Delta_Limit /= 
Default_McKenzie_Param.Check_Delta_Limit or
+        Table.McKenzie_Param.Enqueue_Limit /= 
Default_McKenzie_Param.Enqueue_Limit
       then
          New_Line;
          Put_Line ("McKenzie:");
@@ -1521,8 +1455,18 @@ package body WisiToken.Generate.LR is
       Put_Line (Title & " Parse Table:");
 
       for State_Index in Table.States'Range loop
-         LR1_Items.Put
-           (Grammar, Descriptor, Kernels (State_Index), Kernel_Only => True, 
Show_Lookaheads => Include_Extra);
+         Put_Line ("State" & Unknown_State_Index'Image (State_Index) & ":");
+
+         declare
+            use WisiToken.Generate.LR1_Items;
+         begin
+            for Item of Kernels (State_Index).Set loop
+               if In_Kernel (Grammar, Descriptor, Item) then
+                  Put ("  " & Image (Grammar, Descriptor, Item, 
Show_Lookaheads => False));
+                  New_Line;
+               end if;
+            end loop;
+         end;
          New_Line;
          Put (Descriptor, Table.States (State_Index));
 
@@ -1559,6 +1503,8 @@ package body WisiToken.Generate.LR is
          New_Line;
          Put_Line (" 0 accept/reduce conflicts, 0 shift/reduce conflicts, 0 
reduce/reduce conflicts");
       end if;
+      Set_Output (Standard_Output);
+      Close (Parse_Table_File);
    end Put_Parse_Table;
 
 end WisiToken.Generate.LR;
diff --git a/packages/wisi/wisitoken-generate-lr.ads 
b/packages/wisi/wisitoken-generate-lr.ads
index 1bb9e2b..00257fe 100644
--- a/packages/wisi/wisitoken-generate-lr.ads
+++ b/packages/wisi/wisitoken-generate-lr.ads
@@ -2,7 +2,7 @@
 --
 --  Common utilities for LR parser table generators.
 --
---  Copyright (C) 2017 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2017 - 2020 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
@@ -127,33 +127,27 @@ package WisiToken.Generate.LR is
    ----------
    --  Minimal terminal sequences.
 
-   type RHS_Sequence is
-   record
-      Recursion : Recursion_Lists.List;
-      --  All recursion cycles involving this RHS.
-
-      Worst_Recursion : WisiToken.Recursion := None; --  worst case of all 
Recursion.
-
-      Sequence : Token_ID_Arrays.Vector;
-   end record;
-
    package RHS_Sequence_Arrays is new SAL.Gen_Unbounded_Definite_Vectors
-     (Natural, RHS_Sequence, Default_Element => (others => <>));
+     (Natural, Token_ID_Arrays.Vector, Default_Element => 
Token_ID_Arrays.Empty_Vector);
 
-   function Image (Item : in RHS_Sequence; Descriptor : in 
WisiToken.Descriptor) return String;
-   --  Positional Ada aggregate syntax.
+   function Image is new RHS_Sequence_Arrays.Gen_Image_Aux (Descriptor, 
Trimmed_Image, Image_No_Assoc);
 
-   function Image is new RHS_Sequence_Arrays.Gen_Image_Aux (Descriptor, 
Trimmed_Image, Image);
+   function Min_Length (Item : in RHS_Sequence_Arrays.Vector) return 
Ada.Containers.Count_Type;
+   --  Return minimum length of elements of Item.
 
-   function Min (Item : in RHS_Sequence_Arrays.Vector) return RHS_Sequence;
+   function Min (Item : in RHS_Sequence_Arrays.Vector) return 
Token_ID_Arrays.Vector;
    --  Return element of Item with minimum length;
 
-   type Minimal_Sequence_Array is array (Token_ID range <>) of 
RHS_Sequence_Arrays.Vector;
+   type Minimal_Sequence_Item is record
+      Min_RHS  : Natural := Natural'Last;
+      Sequence : RHS_Sequence_Arrays.Vector;
+   end record;
+
+   type Minimal_Sequence_Array is array (Token_ID range <>) of 
Minimal_Sequence_Item;
 
    function Compute_Minimal_Terminal_Sequences
      (Descriptor : in WisiToken.Descriptor;
-      Grammar    : in WisiToken.Productions.Prod_Arrays.Vector;
-      Recursions : in Generate.Recursions)
+      Grammar    : in WisiToken.Productions.Prod_Arrays.Vector)
      return Minimal_Sequence_Array;
    --  For each production in Grammar, compute the minimal sequence of
    --  terminals that will complete it. Result is an empty sequence if
@@ -172,12 +166,12 @@ package WisiToken.Generate.LR is
       Kernel                     : in     LR1_Items.Item_Set;
       Descriptor                 : in     WisiToken.Descriptor;
       Grammar                    : in     
WisiToken.Productions.Prod_Arrays.Vector;
+      Nullable                   : in     Token_Array_Production_ID;
       Minimal_Terminal_Sequences : in     Minimal_Sequence_Array;
       Minimal_Terminal_First     : in     Token_Array_Token_ID);
    --  Set State.Minimal_Complete_Actions to the set of actions that will
    --  most quickly complete the productions in Kernel (which must be for
-   --  State). Useful in error correction when we know the next actual
-   --  terminal is a block ending or statement start.
+   --  State). Useful in error correction.
    --
    --  The Minimal_Complete_Actions will be empty in a state where there
    --  is nothing useful to do; the accept state, or one where all
@@ -206,15 +200,15 @@ package WisiToken.Generate.LR is
    --  Put Item to Ada.Text_IO.Current_Output in parse table format.
 
    procedure Put_Parse_Table
-     (Table                      : in Parse_Table_Ptr;
-      Title                      : in String;
-      Grammar                    : in WisiToken.Productions.Prod_Arrays.Vector;
-      Recursions                 : in Generate.Recursions;
-      Minimal_Terminal_Sequences : in Minimal_Sequence_Array;
-      Kernels                    : in LR1_Items.Item_Set_List;
-      Conflicts                  : in Conflict_Count_Lists.List;
-      Descriptor                 : in WisiToken.Descriptor;
-      Include_Extra              : in Boolean := False);
-   --  "Extra" is recursions, lookaheads.
+     (Table                 : in Parse_Table_Ptr;
+      Parse_Table_File_Name : in String;
+      Title                 : in String;
+      Grammar               : in WisiToken.Productions.Prod_Arrays.Vector;
+      Recursions            : in Generate.Recursions;
+      Kernels               : in LR1_Items.Item_Set_List;
+      Conflicts             : in Conflict_Count_Lists.List;
+      Descriptor            : in WisiToken.Descriptor;
+      Include_Extra         : in Boolean := False);
+   --  "Extra" is recursions.
 
 end WisiToken.Generate.LR;
diff --git a/packages/wisi/wisitoken-generate-lr1_items.adb 
b/packages/wisi/wisitoken-generate-lr1_items.adb
index f394b67..37e6f0e 100644
--- a/packages/wisi/wisitoken-generate-lr1_items.adb
+++ b/packages/wisi/wisitoken-generate-lr1_items.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2002, 2003, 2008, 2009, 2012 - 2015, 2017 - 2019 Free 
Software Foundation, Inc.
+--  Copyright (C) 2002, 2003, 2008, 2009, 2012 - 2015, 2017 - 2020 Free 
Software Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -35,25 +35,34 @@ package body WisiToken.Generate.LR1_Items is
    ----------
    --  body subprograms
 
-   function Get_Dot_IDs (Set : in Item_Lists.List; Descriptor : in 
WisiToken.Descriptor) return Token_ID_Arrays.Vector
+   function Get_Dot_IDs
+     (Grammar    : in WisiToken.Productions.Prod_Arrays.Vector;
+      Set        : in Item_Lists.List;
+      Descriptor : in WisiToken.Descriptor)
+     return Token_ID_Arrays.Vector
    is
-      use all type Token_ID_Arrays.Cursor;
       use Item_Lists;
       IDs : Token_ID_Set (Descriptor.First_Terminal .. 
Descriptor.Last_Nonterminal) := (others => False);
    begin
       for Item of Set loop
-         if Item.Dot /= Token_ID_Arrays.No_Element then
-            if Element (Item.Dot) /= Descriptor.EOI_ID then
-               IDs (Element (Item.Dot)) := True;
+         declare
+            use Token_ID_Arrays;
+            Dot : constant Token_ID_Arrays.Cursor :=
+              WisiToken.Productions.Constant_Ref_RHS (Grammar, 
Item.Prod).Tokens.To_Cursor (Item.Dot);
+         begin
+            if Has_Element (Dot) then
+               if Element (Dot) /= Descriptor.EOI_ID then
+                  IDs (Element (Dot)) := True;
+               end if;
             end if;
-         end if;
+         end;
       end loop;
       return To_Array (IDs);
    end Get_Dot_IDs;
 
    function Merge
      (Prod         : in     Production_ID;
-      Dot          : in     Token_ID_Arrays.Cursor;
+      Dot          : in     Token_ID_Arrays.Extended_Index;
       Lookaheads   : in     Lookahead;
       Existing_Set : in out Item_Set)
      return Boolean
@@ -66,7 +75,7 @@ package body WisiToken.Generate.LR1_Items is
       Found    : constant Item_Lists.Cursor := Find (Prod, Dot, Existing_Set);
       Modified : Boolean                    := False;
    begin
-      if Found = No_Element then
+      if not Has_Element (Found) then
          Existing_Set.Set.Insert ((Prod, Dot, new Token_ID_Set'(Lookaheads)));
 
          Modified := True;
@@ -104,32 +113,13 @@ package body WisiToken.Generate.LR1_Items is
    end Lookahead_Image;
 
    function Item_Compare (Left, Right : in Item) return SAL.Compare_Result
-   is begin
-      if Left.Prod.LHS > Right.Prod.LHS then
-         return SAL.Greater;
-      elsif Left.Prod.LHS < Right.Prod.LHS then
-         return SAL.Less;
-
-      elsif Left.Prod.RHS > Right.Prod.RHS then
-         return SAL.Greater;
-      elsif Left.Prod.RHS < Right.Prod.RHS then
-         return SAL.Less;
-
-      else
-         declare
-            Left_Index : Integer renames Token_ID_Arrays.To_Index (Left.Dot);
-            Right_Index : Integer renames Token_ID_Arrays.To_Index (Right.Dot);
-         begin
-            if Left_Index > Right_Index then
-               return SAL.Greater;
-            elsif Left_Index < Right_Index then
-               return SAL.Less;
-            else
-               return SAL.Equal;
-            end if;
-         end;
-      end if;
-   end Item_Compare;
+     is (if Left.Prod.LHS > Right.Prod.LHS then SAL.Greater
+         elsif Left.Prod.LHS < Right.Prod.LHS then SAL.Less
+         elsif Left.Prod.RHS > Right.Prod.RHS then SAL.Greater
+         elsif Left.Prod.RHS < Right.Prod.RHS then SAL.Less
+         elsif Left.Dot > Right.Dot then SAL.Greater
+         elsif Left.Dot < Right.Dot then SAL.Less
+         else SAL.Equal);
 
    procedure Include
      (Item  : in out LR1_Items.Item;
@@ -204,18 +194,19 @@ package body WisiToken.Generate.LR1_Items is
       Item       : in LR1_Items.Item)
      return Boolean
    is
+      use all type Ada.Containers.Count_Type;
       use Token_ID_Arrays;
       Prod : WisiToken.Productions.Instance renames Grammar (Item.Prod.LHS);
       RHS  : WisiToken.Productions.Right_Hand_Side renames Prod.RHSs 
(Item.Prod.RHS);
    begin
       return
-        No_Element /= RHS.Tokens.First and
-        (Item.Dot = No_Element or else
+        RHS.Tokens.Length > 0 and
+        (Item.Dot = No_Index or else
            ((Prod.LHS = Descriptor.Accept_ID and
-               Item.Dot = RHS.Tokens.First)
+               Item.Dot = RHS.Tokens.First_Index)
               -- Start symbol production with dot before first token.
               or
-              Item.Dot /= RHS.Tokens.First));
+              Item.Dot /= RHS.Tokens.First_Index));
    end In_Kernel;
 
    function Find
@@ -227,32 +218,12 @@ package body WisiToken.Generate.LR1_Items is
    end Find;
 
    function Find
-     (Prod  : in Production_ID;
-      Dot   : in Token_ID_Arrays.Cursor;
-      Right : in Item_Set)
+     (Prod : in Production_ID;
+      Dot : in Token_ID_Arrays.Extended_Index;
+      Set  : in Item_Set)
      return Item_Lists.Cursor
    is begin
-      return Right.Set.Find ((Prod, Dot, null));
-   end Find;
-
-   function Find
-     (Prod       : in Production_ID;
-      Dot        : in Token_ID_Arrays.Cursor;
-      Right      : in Item_Set;
-      Lookaheads : in Lookahead)
-     return Item_Lists.Cursor
-   is
-      use Item_Lists;
-      Result : constant Cursor := Right.Set.Find ((Prod, Dot, null));
-   begin
-      --  Item_Equal does not consider lookaheads
-      if Result = No_Element then
-         return Result;
-      elsif Constant_Ref (Result).Lookaheads.all = Lookaheads then
-         return Result;
-      else
-         return No_Element;
-      end if;
+      return Set.Set.Find ((Prod, Dot, null));
    end Find;
 
    function To_Item_Set_Tree_Key
@@ -270,13 +241,13 @@ package body WisiToken.Generate.LR1_Items is
          --  want it to compare first, since it is most likely to be different.
 
          loop
-            exit when Cur = No_Element;
+            exit when not Has_Element (Cur);
             declare
                Item_1 : Item renames Item_Set.Set (Cur);
             begin
                Result.Append (Integer_16 (Item_1.Prod.LHS));
                Result.Append (Integer_16 (Item_1.Prod.RHS));
-               Result.Append (Integer_16 (Token_ID_Arrays.To_Index 
(Item_1.Dot)));
+               Result.Append (Integer_16 (Item_1.Dot));
                if Include_Lookaheads then
                   for ID in Item_1.Lookaheads'Range loop
                      if Item_1.Lookaheads (ID) then
@@ -311,7 +282,8 @@ package body WisiToken.Generate.LR1_Items is
    end Find;
 
    procedure Add
-     (New_Item_Set       : in out Item_Set;
+     (Grammar            : in     WisiToken.Productions.Prod_Arrays.Vector;
+      New_Item_Set       : in     Item_Set;
       Item_Set_Vector    : in out Item_Set_List;
       Item_Set_Tree      : in out Item_Set_Trees.Tree;
       Descriptor         : in     WisiToken.Descriptor;
@@ -320,8 +292,8 @@ package body WisiToken.Generate.LR1_Items is
       use Item_Set_Trees;
       Key : constant Item_Set_Tree_Key := To_Item_Set_Tree_Key (New_Item_Set, 
Include_Lookaheads);
    begin
-      New_Item_Set.Dot_IDs := Get_Dot_IDs (New_Item_Set.Set, Descriptor);
       Item_Set_Vector.Append (New_Item_Set);
+      Item_Set_Vector (Item_Set_Vector.Last_Index).Dot_IDs := Get_Dot_IDs 
(Grammar, New_Item_Set.Set, Descriptor);
       Item_Set_Tree.Insert ((Key, New_Item_Set.State));
    end Add;
 
@@ -369,65 +341,60 @@ package body WisiToken.Generate.LR1_Items is
       --  Taken literally, the algorithm modifies its input; we make a
       --  copy instead.
 
-      I : Item_Set; --  The result.
+      I : Item_Set := Set; --  The result.
 
-      Item_I     : Item_Lists.Cursor; -- iterator 'for each item in I'
+      Item_I     : Item_Lists.Cursor := I.Set.First; -- iterator 'for each 
item in I'
       Added_Item : Boolean := False;  -- 'until no more items can be added'
-
-      Beta : Token_ID_Arrays.Cursor; -- into RHS.Tokens
    begin
-      I := Set;
-
-      Item_I := I.Set.First;
       loop
          declare
             Item : LR1_Items.Item renames I.Set (Item_I);
+            Dot  : constant Token_ID_Arrays.Cursor :=
+              WisiToken.Productions.Constant_Ref_RHS (Grammar, 
Item.Prod).Tokens.To_Cursor (Item.Dot);
          begin
             --  An item has the structure [A -> alpha Dot B Beta, a].
             --
             --  If B is a nonterminal, find its productions and place
             --  them in the set with lookaheads from FIRST(Beta a).
-            if Item.Dot /= No_Element and then
-              Element (Item.Dot) in Descriptor.First_Nonterminal .. 
Descriptor.Last_Nonterminal
+            if Has_Element (Dot) and then
+              Element (Dot) in Descriptor.First_Nonterminal .. 
Descriptor.Last_Nonterminal
             then
                declare
-                  Prod : WisiToken.Productions.Instance renames Grammar 
(Element (Item.Dot));
+                  Prod : WisiToken.Productions.Instance renames Grammar 
(Element (Dot));
                begin
-
                   For_Each_RHS :
-                  for B in Prod.RHSs.First_Index .. Prod.RHSs.Last_Index loop
+                  for J in Prod.RHSs.First_Index .. Prod.RHSs.Last_Index loop
                      declare
-                        RHS : WisiToken.Productions.Right_Hand_Side renames 
Prod.RHSs (B);
-                        P_ID : constant Production_ID := (Prod.LHS, B);
+                        RHS  : WisiToken.Productions.Right_Hand_Side renames 
Prod.RHSs (J);
+                        P_ID : constant Production_ID := (Prod.LHS, J);
+                        Beta : Token_ID_Arrays.Cursor := Next (Dot); -- tokens 
after nonterminal, possibly null
                      begin
                         --  Compute FIRST (<tail of right hand side> a); loop
                         --  until find a terminal, a nonterminal that
                         --  cannot be empty, or end of production, adding
                         --  items on the way.
 
-                        Beta := Next (Item.Dot); -- tokens after nonterminal, 
possibly null
-
                         First_Tail :
                         loop
-                           if Beta = No_Element then
+                           if not Has_Element (Beta) then
                               --  Use FIRST (a); a = Item.Lookaheads.
                               --  Lookaheads are all terminals, so
                               --  FIRST (a) = a.
                               Added_Item := Added_Item or
-                                Merge (P_ID, RHS.Tokens.First, 
Item.Lookaheads.all, I);
+                                Merge (P_ID, To_Index (RHS.Tokens.First), 
Item.Lookaheads.all, I);
                               exit First_Tail;
 
                            elsif Element (Beta) in Descriptor.First_Terminal 
.. Descriptor.Last_Terminal then
                               --  FIRST (Beta) = Beta
                               Added_Item := Added_Item or Merge
-                                (P_ID, RHS.Tokens.First, To_Lookahead (Element 
(Beta), Descriptor), I);
+                                (P_ID, To_Index (RHS.Tokens.First), 
To_Lookahead (Element (Beta), Descriptor), I);
                               exit First_Tail;
 
                            else
                               --  Beta is a nonterminal; use FIRST (Beta)
                               for Terminal of First_Terminal_Sequence (Element 
(Beta)) loop
                                  Added_Item := Added_Item or
-                                   Merge (P_ID, RHS.Tokens.First, To_Lookahead 
(Terminal, Descriptor), I);
+                                   Merge (P_ID, To_Index (RHS.Tokens.First), 
To_Lookahead (Terminal, Descriptor), I);
                               end loop;
 
                               if Has_Empty_Production (Element (Beta)) then
@@ -444,13 +411,13 @@ package body WisiToken.Generate.LR1_Items is
             end if; -- Dot is at non-terminal
          end;
 
-         if Item_Lists.Next (Item_I) = Item_Lists.No_Element then
+         if not Has_Element (Item_Lists.Next (Item_I)) then
             exit when not Added_Item;
 
             Item_I := I.Set.First;
             Added_Item := False;
 
-            if Trace_Generate > Extra then
+            if Trace_Generate_Table > Extra then
                Ada.Text_IO.Put_Line ("  closure:");
                Put (Grammar, Descriptor, I);
             end if;
@@ -480,17 +447,15 @@ package body WisiToken.Generate.LR1_Items is
    is
       use Token_ID_Arrays;
 
-      I : Cursor;
-
       Prod   : WisiToken.Productions.Instance renames Grammar (Item.Prod.LHS);
       RHS    : WisiToken.Productions.Right_Hand_Side renames Prod.RHSs 
(Item.Prod.RHS);
       Result : Ada.Strings.Unbounded.Unbounded_String :=
         +Padded_Image (Item.Prod, Width => Prod_ID_Image_Width) & ":" & Image 
(Prod.LHS, Descriptor) & " <=";
-   begin
-      I := RHS.Tokens.First;
 
-      while I /= No_Element loop
-         if I = Item.Dot then
+      I : Cursor := RHS.Tokens.First;
+   begin
+      while Has_Element (I) loop
+         if To_Index (I) = Item.Dot then
             Result := Result & " ^ ";
          else
             Result := Result & " ";
@@ -499,7 +464,7 @@ package body WisiToken.Generate.LR1_Items is
          Next (I);
       end loop;
 
-      if Item.Dot = No_Element then
+      if Item.Dot = No_Index then
          Result := Result & " ^";
       end if;
 
diff --git a/packages/wisi/wisitoken-generate-lr1_items.ads 
b/packages/wisi/wisitoken-generate-lr1_items.ads
index 0fd8c55..43e2939 100644
--- a/packages/wisi/wisitoken-generate-lr1_items.ads
+++ b/packages/wisi/wisitoken-generate-lr1_items.ads
@@ -2,7 +2,7 @@
 --
 --  Types and operatorion for LR(1) items.
 --
---  Copyright (C) 2003, 2008, 2013 - 2015, 2017 - 2019 Free Software 
Foundation, Inc.
+--  Copyright (C) 2003, 2008, 2013 - 2015, 2017 - 2020 Free Software 
Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -95,7 +95,7 @@ package WisiToken.Generate.LR1_Items is
 
    type Item is record
       Prod       : Production_ID;
-      Dot        : Token_ID_Arrays.Cursor; -- token after item Dot
+      Dot        : Token_ID_Arrays.Extended_Index := Token_ID_Arrays.No_Index; 
-- token after item Dot
       Lookaheads : Token_ID_Set_Access := null;
       --  Programmer must remember to copy Item.Lookaheads.all, not
       --  Item.Lookaheads. Wrapping this in Ada.Finalization.Controlled
@@ -113,9 +113,19 @@ package WisiToken.Generate.LR1_Items is
    function Lookahead_Image (Item : in Lookahead; Descriptor : in 
WisiToken.Descriptor) return String;
    --  Returns the format used in parse table output.
 
+   function Image
+     (Grammar         : in WisiToken.Productions.Prod_Arrays.Vector;
+      Descriptor      : in WisiToken.Descriptor;
+      Item            : in LR1_Items.Item;
+      Show_Lookaheads : in Boolean)
+     return String;
+
    function Item_Compare (Left, Right : in Item) return SAL.Compare_Result;
    --  Sort Item_Lists in ascending order of Prod.Nonterm, Prod.RHS, Dot;
    --  ignores Lookaheads.
+   --
+   --  In an LALR kernel there can be only one Item with Prod, but that
+   --  is not true in an Item_Set produced by Closure.
 
    package Item_Lists is new SAL.Gen_Definite_Doubly_Linked_Lists_Sorted 
(Item, Item_Compare);
 
@@ -194,27 +204,13 @@ package WisiToken.Generate.LR1_Items is
    --  Return No_Element if not found.
 
    function Find
-     (Prod  : in Production_ID;
-      Dot   : in Token_ID_Arrays.Cursor;
-      Right : in Item_Set)
-     return Item_Lists.Cursor;
-   --  Return an item from Right that matches Prod, Dot.
-   --
-   --  Return No_Element if not found.
-
-   function Find
-     (Prod       : in Production_ID;
-      Dot        : in Token_ID_Arrays.Cursor;
-      Right      : in Item_Set;
-      Lookaheads : in Lookahead)
+     (Prod : in Production_ID;
+      Dot : in Token_ID_Arrays.Extended_Index;
+      Set  : in Item_Set)
      return Item_Lists.Cursor;
-   --  Return an item from Right that matches Prod, Dot, and
-   --  Lookaheads.
+   --  Return an item from Set that matches Prod, Dot.
    --
    --  Return No_Element if not found.
-   --
-   --  Not combined with non-Lookaheads version for speed; this is called
-   --  a lot.
 
    package Item_Set_Arrays is new SAL.Gen_Unbounded_Definite_Vectors
      (State_Index, Item_Set, Default_Element => (others => <>));
@@ -270,7 +266,8 @@ package WisiToken.Generate.LR1_Items is
    --  Match_Lookaheads is True in LR1_Generate.
 
    procedure Add
-     (New_Item_Set       : in out Item_Set;
+     (Grammar            : in     WisiToken.Productions.Prod_Arrays.Vector;
+      New_Item_Set       : in     Item_Set;
       Item_Set_Vector    : in out Item_Set_List;
       Item_Set_Tree      : in out Item_Set_Trees.Tree;
       Descriptor         : in     WisiToken.Descriptor;
diff --git a/packages/wisi/wisitoken-generate.adb 
b/packages/wisi/wisitoken-generate.adb
index eae0ca3..1d7bb7e 100644
--- a/packages/wisi/wisitoken-generate.adb
+++ b/packages/wisi/wisitoken-generate.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2018, 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -152,6 +152,48 @@ package body WisiToken.Generate is
       return Unused_Tokens;
    end Check_Unused_Tokens;
 
+   function Nullable (Grammar : in WisiToken.Productions.Prod_Arrays.Vector) 
return Token_Array_Production_ID
+   is
+      use all type Ada.Containers.Count_Type;
+
+      subtype Nonterminal is Token_ID range Grammar.First_Index .. 
Grammar.Last_Index;
+
+      Result  : Token_Array_Production_ID := (Nonterminal => 
Invalid_Production_ID);
+      Changed : Boolean                   := True;
+   begin
+      loop
+         exit when not Changed;
+         Changed := False;
+
+         for Prod of Grammar loop
+            if Result (Prod.LHS) = Invalid_Production_ID then
+               for RHS_Index in Prod.RHSs.First_Index .. Prod.RHSs.Last_Index 
loop
+                  declare
+                     RHS : WisiToken.Productions.Right_Hand_Side renames 
Prod.RHSs (RHS_Index);
+                  begin
+                     if RHS.Tokens.Length = 0 or else
+                       (RHS.Tokens (1) in Nonterminal and then Result 
(RHS.Tokens (1)) /= Invalid_Production_ID)
+                     then
+                        Result (Prod.LHS) := (Prod.LHS, RHS_Index);
+                        Changed := True;
+                     end if;
+                  end;
+               end loop;
+            end if;
+         end loop;
+      end loop;
+      return Result;
+   end Nullable;
+
+   function Has_Empty_Production (Nullable : in Token_Array_Production_ID) 
return Token_ID_Set
+   is begin
+      return Result : Token_ID_Set := (Nullable'First .. Nullable'Last => 
False) do
+         for I in Result'Range loop
+            Result (I) := Nullable (I) /= Invalid_Production_ID;
+         end loop;
+      end return;
+   end Has_Empty_Production;
+
    function Has_Empty_Production (Grammar : in 
WisiToken.Productions.Prod_Arrays.Vector) return Token_ID_Set
    is
       use all type Ada.Containers.Count_Type;
@@ -360,12 +402,11 @@ package body WisiToken.Generate is
 
    function To_Graph (Grammar : in WisiToken.Productions.Prod_Arrays.Vector) 
return Grammar_Graphs.Graph
    is
-      use all type Ada.Containers.Count_Type;
       subtype Nonterminals is Token_ID range Grammar.First_Index .. 
Grammar.Last_Index;
       Graph : Grammar_Graphs.Graph;
       J     : Integer := 1;
    begin
-      if Trace_Generate > Outline then
+      if Trace_Generate_Minimal_Complete > Outline then
          Ada.Text_IO.Put_Line ("grammar graph:");
       end if;
 
@@ -379,19 +420,12 @@ package body WisiToken.Generate is
                begin
                   for I in Tokens.First_Index .. Tokens.Last_Index loop
                      if Tokens (I) in Nonterminals then
-                        if Trace_Generate > Detail then
+                        if Trace_Generate_Minimal_Complete > Detail then
                            Ada.Text_IO.Put_Line
                              ("(" & Trimmed_Image (LHS) & ", " & Trimmed_Image 
(Tokens (I)) & ","  & J'Image & ")");
                            J := J + 1;
                         end if;
-                        Graph.Add_Edge
-                          (LHS, Tokens (I),
-                           (RHS,
-                            Recursive =>
-                              (if Tokens.Length = 1 then Single
-                               elsif I = Tokens.First_Index then Left
-                               elsif I = Tokens.Last_Index then Right
-                               else Middle)));
+                        Graph.Add_Edge (LHS, Tokens (I), (RHS, I));
                      end if;
                   end loop;
                end;
@@ -399,13 +433,68 @@ package body WisiToken.Generate is
          end;
       end loop;
 
-      if Trace_Generate > Outline then
+      if Trace_Generate_Minimal_Complete > Outline then
          Ada.Text_IO.Put_Line ("..." & Graph.Count_Nodes'Image & " nodes" & 
Graph.Count_Edges'Image & " edges.");
       end if;
       return Graph;
    end To_Graph;
 
-   function Compute_Full_Recursion (Grammar : in 
WisiToken.Productions.Prod_Arrays.Vector) return Recursions
+   function Recursion
+     (LHS         : in Token_ID;
+      Token_Index : in Positive;
+      Tokens      : in Token_ID_Arrays.Vector)
+     return Recursion_Class
+   is begin
+      return
+        (if Token_Index = Tokens.First_Index then
+           (if LHS = Tokens (Tokens.First_Index)
+            then Direct_Left
+            else Other_Left)
+         elsif Token_Index = Tokens.Last_Index then
+           (if LHS = Tokens (Tokens.Last_Index)
+            then Direct_Right
+            else Other_Right)
+         else Other);
+   end Recursion;
+
+   procedure Set_Grammar_Recursions
+     (Recursions : in     WisiToken.Generate.Recursions;
+      Grammar    : in out WisiToken.Productions.Prod_Arrays.Vector)
+   is begin
+      for LHS of Grammar loop
+         for RHS of LHS.RHSs loop
+            RHS.Recursion.Set_First_Last (RHS.Tokens.First_Index, 
RHS.Tokens.Last_Index);
+         end loop;
+      end loop;
+
+      for Path of Recursions.Recursions loop
+         declare
+            use WisiToken.Productions;
+            Previous_Item_LHS : Token_ID :=
+              (if Recursions.Full then Path (Path'Last).Vertex else 
Token_ID'Last);
+         begin
+            for Item of Path loop
+               for Edge of Item.Edges loop
+                  declare
+                     LHS : constant Token_ID := (if Recursions.Full then 
Previous_Item_LHS else Item.Vertex);
+                     RHS : Right_Hand_Side renames Grammar (LHS).RHSs 
(Edge.Data.RHS);
+                  begin
+                     RHS.Recursion (Edge.Data.Token_Index) := Recursion
+                       (LHS         => LHS,
+                        Token_Index => Edge.Data.Token_Index,
+                        Tokens      => RHS.Tokens);
+                  end;
+               end loop;
+               Previous_Item_LHS := Item.Vertex;
+            end loop;
+         end;
+      end loop;
+   end Set_Grammar_Recursions;
+
+   function Compute_Full_Recursion
+     (Grammar    : in out WisiToken.Productions.Prod_Arrays.Vector;
+      Descriptor : in     WisiToken.Descriptor)
+     return Recursions
    is
       Graph : constant Grammar_Graphs.Graph := To_Graph (Grammar);
    begin
@@ -414,7 +503,14 @@ package body WisiToken.Generate is
          Recursions => Graph.Find_Cycles)
       do
          Grammar_Graphs.Sort_Paths.Sort (Result.Recursions);
-         if Trace_Generate > Extra then
+
+         Set_Grammar_Recursions (Result, Grammar);
+
+         if Trace_Generate_Minimal_Complete > Extra then
+            Ada.Text_IO.New_Line;
+            Ada.Text_IO.Put_Line ("Productions:");
+            WisiToken.Productions.Put (Grammar, Descriptor);
+            Ada.Text_IO.New_Line;
             Ada.Text_IO.Put_Line ("full recursions:");
             for I in Result.Recursions.First_Index .. 
Result.Recursions.Last_Index loop
                Ada.Text_IO.Put_Line (Trimmed_Image (I) & " => " & 
Grammar_Graphs.Image (Result.Recursions (I)));
@@ -423,7 +519,10 @@ package body WisiToken.Generate is
       end return;
    end Compute_Full_Recursion;
 
-   function Compute_Partial_Recursion (Grammar : in 
WisiToken.Productions.Prod_Arrays.Vector) return Recursions
+   function Compute_Partial_Recursion
+     (Grammar    : in out WisiToken.Productions.Prod_Arrays.Vector;
+      Descriptor : in     WisiToken.Descriptor)
+     return Recursions
    is
       use Grammar_Graphs;
       Graph      : constant Grammar_Graphs.Graph := To_Graph (Grammar);
@@ -457,7 +556,13 @@ package body WisiToken.Generate is
             Result.Recursions.Append (Path);
          end;
 
-         if Trace_Generate > Extra then
+         Set_Grammar_Recursions (Result, Grammar);
+
+         if Trace_Generate_Minimal_Complete > Extra then
+            Ada.Text_IO.New_Line;
+            Ada.Text_IO.Put_Line ("Productions:");
+            WisiToken.Productions.Put (Grammar, Descriptor);
+            Ada.Text_IO.New_Line;
             Ada.Text_IO.Put_Line ("partial recursions:");
             for I in Result.Recursions.First_Index .. 
Result.Recursions.Last_Index loop
                Ada.Text_IO.Put_Line (Trimmed_Image (I) & " => " & 
Grammar_Graphs.Image (Result.Recursions (I)));
@@ -504,7 +609,7 @@ package body WisiToken.Generate is
                exit when I - First + Integer (Indent) <= Max_Line_Length;
                I := I - 1;
             end loop;
-            Indent_Line (Text (First .. I - 1));
+            Indent_Line (Trim (Text (First .. I - 1), Right));
             First := I + 1;
             exit when Text'Last - First + Integer (Indent) <= Max_Line_Length;
          end loop;
diff --git a/packages/wisi/wisitoken-generate.ads 
b/packages/wisi/wisitoken-generate.ads
index 45d8c7c..a9c4e5a 100644
--- a/packages/wisi/wisitoken-generate.ads
+++ b/packages/wisi/wisitoken-generate.ads
@@ -12,7 +12,7 @@
 --
 --  See wisitoken.ads
 --
---  Copyright (C) 2018, 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -61,6 +61,12 @@ package WisiToken.Generate is
    --  Raises Grammar_Error if there is a non-grammar token used in the
    --  grammar.
 
+   function Nullable (Grammar : in WisiToken.Productions.Prod_Arrays.Vector) 
return Token_Array_Production_ID;
+   --  If ID is nullable, Result (ID) is the production that should be
+   --  reduced to produce the null. Otherwise Result (ID) is
+   --  Invalid_Production_ID.
+
+   function Has_Empty_Production (Nullable : in Token_Array_Production_ID) 
return Token_ID_Set;
    function Has_Empty_Production (Grammar : in 
WisiToken.Productions.Prod_Arrays.Vector) return Token_ID_Set;
    --  Result (ID) is True if any production for ID can be an empty
    --  production, recursively.
@@ -101,22 +107,18 @@ package WisiToken.Generate is
 
    --  Recursion is the result of a cycle in the grammar. We can form a
    --  graph representing the grammar by taking the nonterminals as the
-   --  graph vertices, and the occurence of a nonterminal in a production
-   --  right hand side as a directed edge connecting two nonterminals
-   --  (the other is the left hand side of that production. Then
-   --  recursion is represented by a cycle in the graph.
-
-   type Recursion_Item is record
-      RHS : Natural := 0;
-      --  The edge leading to this node. We don't need the actual token
-      --  number.
-
-      Recursive : Recursion := None;
-      --  Position of the token in the RHS.
+   --  graph vertices, and the occurrence of a nonterminal in a
+   --  production right hand side as a directed edge from the left hand
+   --  side of the production to that nonterminal. Then recursion is
+   --  represented by a cycle in the graph.
+
+   type Edge_Data is record
+      --  The edge leading to this node.
+      RHS         : Natural  := Natural'Last;
+      Token_Index : Positive := Positive'Last;
    end record;
 
-   function Edge_Image (Edge : in Recursion_Item) return String is
-     (Trimmed_Image (Edge.RHS) & " " & Recursion'Image (Edge.Recursive));
+   function Edge_Image (Edge : in Edge_Data) return String is (Trimmed_Image 
(Edge.RHS));
 
    type Base_Recursion_Index is range 0 .. Integer'Last;
    subtype Recursion_Index is Base_Recursion_Index range 1 .. 
Base_Recursion_Index'Last;
@@ -124,7 +126,7 @@ package WisiToken.Generate is
    function Trimmed_Image is new SAL.Gen_Trimmed_Image (Base_Recursion_Index);
 
    package Grammar_Graphs is new SAL.Gen_Graphs
-     (Edge_Data         => Recursion_Item,
+     (Edge_Data         => Generate.Edge_Data,
       Default_Edge_Data => (others => <>),
       Vertex_Index      => Token_ID,
       Invalid_Vertex    => Invalid_Token_ID,
@@ -152,14 +154,23 @@ package WisiToken.Generate is
 
    function To_Graph (Grammar : in WisiToken.Productions.Prod_Arrays.Vector) 
return Grammar_Graphs.Graph;
 
-   function Compute_Full_Recursion (Grammar : in 
WisiToken.Productions.Prod_Arrays.Vector) return Recursions;
-   --  Each element of result is a cycle in the grammar.
-
-   function Compute_Partial_Recursion (Grammar : in 
WisiToken.Productions.Prod_Arrays.Vector) return Recursions;
+   function Compute_Full_Recursion
+     (Grammar    : in out WisiToken.Productions.Prod_Arrays.Vector;
+      Descriptor : in     WisiToken.Descriptor)
+     return Recursions;
+   --  Each element of result is a cycle in the grammar. Also sets
+   --  Recursive components in Grammar.
+
+   function Compute_Partial_Recursion
+     (Grammar    : in out WisiToken.Productions.Prod_Arrays.Vector;
+      Descriptor : in     WisiToken.Descriptor)
+     return Recursions;
    --  Each element of the result contains all members of a non-trivial
    --  strongly connected component in the grammar, in arbitrary order.
    --  This is an approximation to the full recursion, when that is too
    --  hard to compute (ie for Java).
+   --
+   --  Also sets Recursive components in Grammar.
 
    ----------
    --  Indented text output. Mostly used for code generation in wisi,
diff --git a/packages/wisi/wisitoken-lexer-re2c.adb 
b/packages/wisi/wisitoken-lexer-re2c.adb
index d66088d..46cccb6 100644
--- a/packages/wisi/wisitoken-lexer-re2c.adb
+++ b/packages/wisi/wisitoken-lexer-re2c.adb
@@ -2,7 +2,7 @@
 --
 --  see spec.
 --
---  Copyright (C) 2017 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2017 - 2020 Free Software Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -179,7 +179,8 @@ package body WisiToken.Lexer.re2c is
       procedure Build_Token
       is begin
          Token :=
-           (ID => Lexer.ID,
+           (ID         => Lexer.ID,
+            Tree_Index => Invalid_Node_Index,
 
             Byte_Region =>
               (if Lexer.ID = Lexer.Descriptor.EOI_ID and then 
Lexer.Byte_Position = Integer (Base_Buffer_Pos'First)
diff --git a/packages/wisi/wisitoken-lexer-regexp.adb 
b/packages/wisi/wisitoken-lexer-regexp.adb
index 3e5a421..d464289 100644
--- a/packages/wisi/wisitoken-lexer-regexp.adb
+++ b/packages/wisi/wisitoken-lexer-regexp.adb
@@ -2,7 +2,7 @@
 --
 --  See spec
 --
---  Copyright (C) 2015, 2017 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2015, 2017 - 2020 Free Software Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -242,6 +242,7 @@ package body WisiToken.Lexer.Regexp is
 
       Token :=
         (ID          => Lexer.ID,
+         Tree_Index  => Invalid_Node_Index,
          Byte_Region => (Buffer_Pos (Lexer.Lexeme_Head), Buffer_Pos 
(Lexer.Lexeme_Tail)),
          Line        => Invalid_Line_Number,
          Column      => Ada.Text_IO.Count (Lexer.Lexeme_Head),
diff --git a/packages/wisi/wisitoken-parse-lr-mckenzie_recover-base.adb 
b/packages/wisi/wisitoken-parse-lr-mckenzie_recover-base.adb
index d8b03f3..344461b 100644
--- a/packages/wisi/wisitoken-parse-lr-mckenzie_recover-base.adb
+++ b/packages/wisi/wisitoken-parse-lr-mckenzie_recover-base.adb
@@ -2,7 +2,7 @@
 --
 --  Base utilities for McKenzie_Recover
 --
---  Copyright (C) 2018, 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -30,49 +30,56 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Base is
      return Boolean
    is
       Done_Count : SAL.Base_Peek_Type := 0;
+      Skip : Boolean;
    begin
       --  Return True if all parsers are done, or if any parser has a config
       --  available to check.
       for P_Status of Parser_Status loop
+         Skip := False;
+
          case P_Status.Recover_State is
          when Active | Ready =>
             if P_Status.Parser_State.Recover.Config_Heap.Count > 0 then
                if P_Status.Parser_State.Recover.Check_Count - 
Check_Delta_Limit >= Min_Success_Check_Count then
                   --  fail; another parser succeeded, this one taking too long.
                   Done_Count := Done_Count + 1;
+                  Skip := True;
 
                elsif Total_Enqueue_Count + 
P_Status.Parser_State.Recover.Config_Full_Count >= Enqueue_Limit then
                   --  fail
                   Done_Count := Done_Count + 1;
+                  Skip := True;
                end if;
             end if;
 
-            case P_Status.Recover_State is
-            when Active =>
-               if P_Status.Parser_State.Recover.Config_Heap.Count > 0 then
-                  --  Still working
-                  return True;
-               else
-                  if P_Status.Active_Workers = 0 then
-                     --  fail; no configs left to check.
-                     Done_Count := Done_Count + 1;
+            if not Skip then
+               case P_Status.Recover_State is
+               when Active =>
+                  if P_Status.Parser_State.Recover.Config_Heap.Count > 0 then
+                     --  Still working
+                     return True;
+                  else
+                     if P_Status.Active_Workers = 0 then
+                        --  fail; no configs left to check.
+                        Done_Count := Done_Count + 1;
+                     end if;
                   end if;
-               end if;
 
-            when Ready =>
-               if P_Status.Parser_State.Recover.Config_Heap.Count > 0 and then
-                 P_Status.Parser_State.Recover.Config_Heap.Min_Key <= 
P_Status.Parser_State.Recover.Results.Min_Key
-               then
-                  --  Still more to check.
-                  return True;
+               when Ready =>
+                  if P_Status.Parser_State.Recover.Config_Heap.Count > 0 and 
then
+                    P_Status.Parser_State.Recover.Config_Heap.Min_Key <= 
P_Status.Parser_State.Recover.Results.Min_Key
+                  then
+                     --  Still more to check.
+                     return True;
 
-               elsif P_Status.Active_Workers = 0 then
-                  Done_Count := Done_Count + 1;
-               end if;
+                  elsif P_Status.Active_Workers = 0 then
+                     Done_Count := Done_Count + 1;
+                  end if;
 
-            when others =>
-               null;
-            end case;
+               when others =>
+                  null;
+               end case;
+            end if;
 
          when Success | Fail =>
             Done_Count := Done_Count + 1;
@@ -101,7 +108,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Base is
          Error_ID                := Ada.Exceptions.Null_Id;
 
          for I in Parsers.Iterate loop
-            if Parsers.Reference (I).Recover_Insert_Delete.Length > 0 then
+            if Parsers.Reference (I).Recover_Insert_Delete_Current /= 
Recover_Op_Arrays.No_Index then
                --  Previous error recovery resume not finished; this is 
supposed to
                --  be checked in Parser.
                raise SAL.Programmer_Error;
@@ -135,6 +142,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Base is
           (Parsers, Parser_Status, Min_Success_Check_Count, 
Total_Enqueue_Count, Check_Delta_Limit, Enqueue_Limit)
       is
          Done_Count     : SAL.Base_Peek_Type := 0;
+         Skip           : Boolean;
          Min_Cost       : Integer            := Integer'Last;
          Min_Cost_Index : SAL.Base_Peek_Type;
 
@@ -168,6 +176,8 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Base is
          --  No task_id in outline trace messages, because they may appear in
          --  .parse_good
          for I in Parser_Status'Range loop
+            Skip := False;
+
             declare
                P_Status : Base.Parser_Status renames Parser_Status (I);
             begin
@@ -186,6 +196,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Base is
                         P_Status.Fail_Mode     := Fail_Check_Delta;
 
                         Done_Count := Done_Count + 1;
+                        Skip := True;
 
                      elsif Total_Enqueue_Count + 
P_Status.Parser_State.Recover.Config_Full_Count >= Enqueue_Limit then
                         if Trace_McKenzie > Outline then
@@ -200,48 +211,51 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Base is
                         P_Status.Fail_Mode     := Fail_Enqueue_Limit;
 
                         Done_Count := Done_Count + 1;
+                        Skip := True;
                      end if;
                   end if;
 
-                  case P_Status.Recover_State is
-                  when Active =>
-                     if P_Status.Parser_State.Recover.Config_Heap.Count > 0 
then
-                        if P_Status.Parser_State.Recover.Config_Heap.Min_Key < 
Min_Cost then
-                           Min_Cost       := 
P_Status.Parser_State.Recover.Config_Heap.Min_Key;
-                           Min_Cost_Index := I;
-                           --  not done
-                        end if;
-                     else
-                        if P_Status.Active_Workers = 0 then
-                           --  No configs left to check (rarely happens with 
real languages).
-                           if Trace_McKenzie > Outline then
-                              Put_Line
-                                (Trace.all, P_Status.Parser_State.Label, 
"fail; no configs left", Task_ID => False);
+                  if not Skip then
+                     case P_Status.Recover_State is
+                     when Active =>
+                        if P_Status.Parser_State.Recover.Config_Heap.Count > 0 
then
+                           if 
P_Status.Parser_State.Recover.Config_Heap.Min_Key < Min_Cost then
+                              Min_Cost       := 
P_Status.Parser_State.Recover.Config_Heap.Min_Key;
+                              Min_Cost_Index := I;
+                              --  not done
+                           end if;
+                        else
+                           if P_Status.Active_Workers = 0 then
+                              --  No configs left to check (rarely happens 
with real languages).
+                              if Trace_McKenzie > Outline then
+                                 Put_Line
+                                   (Trace.all, P_Status.Parser_State.Label, 
"fail; no configs left", Task_ID => False);
+                              end if;
+                              P_Status.Recover_State := Fail;
+                              P_Status.Fail_Mode     := Fail_No_Configs_Left;
+
+                              Done_Count := Done_Count + 1;
                            end if;
-                           P_Status.Recover_State := Fail;
-                           P_Status.Fail_Mode     := Fail_No_Configs_Left;
-
-                           Done_Count := Done_Count + 1;
                         end if;
-                     end if;
 
-                  when Ready =>
-                     if P_Status.Parser_State.Recover.Config_Heap.Count > 0 
and then
-                       P_Status.Parser_State.Recover.Config_Heap.Min_Key <=
-                       P_Status.Parser_State.Recover.Results.Min_Key
-                     then
-                        --  Still more to check. We don't check Min_Cost here 
so this parser
-                        --  can finish quickly.
-                        Set_Outputs (I);
-                        return;
-
-                     elsif P_Status.Active_Workers = 0 then
-                        P_Status.Recover_State := Success;
-                        Done_Count             := Done_Count + 1;
-                     end if;
-                  when others =>
-                     null;
-                  end case;
+                     when Ready =>
+                        if P_Status.Parser_State.Recover.Config_Heap.Count > 0 
and then
+                          P_Status.Parser_State.Recover.Config_Heap.Min_Key <=
+                          P_Status.Parser_State.Recover.Results.Min_Key
+                        then
+                           --  Still more to check. We don't check Min_Cost 
here so this parser
+                           --  can finish quickly.
+                           Set_Outputs (I);
+                           return;
+
+                        elsif P_Status.Active_Workers = 0 then
+                           P_Status.Recover_State := Success;
+                           Done_Count             := Done_Count + 1;
+                        end if;
+                     when others =>
+                        null;
+                     end case;
+                  end if;
 
                when Success | Fail =>
                   Done_Count := Done_Count + 1;
@@ -395,7 +409,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Base is
          Error_Message  := +Exception_Message (E);
          if Debug_Mode then
             Trace.Put_Line (Exception_Name (E) & ": " & Exception_Message (E));
-            Trace.Put_Line (GNAT.Traceback.Symbolic.Symbolic_Traceback (E));
+            Trace.Put_Line (GNAT.Traceback.Symbolic.Symbolic_Traceback (E)); 
-- includes Prefix
          end if;
       end Fatal;
 
diff --git a/packages/wisi/wisitoken-parse-lr-mckenzie_recover-explore.adb 
b/packages/wisi/wisitoken-parse-lr-mckenzie_recover-explore.adb
index b6c9e43..2741dff 100644
--- a/packages/wisi/wisitoken-parse-lr-mckenzie_recover-explore.adb
+++ b/packages/wisi/wisitoken-parse-lr-mckenzie_recover-explore.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -38,7 +38,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 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);
+      Op : constant Config_Op := (Insert, ID, Config.Current_Shared_Token);
    begin
       Config.Strategy_Counts (Strategy) := Config.Strategy_Counts (Strategy) + 
1;
 
@@ -69,7 +69,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
          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 => <>)));
+         Config.Stack.Push ((State, Invalid_Node_Index, (ID, Virtual => True, 
others => <>)));
       end if;
       if Trace_McKenzie > Detail then
          Base.Put
@@ -144,7 +144,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
          raise Bad_Config;
       end if;
 
-      Config.Stack.Push ((New_State, Syntax_Trees.Invalid_Node_Index, 
Nonterm));
+      Config.Stack.Push ((New_State, Invalid_Node_Index, Nonterm));
 
       if Trace_McKenzie > Extra and Label'Length > 0 then
          Put_Line
@@ -196,7 +196,12 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
          raise SAL.Programmer_Error with "found test case for Do_Reduce 
Accept_It";
 
       when Error =>
-         null;
+         if Trace_McKenzie > Extra and Label'Length > 0 then
+            Put_Line
+              (Super.Trace.all, Super.Label (Parser_Index), Label & ": error 
on " &
+                 Image (Inserted_ID, Super.Trace.Descriptor.all) &
+                 " in state" & State_Index'Image (Config.Stack.Peek.State));
+         end if;
       end case;
 
       loop
@@ -235,24 +240,35 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
       end if;
    end Do_Reduce_2;
 
-   function Fast_Forward
+   function Edit_Point_Matches_Ops (Config : in Configuration) return Boolean
+   is
+      use Config_Op_Arrays, Config_Op_Array_Refs;
+      pragma Assert (Length (Config.Ops) > 0);
+      Op : Config_Op renames Constant_Ref (Config.Ops, Last_Index 
(Config.Ops));
+   begin
+      return Config.Current_Shared_Token =
+        (case Op.Op is
+         when Fast_Forward => Op.FF_Token_Index,
+         when Undo_Reduce  => Invalid_Token_Index, -- ie, "we don't know", so 
return False.
+         when Push_Back    => Op.PB_Token_Index,
+         when Insert       => Op.Ins_Token_Index,
+         when Delete       => Op.Del_Token_Index + 1);
+   end Edit_Point_Matches_Ops;
+
+   procedure Fast_Forward
      (Super             : not null access Base.Supervisor;
       Shared            : not null access Base.Shared;
       Parser_Index      : in              SAL.Base_Peek_Type;
       Local_Config_Heap : in out          Config_Heaps.Heap_Type;
-      Config            : in out          Configuration)
-     return Non_Success_Status
+      Config            : in              Configuration)
    is
       --  Apply the ops in Config; they were inserted by some fix.
-      --  Return Abandon if Config should be abandoned, otherwise Continue.
       --  Leaves Config.Error_Token, Config.Check_Status set.
-      --
-      --  If there are conflicts, all are parsed; if more than one succeed,
-      --  all are enqueued in Local_Config_Heap, and this returns Abandon.
+      --  If there are conflicts, all are parsed; if more than one succeed.
+      --  All configs are enqueued in Local_Config_Heap.
 
       use Parse.Parse_Item_Arrays;
       use Config_Op_Arrays;
-      use all type Ada.Containers.Count_Type;
 
       Parse_Items : aliased Parse.Parse_Item_Arrays.Vector;
 
@@ -262,56 +278,43 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
          All_Conflicts     => True,
          Trace_Prefix      => "fast_forward");
    begin
-      --  This solution is from Language_Fixes; any cost increase is done 
there.
+      --  This solution is from Language_Fixes (see gate on call site
+      --  below); any cost increase is done there.
+      --
+      --  We used to handle the Parse_Items.Length = 1 case specially, and
+      --  return Continue. Maintaining that requires too much code
+      --  duplication.
 
-      if Length (Parse_Items) = 1 then
+      for I in First_Index (Parse_Items) .. Last_Index (Parse_Items) loop
          declare
-            Item : Parse.Parse_Item renames 
Parse.Parse_Item_Array_Refs.Constant_Ref (Parse_Items, 1);
+            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.Error_Token.ID, Check_Status are correct.
-               Config := Item.Config;
 
-               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;
-            else
-               return Abandon;
-            end if;
-         end;
-      else
-         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;
+               if not Edit_Point_Matches_Ops (Item.Config) then
+
+                  if Is_Full (Item.Config.Ops) then
+                     Super.Config_Full ("fast_forward 1", Parser_Index);
+                     raise Bad_Config;
                   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);
+               end if;
 
-                  if Trace_McKenzie > Detail then
-                     Base.Put ("fast forward enqueue", Super, Shared, 
Parser_Index, Item.Config);
-                  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);
                end if;
-            end;
-         end loop;
-         return Abandon;
-      end if;
-   exception
-   when Bad_Config =>
-      return Abandon;
+            end if;
+         exception
+         when Bad_Config =>
+            null;
+         end;
+      end loop;
    end Fast_Forward;
 
    function Check
@@ -326,32 +329,38 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
       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 : aliased Parse.Parse_Item_Arrays.Vector;
       Result      : Check_Status := Continue;
+   begin
+      if Length (Config.Ops) > 0 then
+         declare
+            Op : Config_Op renames Constant_Ref (Config.Ops, Last_Index 
(Config.Ops));
+         begin
+            case Op.Op is
+            when Push_Back =>
+               --  Check would undo the Push_Back, leading to
+               --  duplicate results. See test_mckenzie_recover.adb 
Do_Delete_First and
+               --  three_action_conflict_lalr.parse_good for examples.
+               return Continue;
 
-      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 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;
+            when Undo_Reduce =>
+               if Config.Check_Status.Label /= Ok then
+                  --  This is the "ignore error" solution for a check fail; 
check it.
+                  Config.Check_Status   := (Label => Ok);
+                  Config.Error_Token.ID := Invalid_Token_ID;
+
+               else
+                  --  Check would undo the Undo_Reduce, leading to
+                  --  duplicate results.
+                  return Continue;
                end if;
-            end;
-         end loop;
-         return Result;
-      end Max_Push_Back_Token_Index;
+            when others =>
+               --  Check it
+               null;
+            end case;
+         end;
+      end if;
 
-   begin
       if Parse.Parse
         (Super, Shared, Parser_Index, Parse_Items, Config, 
Config.Resume_Token_Goal,
          All_Conflicts => False,
@@ -360,6 +369,9 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
          Config.Error_Token.ID := Invalid_Token_ID;
          --  FIXME: if there were conflicts, enqueue them; they might yield a
          --  cheaper or same cost solution?
+         if Trace_McKenzie > Extra then
+            Put_Line (Super.Trace.all, Super.Label (Parser_Index), "check 
result: SUCCESS");
+         end if;
          return Success;
       end if;
 
@@ -395,37 +407,33 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
       end;
 
       --  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.
+      --  and made progress, enqueue them.
       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
+            --  When Parse starts above, Config.Current_Shared_Token matches
+            --  Config.Ops. So if Item.Config.Current_Shared_Token >
+            --  Config.Current_Shared_Token, it made some progress. Append or
+            --  update a Fast_Forward to indicate the changed edit point.
+            if Item.Config.Error_Token.ID /= Invalid_Token_ID and
+              Item.Config.Current_Shared_Token > Config.Current_Shared_Token
             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;
+               Item.Config.Minimal_Complete_State := None;
+               Item.Config.Matching_Begin_Done    := False;
 
-                     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;
+               if Constant_Ref (Item.Config.Ops, Last_Index 
(Item.Config.Ops)).Op = Fast_Forward then
+                  --  Update the trailing Fast_Forward.
+                  Variable_Ref (Item.Config.Ops, Last_Index 
(Item.Config.Ops)).FF_Token_Index :=
+                    Item.Config.Current_Shared_Token;
+               else
+                  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;
+               end if;
                Local_Config_Heap.Add (Item.Config);
                if Trace_McKenzie > Detail then
                   Base.Put ("new error point ", Super, Shared, Parser_Index, 
Item.Config);
@@ -455,7 +463,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
 
       function To_Reduce_Action (Item : in Minimal_Action) return 
Reduce_Action_Rec
       is begin
-         return (Reduce, (Item.Nonterm, 0), null, null, Item.Token_Count);
+         return (Reduce, Item.Production, null, null, Item.Token_Count);
       end To_Reduce_Action;
 
       Local_Config_Heap : Config_Heaps.Heap_Type; -- never used, because 
Do_Language_Fixes is False.
@@ -467,7 +475,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
          case Actions.Length is
          when 0 =>
             if (for some Item of Table.States (Config.Stack.Peek.State).Kernel 
=>
-                  Item.LHS = Super.Trace.Descriptor.Accept_ID)
+                  Item.Production.LHS = Super.Trace.Descriptor.Accept_ID)
             then
                return True;
             else
@@ -509,6 +517,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
    is
       Trace          : WisiToken.Trace'Class renames Super.Trace.all;
       McKenzie_Param : McKenzie_Param_Type renames Shared.Table.McKenzie_Param;
+      Prev_Recover   : constant WisiToken.Base_Token_Index := 
Super.Parser_State (Parser_Index).Resume_Token_Goal;
 
       Token : constant Recover_Token := Config.Stack.Peek.Token;
    begin
@@ -519,10 +528,15 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
       --  to give this operation zero cost. But then we keep doing push_back
       --  forever, making no progress. So we give it a cost.
 
-      if not Token.Virtual then
-         --  If Virtual, this is from earlier in this recover session; no point
-         --  in trying to redo it.
+      if Token.Min_Terminal_Index /= Invalid_Token_Index and
+        --  No point in pushing back an empty nonterm; that leads to duplicate
+        --  solutions with Undo_Reduce; see test_mckenzie_recover.adb Error_2.
 
+        (Prev_Recover = Invalid_Token_Index or else Prev_Recover < 
Token.Min_Terminal_Index)
+        --  Don't push back past previous error recover (that would require
+        --  keeping track of previous inserts/deletes, and would not be useful
+        --  in most cases).
+      then
          declare
             use Config_Op_Arrays;
             New_Config : Configuration := Config;
@@ -561,19 +575,59 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
    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;
+      Last_Token_Index : WisiToken.Token_Index := Config.Current_Shared_Token;
+      --  Index of token in last op checked.
    begin
-      if Length (Config.Ops) = 0 then
-         return False;
-      else
+      --  This function is called when considering whether to insert ID before
+      --  Config.Current_Shared_Token.
+      --
+      --  We need to consider more than one recent op here; see 
test_mckenzie_recover.adb
+      --  Check_Multiple_Delete_For_Insert. Checking only one op allows this 
solution there:
+      --
+      --  ...  (DELETE, END, 7), (DELETE, SEMICOLON, 8), (INSERT, END, 9), 
(INSERT, SEMICOLON, 9)
+      --
+      for I in reverse First_Index (Config.Ops) .. Last_Index (Config.Ops) loop
          declare
-            Last_Op : Config_Op renames Constant_Ref (Config.Ops, Last_Index 
(Config.Ops));
+            Op : Config_Op renames Constant_Ref (Config.Ops, I);
          begin
-            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);
+            case Op.Op is
+            when Push_Back =>
+               --  The case we are preventing for Push_Back is typically one 
of:
+               --  (PUSH_BACK, Identifier, 2), (INSERT, Identifier, 2)
+               --  (PUSH_BACK, Identifier, 2), (PUSH_BACK, END, 3), (INSERT, 
Identifier, 3), (INSERT, END, 3),
+               if Op.PB_Token_Index = Last_Token_Index then
+                  if Op.PB_ID = ID then
+                     return True;
+                  else
+                     if Op.PB_Token_Index = WisiToken.Token_Index'First then
+                        return False;
+                     else
+                        Last_Token_Index := Op.PB_Token_Index - 1;
+                     end if;
+                  end if;
+               else
+                  --  Op is at a different edit point.
+                  return False;
+               end if;
+
+            when Delete =>
+               if Op.Del_Token_Index = Last_Token_Index - 1 then
+                  if Op.Del_ID = ID then
+                     return True;
+                  else
+                     Last_Token_Index := Op.Del_Token_Index;
+                  end if;
+               else
+                  --  Op is at a different edit point.
+                  return False;
+               end if;
+
+            when Fast_Forward | Insert | Undo_Reduce =>
+               return False;
+            end case;
          end;
-      end if;
+      end loop;
+      return False;
    end Just_Pushed_Back_Or_Deleted;
 
    procedure Try_Undo_Reduce
@@ -583,45 +637,40 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
       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;
+      use Config_Op_Arrays;
 
-      Token : constant Recover_Token := Config.Stack.Peek.Token;
+      Trace          : WisiToken.Trace'Class renames Super.Trace.all;
+      McKenzie_Param : McKenzie_Param_Type renames Shared.Table.McKenzie_Param;
+      Token          : constant Recover_Token := Config.Stack.Peek.Token;
+      New_Config     : Configuration          := Config;
+      Token_Count    : Ada.Containers.Count_Type;
    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
-            New_Config.Error_Token.ID := Invalid_Token_ID;
-            New_Config.Check_Status   := (Label => 
WisiToken.Semantic_Checks.Ok);
+      New_Config.Error_Token.ID := Invalid_Token_ID;
+      New_Config.Check_Status   := (Label => WisiToken.Semantic_Checks.Ok);
 
-            Token_Count := Undo_Reduce (New_Config.Stack, Super.Parser_State 
(Parser_Index).Tree);
+      Token_Count := Undo_Reduce (New_Config.Stack, Super.Parser_State 
(Parser_Index).Tree);
 
-            if Token.Min_Terminal_Index /= Invalid_Token_Index  then
-               --  If Token is empty no cost increase.
-               New_Config.Cost := New_Config.Cost + McKenzie_Param.Undo_Reduce 
(Token.ID);
-            end if;
+      if Token.Min_Terminal_Index /= Invalid_Token_Index  then
+         --  If Token is empty no cost increase.
+         New_Config.Cost := New_Config.Cost + McKenzie_Param.Undo_Reduce 
(Token.ID);
+      end if;
 
-            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 (Undo_Reduce) := 
New_Config.Strategy_Counts (Undo_Reduce) + 1;
+      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 (Undo_Reduce) := New_Config.Strategy_Counts 
(Undo_Reduce) + 1;
 
-            Local_Config_Heap.Add (New_Config);
+      Local_Config_Heap.Add (New_Config);
 
-            if Trace_McKenzie > Detail then
-               Base.Put ("undo_reduce " & Image (Token.ID, 
Trace.Descriptor.all), Super, Shared,
-                         Parser_Index, New_Config);
-            end if;
-         end;
+      if Trace_McKenzie > Detail then
+         Base.Put ("undo_reduce " & Image (Token.ID, Trace.Descriptor.all), 
Super, Shared,
+                   Parser_Index, New_Config);
       end if;
    end Try_Undo_Reduce;
 
@@ -673,8 +722,8 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
                              ": 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
+                     --  This is 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
@@ -759,8 +808,9 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
       Inserted_Last : Integer                  := Inserted'First - 1;
 
       type Work_Item is record
-         Action : Minimal_Action;
-         Config : Configuration;
+         Action     : Minimal_Action;
+         Cost_Delta : Integer;
+         Config     : Configuration;
       end record;
 
       package Item_Queues is new SAL.Gen_Bounded_Definite_Queues (Work_Item);
@@ -771,39 +821,24 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
       --  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
-         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 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;
-            end;
-         end loop;
+      procedure Safe_Add_Work (Label : in String; Item : in Work_Item)
+      is begin
+         if Is_Full (Work) then
+            Super.Config_Full ("Minimal_Complete_Actions " & Label, 
Parser_Index);
+            raise Bad_Config;
+         else
+            Add (Work, Item);
+         end if;
+      end Safe_Add_Work;
 
-         --  We don't check Action.ID = Current_Token; the error is at the
-         --  explore point, so ID is valid.
+      function To_Reduce_Action (Action : in Minimal_Action) return 
Reduce_Action_Rec
+        is (Reduce, Action.Production, null, null, Action.Token_Count);
 
+      procedure Minimal_Do_Shift
+        (Action     : in     Minimal_Action;
+         Cost_Delta : in     Integer;
+         Config     : in out Configuration)
+      is begin
          if Just_Pushed_Back_Or_Deleted (Config, Action.ID) then
             if Trace_McKenzie > Extra then
                Put_Line
@@ -814,101 +849,167 @@ package body 
WisiToken.Parse.LR.McKenzie_Recover.Explore is
             Config.Check_Status           := (Label => 
WisiToken.Semantic_Checks.Ok);
             Config.Minimal_Complete_State := Active;
             Inserted_Last                 := Inserted_Last + 1;
-            Inserted (Inserted_Last)      := Action.ID;
+            if Inserted_Last <= Inserted'Last then
+               Inserted (Inserted_Last)      := Action.ID;
+            else
+               Super.Config_Full ("minimal_do_shift Inserted", Parser_Index);
+               raise Bad_Config;
+            end if;
 
             Do_Shift
               ("Minimal_Complete_Actions", Super, Shared, Parser_Index, 
Local_Config_Heap, Config,
-               Action.State, Action.ID, 
Table.McKenzie_Param.Minimal_Complete_Cost_Delta,
+               Action.State, Action.ID, Cost_Delta,
                Strategy => Minimal_Complete);
          end if;
       end Minimal_Do_Shift;
 
       procedure Enqueue_Min_Actions
-        (Label       : in String;
-         Actions     : in Minimal_Action_Arrays.Vector;
-         Recursive   : in Boolean;
-         Config      : in Configuration;
-         Reduce_Only : in Boolean)
+        (Label   : in String;
+         Actions : in Minimal_Action_Arrays.Vector;
+         Config  : in Configuration)
       is
          use SAL;
          Length : array (Actions.First_Index .. Actions.Last_Index) of 
Count_Type := (others => Count_Type'Last);
 
-         Item_Not_Recursive  : array (Actions.First_Index .. 
Actions.Last_Index) of Boolean := (others => False);
-
-         Not_Recursive_Count : Count_Type := 0;
-         Min_Length          : Count_Type := Count_Type'Last;
-         Use_Recursive       : Boolean;
+         Min_Length : Count_Type := Count_Type'Last;
       begin
-         --  Enqueue non-minimal actions on Work,
          if Trace_McKenzie > Extra then
             Put_Line
               (Super.Trace.all, Super.Label (Parser_Index), 
"Minimal_Complete_Actions: " & Label &
-                 Image (Actions, Descriptor) & (if Recursive then " recursive" 
else ""));
+                 Image (Actions, Descriptor));
          end if;
 
          if Actions.Length = 0 then
             return;
          elsif Actions.Length = 1 then
-            if (not Reduce_Only) or Actions (Actions.First_Index).Verb = 
Reduce then
-               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;
+            Safe_Add_Work
+              ("1", (Actions (Actions.First_Index), 
Table.McKenzie_Param.Minimal_Complete_Cost_Delta, Config));
             return;
          end if;
 
+         --  More than one minimal action in State; try to use next states and
+         --  recursion to pick one.
+         Actions_Loop :
          for I in Actions.First_Index .. Actions.Last_Index loop
             declare
-               Action     : Minimal_Action renames Actions (I);
-               Next_State : constant State_Index :=
+               function Matches (Item : in Kernel_Info; Action : in 
Minimal_Action) return Boolean
+               is begin
+                  case Action.Verb is
+                  when Shift =>
+                     return Item.Before_Dot = Action.ID;
+                  when Reduce =>
+                     return Item.Before_Dot = Action.Production.LHS;
+                  end case;
+               end Matches;
+
+               function Length_After_Dot
+                 (Item   : in Kernel_Info;
+                  Action : in Minimal_Action;
+                  Stack  : in Recover_Stacks.Stack)
+                 return Ada.Containers.Count_Type
+               is
+                  Match_ID   : Token_ID;
+                  New_Stack  : Recover_Stacks.Stack      := Stack;
+                  Next_State : Unknown_State_Index;
+                  Result     : Ada.Containers.Count_Type;
+                  Min_Result : Ada.Containers.Count_Type := 
Ada.Containers.Count_Type'Last;
+               begin
+                  case Action.Verb is
+                  when Shift =>
+                     New_Stack.Push
+                       ((Action.State, Invalid_Node_Index, (ID => Action.ID, 
others => <>)));
+                     Next_State := Action.State;
+                     Match_ID   := Action.ID;
+
+                  when Reduce =>
+                     New_Stack.Pop (SAL.Base_Peek_Type (Action.Token_Count));
+                     Next_State := Goto_For (Shared.Table.all, 
New_Stack.Peek.State, Action.Production.LHS);
+                     if Next_State = Unknown_State then
+                        --  We get here when Insert_From_Action_Table started 
us down a bad path
+                        raise Bad_Config;
+                     end if;
+
+                     New_Stack.Push
+                       ((Next_State, Invalid_Node_Index, (ID => 
Action.Production.LHS, others => <>)));
+                     Match_ID   := Action.Production.LHS;
+                  end case;
+
+                  if Trace_McKenzie > Extra then
+                     Super.Trace.Put (Next_State'Image & " " & Trimmed_Image 
(Item.Production));
+                  end if;
+
+                  for Item of Shared.Table.States (Next_State).Kernel loop
+                     if Item.Before_Dot = Match_ID then
+                        if Item.Length_After_Dot = 0 then
+                           Result := Length_After_Dot
+                             (Item, (Reduce, Item.Reduce_Production, 
Item.Reduce_Count), New_Stack);
+                        else
+                           Result := Item.Length_After_Dot;
+                        end if;
+                     end if;
+
+                     if Result < Min_Result then
+                        Min_Result := Result;
+                     end if;
+                  end loop;
+                  return Min_Result;
+               end Length_After_Dot;
+
+               Action     : constant Minimal_Action := Actions (I);
+               Next_State : constant State_Index    :=
                  (case Action.Verb is
-                  when Shift => Action.State,
+                  when Shift  => Action.State,
                   when Reduce => Goto_For
                     (Shared.Table.all,
                      Config.Stack.Peek (Base_Peek_Type (Action.Token_Count) + 
1).State,
-                     Action.Nonterm));
-               Before_Dot : constant Token_ID :=
-                 (case Action.Verb is
-                  when Shift => Action.ID,
-                  when Reduce => Action.Nonterm);
-               Kernel     : Kernel_Info_Arrays.Vector renames 
Shared.Table.States (Next_State).Kernel;
+                     Action.Production.LHS));
             begin
-               if (not Reduce_Only) or Action.Verb = Reduce then
-                  for Item of Kernel loop
-                     Item_Not_Recursive (I) := Item_Not_Recursive (I) or not 
Item.Recursive;
-                     if Item.Before_Dot = Before_Dot and
-                       Item.Length_After_Dot < Length (I)
-                     then
-                        Length (I) := Item.Length_After_Dot;
-                        if Length (I) < Min_Length then
-                           Min_Length := Length (I);
+               if Trace_McKenzie > Extra then
+                  Super.Trace.Put
+                    ("task" & Task_Attributes.Value'Image &
+                       Super.Label (Parser_Index)'Image & ": 
Minimal_Complete_Actions: " &
+                       Image (Action, Descriptor));
+               end if;
+
+               for Item of Shared.Table.States (Next_State).Kernel loop
+
+                  if Matches (Item, Action) then
+                     --  For Action.Verb = Reduce, more than one item may match
+                     if Item.Length_After_Dot = 0 then
+                        --  Set Length from a non-zero-length non-recursive 
item.
+                        Length (I) := Length_After_Dot (Item, Action, 
Config.Stack);
+
+                     elsif Item.Length_After_Dot < Length (I) then
+                        if Trace_McKenzie > Extra then
+                           --  Length_After_Dot outputs this in other branch
+                           Super.Trace.Put (Next_State'Image & " " & 
Trimmed_Image (Item.Production));
                         end if;
+                        Length (I) := Item.Length_After_Dot;
+
                      end if;
-                  end loop;
+
+                     if Trace_McKenzie > Extra then
+                        Super.Trace.Put (" length" & Length (I)'Image);
+                     end if;
+                     if Length (I) < Min_Length then
+                        Min_Length := Length (I);
+                     end if;
+                  end if;
+               end loop;
+               if Trace_McKenzie > Extra then
+                  Super.Trace.New_Line;
                end if;
             end;
-            if Item_Not_Recursive (I) then
-               Not_Recursive_Count := Not_Recursive_Count + 1;
-            end if;
-         end loop;
-
-         Use_Recursive := Recursive and Not_Recursive_Count > 0 and 
Not_Recursive_Count < Actions.Length;
+         end loop Actions_Loop;
 
          for I in Length'Range loop
-            if (Use_Recursive and Item_Not_Recursive (I)) or ((not 
Use_Recursive) and Length (I) = Min_Length) then
-               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;
+            if Length (I) = Min_Length then
+               Safe_Add_Work ("2", (Actions (I), 
Table.McKenzie_Param.Minimal_Complete_Cost_Delta, Config));
+
             elsif Trace_McKenzie > Extra then
                Put_Line
                  (Super.Trace.all, Super.Label (Parser_Index), 
"Minimal_Complete_Actions: drop " &
-                    Image (Actions (I), Descriptor));
+                    Image (Actions (I), Descriptor) & " not minimal or 
recursive");
             end if;
          end loop;
       end Enqueue_Min_Actions;
@@ -927,11 +1028,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
          return Token_ID_Arrays.Empty_Vector;
       end if;
 
-      Enqueue_Min_Actions
-        ("",
-         Table.States (Orig_Config.Stack.Peek.State).Minimal_Complete_Actions,
-         Table.States 
(Orig_Config.Stack.Peek.State).Minimal_Complete_Actions_Recursive,
-         Orig_Config, Reduce_Only => False);
+      Enqueue_Min_Actions ("", Table.States 
(Orig_Config.Stack.Peek.State).Minimal_Complete_Actions, Orig_Config);
 
       loop
          exit when Is_Empty (Work);
@@ -952,7 +1049,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
                declare
                   Reduce_Action : Reduce_Action_Rec := To_Reduce_Action 
(Item.Action);
                   Actions       : Minimal_Action_Arrays.Vector;
-                  Recursive     : Boolean;
                begin
                   loop
                      Do_Reduce_1
@@ -960,8 +1056,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore is
                         Reduce_Action,
                         Do_Language_Fixes => False);
 
-                     Actions   := Table.States 
(Item.Config.Stack.Peek.State).Minimal_Complete_Actions;
-                     Recursive := Table.States 
(Item.Config.Stack.Peek.State).Minimal_Complete_Actions_Recursive;
+                     Actions := Table.States 
(Item.Config.Stack.Peek.State).Minimal_Complete_Actions;
 
                      case Actions.Length is
                      when 0 =>
@@ -974,32 +1069,36 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
                      when 1 =>
                         case Actions (Actions.First_Index).Verb is
                         when Shift =>
-                           Minimal_Do_Shift (Actions (Actions.First_Index), 
Item.Config);
+                           Minimal_Do_Shift (Actions (Actions.First_Index), 
Item.Cost_Delta, Item.Config);
                            exit;
                         when Reduce =>
                            Reduce_Action := To_Reduce_Action (Actions 
(Actions.First_Index));
                         end case;
 
                      when others =>
-                        Enqueue_Min_Actions ("multiple actions ", Actions, 
Recursive, Item.Config, Reduce_Only => True);
+                        Enqueue_Min_Actions ("multiple actions ", Actions, 
Item.Config);
                         exit;
                      end case;
                   end loop;
                end;
 
             when Shift =>
-               Minimal_Do_Shift (Item.Action, Item.Config);
+               Minimal_Do_Shift (Item.Action, Item.Cost_Delta, Item.Config);
             end case;
          end;
       end loop;
 
       if Inserted_Last = Inserted'First - 1 then
+         --  Nothing inserted this round.
          if Orig_Config.Minimal_Complete_State = Active then
             Orig_Config.Minimal_Complete_State := Done;
          end if;
       end if;
 
       return To_Vector (Inserted (1 .. Inserted_Last));
+   exception
+   when Bad_Config =>
+      return Token_ID_Arrays.Empty_Vector;
    end Insert_Minimal_Complete_Actions;
 
    procedure Insert_Matching_Begin
@@ -1014,7 +1113,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
       Descriptor : WisiToken.Descriptor renames Super.Trace.Descriptor.all;
    begin
       --  We don't check for insert = current token; that's either ok or a
-      --  severe bug in Language_Use_Minimal_Complete.
+      --  severe bug in Shared.Language_Matching_Begin_Tokens.
 
       if Config.Matching_Begin_Done then
          if Trace_McKenzie > Extra then
@@ -1090,7 +1189,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
       Local_Config_Heap : in out          Config_Heaps.Heap_Type)
    is
       use all type 
WisiToken.Parse.LR.Parser.Language_Matching_Begin_Tokens_Access;
-      use all type Ada.Containers.Count_Type;
       Tokens                : Token_ID_Array_1_3;
       Matching_Begin_Tokens : Token_ID_Arrays.Vector;
       Forbid_Minimal_Insert : Boolean := False;
@@ -1100,7 +1198,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
       if Shared.Language_Matching_Begin_Tokens /= null then
          Current_Token_ID_Peek_3
            (Shared.Terminals.all, Config.Current_Shared_Token, 
Config.Insert_Delete, Config.Current_Insert_Delete,
-            Super.Parser_State (Parser_Index).Prev_Deleted, Tokens);
+            Tokens);
 
          Shared.Language_Matching_Begin_Tokens (Tokens, Config, 
Matching_Begin_Tokens, Forbid_Minimal_Insert);
       end if;
@@ -1115,12 +1213,12 @@ package body 
WisiToken.Parse.LR.McKenzie_Recover.Explore is
          Insert_Matching_Begin (Super, Shared, Parser_Index, Config, 
Local_Config_Heap, Matching_Begin_Tokens);
       end if;
 
-      --  We always do all three Insert_Minimal_Complete (unless
+      --  We always do all three; Insert_Minimal_Complete (unless
       --  Forbid_Minimal_Insert), Insert_Matching_Begin,
       --  Insert_From_Action_List; in general it's not possible to tell when
       --  one will be better (see test_mckenzie_recover.adb
       --  Always_Minimal_Complete, Always_Matching_Begin).
-      --  Insert_From_Action does not insert the Minimal_Inserted tokens,
+      --  Insert_From_Action_List does not insert the Minimal_Inserted tokens,
       --  and it will never insert the Matching_Begin_Tokens, so there is no
       --  duplication. Insert_From_Action_List will normally be more
       --  expensive.
@@ -1150,7 +1248,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
       Check_Limit : WisiToken.Token_Index renames 
Shared.Table.McKenzie_Param.Check_Limit;
 
       Current_Line            : constant Line_Number_Type := 
Shared.Terminals.all (Config.Current_Shared_Token).Line;
-      Lexer_Error_Token_Index : Base_Token_Index;
       Lexer_Error_Token       : Base_Token;
 
       function Recovered_Lexer_Error (Line : in Line_Number_Type) return 
Base_Token_Index
@@ -1167,6 +1264,8 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
          return Invalid_Token_Index;
       end Recovered_Lexer_Error;
 
+      Lexer_Error_Token_Index : constant Base_Token_Index := 
Recovered_Lexer_Error (Current_Line);
+
       function String_ID_Set (String_ID : in Token_ID) return Token_ID_Set
       is begin
          if Shared.Language_String_ID_Set = null then
@@ -1182,8 +1281,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
          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;
@@ -1198,8 +1295,13 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
             raise Bad_Config;
          end if;
          for I in 1 .. Matching loop
-            Tok := New_Config.Stack.Pop.Token;
-            Append (New_Config.Ops, (Push_Back, Tok.ID, 
Tok.Min_Terminal_Index));
+            if Push_Back_Valid (New_Config) then
+               Tok := New_Config.Stack.Pop.Token;
+               Append (New_Config.Ops, (Push_Back, Tok.ID, 
Tok.Min_Terminal_Index));
+            else
+               --  Probably pushing back thru a previously inserted token
+               raise Bad_Config;
+            end if;
          end loop;
 
          New_Config.Current_Shared_Token := Tok.Min_Terminal_Index;
@@ -1230,8 +1332,9 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
             raise SAL.Programmer_Error;
          end;
 
-         if not Has_Space
-           (New_Config.Ops, Ada.Containers.Count_Type (Saved_Shared_Token - 1 
- New_Config.Current_Shared_Token))
+         if New_Config.Current_Shared_Token < Saved_Shared_Token - 1 and then
+           (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;
@@ -1245,14 +1348,65 @@ package body 
WisiToken.Parse.LR.McKenzie_Recover.Explore is
 
       end String_Literal_In_Stack;
 
+      procedure Push_Back_Tokens
+        (Full_Label            : in     String;
+         New_Config            : in out Configuration;
+         Min_Pushed_Back_Index :    out Base_Token_Index)
+      is
+         Item : Recover_Stack_Item;
+      begin
+         loop
+            Item := New_Config.Stack.Peek;
+            if Item.Token.Virtual then
+               --  Don't push back an inserted token
+               exit;
+
+            elsif Item.Token.Byte_Region = Null_Buffer_Region then
+               --  Don't need push_back for an empty token
+               New_Config.Stack.Pop;
+
+            elsif Item.Tree_Index = Invalid_Node_Index then
+               --  Item was pushed on stack during recovery, and we do not know
+               --  its Line. To avoid crossing a line boundary, we stop 
push_backs
+               --  here.
+               exit;
+
+            else
+               if Shared.Terminals.all
+                 (Super.Parser_State (Parser_Index).Tree.First_Shared_Terminal 
(Item.Tree_Index)).Line = Current_Line
+                 --  Don't let push_back cross a line boundary.
+               then
+                  if Is_Full (New_Config.Ops) then
+                     Super.Config_Full (Full_Label, Parser_Index);
+                     raise Bad_Config;
+                  else
+                     New_Config.Stack.Pop;
+                     Append (New_Config.Ops, (Push_Back, Item.Token.ID, 
Item.Token.Min_Terminal_Index));
+                  end if;
+               end if;
+
+               exit;
+            end if;
+         end loop;
+         Min_Pushed_Back_Index := Item.Token.Min_Terminal_Index;
+      end Push_Back_Tokens;
+
       procedure Finish
         (Label       : in     String;
          New_Config  : in out Configuration;
          First, Last : in     Base_Token_Index)
-      is begin
+      is
+         Adj_First : constant Base_Token_Index := (if First = 
Invalid_Token_Index then Last else First);
+         Adj_Last  : constant Base_Token_Index := (if Last = 
Invalid_Token_Index then First else Last);
+      begin
          --  Delete tokens First .. Last; either First - 1 or Last + 1 should
          --  be a String_Literal. Leave Current_Shared_Token at Last + 1.
 
+         if Adj_Last = Invalid_Token_Index or Adj_First = Invalid_Token_Index 
then
+            pragma Assert (False);
+            raise Bad_Config;
+         end if;
+
          New_Config.Error_Token.ID := Invalid_Token_ID;
          New_Config.Check_Status   := (Label => WisiToken.Semantic_Checks.Ok);
 
@@ -1264,7 +1418,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
             raise Bad_Config;
          end if;
 
-         for I in First .. Last loop
+         for I in Adj_First .. Adj_Last loop
             Append (New_Config.Ops, (Delete, Shared.Terminals.all (I).ID, I));
          end loop;
          New_Config.Current_Shared_Token := Last + 1;
@@ -1274,7 +1428,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
 
          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;
-            if Trace_McKenzie > Detail then
+            if Trace_McKenzie > Extra then
                Put_Line
                  (Super.Trace.all, Super.Label (Parser_Index), 
"resume_token_goal:" & WisiToken.Token_Index'Image
                     (New_Config.Resume_Token_Goal));
@@ -1296,11 +1450,12 @@ package body 
WisiToken.Parse.LR.McKenzie_Recover.Explore is
       --  before, at, or after that string literal.
       --
       --  Here we assume the parse error in Config.Error_Token is due to
-      --  putting the balancing quote in the wrong place, and attempt to
-      --  find a better place to put the balancing quote. Then all tokens
-      --  from the balancing quote to the unbalanced quote are now part of a
-      --  string literal, so delete them, leaving just the string literal
-      --  created by Lexer error recovery.
+      --  putting the balancing quote in the wrong place (although we do
+      --  check that; see test_mckenzie_recover.adb String_Quote_6), and
+      --  attempt to find a better place to put the balancing quote. Then
+      --  all tokens from the balancing quote to the unbalanced quote are
+      --  now part of a string literal, so delete them, leaving just the
+      --  string literal created by Lexer error recovery.
 
       --  First we check to see if there is an unbalanced quote in the
       --  current line; if not, just return. Some lexer errors are for other
@@ -1311,8 +1466,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
 
       Config.String_Quote_Checked := Current_Line;
 
-      Lexer_Error_Token_Index := Recovered_Lexer_Error (Current_Line);
-
       if Lexer_Error_Token_Index = Invalid_Token_Index then
          return;
       end if;
@@ -1331,23 +1484,11 @@ package body 
WisiToken.Parse.LR.McKenzie_Recover.Explore is
          --  test_mckenzie_recover.adb String_Quote_0. So far we have not found
          --  a test case for more than one token.
          declare
-            New_Config : Configuration := Config;
-            Token      : Recover_Token;
+            New_Config            : Configuration := Config;
+            Min_Pushed_Back_Index : Base_Token_Index;
          begin
-            loop
-               Token := New_Config.Stack.Pop.Token;
-               if Token.Byte_Region /= Null_Buffer_Region then
-                  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;
-
-            Finish ("a", New_Config, Token.Min_Terminal_Index, 
Config.Current_Shared_Token - 1);
+            Push_Back_Tokens ("insert quote 4 a", New_Config, 
Min_Pushed_Back_Index);
+            Finish ("a", New_Config, Min_Pushed_Back_Index, 
Config.Current_Shared_Token - 1);
             Local_Config_Heap.Add (New_Config);
          end;
 
@@ -1412,25 +1553,13 @@ package body 
WisiToken.Parse.LR.McKenzie_Recover.Explore is
 
          --  case d: Assume a missing quote belongs somewhere farther before
          --  the current token; try one non-empty (as in case a above). See
-         --  test_mckenzie_recover.adb String_Quote_4.
+         --  test_mckenzie_recover.adb String_Quote_4, String_Quote_6.
          declare
-            New_Config : Configuration := Config;
-            Token      : Recover_Token;
+            New_Config            : Configuration := Config;
+            Min_Pushed_Back_Index : Base_Token_Index;
          begin
-            loop
-               Token := New_Config.Stack.Pop.Token;
-               if Token.Byte_Region /= Null_Buffer_Region then
-                  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;
-
-            Finish ("d", New_Config, Token.Min_Terminal_Index, 
Lexer_Error_Token_Index - 1);
+            Push_Back_Tokens ("insert quote 5 d", New_Config, 
Min_Pushed_Back_Index);
+            Finish ("d", New_Config, Min_Pushed_Back_Index, 
Lexer_Error_Token_Index - 1);
             Local_Config_Heap.Add (New_Config);
          exception
          when SAL.Container_Empty =>
@@ -1482,7 +1611,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
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;
       Check_Limit : WisiToken.Token_Index renames 
Shared.Table.McKenzie_Param.Check_Limit;
@@ -1496,7 +1624,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
          (Length (Config.Ops) = 0 or else
            --  Don't delete an ID we just inserted; waste of time
            (not Equal (Constant_Ref (Config.Ops, Last_Index (Config.Ops)),
-                       (Insert, ID, Config.Current_Shared_Token, 1, 0))))
+                       (Insert, ID, Config.Current_Shared_Token))))
       then
          declare
             New_Config : Configuration := Config;
@@ -1535,10 +1663,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
                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);
-               New_Config.Current_Shared_Token := 
New_Config.Current_Shared_Token + 1;
-            end loop;
 
             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;
@@ -1596,24 +1720,16 @@ package body 
WisiToken.Parse.LR.McKenzie_Recover.Explore is
       --  adding ops to Config (except as noted); Language_Fixes should use
       --  McKenzie_Recover.Insert, Delete instead.
       if Config.Current_Insert_Delete = 1 then
-         --  Config.Current_Insert_Delete > 1 is a programming error.
+         --  Config is from Language_Fixes.
 
-         case Fast_Forward (Super, Shared, Parser_Index, Local_Config_Heap, 
Config) is
-         when Abandon =>
-            --  We know Local_Config_Heap is empty; just tell
-            --  Super we are done working.
-            Super.Put (Parser_Index, Local_Config_Heap);
-            return;
-         when Continue =>
-            --  We don't increase cost for this Fast_Forward, since it is due 
to a
-            --  Language_Fixes.
-            null;
-         end case;
+         Fast_Forward (Super, Shared, Parser_Index, Local_Config_Heap, Config);
+         Super.Put (Parser_Index, Local_Config_Heap);
+         return;
       end if;
 
       pragma Assert (Config.Current_Insert_Delete = 0);
+      --  Config.Current_Insert_Delete > 1 is a programming error.
 
-      --  Language_Fixes: let it enqueue configs.
       if Config.Error_Token.ID /= Invalid_Token_ID then
          if Shared.Language_Fixes = null then
             null;
@@ -1625,58 +1741,55 @@ package body 
WisiToken.Parse.LR.McKenzie_Recover.Explore is
 
             --  The solutions enqueued by Language_Fixes should be lower cost 
than
             --  others (typically 0), so they will be checked first.
+         end if;
 
-            if Config.Check_Status.Label = Ok then
-               --  Parse table Error action.
-               --
-               --  We don't clear Config.Error_Token here, because
-               --  Language_Use_Minimal_Complete_Actions needs it. We only 
clear it
-               --  when a parse results in no error (or a different error), or 
a
-               --  push_back moves the Current_Token.
-               null;
+         if Config.Check_Status.Label = Ok then
+            --  Parse table Error action.
+            --
+            --  We don't clear Config.Error_Token here, because
+            --  Language_Use_Minimal_Complete_Actions needs it. We only clear 
it
+            --  when a parse results in no error (or a different error), or a
+            --  push_back moves the Current_Token.
+            null;
 
-            else
-               --  Assume "ignore check error" is a viable solution. But give 
it a
-               --  cost, so a solution provided by Language_Fixes is preferred.
+         else
+            --  Assume "ignore check error" is a viable solution. But give it a
+            --  cost, so a solution provided by Language_Fixes is preferred.
 
-               declare
-                  New_State : Unknown_State_Index;
-               begin
-                  Config.Cost := Config.Cost + 
Table.McKenzie_Param.Ignore_Check_Fail;
+            declare
+               New_State : Unknown_State_Index;
+            begin
+               Config.Cost := Config.Cost + 
Table.McKenzie_Param.Ignore_Check_Fail;
+               Config.Strategy_Counts (Ignore_Error) := Config.Strategy_Counts 
(Ignore_Error) + 1;
 
-                  --  finish reduce.
-                  Config.Stack.Pop (SAL.Base_Peek_Type 
(Config.Check_Token_Count));
+               --  finish reduce.
+               Config.Stack.Pop (SAL.Base_Peek_Type 
(Config.Check_Token_Count));
 
-                  New_State := Goto_For (Table, Config.Stack.Peek.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
-                        --  Stack is empty, and we did not get Accept; really 
bad syntax got
-                        --  us here; abandon this config. See 
ada_mode-recover_bad_char.adb.
-                        Super.Put (Parser_Index, Local_Config_Heap);
-                        return;
-                     else
-                        raise SAL.Programmer_Error with
-                          "process_one found test case for new_state = 
Unknown; old state " &
-                          Trimmed_Image (Config.Stack.Peek.State) & " nonterm 
" & Image
-                            (Config.Error_Token.ID, Trace.Descriptor.all);
-                     end if;
+               if New_State = Unknown_State then
+                  if Config.Stack.Depth = 1 then
+                     --  Stack is empty, and we did not get Accept; really bad 
syntax got
+                     --  us here; abandon this config. See 
ada_mode-recover_bad_char.adb.
+                     Super.Put (Parser_Index, Local_Config_Heap);
+                     return;
+                  else
+                     raise SAL.Programmer_Error with
+                       "process_one found test case for new_state = Unknown; 
old state " &
+                       Trimmed_Image (Config.Stack.Peek.State) & " nonterm " & 
Image
+                         (Config.Error_Token.ID, Trace.Descriptor.all);
                   end if;
+               end if;
 
-                  Config.Stack.Push ((New_State, 
Syntax_Trees.Invalid_Node_Index, Config.Error_Token));
-
-                  --  We clear Check_Status and Error_Token so the check error 
is ignored.
-                  Config.Check_Status := (Label => Ok);
+               Config.Stack.Push ((New_State, Invalid_Node_Index, 
Config.Error_Token));
 
-                  Config.Error_Token.ID := Invalid_Token_ID;
-               end;
-            end if;
+               --  We _don't_ clear Check_Status and Error_Token here; Check 
needs
+               --  them, and sets them as appropriate.
+            end;
          end if;
       end if;
 
-      --  Call Check to see if this config succeeds. Note that Check does
-      --  more than Fast_Forward, so the fact that Fast_Forward succeeds
-      --  does not mean we don't need to call Check.
+      --  Call Check to see if this config succeeds.
       case Check (Super, Shared, Parser_Index, Config, Local_Config_Heap) is
       when Success =>
          Super.Success (Parser_Index, Config, Local_Config_Heap);
@@ -1711,14 +1824,15 @@ package body 
WisiToken.Parse.LR.McKenzie_Recover.Explore is
 
       Try_Insert_Terminal (Super, Shared, Parser_Index, Config, 
Local_Config_Heap);
 
-      if None_Since_FF (Config.Ops, Delete) and then
-        None_Since_FF (Config.Ops, Insert) and then
-        Config.Stack.Depth > 1 and then -- can't delete the first state
+      if Push_Back_Valid (Config) and then
         (not Check_Reduce_To_Start (Super, Shared, Parser_Index, Config))
-        --  If Config reduces to the start nonterm, there's no point in 
push_back.
+        --  If Config reduces to the start nonterm, there's no point in 
Push_Back or Undo_Reduce.
       then
          Try_Push_Back (Super, Shared, Parser_Index, Config, 
Local_Config_Heap);
-         Try_Undo_Reduce (Super, Shared, Parser_Index, Config, 
Local_Config_Heap);
+
+         if Undo_Reduce_Valid (Config.Stack, Super.Parser_State 
(Parser_Index).Tree) then
+            Try_Undo_Reduce (Super, Shared, Parser_Index, Config, 
Local_Config_Heap);
+         end if;
       end if;
 
       if None_Since_FF (Config.Ops, Insert) then
@@ -1733,9 +1847,11 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Explore 
is
            Config.String_Quote_Checked < Shared.Terminals.all 
(Config.Current_Shared_Token).Line)
       then
          --  See if there is a mismatched quote. The solution is to delete
-         --  tokens, replacing them with a string literal. So we try this when
-         --  it is ok to try delete.
-         Try_Insert_Quote (Super, Shared, Parser_Index, Config, 
Local_Config_Heap);
+         --  tokens, nominally replacing them with an expanded string literal.
+         --  So we try this when it is ok to try delete.
+         if None_Since_FF (Config.Ops, Insert) then
+            Try_Insert_Quote (Super, Shared, Parser_Index, Config, 
Local_Config_Heap);
+         end if;
       end if;
 
       Super.Put (Parser_Index, Local_Config_Heap);
diff --git a/packages/wisi/wisitoken-parse-lr-mckenzie_recover-parse.adb 
b/packages/wisi/wisitoken-parse-lr-mckenzie_recover-parse.adb
index 5db933e..b56bba6 100644
--- a/packages/wisi/wisitoken-parse-lr-mckenzie_recover-parse.adb
+++ b/packages/wisi/wisitoken-parse-lr-mckenzie_recover-parse.adb
@@ -2,7 +2,7 @@
 --
 --  See spec
 --
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -110,8 +110,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Parse is
       --  Parse_Items.
 
       use Parse_Item_Arrays;
-      use Sorted_Insert_Delete_Arrays;
-      use all type Ada.Containers.Count_Type;
+      use Config_Op_Arrays;
       use all type Semantic_Checks.Check_Status_Label;
 
       Trace      : WisiToken.Trace'Class renames Super.Trace.all;
@@ -130,8 +129,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Parse is
          Terminals_Current         => Config.Current_Shared_Token,
          Restore_Terminals_Current => Restore_Terminals_Current,
          Insert_Delete             => Config.Insert_Delete,
-         Current_Insert_Delete     => Config.Current_Insert_Delete,
-         Prev_Deleted              => Super.Parser_State 
(Parser_Index).Prev_Deleted);
+         Current_Insert_Delete     => Config.Current_Insert_Delete);
 
       New_State : Unknown_State_Index;
       Success   : Boolean := True;
@@ -202,7 +200,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Parse is
 
             Config.Stack.Push
               ((Action.Item.State,
-                Syntax_Trees.Invalid_Node_Index,
+                Invalid_Node_Index,
                 (Current_Token.ID,
                  Byte_Region        => Current_Token.Byte_Region,
                  Min_Terminal_Index =>
@@ -217,8 +215,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Parse is
                Terminals_Current         => Config.Current_Shared_Token,
                Restore_Terminals_Current => Restore_Terminals_Current,
                Insert_Delete             => Config.Insert_Delete,
-               Current_Insert_Delete     => Config.Current_Insert_Delete,
-               Prev_Deleted              => Super.Parser_State 
(Parser_Index).Prev_Deleted);
+               Current_Insert_Delete     => Config.Current_Insert_Delete);
 
          when Reduce =>
             declare
@@ -244,7 +241,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover.Parse is
                      raise Bad_Config;
                   end if;
 
-                  Config.Stack.Push ((New_State, 
Syntax_Trees.Invalid_Node_Index, Nonterm));
+                  Config.Stack.Push ((New_State, Invalid_Node_Index, Nonterm));
 
                when Semantic_Checks.Error =>
                   Config.Error_Token       := Nonterm;
diff --git a/packages/wisi/wisitoken-parse-lr-mckenzie_recover.adb 
b/packages/wisi/wisitoken-parse-lr-mckenzie_recover.adb
index 6fa41d8..24c33d2 100644
--- a/packages/wisi/wisitoken-parse-lr-mckenzie_recover.adb
+++ b/packages/wisi/wisitoken-parse-lr-mckenzie_recover.adb
@@ -140,7 +140,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
              when Message => raise SAL.Programmer_Error));
          if Trace_McKenzie > Extra then
             Put_Line
-              (Trace, Parser_State.Label, Parser_Lists.Image
+              (Trace, Parser_State.Label, "stack: " & Parser_Lists.Image
                  (Parser_State.Stack, Trace.Descriptor.all, 
Parser_State.Tree));
          end if;
       end if;
@@ -168,6 +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
+               Config.Strategy_Counts (Ignore_Error) := 1;
                Put ("enqueue", Trace, Parser_State.Label, 
Shared_Parser.Terminals, Config,
                     Task_ID => False);
             end if;
@@ -207,7 +208,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
 
       Parsers : Parser_Lists.List renames Shared_Parser.Parsers;
 
-      Current_Parser : Parser_Lists.Cursor;
+      Skip_Next : Boolean := False;
 
       Super : aliased Base.Supervisor
         (Trace'Access,
@@ -287,15 +288,13 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
          end if;
       end;
 
-      --  Adjust parser state for each successful recovery.
+      --  Spawn new parsers for multiple solutions.
       --
       --  One option here would be to keep only the parser with the least
       --  cost fix. However, the normal reason for having multiple parsers
       --  is to resolve a grammar ambiguity; the least cost fix might
       --  resolve the ambiguity the wrong way. As could any other fix, of
       --  course.
-
-      --  Spawn new parsers for multiple solutions.
       --
       --  We could try to check here for redundant solutions; configs for a
       --  parser that have the same or "equivalent" ops. But those will be
@@ -375,339 +374,273 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
 
       --  We don't use 'for Parser_State of Parsers loop' here,
       --  because we might need to terminate a parser.
-      Current_Parser := Parsers.First;
-      loop
-         exit when Current_Parser.Is_Done;
-
-         if Current_Parser.State_Ref.Recover.Success then
-            begin
-               --  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;
-
-                  Descriptor : WisiToken.Descriptor renames 
Shared_Parser.Trace.Descriptor.all;
-                  Tree       : Syntax_Trees.Tree renames Parser_State.Tree;
-                  Data       : McKenzie_Data renames Parser_State.Recover;
-                  Result     : Configuration renames Data.Results.Peek;
+      declare
+         Current_Parser : Parser_Lists.Cursor := Parsers.First;
+      begin
+         loop
+            exit when Current_Parser.Is_Done;
 
-                  Min_Op_Token_Index        : WisiToken.Token_Index := 
WisiToken.Token_Index'Last;
-                  Min_Push_Back_Token_Index : WisiToken.Token_Index := 
WisiToken.Token_Index'Last;
+            if Current_Parser.State_Ref.Recover.Success then
+               begin
+                  --  Can't have active 'renames State_Ref' when terminate a 
parser
+                  declare
+                     use Parser_Lists;
+                     use Config_Op_Arrays, Config_Op_Array_Refs;
 
-                  Stack_Matches_Ops     : Boolean := True;
-                  Shared_Token_Changed  : Boolean := False;
-                  Current_Token_Virtual : Boolean := False;
+                     Parser_State : Parser_Lists.Parser_State renames 
Current_Parser.State_Ref;
 
-                  Sorted_Insert_Delete : aliased 
Sorted_Insert_Delete_Arrays.Vector;
+                     Descriptor : WisiToken.Descriptor renames 
Shared_Parser.Trace.Descriptor.all;
+                     Stack      : Parser_Stacks.Stack renames 
Parser_State.Stack;
+                     Tree       : Syntax_Trees.Tree renames Parser_State.Tree;
+                     Data       : McKenzie_Data renames Parser_State.Recover;
+                     Result     : Configuration renames Data.Results.Peek;
 
-                  procedure Apply_Prev_Token
-                  is begin
-                     loop
-                        exit when not Parser_State.Prev_Deleted.Contains 
(Parser_State.Shared_Token);
-                        Parser_State.Shared_Token := Parser_State.Shared_Token 
+ 1;
-                     end loop;
-                  end Apply_Prev_Token;
-
-               begin
-                  --  The verb will be reset by the main parser; just indicate 
the
-                  --  parser recovered from the error.
-                  Parser_State.Set_Verb (Shift);
-
-                  Parser_State.Errors (Parser_State.Errors.Last).Recover := 
Result;
-
-                  Parser_State.Resume_Token_Goal := Result.Resume_Token_Goal;
-
-                  if Trace_McKenzie > Extra then
-                     Put_Line (Trace, Parser_State.Label, "before Ops 
applied:", Task_ID => False);
-                     Put_Line
-                       (Trace, Parser_State.Label, "stack " & Image 
(Parser_State.Stack, Descriptor, Tree),
-                        Task_ID => False);
-                     Put_Line
-                       (Trace, Parser_State.Label, "Shared_Token  " & Image
-                          (Parser_State.Shared_Token, Shared_Parser.Terminals, 
Descriptor),
-                        Task_ID => False);
-                     Put_Line
-                       (Trace, Parser_State.Label, "Current_Token " & 
Parser_State.Tree.Image
-                          (Parser_State.Current_Token, Descriptor),
-                        Task_ID => False);
-                  end if;
+                     Stack_Matches_Ops     : Boolean := True;
+                     Shared_Token_Changed  : Boolean := False;
+                     Current_Token_Virtual : Boolean := False;
+                     First_Insert          : Boolean := True;
+                  begin
+                     --  The verb will be reset by the main parser; just 
indicate the
+                     --  parser recovered from the error.
+                     Parser_State.Set_Verb (Shift);
+
+                     Parser_State.Errors (Parser_State.Errors.Last).Recover := 
Result;
+
+                     Parser_State.Resume_Token_Goal := 
Result.Resume_Token_Goal;
+
+                     if Trace_McKenzie > Extra then
+                        Put_Line (Trace, Parser_State.Label, "before Ops 
applied:", Task_ID => False);
+                        Put_Line
+                          (Trace, Parser_State.Label, "stack " & Image (Stack, 
Descriptor, Tree),
+                           Task_ID => False);
+                        Put_Line
+                          (Trace, Parser_State.Label, "Shared_Token  " & Image
+                             (Parser_State.Shared_Token, 
Shared_Parser.Terminals, Descriptor),
+                           Task_ID => False);
+                        Put_Line
+                          (Trace, Parser_State.Label, "Current_Token " & 
Parser_State.Tree.Image
+                             (Parser_State.Current_Token, Descriptor),
+                           Task_ID => False);
+                     end if;
+
+                     --  We don't apply all Ops to the parser stack here, 
because there can
+                     --  be other input tokens between the inserts and 
deletes, and there
+                     --  can be conflicts; we let the main parser handle that. 
We can apply
+                     --  all ops up to the first insert.
+                     --
+                     --  Other than Add_Terminal, there's no need to modify
+                     --  Parser_State.Tree. Any tree nodes created by the 
failed parse that
+                     --  are pushed back are useful for error repair, and will 
just be
+                     --  ignored in future parsing. This also avoids enlarging 
a
+                     --  non-flushed branched tree, which saves time and space.
+                     --
+                     --  Language_Fixes may abuse the rules about adding Ops, 
so we check
+                     --  that as much as is reasonable here. We use Assert to 
get an
+                     --  immediate error in a debug build, and raise 
Bad_Config to avoid
+                     --  further corruption in a release build.
+
+                     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 =>
+                              --  The parser would do shifts and reduces for 
the tokens we are
+                              --  skipping here
+                              Stack_Matches_Ops := False;
 
-                  --  We don't apply all Ops to the parser stack here, because 
that
-                  --  requires updating the syntax tree as well, and we want 
to let the
-                  --  main parser do that, partly as a double check on the 
algorithms
-                  --  here.
-                  --
-                  --  However, the main parser can only apply Insert and 
Delete ops; we
-                  --  must apply Push_Back and Undo_Reduce here. Note that 
Fast_Forward
-                  --  ops are just for bookkeeping.
-                  --
-                  --  In order to apply Undo_Reduce, we also need to apply any 
preceding
-                  --  ops. See test_mckenzie_recover.adb Missing_Name_2 for an 
example
-                  --  of multiple Undo_Reduce. On the other hand, Push_Back 
can be
-                  --  applied without the preceding ops.
-                  --
-                  --  A Push_Back can go back past preceding ops, including 
Undo_Reduce;
-                  --  there's no point in applying ops that are later 
superceded by such
-                  --  a Push_Back. See test_mckenzie_recover.adb 
Out_Of_Order_Ops for an
-                  --  example.
-                  --
-                  --  Push_Back can also go back past a previous error 
recovery; we must
-                  --  apply Parser_State.Prev_Deleted here as well, when 
computing
-                  --  Shared_Token.
-                  --
-                  --  So first we go thru Ops to find the earliest Push_Back. 
Then we
-                  --  apply ops that are before that point, up to the first 
Insert or
-                  --  Fast_Forward. After that, we enqueue Insert and Delete 
ops on
-                  --  Parser_State.Recover_Insert_Delete, in token_index 
order, and any
-                  --  Undo_Reduce are rejected.
-                  --
-                  --  Then the main parser parses the edited input stream.
-                  --
-                  --  There's no need to modify Parser_State.Tree. Any tree 
nodes
-                  --  created by the failed parse that are pushed back are 
useful for
-                  --  error repair, and will just be ignored in future 
parsing. This
-                  --  also avoids enlarging a non-flushed branched tree, which 
saves
-                  --  time and space.
-
-                  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 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;
+                           when Undo_Reduce =>
+                              --  If Stack_Matches_Ops, we must do the 
Stack.Pop and Pushes, and we
+                              --  can use Stack.Peek to check if the 
Undo_Reduce is valid.
+                              --
+                              --  If not Stack_Matches_Ops, we have to assume 
Undo_Reduce is valid.
+                              --
+                              --  See test_mckenzie_recover.adb Extra_Begin 
for an example of Undo_Reduce
+                              --  after other ops.
+                              if Stack_Matches_Ops then
+                                 if not (Tree.Is_Nonterm (Stack.Peek.Token) and
+                                           (I = First_Index (Result.Ops) or 
else
+                                              Push_Back_Valid
+                                                (Tree.First_Shared_Terminal 
(Stack.Peek.Token), Result.Ops, I - 1)))
+                                 then
+                                    pragma Assert (False);
+                                    if Trace_McKenzie > Outline then
+                                       Put_Line
+                                         (Trace, Parser_State.Label, "invalid 
Undo_Reduce in apply config",
+                                          Task_ID => False);
+                                    end if;
+                                    raise Bad_Config;
+                                 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;
+                                 for C of Tree.Children (Stack.Pop.Token) loop
+                                    Stack.Push ((Tree.State (C), C));
+                                 end loop;
                               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;
-                              end if;
-                           end if;
-
-                        end case;
-                     end;
-                  end loop;
-
-                  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;
-
-                        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;
-
-                           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 Push_Back =>
+                              --  If Stack_Matches_Ops, we must do the 
Stack.Pop, and can use that
+                              --  to check if the Push_Back is valid.
+                              --
+                              --  If not Stack_Matches_Ops, we have to assume 
Op.PB_Token_Index is
+                              --  correct, and we do not do Stack.Pop. We can 
still check the target
+                              --  token index against the previous ops.
+                              --
+                              --  See test_mckenzie_recover.adb Erorr_2 for an 
example of Push_Back
+                              --  after other ops.
+                              if not
+                                (I = First_Index (Result.Ops) or else
+                                   Push_Back_Valid
+                                     (Target_Token_Index =>
+                                        (if Stack_Matches_Ops
+                                         then Tree.First_Shared_Terminal 
(Stack.Peek.Token)
+                                         else Op.PB_Token_Index),
+                                      Ops     => Result.Ops,
+                                      Prev_Op => I - 1))
+                              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, "invalid 
Push_Back in apply config op" & I'Image,
                                        Task_ID => False);
                                  end if;
+                                 pragma Assert (False);
                                  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;
-                                    end if;
-                                 end;
-                              end loop;
-                              pragma Assert (Parser_State.Shared_Token = 
Op.PB_Token_Index);
-                           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;
+                              if Stack_Matches_Ops then
+                                 Stack.Pop;
 
-                              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);
+                                 if Op.PB_Token_Index /= Invalid_Token_Index 
then
+                                    --  Pushing back an empty nonterm has no 
effect on the input stream.
+                                    Parser_State.Shared_Token := 
Op.PB_Token_Index;
+                                    Shared_Token_Changed      := True;
                                  end if;
                               end if;
-                           else
-                              if Is_Full (Sorted_Insert_Delete) then
-                                 raise Bad_Config;
-                              else
-                                 Insert (Sorted_Insert_Delete, Op);
+
+                           when Insert =>
+                              Recover_Op_Arrays.Append
+                                (Parser_State.Recover_Insert_Delete,
+                                 (Op              => Insert,
+                                  Ins_ID          => Op.Ins_ID,
+                                  Ins_Token_Index => Op.Ins_Token_Index,
+                                  Ins_Tree_Node   => Invalid_Node_Index));
+
+                              if Parser_State.Recover_Insert_Delete_Current = 
No_Index then
+                                 Parser_State.Recover_Insert_Delete_Current :=
+                                   Recover_Op_Arrays.Last_Index 
(Parser_State.Recover_Insert_Delete);
                               end if;
-                           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
-                              if Is_Full (Sorted_Insert_Delete) then
-                                 raise Bad_Config;
+
+                              if First_Insert and Op.Ins_Token_Index = 
Parser_State.Shared_Token then
+                                 --  We need First_Insert here, not just 
Stack_Matches_Ops, when the
+                                 --  first insert is preceeded only by 
Push_Back and Undo_Reduce, with
+                                 --  at least one Undo_Reduce (so 
Stack_Matches_Ops is False when we
+                                 --  get here). See test_mckenzie_recover.adb 
Missing_Name_3
+
+                                 First_Insert := False;
+
+                                 --  Normally Insert is completed by 
Stack.Push; we let the main parser
+                                 --  do that.
+                                 Stack_Matches_Ops := False;
+
+                                 --  Add_Terminal is normally done in the 
lexer phase, so we do this here.
+                                 Parser_State.Current_Token := 
Parser_State.Tree.Add_Terminal
+                                   (Op.Ins_ID, Op.Ins_Token_Index);
+                                 Recover_Op_Array_Refs.Variable_Ref
+                                   (Parser_State.Recover_Insert_Delete,
+                                    Recover_Op_Arrays.Last_Index 
(Parser_State.Recover_Insert_Delete)).Ins_Tree_Node :=
+                                      Parser_State.Current_Token;
+
+                                 Current_Token_Virtual                      := 
True;
+                                 Parser_State.Recover_Insert_Delete_Current := 
No_Index;
                               else
-                                 Insert (Sorted_Insert_Delete, Op);
+                                 --  Let main parser handle it
+                                 null;
                               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 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;
+                              Recover_Op_Arrays.Append
+                                (Parser_State.Recover_Insert_Delete,
+                                 (Op              => Delete,
+                                  Del_ID          => Op.Del_ID,
+                                  Del_Token_Index => Op.Del_Token_Index));
+
+                              if Stack_Matches_Ops and Op.Del_Token_Index = 
Parser_State.Shared_Token then
+                                 --  Delete has no effect on Stack, so we can 
apply multiple deletes.
+                                 Parser_State.Shared_Token := 
Op.Del_Token_Index + 1;
+                                 Shared_Token_Changed      := True;
+
+                                 Parser_State.Recover_Insert_Delete_Current := 
No_Index;
+                              else
+                                 if Parser_State.Recover_Insert_Delete_Current 
= No_Index then
+                                    Parser_State.Recover_Insert_Delete_Current 
:=
+                                      Recover_Op_Arrays.Last_Index 
(Parser_State.Recover_Insert_Delete);
+                                 end if;
+
+                              end if;
+
                            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,
-                  --  which is the next token to read. If 
Shared_Token_Changed, we have
-                  --  set Shared_Token consistent with that; it is the next 
token to
-                  --  read. If Current_Token_Virtual, then after all the 
virtual tokens
-                  --  are inserted, the main parser would normally increment
-                  --  Parser_State.Shared_Token to get the next token, but we 
don't want
-                  --  that now. We could set Shared_Token to 1 less, but this 
way the
-                  --  debug messages all show the expected Shared_Terminal.
-
-                  Parser_State.Inc_Shared_Token := not Current_Token_Virtual;
-
-                  --  The main parser always sets Current_Token to be the 
syntax tree
-                  --  node containing Shared_Token; ensure that is true here 
(virtual
-                  --  tokens where handled above).
-
-                  if (not Current_Token_Virtual) and Shared_Token_Changed then
-                     Parser_State.Current_Token := 
Parser_State.Tree.Add_Terminal
-                       (Parser_State.Shared_Token, Shared_Parser.Terminals);
-                  end if;
+                        end;
+                     end loop;
 
-                  if Trace_McKenzie > Extra then
-                     Put_Line (Trace, Parser_State.Label, "after Ops 
applied:", Task_ID => False);
-                     Put_Line
-                       (Trace, Parser_State.Label, "stack " & 
Parser_Lists.Image
-                          (Parser_State.Stack, Descriptor, Tree),
-                        Task_ID => False);
-                     Put_Line
-                       (Trace, Parser_State.Label, "Shared_Token  " & Image
-                          (Parser_State.Shared_Token, Shared_Parser.Terminals, 
Descriptor), Task_ID => False);
-                     Put_Line
-                       (Trace, Parser_State.Label, "Current_Token " & 
Parser_State.Tree.Image
-                          (Parser_State.Current_Token, Descriptor), Task_ID => 
False);
-                     Put_Line
-                       (Trace, Parser_State.Label, "recover_insert_delete " & 
Image
-                          (Parser_State.Recover_Insert_Delete, Descriptor), 
Task_ID => False);
-                     Put_Line
-                       (Trace, Parser_State.Label, "inc_shared_token " & 
Boolean'Image (Parser_State.Inc_Shared_Token) &
-                          " parser verb " & All_Parse_Action_Verbs'Image 
(Parser_State.Verb),
-                        Task_ID => False);
+                     --  If not Shared_Token_Changed, Shared_Token is the 
error token,
+                     --  which is the next token to read. If 
Shared_Token_Changed, we have
+                     --  set Shared_Token consistent with that; it is the next 
token to
+                     --  read. If Current_Token_Virtual, then after all the 
virtual tokens
+                     --  are inserted, the main parser would normally increment
+                     --  Parser_State.Shared_Token to get the next token, but 
we don't want
+                     --  that now. We could set Shared_Token to 1 less, but 
this way the
+                     --  debug messages all show the expected Shared_Terminal.
+
+                     Parser_State.Inc_Shared_Token := not 
Current_Token_Virtual;
+
+                     --  The main parser always sets Current_Token to be the 
syntax tree
+                     --  node containing Shared_Token; ensure that is true 
here (virtual
+                     --  tokens where handled above).
+
+                     if (not Current_Token_Virtual) and Shared_Token_Changed 
then
+                        Parser_State.Current_Token := Shared_Parser.Terminals
+                          (Parser_State.Shared_Token).Tree_Index;
+                     end if;
+
+                     if Trace_McKenzie > Extra then
+                        Put_Line (Trace, Parser_State.Label, "after Ops 
applied:", Task_ID => False);
+                        Put_Line
+                          (Trace, Parser_State.Label, "stack " & 
Parser_Lists.Image
+                             (Stack, Descriptor, Tree),
+                           Task_ID => False);
+                        Put_Line
+                          (Trace, Parser_State.Label, "Shared_Token  " & Image
+                             (Parser_State.Shared_Token, 
Shared_Parser.Terminals, Descriptor), Task_ID => False);
+                        Put_Line
+                          (Trace, Parser_State.Label, "Current_Token " & 
Parser_State.Tree.Image
+                             (Parser_State.Current_Token, Descriptor), Task_ID 
=> False);
+                        Put_Line
+                          (Trace, Parser_State.Label, "recover_insert_delete" &
+                             Parser_State.Recover_Insert_Delete_Current'Image 
& ":" &
+                             Image (Parser_State.Recover_Insert_Delete, 
Descriptor), Task_ID => False);
+                        Put_Line
+                          (Trace, Parser_State.Label, "inc_shared_token " &
+                             Boolean'Image (Parser_State.Inc_Shared_Token),
+                           Task_ID => False);
+                     end if;
+                  end;
+               exception
+               when Bad_Config =>
+                  if Parsers.Count = 1 then
+                     --  Oops. just give up
+                     return Fail_Programmer_Error;
                   end if;
+                  Parsers.Terminate_Parser (Current_Parser, "bad config in 
recover", Trace, Shared_Parser.Terminals);
+                  --  Terminate advances Current_Parser
+                  Skip_Next := True;
                end;
-            exception
-            when Bad_Config =>
-               if Parsers.Count = 1 then
-                  --  Oops. just give up
-                  return Fail_Programmer_Error;
-               end if;
-               Parsers.Terminate_Parser (Current_Parser, "bad config in 
recover", Trace, Shared_Parser.Terminals);
-            end;
-         end if;
-         Current_Parser.Next;
-      end loop;
-
+            end if;
+            if Skip_Next then
+               Skip_Next := False;
+            else
+               Current_Parser.Next;
+            end if;
+         end loop;
+      end;
       if Shared_Parser.Post_Recover /= null then
          Shared_Parser.Post_Recover.all;
       end if;
@@ -717,7 +650,8 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
    exception
    when E : others =>
       if Debug_Mode then
-         Trace.Put (Ada.Exceptions.Exception_Name (E) & ": " & 
Ada.Exceptions.Exception_Message (E));
+         Trace.Put (Ada.Exceptions.Exception_Name (E) & ": " & 
Ada.Exceptions.Exception_Message (E), Prefix => True);
+         Trace.New_Line;
          raise;
       else
          return Fail_Programmer_Error;
@@ -737,13 +671,12 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
      (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)
+      Insert_Delete             : aliased in out Config_Op_Arrays.Vector;
+      Current_Insert_Delete     :         in out SAL.Base_Peek_Type)
      return Base_Token
    is
-      use Sorted_Insert_Delete_Arrays;
-      use Insert_Delete_Array_Refs;
+      use Config_Op_Arrays;
+      use Config_Op_Array_Refs;
 
       procedure Inc_I_D
       is begin
@@ -778,11 +711,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
                   return (ID => ID (Op), others => <>);
 
                when Delete =>
-                  Terminals_Current    := Terminals_Current + 1;
-                  loop
-                     exit when not Prev_Deleted.Contains (Terminals_Current);
-                     Terminals_Current := Terminals_Current + 1;
-                  end loop;
+                  Terminals_Current         := Terminals_Current + 1;
                   Restore_Terminals_Current := Terminals_Current;
                   Inc_I_D;
                end case;
@@ -796,11 +725,11 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
    function Current_Token_ID_Peek
      (Terminals             :         in Base_Token_Arrays.Vector;
       Terminals_Current     :         in Base_Token_Index;
-      Insert_Delete         : aliased in Sorted_Insert_Delete_Arrays.Vector;
+      Insert_Delete         : aliased in Config_Op_Arrays.Vector;
       Current_Insert_Delete :         in SAL.Base_Peek_Type)
      return Token_ID
    is
-      use Insert_Delete_Array_Refs;
+      use Config_Op_Array_Refs;
 
       Result : Token_ID;
    begin
@@ -836,9 +765,8 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
    procedure Current_Token_ID_Peek_3
      (Terminals             :         in     Base_Token_Arrays.Vector;
       Terminals_Current     :         in     Base_Token_Index;
-      Insert_Delete         : aliased in     
Sorted_Insert_Delete_Arrays.Vector;
+      Insert_Delete         : aliased in     Config_Op_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
       Terminals_Next : WisiToken.Token_Index := Terminals_Current + 1;
@@ -851,16 +779,9 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
       --  First set Tokens from Terminals; may be overridden by
       --  Insert_Delete below.
       Tokens (1) := Terminals (Terminals_Current).ID;
-      loop
-         exit when not Prev_Deleted.Contains (Terminals_Next);
-         Terminals_Next := Terminals_Next + 1;
-      end loop;
       if Terminals_Next <= Terminals.Last_Index then
          Tokens (2) := Terminals (Terminals_Next).ID;
-         loop
-            Terminals_Next := Terminals_Next + 1;
-            exit when not Prev_Deleted.Contains (Terminals_Next);
-         end loop;
+         Terminals_Next := Terminals_Next + 1;
          if Terminals_Next <= Terminals.Last_Index then
             Tokens (3) := Terminals (Terminals_Next).ID;
          else
@@ -876,7 +797,7 @@ 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;
+               use Config_Op_Arrays, Config_Op_Array_Refs;
                J : constant SAL.Base_Peek_Type := Current_Insert_Delete + 
SAL.Peek_Type (I) - 1;
             begin
                if (J in First_Index (Insert_Delete) .. Last_Index 
(Insert_Delete)) and then
@@ -906,7 +827,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
       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);
@@ -914,7 +834,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
          raise Bad_Config;
       end if;
       Append (Config.Ops, Op);
-      Insert (Config.Insert_Delete, Op);
+      Append (Config.Insert_Delete, Op);
       Config.Current_Insert_Delete := 1;
    end Delete_Check;
 
@@ -934,18 +854,31 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
       Index     : in out WisiToken.Token_Index)
    is
       use Config_Op_Arrays;
-      use Sorted_Insert_Delete_Arrays;
       Op : constant Config_Op := (Delete, Terminals (Index).ID, Index);
    begin
       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);
+      Append (Config.Insert_Delete, Op);
       Config.Current_Insert_Delete := 1;
       Index := Index + 1;
    end Delete;
 
+   function Find_ID
+     (Config         : in     Configuration;
+      ID             : in     Token_ID)
+     return Boolean
+   is begin
+      for I in 1 .. Config.Stack.Depth - 1 loop
+         --  Depth has Invalid_Token_ID
+         if ID = Config.Stack.Peek (I).Token.ID then
+            return True;
+         end if;
+      end loop;
+      return False;
+   end Find_ID;
+
    procedure Find_ID
      (Config         : in     Configuration;
       ID             : in     Token_ID;
@@ -1081,14 +1014,13 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
    procedure Insert (Config : in out Configuration; Index : in 
WisiToken.Token_Index; ID : in Token_ID)
    is
       use Config_Op_Arrays;
-      use Sorted_Insert_Delete_Arrays;
-      Op : constant Config_Op := (Insert, ID, Index, Unknown_State, 0);
+      Op : constant Config_Op := (Insert, ID, Index);
    begin
       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);
+      Append (Config.Insert_Delete, Op);
       Config.Current_Insert_Delete := 1;
    end Insert;
 
@@ -1096,21 +1028,15 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
      (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)
+      Insert_Delete             : aliased in out Config_Op_Arrays.Vector;
+      Current_Insert_Delete     :         in out SAL.Base_Peek_Type)
      return Base_Token
    is
-      use Sorted_Insert_Delete_Arrays, Insert_Delete_Array_Refs;
+      use Config_Op_Arrays, Config_Op_Array_Refs;
 
       function Next_Terminal return Base_Token
       is begin
-         Terminals_Current    := Terminals_Current + 1;
-         loop
-            exit when not Prev_Deleted.Contains (Terminals_Current);
-            Terminals_Current := Terminals_Current + 1;
-         end loop;
-
+         Terminals_Current         := Terminals_Current + 1;
          Restore_Terminals_Current := Terminals_Current;
          return Terminals (Terminals_Current);
       end Next_Terminal;
@@ -1146,10 +1072,82 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
       end loop;
    end Next_Token;
 
+   function Push_Back_Valid
+     (Target_Token_Index : in WisiToken.Base_Token_Index;
+      Ops             : in Config_Op_Arrays.Vector;
+      Prev_Op         : in Positive_Index_Type)
+     return Boolean
+   is
+      use Config_Op_Arrays;
+      Fast_Forward_Seen : Boolean := False;
+   begin
+      --  We require a Fast_Forward after Insert or Delete, to eliminate
+      --  duplicate results from push_back before and after a
+      --  delete (see test_mckenzie_recover.adb Extra_Begin).
+      --
+      --  If Target_Token_Index is greater than the new current terminal
+      --  implied by Prev_Op, the Push_Back is valid. Otherwise, it is
+      --  invalid (it should have been done first); we only need to look at
+      --  one op other than Fast_Forward.
+      for I in reverse First_Index (Ops) .. Prev_Op loop
+         declare
+            Op : Config_Op renames Element (Ops, I);
+         begin
+            case Op.Op is
+            when Fast_Forward =>
+               --  We need to see the op before the Fast_Forward to tell if 
Push_Back
+               --  to Target_Token_Index is ok.
+               Fast_Forward_Seen := True;
+
+            when Undo_Reduce =>
+               --  We don't know what the new terminal is from this op. We'll 
just
+               --  have to trust the programmers.
+               return True;
+
+            when Push_Back =>
+               --  If neither the proposed Push_Back nor Op is for an empty 
token,
+               --  successive Push_Backs have decreasing targets; see
+               --  test_mckenzie_recover.adb Missing_Name_0.
+               --
+               --  However, if there is a Fast_Forward between two Push_Backs,
+               --  Target_Token_Index must be >= Op.PB_Token_Index. See
+               --  ada-mode-recover_27.adb.
+               --
+               --  If called from Undo_Reduce_Valid where the Undo_Reduce 
token is
+               --  empty, we get Target_Token_Index = Op.PB_Token_Index.
+               return Target_Token_Index = Invalid_Token_Index or else
+                 Op.PB_Token_Index = Invalid_Token_Index or else
+                 (if Fast_Forward_Seen
+                  then Target_Token_Index > Op.PB_Token_Index
+                  else Target_Token_Index <= Op.PB_Token_Index);
+
+            when Insert =>
+               --  If Target_Token_Index = Op.Ins_Token_Index, we want the edit
+               --  point to be at the same token as before; that's ok.
+               --
+               --  If Target_Token_Index > Ins_Token_Index, the Push_Back is 
partway
+               --  into a Fast_Forward.
+               return Fast_Forward_Seen and
+                 (Target_Token_Index = Invalid_Token_Index or else
+                    Target_Token_Index >= Op.Ins_Token_Index);
+
+            when Delete =>
+               --  As for Insert
+               return Fast_Forward_Seen and
+                 (Target_Token_Index = Invalid_Token_Index or else
+                    Target_Token_Index >= Op.Del_Token_Index);
+            end case;
+         end;
+      end loop;
+      --  We can only get here if the only ops in Ops are Fast_Forward,
+      --  which is a programming error.
+      pragma Assert (False);
+      raise Bad_Config;
+   end Push_Back_Valid;
+
    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;
@@ -1171,7 +1169,7 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
                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);
+               Append (Config.Insert_Delete, Constant_Ref (Config.Ops, I));
             end if;
          end loop;
       end if;
@@ -1184,7 +1182,6 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
 
    procedure Push_Back_Check (Config : in out Configuration; Expected_ID : in 
Token_ID)
    is begin
-      pragma Assert (Config.Stack.Depth > 1);
       Check (Config.Stack.Peek (1).Token.ID, Expected_ID);
       Push_Back (Config);
    end Push_Back_Check;
@@ -1192,7 +1189,11 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
    procedure Push_Back_Check (Config : in out Configuration; Expected : in 
Token_ID_Array)
    is begin
       for ID of Expected loop
-         Push_Back_Check (Config, ID);
+         if Push_Back_Valid (Config) then
+            Push_Back_Check (Config, ID);
+         else
+            raise Bad_Config;
+         end if;
       end loop;
    end Push_Back_Check;
 
@@ -1209,7 +1210,7 @@ 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 Config_Op_Array_Refs;
       use all type Ada.Strings.Unbounded.Unbounded_String;
       use all type WisiToken.Semantic_Checks.Check_Status_Label;
 
@@ -1269,11 +1270,8 @@ package body WisiToken.Parse.LR.McKenzie_Recover is
    is
       Nonterm_Item : constant Recover_Stack_Item := Recover_Stacks.Pop (Stack);
    begin
-      if Nonterm_Item.Token.Byte_Region = Null_Buffer_Region then
-         return 0;
-      end if;
       declare
-         Children : constant Syntax_Trees.Valid_Node_Index_Array := 
Tree.Children (Nonterm_Item.Tree_Index);
+         Children : constant Valid_Node_Index_Array := Tree.Children 
(Nonterm_Item.Tree_Index);
       begin
          for C of Children loop
             Stack.Push ((Tree.State (C), C, Tree.Recover_Token (C)));
diff --git a/packages/wisi/wisitoken-parse-lr-mckenzie_recover.ads 
b/packages/wisi/wisitoken-parse-lr-mckenzie_recover.ads
index dedad36..2f33cd2 100644
--- a/packages/wisi/wisitoken-parse-lr-mckenzie_recover.ads
+++ b/packages/wisi/wisitoken-parse-lr-mckenzie_recover.ads
@@ -11,7 +11,7 @@
 --  [Grune 2008] Parsing Techniques, A Practical Guide, Second
 --  Edition. Dick Grune, Ceriel J.H. Jacobs.
 --
---  Copyright (C) 2017 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2017 - 2020 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
@@ -30,6 +30,7 @@ with Ada.Task_Attributes;
 with WisiToken.Parse.LR.Parser;
 with WisiToken.Lexer;
 package WisiToken.Parse.LR.McKenzie_Recover is
+   use all type Ada.Containers.Count_Type;
 
    Bad_Config : exception;
    --  Raised when a config is determined to violate some programming
@@ -51,7 +52,6 @@ package WisiToken.Parse.LR.McKenzie_Recover is
    --  and forces at least three.
 
 private
-   use all type WisiToken.Syntax_Trees.Node_Index;
 
    ----------
    --  Visible for language-specific child packages. Alphabetical.
@@ -65,9 +65,8 @@ private
      (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)
+      Insert_Delete             : aliased in out Config_Op_Arrays.Vector;
+      Current_Insert_Delete     :         in out SAL.Base_Peek_Type)
      return Base_Token;
    --  Return the current token, from either Terminals or Insert_Delete;
    --  set up for Next_Token.
@@ -77,7 +76,7 @@ private
    function Current_Token_ID_Peek
      (Terminals             :         in Base_Token_Arrays.Vector;
       Terminals_Current     :         in Base_Token_Index;
-      Insert_Delete         : aliased in Sorted_Insert_Delete_Arrays.Vector;
+      Insert_Delete         : aliased in Config_Op_Arrays.Vector;
       Current_Insert_Delete :         in SAL.Base_Peek_Type)
      return Token_ID;
    --  Return the current token from either Terminals or
@@ -86,9 +85,8 @@ private
    procedure Current_Token_ID_Peek_3
      (Terminals             :         in     Base_Token_Arrays.Vector;
       Terminals_Current     :         in     Base_Token_Index;
-      Insert_Delete         : aliased in     
Sorted_Insert_Delete_Arrays.Vector;
+      Insert_Delete         : aliased in     Config_Op_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
@@ -124,6 +122,13 @@ private
       Index     : in out WisiToken.Token_Index);
    --  Same as Delete_Check, without the check.
 
+   function Find_ID
+     (Config         : in     Configuration;
+      ID             : in     Token_ID)
+     return Boolean;
+   --  Search Config.Stack for a token with ID, starting at
+   --  stack top. Return True if found, False if not.
+
    procedure Find_ID
      (Config         : in     Configuration;
       ID             : in     Token_ID;
@@ -189,9 +194,8 @@ private
      (Terminals                 :         in     Base_Token_Arrays.Vector;
       Terminals_Current         :         in out Base_Token_Index;
       Restore_Terminals_Current :         in out 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)
+      Insert_Delete             : aliased in out Config_Op_Arrays.Vector;
+      Current_Insert_Delete     :         in out SAL.Base_Peek_Type)
      return Base_Token;
    --  Return the next token, from either Terminals or Insert_Delete;
    --  update Terminals_Current or Current_Insert_Delete.
@@ -206,24 +210,38 @@ private
    --  Insert_Delete contains only Insert and Delete ops, in token_index
    --  order. Those ops are applied when Terminals_Current =
    --  op.token_index.
-   --
-   --  Prev_Deleted contains tokens deleted in previous recover
-   --  operations; those are skipped.
 
-   procedure Push_Back (Config : in out Configuration);
+   function Push_Back_Valid
+     (Target_Token_Index : in WisiToken.Base_Token_Index;
+      Ops             : in Config_Op_Arrays.Vector;
+      Prev_Op         : in Positive_Index_Type)
+     return Boolean;
+
+   function Push_Back_Valid (Config : in Configuration) return Boolean
+     is (Config.Stack.Depth > 1 and then
+           (not Config.Stack.Peek.Token.Virtual and
+              --  If Virtual, this is from earlier in this recover session; no 
point
+              --  in trying to redo it.
+              (Config_Op_Arrays.Length (Config.Ops) = 0 or else
+                 Push_Back_Valid
+                   (Config.Stack.Peek.Token.Min_Terminal_Index,
+                    Config.Ops,
+                    Config_Op_Arrays.Last_Index (Config.Ops)))));
+
+   procedure Push_Back (Config : in out Configuration)
+   with Pre => Push_Back_Valid (Config);
    --  Pop the top Config.Stack item, set Config.Current_Shared_Token to
    --  the first terminal in that item. If the item is empty,
    --  Config.Current_Shared_Token is unchanged.
-   --
-   --  If any earlier Insert or Delete items in Config.Ops are for a
-   --  token_index after that first terminal, they are added to
-   --  Config.Insert_Delete in token_index order.
 
-   procedure Push_Back_Check (Config : in out Configuration; Expected_ID : in 
Token_ID);
+   procedure Push_Back_Check (Config : in out Configuration; Expected_ID : in 
Token_ID)
+   with Pre => Push_Back_Valid (Config);
    --  In effect, call Check and Push_Back.
 
    procedure Push_Back_Check (Config : in out Configuration; Expected : in 
Token_ID_Array);
    --  Call Push_Back_Check for each item in Expected.
+   --
+   --  Raises Bad_Config if any of the push_backs is invalid.
 
    procedure Put
      (Message      : in     String;
@@ -243,19 +261,28 @@ private
    --  Put message to Trace, with parser and task info.
 
    function Undo_Reduce_Valid
-     (Stack : in Recover_Stacks.Stack;
-      Tree  : in Syntax_Trees.Tree)
+     (Stack   : in Recover_Stacks.Stack;
+      Tree    : in Syntax_Trees.Tree)
      return Boolean
+     --  Check if Undo_Reduce is valid when there is no previous Config_Op.
+     --
+     --  Undo_Reduce needs to know what tokens the nonterm contains, to
+     --  push them on the stack. Thus we need a valid Tree index. It is
+     --  tempting to also allow an empty nonterm when Tree_Index is
+     --  invalid, but that fails when the real Undo_Reduce results in
+     --  another empty nonterm on the stack; see test_mckenzie_recover.adb
+     --  Error_During_Resume_3.
      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
-   --  Token.Byte_Region to determine empty.
+           Stack.Peek.Tree_Index /= Invalid_Node_Index and then
+               Tree.Is_Nonterm (Stack.Peek.Tree_Index));
+
+   function Undo_Reduce_Valid
+     (Stack   : in Recover_Stacks.Stack;
+      Tree    : in Syntax_Trees.Tree;
+      Ops     : in Config_Op_Arrays.Vector;
+      Prev_Op : in Positive_Index_Type)
+     return Boolean
+   is (Undo_Reduce_Valid (Stack, Tree) and then Push_Back_Valid 
(Stack.Peek.Token.Min_Terminal_Index, Ops, Prev_Op));
 
    function Undo_Reduce
      (Stack : in out Recover_Stacks.Stack;
diff --git a/packages/wisi/wisitoken-parse-lr-parser.adb 
b/packages/wisi/wisitoken-parse-lr-parser.adb
index 44c1ac0..a3dded3 100644
--- a/packages/wisi/wisitoken-parse-lr-parser.adb
+++ b/packages/wisi/wisitoken-parse-lr-parser.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2002 - 2005, 2008 - 2015, 2017 - 2019 Free Software 
Foundation, Inc.
+--  Copyright (C) 2002 - 2005, 2008 - 2015, 2017 - 2020 Free Software 
Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -36,7 +36,7 @@ package body WisiToken.Parse.LR.Parser is
    function Reduce_Stack_1
      (Current_Parser : in     Parser_Lists.Cursor;
       Action         : in     Reduce_Action_Rec;
-      Nonterm        :    out WisiToken.Syntax_Trees.Valid_Node_Index;
+      Nonterm        :    out WisiToken.Valid_Node_Index;
       Lexer          : in     WisiToken.Lexer.Handle;
       Trace          : in out WisiToken.Trace'Class)
      return WisiToken.Semantic_Checks.Check_Status_Label
@@ -49,7 +49,7 @@ package body WisiToken.Parse.LR.Parser is
       use all type Semantic_Checks.Semantic_Check;
 
       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));
+      Children_Tree : Valid_Node_Index_Array (1 .. SAL.Base_Peek_Type 
(Action.Token_Count));
    begin
       for I in reverse Children_Tree'Range loop
          Children_Tree (I) := Parser_State.Stack.Pop.Token;
@@ -75,7 +75,9 @@ package body WisiToken.Parse.LR.Parser is
          begin
             Status := Action.Check (Lexer, Nonterm_Token, Children_Token, 
Recover_Active => False);
 
-            Parser_State.Tree.Set_Name_Region (Nonterm, Nonterm_Token.Name);
+            if Nonterm_Token.Name /= Null_Buffer_Region then
+               Parser_State.Tree.Set_Name_Region (Nonterm, Nonterm_Token.Name);
+            end if;
 
             if Trace_Parse > Detail then
                Trace.Put_Line ("semantic check " & Semantic_Checks.Image 
(Status, Trace.Descriptor.all));
@@ -118,7 +120,7 @@ package body WisiToken.Parse.LR.Parser is
 
       Parser_State : Parser_Lists.Parser_State renames 
Current_Parser.State_Ref;
       Trace        : WisiToken.Trace'Class renames Shared_Parser.Trace.all;
-      Nonterm      : WisiToken.Syntax_Trees.Valid_Node_Index;
+      Nonterm      : WisiToken.Valid_Node_Index;
       Status       : Semantic_Checks.Check_Status_Label;
    begin
       if Trace_Parse > Detail then
@@ -223,40 +225,47 @@ 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 begin
+   is
+      use Recover_Op_Arrays, Recover_Op_Array_Refs;
+      Ins_Del     : Vector renames Parser_State.Recover_Insert_Delete;
+      Ins_Del_Cur : Extended_Index renames 
Parser_State.Recover_Insert_Delete_Current;
+   begin
       if Trace_Parse > Extra then
          Shared_Parser.Trace.Put_Line
            (Integer'Image (Parser_State.Label) & ": shared_token:" &
               WisiToken.Token_Index'Image (Parser_State.Shared_Token) &
               " inc_shared_token: " & Boolean'Image 
(Parser_State.Inc_Shared_Token) &
-              " recover_insert_delete: " &
-              Image (Parser_State.Recover_Insert_Delete, 
Shared_Parser.Trace.Descriptor.all));
+              " recover_insert_delete:" &
+              (if Parser_State.Recover_Insert_Delete_Current = No_Index
+               then ""
+               else Parser_State.Recover_Insert_Delete_Current'Image & " " &
+                  Image
+                    (Constant_Ref (Parser_State.Recover_Insert_Delete, 
Parser_State.Recover_Insert_Delete_Current),
+                     Shared_Parser.Trace.Descriptor.all)));
       end if;
 
       loop
-         if Parser_State.Recover_Insert_Delete.Length > 0 and then
-           Parser_State.Recover_Insert_Delete.Peek.Op = Delete and then
-           Parser_State.Recover_Insert_Delete.Peek.Del_Token_Index =
-           (if Parser_State.Inc_Shared_Token
-            then Parser_State.Shared_Token + 1
-            else Parser_State.Shared_Token)
-         then
-            Parser_State.Shared_Token     := Parser_State.Shared_Token + 1;
-            --  We don't reset Inc_Shared_Token here; only after the next 
token is
-            --  actually used.
-            Parser_State.Prev_Deleted.Append 
(Parser_State.Recover_Insert_Delete.Peek.Del_Token_Index);
-            Parser_State.Recover_Insert_Delete.Drop;
-
-         elsif Parser_State.Prev_Deleted.Contains
-           ((if Parser_State.Inc_Shared_Token
-             then Parser_State.Shared_Token + 1
-             else Parser_State.Shared_Token))
-         then
-            Parser_State.Shared_Token := Parser_State.Shared_Token + 1;
-
-         else
-            exit;
-         end if;
+         exit when Ins_Del_Cur = Recover_Op_Arrays.No_Index;
+         declare
+            Op : Recover_Op renames Constant_Ref (Ins_Del, Ins_Del_Cur);
+         begin
+            if Op.Op = Delete and then
+              Op.Del_Token_Index =
+              (if Parser_State.Inc_Shared_Token
+               then Parser_State.Shared_Token + 1
+               else Parser_State.Shared_Token)
+            then
+               Parser_State.Shared_Token := Parser_State.Shared_Token + 1;
+               --  We don't reset Inc_Shared_Token here; only after the next 
token is
+               --  actually used.
+               Ins_Del_Cur := Ins_Del_Cur + 1;
+               if Ins_Del_Cur > Last_Index (Ins_Del)  then
+                  Ins_Del_Cur := No_Index;
+               end if;
+            else
+               exit;
+            end if;
+         end;
       end loop;
    end Do_Deletes;
 
@@ -296,7 +305,12 @@ package body WisiToken.Parse.LR.Parser is
             Parser_State.Set_Verb (Shift);
 
             if Parser_State.Resume_Active then
-               if Parser_State.Resume_Token_Goal <= Parser_State.Shared_Token 
then
+               --  There may still be ops left in Recover_Insert_Delete after 
we get
+               --  to Resume_Token_Goal, probably from a Language_Fix or 
string quote
+               --  fix that deletes a lot of tokens.
+               if Parser_State.Resume_Token_Goal <= Parser_State.Shared_Token 
and
+                 Parser_State.Recover_Insert_Delete_Current = 
Recover_Op_Arrays.No_Index
+               then
                   Parser_State.Resume_Active := False;
                   if Trace_Parse > Detail then
                      Shared_Parser.Trace.Put_Line (Integer'Image 
(Parser_State.Label) & ": resume_active: False");
@@ -397,14 +411,28 @@ package body WisiToken.Parse.LR.Parser is
 
       Trace : WisiToken.Trace'Class renames Shared_Parser.Trace.all;
 
-      Current_Verb    : All_Parse_Action_Verbs;
-      Error_Recovered : Boolean := False;
-      Current_Parser  : Parser_Lists.Cursor;
-      Action          : Parse_Action_Node_Ptr;
-      Zombie_Count    : SAL.Base_Peek_Type;
+      Current_Verb   : All_Parse_Action_Verbs;
+      Action         : Parse_Action_Node_Ptr;
+      Zombie_Count   : SAL.Base_Peek_Type;
 
       procedure Check_Error (Check_Parser : in out Parser_Lists.Cursor)
-      is begin
+      is
+         procedure Report_Error
+         is begin
+            Shared_Parser.Parsers.First_State_Ref.Errors.Append
+              ((Label          => LR.Message,
+                First_Terminal => Trace.Descriptor.First_Terminal,
+                Last_Terminal  => Trace.Descriptor.Last_Terminal,
+                Recover        => <>,
+                Msg            => +"error during resume"));
+            if Debug_Mode then
+               raise SAL.Programmer_Error with Check_Parser.Label'Image & ": 
error during resume";
+            else
+               raise Syntax_Error;
+            end if;
+         end Report_Error;
+
+      begin
          if Check_Parser.Verb = Error then
             --  This parser errored on last input. This is how grammar 
conflicts
             --  are resolved when the input text is valid, in which case we 
should
@@ -423,16 +451,7 @@ package body WisiToken.Parse.LR.Parser is
 
             else
                if Shared_Parser.Parsers.Count = 1 then
-                  if Trace_Parse > Outline then
-                     Trace.Put_Line (Integer'Image (Check_Parser.Label) & ": 
error during resume");
-                  end if;
-                  Shared_Parser.Parsers.First_State_Ref.Errors.Append
-                    ((Label          => LR.Message,
-                      First_Terminal => Trace.Descriptor.First_Terminal,
-                      Last_Terminal  => Trace.Descriptor.Last_Terminal,
-                      Recover        => <>,
-                      Msg            => +"error during resume"));
-                  raise Syntax_Error;
+                  Report_Error;
 
                else
                   --  This is ok if a conflict occured during resume - we 
assume this is
@@ -443,7 +462,7 @@ package body WisiToken.Parse.LR.Parser is
                        (Check_Parser, "error in conflict during resume", 
Shared_Parser.Trace.all,
                         Shared_Parser.Terminals);
                   else
-                     raise SAL.Programmer_Error with "error during resume";
+                     Report_Error;
                   end if;
                end if;
             end if;
@@ -461,13 +480,13 @@ package body WisiToken.Parse.LR.Parser is
          Shared_Parser.User_Data.Reset;
       end if;
 
-      Shared_Parser.Lex_All;
-
       Shared_Parser.String_Quote_Checked := Invalid_Line_Number;
       Shared_Parser.Shared_Tree.Clear;
       Shared_Parser.Parsers              := Parser_Lists.New_List
         (Shared_Tree => Shared_Parser.Shared_Tree'Unchecked_Access);
 
+      Shared_Parser.Lex_All;
+
       Shared_Parser.Parsers.First.State_Ref.Stack.Push 
((Shared_Parser.Table.State_First, others => <>));
 
       Main_Loop :
@@ -502,33 +521,62 @@ package body WisiToken.Parse.LR.Parser is
                   end if;
 
                elsif Parser_State.Verb = Shift then
-                  if Parser_State.Recover_Insert_Delete.Length > 0 and then
-                    Parser_State.Recover_Insert_Delete.Peek.Op = Insert and 
then
-                    Parser_State.Recover_Insert_Delete.Peek.Ins_Token_Index =
-                    (if Parser_State.Inc_Shared_Token
-                     then Parser_State.Shared_Token + 1
-                     else Parser_State.Shared_Token)
-                  then
-                     Parser_State.Current_Token := 
Parser_State.Tree.Add_Terminal
-                       (Parser_State.Recover_Insert_Delete.Get.Ins_ID);
+                  declare
+                     function Insert_Virtual return Boolean
+                     is
+                        use Recover_Op_Arrays, Recover_Op_Array_Refs;
+                        Ins_Del     : Vector renames 
Parser_State.Recover_Insert_Delete;
+                        Ins_Del_Cur : Extended_Index renames 
Parser_State.Recover_Insert_Delete_Current;
+                        Result : Boolean := False;
+                     begin
+                        if Ins_Del_Cur /= No_Index then
+                           declare
+                              Op : Recover_Op renames Variable_Ref (Ins_Del, 
Ins_Del_Cur);
+                           begin
+                              if Op.Op = Insert and then
+                                Op.Ins_Token_Index =
+                                (if Parser_State.Inc_Shared_Token
+                                 then Parser_State.Shared_Token + 1
+                                 else Parser_State.Shared_Token)
+                              then
+                                 Result := True;
+
+                                 Parser_State.Current_Token := 
Parser_State.Tree.Add_Terminal
+                                   (Op.Ins_ID, Before => Op.Ins_Token_Index);
+
+                                 Op.Ins_Tree_Node := 
Parser_State.Current_Token;
+
+                                 Ins_Del_Cur := Ins_Del_Cur + 1;
+                                 if Ins_Del_Cur > Last_Index (Ins_Del) then
+                                    Ins_Del_Cur := No_Index;
+                                 end if;
+                              end if;
+                           end;
+                        end if;
+                        return Result;
+                     end Insert_Virtual;
+                  begin
+                     if Insert_Virtual then
+                        null;
 
-                  elsif (if Parser_State.Inc_Shared_Token
-                         then Parser_State.Shared_Token + 1
-                         else Parser_State.Shared_Token) <= 
Shared_Parser.Terminals.Last_Index
-                  then
-                     if Parser_State.Inc_Shared_Token then
-                        --  Inc_Shared_Token is only set False by 
McKenzie_Recover; see there
-                        --  for when/why. Don't increment past wisi_eoi 
(happens when input
-                        --  buffer is empty; test_mckenzie_recover.adb 
Empty_Comments).
-                        Parser_State.Shared_Token := Parser_State.Shared_Token 
+ 1;
-                     else
-                        Parser_State.Inc_Shared_Token := True;
-                     end if;
+                     elsif (if Parser_State.Inc_Shared_Token
+                            then Parser_State.Shared_Token + 1
+                            else Parser_State.Shared_Token) <= 
Shared_Parser.Terminals.Last_Index
+                     then
+                        if Parser_State.Inc_Shared_Token then
+                           --  Inc_Shared_Token is only set False by 
McKenzie_Recover; see there
+                           --  for when/why. Don't increment past wisi_eoi 
(happens when input
+                           --  buffer is empty; test_mckenzie_recover.adb 
Empty_Comments).
+                           Parser_State.Shared_Token := 
Parser_State.Shared_Token + 1;
+                        else
+                           Parser_State.Inc_Shared_Token := True;
+                        end if;
 
-                     Parser_State.Current_Token := 
Parser_State.Tree.Add_Terminal
-                       (Parser_State.Shared_Token, Shared_Parser.Terminals);
+                        Parser_State.Current_Token := Shared_Parser.Terminals
+                          (Parser_State.Shared_Token).Tree_Index;
 
-                  end if;
+                     end if;
+                  end;
 
                   if Trace_Parse > Extra then
                      Trace.Put_Line
@@ -542,7 +590,7 @@ package body WisiToken.Parse.LR.Parser is
             --  All parsers accepted or are zombies.
             declare
                Count : constant SAL.Base_Peek_Type := 
Shared_Parser.Parsers.Count;
-               Temp  : Parser_Lists.Cursor;
+               Current_Parser : Parser_Lists.Cursor := 
Shared_Parser.Parsers.First;
             begin
                if Count = 1 then
                   --  Nothing more to do
@@ -550,15 +598,17 @@ package body WisiToken.Parse.LR.Parser is
 
                elsif Zombie_Count + 1 = Count then
                   --  All but one are zombies
-                  Current_Parser := Shared_Parser.Parsers.First;
                   loop
                      if Current_Parser.Verb = Accept_It then
                         Current_Parser.Next;
                      else
-                        Temp := Current_Parser;
-                        Current_Parser.Next;
-                        Shared_Parser.Parsers.Terminate_Parser
-                          (Temp, "zombie", Shared_Parser.Trace.all, 
Shared_Parser.Terminals);
+                        declare
+                           Temp  : Parser_Lists.Cursor := Current_Parser;
+                        begin
+                           Current_Parser.Next;
+                           Shared_Parser.Parsers.Terminate_Parser
+                             (Temp, "zombie", Shared_Parser.Trace.all, 
Shared_Parser.Terminals);
+                        end;
                      end if;
                      exit when Current_Parser.Is_Done;
                   end loop;
@@ -574,8 +624,8 @@ package body WisiToken.Parse.LR.Parser is
                      Recover_Cost           : Integer;
                      Min_Recover_Cost       : Integer                   := 
Integer'Last;
                      Recover_Ops_Length     : Ada.Containers.Count_Type;
-                     Max_Recover_Ops_Length : Ada.Containers.Count_Type := 
Ada.Containers.Count_Type'First;
-                     Recover_Cur            : Parser_Lists.Cursor;
+                     Min_Recover_Ops_Length : Ada.Containers.Count_Type := 
Ada.Containers.Count_Type'Last;
+                     Recover_Cur            : Parser_Lists.Cursor       := 
Current_Parser;
                   begin
                      Current_Parser := Shared_Parser.Parsers.First;
                      loop
@@ -585,22 +635,23 @@ package body WisiToken.Parse.LR.Parser is
                            end if;
                            Current_Parser.Next;
                         else
-                           Temp := Current_Parser;
-                           Current_Parser.Next;
-                           Shared_Parser.Parsers.Terminate_Parser
-                             (Temp, "zombie", Shared_Parser.Trace.all, 
Shared_Parser.Terminals);
+                           declare
+                              Temp  : Parser_Lists.Cursor := Current_Parser;
+                           begin
+                              Current_Parser.Next;
+                              Shared_Parser.Parsers.Terminate_Parser
+                                (Temp, "zombie", Shared_Parser.Trace.all, 
Shared_Parser.Terminals);
+                           end;
                         end if;
                         exit when Current_Parser.Is_Done;
                      end loop;
 
                      if Error_Parser_Count > 0 then
                         --  There was at least one error. We assume that 
caused the ambiguous
-                        --  parse, and we pick the parser with the minimum 
cost and maximum
-                        --  recover ops length to allow the parse to succeed. 
We terminate the
-                        --  other parsers so the remaining parser executes 
actions. Among
-                        --  equal costs, we pick the maximum recover ops 
length because it's
-                        --  probably due to Minimal_Complete_Actions finishing 
a
-                        --  statement/declaration.
+                        --  parse, and we pick the parser with the minimum 
cost and minimum
+                        --  recover ops length (consistent with 
Duplicate_State) to allow the
+                        --  parse to succeed. We terminate the other parsers 
so the remaining
+                        --  parser can do Execute_Actions.
                         --
                         --  If there are multiple errors, this metric is not 
very meaningful.
                         --
@@ -610,13 +661,13 @@ package body WisiToken.Parse.LR.Parser is
                            Recover_Cost := Current_Parser.Min_Recover_Cost;
                            if Recover_Cost < Min_Recover_Cost then
                               Min_Recover_Cost       := Recover_Cost;
-                              Max_Recover_Ops_Length := 
Current_Parser.Max_Recover_Ops_Length;
+                              Min_Recover_Ops_Length := 
Current_Parser.Max_Recover_Ops_Length;
                               Recover_Cur            := Current_Parser;
 
                            elsif Recover_Cost = Min_Recover_Cost then
                               Recover_Ops_Length := 
Current_Parser.Max_Recover_Ops_Length;
-                              if Recover_Ops_Length > Max_Recover_Ops_Length 
then
-                                 Max_Recover_Ops_Length := Recover_Ops_Length;
+                              if Recover_Ops_Length < Min_Recover_Ops_Length 
then
+                                 Min_Recover_Ops_Length := Recover_Ops_Length;
                                  Recover_Cur    := Current_Parser;
                               end if;
                            end if;
@@ -629,10 +680,18 @@ package body WisiToken.Parse.LR.Parser is
                            if Current_Parser = Recover_Cur then
                               Current_Parser.Next;
                            else
-                              Temp := Current_Parser;
-                              Current_Parser.Next;
-                              Shared_Parser.Parsers.Terminate_Parser
-                                (Temp, "recover cost/length", 
Shared_Parser.Trace.all, Shared_Parser.Terminals);
+                              declare
+                                 Temp  : Parser_Lists.Cursor := Current_Parser;
+                              begin
+                                 Current_Parser.Next;
+                                 Shared_Parser.Parsers.Terminate_Parser
+                                   (Temp,
+                                    (if Recover_Cost = Min_Recover_Cost and 
then
+                                       Recover_Ops_Length = 
Min_Recover_Ops_Length
+                                     then "random"
+                                     else "recover cost/length"),
+                                    Shared_Parser.Trace.all, 
Shared_Parser.Terminals);
+                              end;
                            end if;
                            exit when Current_Parser.Is_Done;
                         end loop;
@@ -791,178 +850,179 @@ package body WisiToken.Parse.LR.Parser is
                   raise WisiToken.Syntax_Error;
                end if;
 
-               --  Immediately execute Do_Action for Current_Token, since it 
changed
-               --  in error recovery; this sets Parser.Verb. This replaces the
-               --  execution of Do_Action that resulted in Error.
-               Error_Recovered := True;
-
+               --  Recover sets Parser.Verb to Shift for all active parsers, to
+               --  indicate it no longer has an error. Set Current_Verb to 
reflect
+               --  that.
+               Current_Verb := Shift;
             end;
          end case;
 
          --  We don't use 'for Parser_State of Parsers loop' here,
          --  because terminate on error and spawn on conflict require
          --  changing the parser list.
-         Current_Parser := Shared_Parser.Parsers.First;
-         Action_Loop :
-         loop
-            exit Action_Loop when Current_Parser.Is_Done;
-
-            --  We don't check duplicate state during resume, because the 
tokens
-            --  inserted/deleted by error recover may cause initially duplicate
-            --  states to diverge.
-            if not Current_Parser.State_Ref.Resume_Active and
-              Shared_Parser.Terminate_Same_State and
-              Current_Verb = Shift and
-              (for all Parser of Shared_Parser.Parsers => 
Parser.Recover_Insert_Delete.Count = 0)
-            then
-               Shared_Parser.Parsers.Duplicate_State
-                 (Current_Parser, Shared_Parser.Trace.all, 
Shared_Parser.Terminals);
-               --  If Duplicate_State terminated Current_Parser, 
Current_Parser now
-               --  points to the next parser. Otherwise it is unchanged.
-            end if;
+         declare
+            Current_Parser : Parser_Lists.Cursor := 
Shared_Parser.Parsers.First;
+         begin
+            Action_Loop :
+            loop
+               exit Action_Loop when Current_Parser.Is_Done;
+
+               --  We don't check duplicate state during resume, because the 
tokens
+               --  inserted/deleted by error recover may cause initially 
duplicate
+               --  states to diverge.
+               if not Current_Parser.State_Ref.Resume_Active and
+                 Shared_Parser.Terminate_Same_State and
+                 Current_Verb = Shift
+               then
+                  Shared_Parser.Parsers.Duplicate_State
+                    (Current_Parser, Shared_Parser.Trace.all, 
Shared_Parser.Terminals);
+                  --  If Duplicate_State terminated Current_Parser, 
Current_Parser now
+                  --  points to the next parser. Otherwise it is unchanged.
+               end if;
 
-            exit Action_Loop when Current_Parser.Is_Done;
+               exit Action_Loop when Current_Parser.Is_Done;
 
-            if Trace_Parse > Extra then
-               if Error_Recovered then
-                  Trace.Put_Line (Integer'Image (Current_Parser.Label) & 
".error_recovered");
-               else
+               if Trace_Parse > Extra then
                   Trace.Put_Line
                     ("current_verb: " & Parse_Action_Verbs'Image 
(Current_Verb) &
                        "," & Integer'Image (Current_Parser.Label) &
                        ".verb: " & Parse_Action_Verbs'Image 
(Current_Parser.Verb));
                end if;
-            end if;
 
-            --  Each branch of the following 'if' calls either 
Current_Parser.Free
-            --  (which advances to the next parser) or Current_Parser.Next.
+               --  Each branch of the following 'if' calls either 
Current_Parser.Free
+               --  (which advances to the next parser) or Current_Parser.Next.
 
-            if Current_Parser.Verb = Error then
-               --  This parser is a zombie; see Check_Error above.
-               --
-               --  Check to see if it is time to terminate it
-               if Shared_Parser.Enable_McKenzie_Recover and then
-                 Current_Parser.State_Ref.Zombie_Token_Count <= 
Shared_Parser.Table.McKenzie_Param.Check_Limit
-               then
-                  if Trace_Parse > Detail then
-                     Trace.Put_Line (Integer'Image (Current_Parser.Label) & ": 
zombie");
-                  end if;
+               if Current_Parser.Verb = Error then
+                  --  This parser is a zombie; see Check_Error above.
+                  --
+                  --  Check to see if it is time to terminate it
+                  if Shared_Parser.Enable_McKenzie_Recover and then
+                    Current_Parser.State_Ref.Zombie_Token_Count <= 
Shared_Parser.Table.McKenzie_Param.Check_Limit
+                  then
+                     if Trace_Parse > Detail then
+                        Trace.Put_Line (Integer'Image (Current_Parser.Label) & 
": zombie");
+                     end if;
 
-                  Current_Parser.Next;
-               else
-                  Shared_Parser.Parsers.Terminate_Parser
-                    (Current_Parser, "zombie", Shared_Parser.Trace.all, 
Shared_Parser.Terminals);
-               end if;
+                     Current_Parser.Next;
+                  else
+                     Shared_Parser.Parsers.Terminate_Parser
+                       (Current_Parser, "zombie", Shared_Parser.Trace.all, 
Shared_Parser.Terminals);
+                  end if;
 
-            elsif Current_Parser.Verb = Current_Verb or Error_Recovered then
+               elsif Current_Parser.Verb = Current_Verb then
 
-               if Trace_Parse > Extra then
-                  Parser_Lists.Put_Top_10 (Trace, Current_Parser);
-               end if;
+                  if Trace_Parse > Extra then
+                     Parser_Lists.Put_Top_10 (Trace, Current_Parser);
+                  end if;
 
-               declare
-                  State : Parser_Lists.Parser_State renames 
Current_Parser.State_Ref.Element.all;
-               begin
-                  Action := Action_For
-                    (Table => Shared_Parser.Table.all,
-                     State => State.Stack.Peek.State,
-                     ID    => State.Tree.ID (State.Current_Token));
-               end;
+                  declare
+                     State : Parser_Lists.Parser_State renames 
Current_Parser.State_Ref.Element.all;
+                  begin
+                     Action := Action_For
+                       (Table => Shared_Parser.Table.all,
+                        State => State.Stack.Peek.State,
+                        ID    => State.Tree.ID (State.Current_Token));
+                  end;
 
-               declare
-                  Conflict : Parse_Action_Node_Ptr := Action.Next;
-               begin
-                  loop
-                     exit when Conflict = null;
-                     --  Spawn a new parser (before modifying Current_Parser 
stack).
+                  declare
+                     Conflict : Parse_Action_Node_Ptr := Action.Next;
+                  begin
+                     loop
+                        exit when Conflict = null;
+                        --  Spawn a new parser (before modifying 
Current_Parser stack).
 
-                     Current_Parser.State_Ref.Conflict_During_Resume := 
Current_Parser.State_Ref.Resume_Active;
+                        Current_Parser.State_Ref.Conflict_During_Resume := 
Current_Parser.State_Ref.Resume_Active;
 
-                     if Shared_Parser.Parsers.Count = 
Shared_Parser.Max_Parallel then
-                        --  If errors were recovered, terminate a parser that 
used the
-                        --  highest cost solution.
-                        declare
-                           use all type WisiToken.Parse.LR.Parser_Lists.Cursor;
-                           Max_Recover_Cost : Integer             := 0;
-                           Max_Parser       : Parser_Lists.Cursor;
-                           Cur              : Parser_Lists.Cursor := 
Shared_Parser.Parsers.First;
-                        begin
-                           loop
-                              exit when Cur.Is_Done;
-                              if Cur.Total_Recover_Cost > Max_Recover_Cost then
-                                 Max_Parser       := Cur;
-                                 Max_Recover_Cost := Cur.Total_Recover_Cost;
+                        if Shared_Parser.Parsers.Count = 
Shared_Parser.Max_Parallel then
+                           --  If errors were recovered, terminate a parser 
that used the
+                           --  highest cost solution.
+                           declare
+                              use all type 
WisiToken.Parse.LR.Parser_Lists.Cursor;
+                              Max_Recover_Cost : Integer             := 0;
+                              Cur              : Parser_Lists.Cursor := 
Shared_Parser.Parsers.First;
+                              Max_Parser       : Parser_Lists.Cursor := Cur;
+                           begin
+                              loop
+                                 exit when Cur.Is_Done;
+                                 if Cur.Total_Recover_Cost > Max_Recover_Cost 
then
+                                    Max_Parser       := Cur;
+                                    Max_Recover_Cost := Cur.Total_Recover_Cost;
+                                 end if;
+                                 Cur.Next;
+                              end loop;
+
+                              if Max_Recover_Cost > 0 then
+                                 if Max_Parser = Current_Parser then
+                                    Current_Parser.Next;
+
+                                    Shared_Parser.Parsers.Terminate_Parser
+                                      (Max_Parser, "too many parsers; max 
error repair cost", Trace,
+                                       Shared_Parser.Terminals);
+
+                                    --  We changed Current_Parser, so start 
over
+                                    goto Continue_Action_Loop;
+                                 else
+                                    Shared_Parser.Parsers.Terminate_Parser
+                                      (Max_Parser, "too many parsers; max 
error repair cost", Trace,
+                                       Shared_Parser.Terminals);
+                                 end if;
                               end if;
-                              Cur.Next;
-                           end loop;
+                           end;
+                        end if;
 
-                           if Max_Recover_Cost > 0 then
-                              if Max_Parser = Current_Parser then
-                                 Current_Parser.Next;
-                                 Shared_Parser.Parsers.Terminate_Parser
-                                   (Current_Parser, "too many parsers; max 
error repair cost", Trace,
-                                    Shared_Parser.Terminals);
-                                 exit Action_Loop;
-                              else
-                                 Shared_Parser.Parsers.Terminate_Parser
-                                   (Max_Parser, "too many parsers; max error 
repair cost", Trace,
-                                    Shared_Parser.Terminals);
-                              end if;
+                        if Shared_Parser.Parsers.Count = 
Shared_Parser.Max_Parallel then
+                           declare
+                              Parser_State : Parser_Lists.Parser_State renames 
Current_Parser.State_Ref;
+                              Token : Base_Token renames 
Shared_Parser.Terminals (Parser_State.Shared_Token);
+                           begin
+                              raise WisiToken.Parse_Error with Error_Message
+                                (Shared_Parser.Lexer.File_Name, Token.Line, 
Token.Column,
+                                 "too many parallel parsers required in 
grammar state" &
+                                   State_Index'Image 
(Parser_State.Stack.Peek.State) &
+                                   "; simplify grammar, or increase 
max-parallel (" &
+                                   SAL.Base_Peek_Type'Image 
(Shared_Parser.Max_Parallel) & ")");
+                           end;
+
+                        else
+                           if Trace_Parse > Outline then
+                              declare
+                                 Parser_State : Parser_Lists.Parser_State 
renames Current_Parser.State_Ref;
+                              begin
+                                 Trace.Put_Line
+                                   (Integer'Image (Current_Parser.Label) & ": 
" &
+                                      Trimmed_Image 
(Parser_State.Stack.Peek.State) & ": " &
+                                      Parser_State.Tree.Image
+                                        (Parser_State.Current_Token, 
Trace.Descriptor.all) & " : " &
+                                      "spawn" & Integer'Image 
(Shared_Parser.Parsers.Last_Label + 1) & ", (" &
+                                      Trimmed_Image (1 + Integer 
(Shared_Parser.Parsers.Count)) & " active)");
+                              end;
                            end if;
-                        end;
-                     end if;
 
-                     if Shared_Parser.Parsers.Count = 
Shared_Parser.Max_Parallel then
-                        declare
-                           Parser_State : Parser_Lists.Parser_State renames 
Current_Parser.State_Ref;
-                           Token : Base_Token renames Shared_Parser.Terminals 
(Parser_State.Shared_Token);
-                        begin
-                           raise WisiToken.Parse_Error with Error_Message
-                             (Shared_Parser.Lexer.File_Name, Token.Line, 
Token.Column,
-                              "too many parallel parsers required in grammar 
state" &
-                                State_Index'Image 
(Parser_State.Stack.Peek.State) &
-                                "; simplify grammar, or increase max-parallel 
(" &
-                                SAL.Base_Peek_Type'Image 
(Shared_Parser.Max_Parallel) & ")");
-                        end;
+                           Shared_Parser.Parsers.Prepend_Copy (Current_Parser);
+                           Do_Action (Conflict.Item, 
Shared_Parser.Parsers.First, Shared_Parser);
 
-                     else
-                        if Trace_Parse > Outline then
+                           --  We must terminate error parsers immediately in 
order to avoid
+                           --  zombie parsers during recovery.
                            declare
-                              Parser_State : Parser_Lists.Parser_State renames 
Current_Parser.State_Ref;
+                              Temp : Parser_Lists.Cursor := 
Shared_Parser.Parsers.First;
                            begin
-                              Trace.Put_Line
-                                (Integer'Image (Current_Parser.Label) & ": " &
-                                   Trimmed_Image 
(Parser_State.Stack.Peek.State) & ": " &
-                                   Parser_State.Tree.Image 
(Parser_State.Current_Token, Trace.Descriptor.all) & " : " &
-                                   "spawn" & Integer'Image 
(Shared_Parser.Parsers.Last_Label + 1) & ", (" &
-                                   Trimmed_Image (1 + Integer 
(Shared_Parser.Parsers.Count)) & " active)");
+                              Check_Error (Temp);
                            end;
                         end if;
 
-                        Shared_Parser.Parsers.Prepend_Copy (Current_Parser);
-                        Do_Action (Conflict.Item, Shared_Parser.Parsers.First, 
Shared_Parser);
-
-                        --  We must terminate error parsers immediately in 
order to avoid
-                        --  zombie parsers during recovery.
-                        declare
-                           Temp : Parser_Lists.Cursor := 
Shared_Parser.Parsers.First;
-                        begin
-                           Check_Error (Temp);
-                        end;
-                     end if;
-
-                     Conflict := Conflict.Next;
-                  end loop;
-               end;
-               Do_Action (Action.Item, Current_Parser, Shared_Parser);
-               Check_Error (Current_Parser);
+                        Conflict := Conflict.Next;
+                     end loop;
+                  end;
+                  Do_Action (Action.Item, Current_Parser, Shared_Parser);
+                  Check_Error (Current_Parser);
 
-            else
-               --  Current parser is waiting for others to catch up
-               Current_Parser.Next;
-            end if;
-         end loop Action_Loop;
-         Error_Recovered := False;
+               else
+                  --  Current parser is waiting for others to catch up
+                  Current_Parser.Next;
+               end if;
+               <<Continue_Action_Loop>>
+            end loop Action_Loop;
+         end;
       end loop Main_Loop;
 
       if Trace_Parse > Outline then
@@ -998,7 +1058,8 @@ package body WisiToken.Parse.LR.Parser is
          end if;
 
          if Debug_Mode then
-            Ada.Text_IO.Put_Line (GNAT.Traceback.Symbolic.Symbolic_Traceback 
(E));
+            Trace.Put_Line (GNAT.Traceback.Symbolic.Symbolic_Traceback (E)); 
-- includes Prefix
+            Trace.New_Line;
          end if;
 
          --  Emacs displays the exception message in the echo area; easy to 
miss
@@ -1015,8 +1076,19 @@ package body WisiToken.Parse.LR.Parser is
       end if;
    end Tree;
 
+   overriding function Tree_Var_Ref (Shared_Parser : aliased in out Parser) 
return Syntax_Trees.Tree_Variable_Reference
+   is begin
+      if Shared_Parser.Parsers.Count > 1 then
+         raise WisiToken.Parse_Error with "ambigous parse";
+      else
+         return (Element => Shared_Parser.Parsers.First_State_Ref.Tree'Access);
+      end if;
+   end Tree_Var_Ref;
+
    overriding
-   procedure Execute_Actions (Parser : in out LR.Parser.Parser)
+   procedure Execute_Actions
+     (Parser          : in out LR.Parser.Parser;
+      Image_Augmented : in     Syntax_Trees.Image_Augmented := null)
    is
       use all type Syntax_Trees.User_Data_Access;
       use all type WisiToken.Syntax_Trees.Semantic_Action;
@@ -1025,7 +1097,7 @@ package body WisiToken.Parse.LR.Parser is
 
       procedure Process_Node
         (Tree : in out Syntax_Trees.Tree;
-         Node : in     Syntax_Trees.Valid_Node_Index)
+         Node : in     Valid_Node_Index)
       is
          use all type Syntax_Trees.Node_Label;
       begin
@@ -1034,7 +1106,7 @@ package body WisiToken.Parse.LR.Parser is
          end if;
 
          declare
-            Tree_Children : constant Syntax_Trees.Valid_Node_Index_Array := 
Tree.Children (Node);
+            Tree_Children : constant Valid_Node_Index_Array := Tree.Children 
(Node);
          begin
             Parser.User_Data.Reduce (Tree, Node, Tree_Children);
             if Tree.Action (Node) /= null then
@@ -1043,7 +1115,7 @@ package body WisiToken.Parse.LR.Parser is
                exception
                when E : others =>
                   declare
-                     Token : Base_Token renames Parser.Terminals 
(Tree.Min_Terminal_Index (Node));
+                     Token : Base_Token renames Parser.Terminals 
(Tree.First_Shared_Terminal (Node));
                   begin
                      raise WisiToken.Parse_Error with Error_Message
                        (Parser.Lexer.File_Name, Token.Line, Token.Column,
@@ -1062,31 +1134,36 @@ package body WisiToken.Parse.LR.Parser is
          end if;
 
          declare
-            use Config_Op_Arrays, Config_Op_Array_Refs;
+            use Recover_Op_Arrays, Recover_Op_Array_Refs;
             Parser_State : Parser_Lists.Parser_State renames 
Parser.Parsers.First_State_Ref;
          begin
+            pragma Assert (Parser_State.Tree.Flushed);
+
+            Parser_State.Tree.Set_Parents;
+
             if Trace_Action > Outline then
                if Trace_Action > Extra then
-                  Parser_State.Tree.Print_Tree (Descriptor, 
Parser_State.Tree.Root);
+                  Parser_State.Tree.Print_Tree (Descriptor, 
Parser_State.Tree.Root, Image_Augmented);
+                  Parser.Trace.New_Line;
                end if;
                Parser.Trace.Put_Line
                  (Integer'Image (Parser_State.Label) & ": root node: " & 
Parser_State.Tree.Image
                     (Parser_State.Tree.Root, Descriptor));
             end if;
 
-            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;
-               end loop;
+            for I in First_Index (Parser_State.Recover_Insert_Delete) ..
+              Last_Index (Parser_State.Recover_Insert_Delete)
+            loop
+               declare
+                  Op : Recover_Op renames Constant_Ref 
(Parser_State.Recover_Insert_Delete, I);
+               begin
+                  case Op.Op is
+                  when Insert =>
+                     Parser.User_Data.Insert_Token (Parser_State.Tree, 
Op.Ins_Tree_Node);
+                  when Delete =>
+                     Parser.User_Data.Delete_Token (Parser_State.Tree, 
Op.Del_Token_Index);
+                  end case;
+               end;
             end loop;
 
             Parser.User_Data.Initialize_Actions (Parser_State.Tree);
@@ -1121,7 +1198,7 @@ package body WisiToken.Parse.LR.Parser is
          case Item.Label is
          when Action =>
             declare
-               Index : constant Base_Token_Index := 
Parser_State.Tree.Min_Terminal_Index (Item.Error_Token);
+               Index : constant Base_Token_Index := 
Parser_State.Tree.First_Shared_Terminal (Item.Error_Token);
             begin
                if Index = Invalid_Token_Index then
                   --  Error_Token is virtual
diff --git a/packages/wisi/wisitoken-parse-lr-parser.ads 
b/packages/wisi/wisitoken-parse-lr-parser.ads
index 18f476e..46626fd 100644
--- a/packages/wisi/wisitoken-parse-lr-parser.ads
+++ b/packages/wisi/wisitoken-parse-lr-parser.ads
@@ -5,7 +5,7 @@
 --  In a child package of Parser.LR partly for historical reasons,
 --  partly to allow McKenzie_Recover to be in a sibling package.
 --
---  Copyright (C) 2002, 2003, 2009, 2010, 2013-2015, 2017 - 2019 Free Software 
Foundation, Inc.
+--  Copyright (C) 2002, 2003, 2009, 2010, 2013-2015, 2017 - 2020 Free Software 
Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -141,10 +141,13 @@ package WisiToken.Parse.LR.Parser is
    --  an appropriate error message.
 
    overriding function Tree (Shared_Parser : in Parser) return 
Syntax_Trees.Tree;
+   overriding function Tree_Var_Ref (Shared_Parser : aliased in out Parser) 
return Syntax_Trees.Tree_Variable_Reference;
    --  If there is one parser in Parsers, return its tree. Otherwise,
    --  raise Parse_Error for an ambiguous parse.
 
-   overriding procedure Execute_Actions (Parser : in out LR.Parser.Parser);
+   overriding procedure Execute_Actions
+     (Parser          : in out LR.Parser.Parser;
+      Image_Augmented : in     Syntax_Trees.Image_Augmented := null);
    --  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.
diff --git a/packages/wisi/wisitoken-parse-lr-parser_lists.adb 
b/packages/wisi/wisitoken-parse-lr-parser_lists.adb
index 480e86f..553f772 100644
--- a/packages/wisi/wisitoken-parse-lr-parser_lists.adb
+++ b/packages/wisi/wisitoken-parse-lr-parser_lists.adb
@@ -2,7 +2,7 @@
 --
 --  see spec
 --
---  Copyright (C) 2014 - 2019  All Rights Reserved.
+--  Copyright (C) 2014 - 2020  All Rights Reserved.
 --
 --  The WisiToken package is free software; you can redistribute it
 --  and/or modify it under terms of the GNU General Public License as
@@ -38,7 +38,6 @@ package body WisiToken.Parse.LR.Parser_Lists is
    begin
       for I in 1 .. Last loop
          declare
-            use all type WisiToken.Syntax_Trees.Node_Index;
             Item : Parser_Stack_Item renames Stack.Peek (I);
          begin
             Result := Result &
@@ -46,7 +45,7 @@ package body WisiToken.Parse.LR.Parser_Lists is
                  (if I = Stack.Depth
                   then ""
                   else
-                    (if Item.Token = Syntax_Trees.Invalid_Node_Index -- From 
recover fast-forward
+                    (if Item.Token = Invalid_Node_Index -- From recover 
fast-forward
                      then ""
                      else Tree.Image (Item.Token, Descriptor) & ", ")));
          end;
@@ -96,11 +95,6 @@ package body WisiToken.Parse.LR.Parser_Lists is
       return Cursor.Ptr = No_Element;
    end Is_Done;
 
-   function Active_Parser_Count (Cursor : in Parser_Lists.Cursor) return 
SAL.Base_Peek_Type
-   is begin
-      return Cursor.Elements.Length;
-   end Active_Parser_Count;
-
    function Label (Cursor : in Parser_Lists.Cursor) return Natural
    is begin
       return Parser_State_Lists.Constant_Ref (Cursor.Ptr).Label;
@@ -162,17 +156,25 @@ package body WisiToken.Parse.LR.Parser_Lists is
       Terminals : in     Base_Token_Arrays.Vector)
    is
       State : Parser_State renames Parser_State_Lists.Constant_Ref 
(Current.Ptr).Element.all;
+
+      procedure Free (Cursor : in out Parser_Lists.Cursor'Class)
+      is
+         Temp : Parser_State_Lists.Cursor := Cursor.Ptr;
+      begin
+         Parser_State_Lists.Next (Cursor.Ptr);
+         Parser_State_Lists.Delete (Cursor.Elements.all, Temp);
+      end Free;
    begin
       if Trace_Parse > Outline then
          Trace.Put_Line
            (Integer'Image (Current.Label) & ": terminate (" &
               Trimmed_Image (Integer (Parsers.Count) - 1) & " active)" &
               ": " & Message & Image
-                (State.Tree.Min_Terminal_Index (State.Current_Token),
+                (State.Tree.First_Shared_Terminal (State.Current_Token),
                  Terminals, Trace.Descriptor.all));
       end if;
 
-      Current.Free;
+      Free (Current);
 
       if Parsers.Count = 1 then
          Parsers.First.State_Ref.Tree.Flush;
@@ -244,6 +246,7 @@ package body WisiToken.Parse.LR.Parser_Lists is
             if Other.Max_Recover_Ops_Length = Current.Max_Recover_Ops_Length 
then
                Parsers.Terminate_Parser (Other, "duplicate state: random", 
Trace, Terminals);
             else
+               --  Keep the minimum ops length
                if Other.Max_Recover_Ops_Length > 
Current.Max_Recover_Ops_Length then
                   null;
                else
@@ -305,37 +308,29 @@ package body WisiToken.Parse.LR.Parser_Lists is
          --  override a few, to avoid copying large items like Recover.
          --  We copy Recover.Enqueue_Count .. Check_Count for unit tests.
          New_Item :=
-           (Shared_Token           => Item.Shared_Token,
-            Recover_Insert_Delete  => Item.Recover_Insert_Delete,
-            Prev_Deleted           => Item.Prev_Deleted,
-            Current_Token          => Item.Current_Token,
-            Inc_Shared_Token       => Item.Inc_Shared_Token,
-            Stack                  => Item.Stack,
-            Tree                   => Item.Tree,
-            Recover                =>
-              (Enqueue_Count       => Item.Recover.Enqueue_Count,
-               Config_Full_Count   => Item.Recover.Config_Full_Count,
-               Check_Count         => Item.Recover.Check_Count,
-               others              => <>),
-            Resume_Active          => Item.Resume_Active,
-            Resume_Token_Goal      => Item.Resume_Token_Goal,
-            Conflict_During_Resume => Item.Conflict_During_Resume,
-            Zombie_Token_Count     => 0,
-            Errors                 => Item.Errors,
-            Label                  => List.Parser_Label,
-            Verb                   => Item.Verb);
+           (Shared_Token                  => Item.Shared_Token,
+            Recover_Insert_Delete         => Item.Recover_Insert_Delete,
+            Recover_Insert_Delete_Current => 
Item.Recover_Insert_Delete_Current,
+            Current_Token                 => Item.Current_Token,
+            Inc_Shared_Token              => Item.Inc_Shared_Token,
+            Stack                         => Item.Stack,
+            Tree                          => Item.Tree,
+            Recover                       =>
+              (Enqueue_Count              => Item.Recover.Enqueue_Count,
+               Config_Full_Count          => Item.Recover.Config_Full_Count,
+               Check_Count                => Item.Recover.Check_Count,
+               others                     => <>),
+            Resume_Active                 => Item.Resume_Active,
+            Resume_Token_Goal             => Item.Resume_Token_Goal,
+            Conflict_During_Resume        => Item.Conflict_During_Resume,
+            Zombie_Token_Count            => 0,
+            Errors                        => Item.Errors,
+            Label                         => List.Parser_Label,
+            Verb                          => Item.Verb);
       end;
       List.Elements.Prepend (New_Item);
    end Prepend_Copy;
 
-   procedure Free (Cursor : in out Parser_Lists.Cursor'Class)
-   is
-      Temp : Parser_State_Lists.Cursor := Cursor.Ptr;
-   begin
-      Parser_State_Lists.Next (Cursor.Ptr);
-      Parser_State_Lists.Delete (Cursor.Elements.all, Temp);
-   end Free;
-
    ----------
    --  stuff for iterators
 
@@ -369,11 +364,8 @@ package body WisiToken.Parse.LR.Parser_Lists is
       return State_Access (Parser_State_Lists.Persistent_Ref (Position.Ptr));
    end Persistent_State_Ref;
 
-   type List_Access is access all List;
-
-   type Iterator is new Iterator_Interfaces.Forward_Iterator with record
-      Container : List_Access;
-   end record;
+   type Iterator (Elements : access Parser_State_Lists.List) is new 
Iterator_Interfaces.Forward_Iterator
+     with null record;
 
    overriding function First (Object : Iterator) return Parser_Node_Access;
    overriding function Next
@@ -383,7 +375,7 @@ package body WisiToken.Parse.LR.Parser_Lists is
 
    overriding function First (Object : Iterator) return Parser_Node_Access
    is begin
-      return (Elements => Object.Container.Elements'Access, Ptr => 
Object.Container.Elements.First);
+      return (Elements => Object.Elements, Ptr => Object.Elements.First);
    end First;
 
    overriding function Next
@@ -398,7 +390,7 @@ package body WisiToken.Parse.LR.Parser_Lists is
 
    function Iterate (Container : aliased in out List) return 
Iterator_Interfaces.Forward_Iterator'Class
    is begin
-      return Iterator'(Container => Container'Access);
+      return Iterator'(Elements => Container.Elements'Access);
    end Iterate;
 
    function Has_Element (Iterator : in Parser_Node_Access) return Boolean
diff --git a/packages/wisi/wisitoken-parse-lr-parser_lists.ads 
b/packages/wisi/wisitoken-parse-lr-parser_lists.ads
index 19aa370..6a77e6c 100644
--- a/packages/wisi/wisitoken-parse-lr-parser_lists.ads
+++ b/packages/wisi/wisitoken-parse-lr-parser_lists.ads
@@ -2,7 +2,7 @@
 --
 --  Generalized LR parser state.
 --
---  Copyright (C) 2014-2015, 2017 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2014-2015, 2017 - 2020 Free Software Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -28,7 +28,7 @@ package WisiToken.Parse.LR.Parser_Lists is
 
    type Parser_Stack_Item is record
       State : Unknown_State_Index     := Unknown_State;
-      Token : Syntax_Trees.Node_Index := Syntax_Trees.Invalid_Node_Index;
+      Token : Node_Index := Invalid_Node_Index;
    end record;
 
    package Parser_Stacks is new SAL.Gen_Unbounded_Definite_Stacks 
(Parser_Stack_Item);
@@ -58,16 +58,19 @@ package WisiToken.Parse.LR.Parser_Lists is
       Shared_Token : Base_Token_Index := Invalid_Token_Index;
       --  Last token read from Shared_Parser.Terminals.
 
-      Recover_Insert_Delete : Config_Op_Queues.Queue;
-      --  Tokens in that were inserted during error recovery, or should be
-      --  deleted/skipped when read. Contains only Insert and Delete ops.
-      --  Used/emptied by main parse.
+      Recover_Insert_Delete : aliased Recover_Op_Arrays.Vector;
+      --  Tokens that were inserted or deleted during error recovery.
+      --  Contains only Insert and Delete ops. Filled by error recover, used
+      --  by main parse and Execute_Actions.
+      --
+      --  Not emptied between error recovery sessions, so Execute_Actions
+      --  knows about all insert/delete.
 
-      Prev_Deleted : Recover_Token_Index_Arrays.Vector;
-      --  Tokens deleted by previous error recovery; don't process in new
-      --  error recovery.
+      Recover_Insert_Delete_Current : Recover_Op_Arrays.Extended_Index := 
Recover_Op_Arrays.No_Index;
+      --  Next item in Recover_Insert_Delete to be processed by main parse;
+      --  No_Index if all done.
 
-      Current_Token : Syntax_Trees.Node_Index := 
Syntax_Trees.Invalid_Node_Index;
+      Current_Token : Node_Index := Invalid_Node_Index;
       --  Current terminal, in Tree
 
       Inc_Shared_Token : Boolean := True;
@@ -76,7 +79,7 @@ package WisiToken.Parse.LR.Parser_Lists is
       --  There is no need to use a branched stack; max stack length is
       --  proportional to source text nesting depth, not source text length.
 
-      Tree : Syntax_Trees.Tree;
+      Tree : aliased Syntax_Trees.Tree;
       --  We use a branched tree to avoid copying large trees for each
       --  spawned parser; tree size is proportional to source text size. In
       --  normal parsing, parallel parsers are short-lived; they each process
@@ -120,15 +123,12 @@ package WisiToken.Parse.LR.Parser_Lists is
 
    function Count (List : in Parser_Lists.List) return SAL.Base_Peek_Type;
 
-   type Cursor is tagged private;
+   type Cursor (<>) is tagged private;
 
    function First (List : aliased in out Parser_Lists.List'Class) return 
Cursor;
    procedure Next (Cursor : in out Parser_Lists.Cursor);
    function Is_Done (Cursor : in Parser_Lists.Cursor) return Boolean;
    function Has_Element (Cursor : in Parser_Lists.Cursor) return Boolean is 
(not Is_Done (Cursor));
-
-   function Active_Parser_Count (Cursor : in Parser_Lists.Cursor) return 
SAL.Base_Peek_Type;
-
    function Label (Cursor : in Parser_Lists.Cursor) return Natural;
    function Total_Recover_Cost (Cursor : in Parser_Lists.Cursor) return 
Integer;
    function Max_Recover_Ops_Length (Cursor : in Parser_Lists.Cursor) return 
Ada.Containers.Count_Type;
@@ -161,16 +161,19 @@ package WisiToken.Parse.LR.Parser_Lists is
    type State_Reference (Element : not null access Parser_State) is null record
    with Implicit_Dereference => Element;
 
-   function State_Ref (Position : in Cursor) return State_Reference;
+   function State_Ref (Position : in Cursor) return State_Reference
+   with Pre => Has_Element (Position);
    --  Direct access to visible components of Parser_State
 
-   function First_State_Ref (List : in Parser_Lists.List'Class) return 
State_Reference;
+   function First_State_Ref (List : in Parser_Lists.List'Class) return 
State_Reference
+   with Pre => List.Count > 0;
    --  Direct access to visible components of first parser's Parser_State
 
    type Constant_State_Reference (Element : not null access constant 
Parser_State) is null record
    with Implicit_Dereference => Element;
 
-   function First_Constant_State_Ref (List : in Parser_Lists.List'Class) 
return Constant_State_Reference;
+   function First_Constant_State_Ref (List : in Parser_Lists.List'Class) 
return Constant_State_Reference
+   with Pre => List.Count > 0;
    --  Direct access to visible components of first parser's Parser_State
 
    procedure Put_Top_10 (Trace : in out WisiToken.Trace'Class; Cursor : in 
Parser_Lists.Cursor);
@@ -182,10 +185,6 @@ package WisiToken.Parse.LR.Parser_Lists is
    --
    --  Copy.Recover is set to default.
 
-   procedure Free (Cursor : in out Parser_Lists.Cursor'Class);
-   --  Delete the Cursor parser. It will not appear in future
-   --  iterations. On return, Cursor points to next parser, or none.
-
    ----------
    --  Stuff for iterators, to allow
    --  'for Parser of Parsers loop'
@@ -214,7 +213,7 @@ package WisiToken.Parse.LR.Parser_Lists is
    --     ... Current_Parser.<visible parser_state component> ...
    --  end loop;
 
-   type Parser_Node_Access is private;
+   type Parser_Node_Access (<>) is private;
 
    function To_Cursor (Ptr : in Parser_Node_Access) return Cursor;
 
@@ -262,14 +261,14 @@ private
       Parser_Label : Natural; -- label of last added parser.
    end record;
 
-   type Cursor is tagged record
-      Elements : access Parser_State_Lists.List;
-      Ptr      : Parser_State_Lists.Cursor;
+   type Cursor (Elements : access Parser_State_Lists.List) is tagged
+   record
+      Ptr : Parser_State_Lists.Cursor;
    end record;
 
-   type Parser_Node_Access is record
-      Elements : access Parser_State_Lists.List;
-      Ptr      : Parser_State_Lists.Cursor;
+   type Parser_Node_Access (Elements : access Parser_State_Lists.List) is
+   record
+      Ptr : Parser_State_Lists.Cursor;
    end record;
 
 end WisiToken.Parse.LR.Parser_Lists;
diff --git a/packages/wisi/wisitoken-parse-lr-parser_no_recover.adb 
b/packages/wisi/wisitoken-parse-lr-parser_no_recover.adb
index 7943aab..5e23b7c 100644
--- a/packages/wisi/wisitoken-parse-lr-parser_no_recover.adb
+++ b/packages/wisi/wisitoken-parse-lr-parser_no_recover.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2002 - 2005, 2008 - 2015, 2017 - 2019 Free Software 
Foundation, Inc.
+--  Copyright (C) 2002 - 2005, 2008 - 2015, 2017 - 2020 Free Software 
Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -33,11 +33,11 @@ package body WisiToken.Parse.LR.Parser_No_Recover is
    procedure Reduce_Stack_1
      (Current_Parser : in     Parser_Lists.Cursor;
       Action         : in     Reduce_Action_Rec;
-      Nonterm        :    out WisiToken.Syntax_Trees.Valid_Node_Index;
+      Nonterm        :    out Valid_Node_Index;
       Trace          : in out WisiToken.Trace'Class)
    is
       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));
+      Children_Tree : Valid_Node_Index_Array (1 .. SAL.Base_Peek_Type 
(Action.Token_Count));
       --  for Set_Children.
    begin
       for I in reverse Children_Tree'Range loop
@@ -60,7 +60,7 @@ package body WisiToken.Parse.LR.Parser_No_Recover is
    is
       Parser_State : Parser_Lists.Parser_State renames 
Current_Parser.State_Ref;
       Trace        : WisiToken.Trace'Class renames Shared_Parser.Trace.all;
-      Nonterm      : WisiToken.Syntax_Trees.Valid_Node_Index;
+      Nonterm      : Valid_Node_Index;
    begin
       if Trace_Parse > Detail then
          Trace.Put
@@ -233,9 +233,8 @@ package body WisiToken.Parse.LR.Parser_No_Recover is
 
       Trace : WisiToken.Trace'Class renames Shared_Parser.Trace.all;
 
-      Current_Verb   : All_Parse_Action_Verbs;
-      Current_Parser : Parser_Lists.Cursor;
-      Action         : Parse_Action_Node_Ptr;
+      Current_Verb : All_Parse_Action_Verbs;
+      Action       : Parse_Action_Node_Ptr;
 
       procedure Check_Error (Check_Parser : in out Parser_Lists.Cursor)
       is begin
@@ -260,13 +259,13 @@ package body WisiToken.Parse.LR.Parser_No_Recover is
          Shared_Parser.User_Data.Reset;
       end if;
 
-      Shared_Parser.Lex_All;
-
       Shared_Parser.Shared_Tree.Clear;
 
       Shared_Parser.Parsers := Parser_Lists.New_List
         (Shared_Tree => Shared_Parser.Shared_Tree'Unchecked_Access);
 
+      Shared_Parser.Lex_All;
+
       Shared_Parser.Parsers.First.State_Ref.Stack.Push 
((Shared_Parser.Table.State_First, others => <>));
 
       Main_Loop :
@@ -281,8 +280,8 @@ package body WisiToken.Parse.LR.Parser_No_Recover is
 
             for Parser_State of Shared_Parser.Parsers loop
                Parser_State.Shared_Token  := Parser_State.Shared_Token + 1;
-               Parser_State.Current_Token := Parser_State.Tree.Add_Terminal
-                 (Parser_State.Shared_Token, Shared_Parser.Terminals);
+               Parser_State.Current_Token := Shared_Parser.Terminals
+                          (Parser_State.Shared_Token).Tree_Index;
             end loop;
 
          when Accept_It =>
@@ -326,100 +325,104 @@ package body WisiToken.Parse.LR.Parser_No_Recover is
          --  We don't use 'for Parser_State of Parsers loop' here,
          --  because terminate on error and spawn on conflict require
          --  changing the parser list.
-         Current_Parser := Shared_Parser.Parsers.First;
-         loop
-            exit when Current_Parser.Is_Done;
-
-            if Shared_Parser.Terminate_Same_State and
-              Current_Verb = Shift
-            then
-               Shared_Parser.Parsers.Duplicate_State
-                 (Current_Parser, Shared_Parser.Trace.all, 
Shared_Parser.Terminals);
-               --  If Duplicate_State terminated Current_Parser, 
Current_Parser now
-               --  points to the next parser. Otherwise it is unchanged.
-            end if;
-
-            exit when Current_Parser.Is_Done;
-
-            if Trace_Parse > Extra then
-               Trace.Put_Line
-                 ("current_verb: " & Parse_Action_Verbs'Image (Current_Verb) &
-                    "," & Integer'Image (Current_Parser.Label) &
-                    ".verb: " & Parse_Action_Verbs'Image 
(Current_Parser.Verb));
-            end if;
+         declare
+            Current_Parser : Parser_Lists.Cursor := 
Shared_Parser.Parsers.First;
+         begin
+            loop
+               exit when Current_Parser.Is_Done;
+
+               if Shared_Parser.Terminate_Same_State and
+                 Current_Verb = Shift
+               then
+                  Shared_Parser.Parsers.Duplicate_State
+                    (Current_Parser, Shared_Parser.Trace.all, 
Shared_Parser.Terminals);
+                  --  If Duplicate_State terminated Current_Parser, 
Current_Parser now
+                  --  points to the next parser. Otherwise it is unchanged.
+               end if;
 
-            --  Each branch of the following 'if' calls either 
Current_Parser.Free
-            --  (which advances to the next parser) or Current_Parser.Next.
+               exit when Current_Parser.Is_Done;
 
-            if Current_Parser.Verb = Current_Verb then
                if Trace_Parse > Extra then
-                  Parser_Lists.Put_Top_10 (Trace, Current_Parser);
+                  Trace.Put_Line
+                    ("current_verb: " & Parse_Action_Verbs'Image 
(Current_Verb) &
+                       "," & Integer'Image (Current_Parser.Label) &
+                       ".verb: " & Parse_Action_Verbs'Image 
(Current_Parser.Verb));
                end if;
 
-               declare
-                  State : Parser_Lists.Parser_State renames 
Current_Parser.State_Ref.Element.all;
-               begin
-                  Action := Action_For
-                    (Table => Shared_Parser.Table.all,
-                     State => State.Stack.Peek.State,
-                     ID    => State.Tree.ID (State.Current_Token));
-               end;
+               --  Each branch of the following 'if' calls either 
Current_Parser.Free
+               --  (which advances to the next parser) or Current_Parser.Next.
 
-               declare
-                  Conflict : Parse_Action_Node_Ptr := Action.Next;
-               begin
-                  loop
-                     exit when Conflict = null;
-                     --  Spawn a new parser (before modifying Current_Parser 
stack).
-
-                     if Shared_Parser.Parsers.Count = 
Shared_Parser.Max_Parallel then
-                        declare
-                           Parser_State : Parser_Lists.Parser_State renames 
Current_Parser.State_Ref;
-                           Token : Base_Token renames Shared_Parser.Terminals 
(Parser_State.Shared_Token);
-                        begin
-                           raise WisiToken.Parse_Error with Error_Message
-                             (Shared_Parser.Lexer.File_Name, Token.Line, 
Token.Column,
-                              ": too many parallel parsers required in grammar 
state" &
-                                State_Index'Image 
(Parser_State.Stack.Peek.State) &
-                                "; simplify grammar, or increase max-parallel 
(" &
-                                SAL.Base_Peek_Type'Image 
(Shared_Parser.Max_Parallel) & ")");
-                        end;
-                     else
-                        if Trace_Parse > Outline then
+               if Current_Parser.Verb = Current_Verb then
+                  if Trace_Parse > Extra then
+                     Parser_Lists.Put_Top_10 (Trace, Current_Parser);
+                  end if;
+
+                  declare
+                     State : Parser_Lists.Parser_State renames 
Current_Parser.State_Ref.Element.all;
+                  begin
+                     Action := Action_For
+                       (Table => Shared_Parser.Table.all,
+                        State => State.Stack.Peek.State,
+                        ID    => State.Tree.ID (State.Current_Token));
+                  end;
+
+                  declare
+                     Conflict : Parse_Action_Node_Ptr := Action.Next;
+                  begin
+                     loop
+                        exit when Conflict = null;
+                        --  Spawn a new parser (before modifying 
Current_Parser stack).
+
+                        if Shared_Parser.Parsers.Count = 
Shared_Parser.Max_Parallel then
                            declare
                               Parser_State : Parser_Lists.Parser_State renames 
Current_Parser.State_Ref;
+                              Token : Base_Token renames 
Shared_Parser.Terminals (Parser_State.Shared_Token);
                            begin
-                              Trace.Put_Line
-                                (Integer'Image (Current_Parser.Label) & ": " &
-                                   Trimmed_Image 
(Parser_State.Stack.Peek.State) & ": " &
-                                   Parser_State.Tree.Image 
(Parser_State.Current_Token, Trace.Descriptor.all) & " : " &
-                                   "spawn" & Integer'Image 
(Shared_Parser.Parsers.Last_Label + 1) & ", (" &
-                                   Trimmed_Image (1 + Integer 
(Shared_Parser.Parsers.Count)) & " active)");
+                              raise WisiToken.Parse_Error with Error_Message
+                                (Shared_Parser.Lexer.File_Name, Token.Line, 
Token.Column,
+                                 ": too many parallel parsers required in 
grammar state" &
+                                   State_Index'Image 
(Parser_State.Stack.Peek.State) &
+                                   "; simplify grammar, or increase 
max-parallel (" &
+                                   SAL.Base_Peek_Type'Image 
(Shared_Parser.Max_Parallel) & ")");
                            end;
-                        end if;
-
-                        Shared_Parser.Parsers.Prepend_Copy (Current_Parser);
-                        Do_Action (Conflict.Item, Shared_Parser.Parsers.First, 
Shared_Parser);
+                        else
+                           if Trace_Parse > Outline then
+                              declare
+                                 Parser_State : Parser_Lists.Parser_State 
renames Current_Parser.State_Ref;
+                              begin
+                                 Trace.Put_Line
+                                   (Integer'Image (Current_Parser.Label) & ": 
" &
+                                      Trimmed_Image 
(Parser_State.Stack.Peek.State) & ": " &
+                                      Parser_State.Tree.Image
+                                        (Parser_State.Current_Token, 
Trace.Descriptor.all) & " : " &
+                                      "spawn" & Integer'Image 
(Shared_Parser.Parsers.Last_Label + 1) & ", (" &
+                                      Trimmed_Image (1 + Integer 
(Shared_Parser.Parsers.Count)) & " active)");
+                              end;
+                           end if;
+
+                           Shared_Parser.Parsers.Prepend_Copy (Current_Parser);
+                           Do_Action (Conflict.Item, 
Shared_Parser.Parsers.First, Shared_Parser);
 
-                        declare
-                           Temp : Parser_Lists.Cursor := 
Shared_Parser.Parsers.First;
-                        begin
-                           Check_Error (Temp);
-                        end;
-                     end if;
+                           declare
+                              Temp : Parser_Lists.Cursor := 
Shared_Parser.Parsers.First;
+                           begin
+                              Check_Error (Temp);
+                           end;
+                        end if;
 
-                     Conflict := Conflict.Next;
-                  end loop;
-               end;
+                        Conflict := Conflict.Next;
+                     end loop;
+                  end;
 
-               Do_Action (Action.Item, Current_Parser, Shared_Parser);
-               Check_Error (Current_Parser);
+                  Do_Action (Action.Item, Current_Parser, Shared_Parser);
+                  Check_Error (Current_Parser);
 
-            else
-               --  Current parser is waiting for others to catch up
-               Current_Parser.Next;
-            end if;
-         end loop;
+               else
+                  --  Current parser is waiting for others to catch up
+                  Current_Parser.Next;
+               end if;
+            end loop;
+         end;
       end loop Main_Loop;
 
       --  We don't raise Syntax_Error for lexer errors, since they are all
@@ -427,13 +430,16 @@ package body WisiToken.Parse.LR.Parser_No_Recover is
       --  character.
    end Parse;
 
-   overriding procedure Execute_Actions (Parser : in out 
LR.Parser_No_Recover.Parser)
+   overriding procedure Execute_Actions
+     (Parser          : in out LR.Parser_No_Recover.Parser;
+      Image_Augmented : in     Syntax_Trees.Image_Augmented := null)
    is
+      pragma Unreferenced (Image_Augmented);
       use all type Syntax_Trees.User_Data_Access;
 
       procedure Process_Node
         (Tree : in out Syntax_Trees.Tree;
-         Node : in     Syntax_Trees.Valid_Node_Index)
+         Node : in     Valid_Node_Index)
       is
          use all type Syntax_Trees.Node_Label;
       begin
@@ -443,7 +449,7 @@ package body WisiToken.Parse.LR.Parser_No_Recover is
 
          declare
             use all type Syntax_Trees.Semantic_Action;
-            Tree_Children : constant Syntax_Trees.Valid_Node_Index_Array := 
Tree.Children (Node);
+            Tree_Children : constant Valid_Node_Index_Array := Tree.Children 
(Node);
          begin
             Parser.User_Data.Reduce (Tree, Node, Tree_Children);
 
@@ -453,7 +459,7 @@ package body WisiToken.Parse.LR.Parser_No_Recover is
                exception
                when E : others =>
                   declare
-                     Token : Base_Token renames Parser.Terminals 
(Tree.Min_Terminal_Index (Node));
+                     Token : Base_Token renames Parser.Terminals 
(Tree.First_Shared_Terminal (Node));
                   begin
                      raise WisiToken.Parse_Error with Error_Message
                        (Parser.Lexer.File_Name, Token.Line, Token.Column,
@@ -474,6 +480,7 @@ package body WisiToken.Parse.LR.Parser_No_Recover is
          declare
             Parser_State : Parser_Lists.Parser_State renames 
Parser.Parsers.First_State_Ref.Element.all;
          begin
+            Parser_State.Tree.Set_Parents;
             Parser.User_Data.Initialize_Actions (Parser_State.Tree);
             Parser_State.Tree.Process_Tree (Process_Node'Access);
          end;
@@ -489,6 +496,18 @@ package body WisiToken.Parse.LR.Parser_No_Recover is
       end if;
    end Tree;
 
+   overriding
+   function Tree_Var_Ref
+     (Parser : aliased in out LR.Parser_No_Recover.Parser)
+     return Syntax_Trees.Tree_Variable_Reference
+   is begin
+      if Parser.Parsers.Count > 1 then
+         raise WisiToken.Parse_Error with "ambigous parse";
+      else
+         return (Element => Parser.Parsers.First_State_Ref.Tree'Access);
+      end if;
+   end Tree_Var_Ref;
+
    overriding function Any_Errors (Parser : in LR.Parser_No_Recover.Parser) 
return Boolean
    is
       use all type Ada.Containers.Count_Type;
@@ -515,7 +534,7 @@ package body WisiToken.Parse.LR.Parser_No_Recover is
          case Item.Label is
          when Action =>
             declare
-               Token : Base_Token renames Parser.Terminals 
(Parser_State.Tree.Min_Terminal_Index (Item.Error_Token));
+               Token : Base_Token renames Parser.Terminals 
(Parser_State.Tree.First_Shared_Terminal (Item.Error_Token));
             begin
                Put_Line
                  (Current_Error,
diff --git a/packages/wisi/wisitoken-parse-lr-parser_no_recover.ads 
b/packages/wisi/wisitoken-parse-lr-parser_no_recover.ads
index 33665d7..5e630d2 100644
--- a/packages/wisi/wisitoken-parse-lr-parser_no_recover.ads
+++ b/packages/wisi/wisitoken-parse-lr-parser_no_recover.ads
@@ -6,7 +6,7 @@
 --  to not depend on wisitoken-lr-mckenzie_recover, so editing that
 --  does not cause everything to be regenerated/compiled.
 --
---  Copyright (C) 2002, 2003, 2009, 2010, 2013 - 2015, 2017 - 2019 Free 
Software Foundation, Inc.
+--  Copyright (C) 2002, 2003, 2009, 2010, 2013 - 2015, 2017 - 2020 Free 
Software Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -73,13 +73,20 @@ package WisiToken.Parse.LR.Parser_No_Recover is
 
    overriding function Tree (Parser : in LR.Parser_No_Recover.Parser) return 
Syntax_Trees.Tree;
 
+   overriding
+   function Tree_Var_Ref
+     (Parser : aliased in out LR.Parser_No_Recover.Parser)
+     return Syntax_Trees.Tree_Variable_Reference;
+
    overriding function Any_Errors (Parser : in LR.Parser_No_Recover.Parser) 
return Boolean;
 
    overriding procedure Put_Errors (Parser : in LR.Parser_No_Recover.Parser);
    --  Put user-friendly error messages from the parse to
    --  Ada.Text_IO.Current_Error.
 
-   overriding procedure Execute_Actions (Parser : in out 
LR.Parser_No_Recover.Parser);
+   overriding procedure Execute_Actions
+     (Parser          : in out LR.Parser_No_Recover.Parser;
+      Image_Augmented : in     Syntax_Trees.Image_Augmented := null);
    --  Execute the grammar actions in Parser.
 
 end WisiToken.Parse.LR.Parser_No_Recover;
diff --git a/packages/wisi/wisitoken-parse-lr.adb 
b/packages/wisi/wisitoken-parse-lr.adb
index 0ec3aa9..27fe85d 100644
--- a/packages/wisi/wisitoken-parse-lr.adb
+++ b/packages/wisi/wisitoken-parse-lr.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2013-2015, 2017, 2018, 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2013-2015, 2017 - 2020 Free Software Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -156,18 +156,22 @@ package body WisiToken.Parse.LR is
 
    function Strict_Image (Item : in Kernel_Info) return String
    is begin
-      return "(" & Trimmed_Image (Item.LHS) & "," & Token_ID'Image 
(Item.Before_Dot) & "," &
-        Ada.Containers.Count_Type'Image (Item.Length_After_Dot) & ", " &
-        (if Item.Recursive then "True" else "False") & ")";
+      return "(" & Image (Item.Production) & ", " &
+        Item.Before_Dot'Image & ", " &
+        Item.Length_After_Dot'Image & ", " &
+        Image (Item.Reduce_Production) & ", " &
+        Item.Reduce_Count'Image & ")";
    end Strict_Image;
 
    function Strict_Image (Item : in Minimal_Action) return String
    is begin
       case Item.Verb is
       when Shift =>
-         return "(Shift," & Token_ID'Image (Item.ID) & "," & State_Index'Image 
(Item.State) & ")";
+         return "(Shift, " & Image (Item.Production) & ", " &
+           Token_ID'Image (Item.ID) & "," & State_Index'Image (Item.State) & 
")";
+
       when Reduce =>
-         return "(Reduce," & Token_ID'Image (Item.Nonterm) & "," &
+         return "(Reduce, " & Image (Item.Production) & ", " &
            Ada.Containers.Count_Type'Image (Item.Token_Count) & ")";
       end case;
    end Strict_Image;
@@ -178,7 +182,7 @@ package body WisiToken.Parse.LR is
       when Shift =>
          return "Shift " & Image (Item.ID, Descriptor);
       when Reduce =>
-         return "Reduce to " & Image (Item.Nonterm, Descriptor);
+         return "Reduce to " & Image (Item.Production.LHS, Descriptor);
       end case;
    end Image;
 
@@ -193,11 +197,12 @@ package body WisiToken.Parse.LR is
    end To_Vector;
 
    procedure Add_Action
-     (State        : in out LR.Parse_State;
-      Symbol       : in     Token_ID;
-      State_Index  : in     WisiToken.State_Index)
+     (State       : in out LR.Parse_State;
+      Symbol      : in     Token_ID;
+      Production  : in     Production_ID;
+      State_Index : in     WisiToken.State_Index)
    is begin
-      Add (State.Action_List, Symbol, (Shift, State_Index));
+      Add (State.Action_List, Symbol, (Shift, Production, State_Index));
    end Add_Action;
 
    procedure Add_Action
@@ -227,7 +232,7 @@ package body WisiToken.Parse.LR is
       Semantic_Check  : in     WisiToken.Semantic_Checks.Semantic_Check)
    is begin
       --  We assume WisiToken.BNF.Output_Ada_Common.Duplicate_Reduce is True
-      --  for this state; no conflicts, all the same action.
+      --  for this state; no conflicts, all the same action, Recursive.
       for Symbol of Symbols loop
          Add_Action
            (State, Symbol, Reduce, Production, RHS_Token_Count,
@@ -489,15 +494,16 @@ package body WisiToken.Parse.LR is
                            when Shift     => (Verb => Shift, others => <>),
                            when Reduce    => (Verb => Reduce, others => <>),
                            when Accept_It => (Verb => Accept_It, others => <>),
-                           when Error     => (Verb => Error));
+                           when Error     => (Verb => Error, others => <>));
+
+                        Node_J.Item.Production.LHS := Next_Token_ID;
+                        Node_J.Item.Production.RHS := Next_Integer;
 
                         case Verb is
                         when Shift =>
                            Node_J.Item.State := Next_State_Index;
 
                         when Reduce | Accept_It =>
-                           Node_J.Item.Production.LHS := Next_Token_ID;
-                           Node_J.Item.Production.RHS := Next_Integer;
                            if Next_Boolean then
                               Node_J.Item.Action := Actions
                                 
(Node_J.Item.Production.LHS)(Node_J.Item.Production.RHS).Action;
@@ -569,9 +575,13 @@ package body WisiToken.Parse.LR is
                   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 := Next_Count_Type;
+                     State.Kernel (I).Production.LHS        := Next_Token_ID;
+                     State.Kernel (I).Production.RHS        := Next_Integer;
+                     State.Kernel (I).Before_Dot            := Next_Token_ID;
+                     State.Kernel (I).Length_After_Dot      := Next_Count_Type;
+                     State.Kernel (I).Reduce_Production.LHS := Next_Token_ID;
+                     State.Kernel (I).Reduce_Production.RHS := Next_Integer;
+                     State.Kernel (I).Reduce_Count          := Next_Count_Type;
                   end loop;
                end if;
             end;
@@ -590,19 +600,22 @@ package body WisiToken.Parse.LR is
                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;
+                     LHS          : Token_ID;
+                     RHS          : Integer;
                      ID           : Token_ID;
                      Action_State : State_Index;
                      Count        : Ada.Containers.Count_Type;
                   begin
+                     LHS := Next_Token_ID;
+                     RHS := Next_Integer;
                      case Verb is
                      when Shift =>
                         ID           := Next_Token_ID;
                         Action_State := Next_State_Index;
-                        State.Minimal_Complete_Actions.Replace_Element (I, 
(Shift, ID, Action_State));
+                        State.Minimal_Complete_Actions.Replace_Element (I, 
(Shift, (LHS, RHS), ID, Action_State));
                      when Reduce =>
-                        ID    := Next_Token_ID;
                         Count := Next_Count_Type;
-                        State.Minimal_Complete_Actions.Replace_Element (I, 
(Reduce, ID, Count));
+                        State.Minimal_Complete_Actions.Replace_Element (I, 
(Reduce, (LHS, RHS), Count));
                      end case;
                   end;
                end loop;
@@ -613,7 +626,7 @@ package body WisiToken.Parse.LR is
             exit when Check_EOI;
          end loop;
 
-         Table.Error_Action := new Parse_Action_Node'((Verb => Error), null);
+         Table.Error_Action := new Parse_Action_Node'((Verb => Error, others 
=> <>), null);
 
          return Table;
       end;
@@ -662,7 +675,7 @@ package body WisiToken.Parse.LR 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
+         if Constant_Ref (Ops, I).Op = Op then
             return False;
          end if;
       end loop;
@@ -725,11 +738,9 @@ package body WisiToken.Parse.LR is
    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
+   is begin
       for I in 1 .. Depth loop
-         if Stack.Peek (I).Tree_Index = Syntax_Trees.Invalid_Node_Index then
+         if Stack.Peek (I).Tree_Index = 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 36f8889..da30920 100644
--- a/packages/wisi/wisitoken-parse-lr.ads
+++ b/packages/wisi/wisitoken-parse-lr.ads
@@ -9,7 +9,7 @@
 --
 --  See wisitoken.ads
 --
---  Copyright (C) 2002, 2003, 2009, 2010, 2013 - 2015, 2017 - 2019 Free 
Software Foundation, Inc.
+--  Copyright (C) 2002, 2003, 2009, 2010, 2013 - 2015, 2017 - 2020 Free 
Software Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -40,10 +40,7 @@ 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_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_Vectors_Sorted;
 with System.Multiprocessors;
 with WisiToken.Semantic_Checks;
@@ -60,17 +57,18 @@ package WisiToken.Parse.LR is
    subtype Token_ID_Array_1_3 is Token_ID_Array (1 .. 3);
    --  For Language_Matching_Begin_Tokens.
 
-   type Parse_Action_Rec (Verb : Parse_Action_Verbs := Shift) is record
+   type Parse_Action_Rec (Verb : Parse_Action_Verbs := Shift) is
+   record
+      Production : Production_ID;
+      --  The production that produced this action. Used to find kernel
+      --  items during error recovery.
+
       case Verb is
       when Shift =>
          State : State_Index := State_Index'Last;
 
       when Reduce | Accept_It =>
-         Production : Production_ID;
-         --  The result nonterm and production index. Most uses need only
-         --  Production.LHS; elisp code generation, and debug output, needs
-         --  Production.RHS
-
+         --  Production.LHS is the result nonterm
          Action      : WisiToken.Syntax_Trees.Semantic_Action   := null;
          Check       : WisiToken.Semantic_Checks.Semantic_Check := null;
          Token_Count : Ada.Containers.Count_Type                := 0;
@@ -89,7 +87,7 @@ package WisiToken.Parse.LR is
    --  Put a line for Item in parse trace format, with no prefix.
 
    function Equal (Left, Right : in Parse_Action_Rec) return Boolean;
-   --  Ignore Action, Check.
+   --  Ignore items not used by the canonical shift-reduce algorithm.
 
    type Parse_Action_Node;
    type Parse_Action_Node_Ptr is access Parse_Action_Node;
@@ -132,10 +130,19 @@ package WisiToken.Parse.LR is
      (Goto_Node, Token_ID, To_Key, Compare);
 
    type Kernel_Info is record
-      LHS              : Token_ID                  := Token_ID'First;
+      Production       : Production_ID;
       Before_Dot       : Token_ID                  := Token_ID'First;
       Length_After_Dot : Ada.Containers.Count_Type := 0;
-      Recursive        : Boolean                   := False;
+
+      Reduce_Production : Production_ID;
+      Reduce_Count      : Ada.Containers.Count_Type := 0;
+      --  The reduction that error recovery should do for this item if
+      --  Length_After_Dot = 0. Reduce_Production /= Production when item
+      --  after dot is nullable.
+      --
+      --  It is tempting to make Length_After_Dot a discriminant to
+      --  eliminate Reduce_* when they are not needed, but we don't have a
+      --  static value of Length_After_Dot when it is non-zero.
    end record;
 
    function Strict_Image (Item : in Kernel_Info) return String;
@@ -148,14 +155,16 @@ package WisiToken.Parse.LR is
 
    function Image is new Kernel_Info_Arrays.Gen_Image (Strict_Image);
 
-   type Minimal_Action (Verb : Minimal_Verbs := Shift) is record
+   type Minimal_Action (Verb : Minimal_Verbs := Shift) is
+   record
+      Production  : Production_ID := Invalid_Production_ID;
+
       case Verb is
       when Shift =>
          ID    : Token_ID    := Invalid_Token_ID;
          State : State_Index := State_Index'Last;
 
       when Reduce =>
-         Nonterm     : Token_ID;
          Token_Count : Ada.Containers.Count_Type;
       end case;
    end record;
@@ -180,14 +189,10 @@ package WisiToken.Parse.LR is
       Goto_List   : Goto_Arrays.Vector;
 
       --  The following are used in error recovery.
-      Kernel : Kernel_Info_Arrays.Vector;
-
+      Kernel                   : Kernel_Info_Arrays.Vector;
       Minimal_Complete_Actions : Minimal_Action_Arrays.Vector;
-      Minimal_Complete_Actions_Recursive : Boolean := False;
       --  Parse actions that will most quickly complete a production in this
-      --  state. If more than one, resolved at runtime using Kernels. If
-      --  Minimal_Complete_Actions_Recursive, at least one of the minimal
-      --  actions is recursive; this changes the algorithm.
+      --  state. Kernel is used to reduce the number of actions.
    end record;
 
    type Parse_State_Array is array (State_Index range <>) of Parse_State;
@@ -195,6 +200,7 @@ package WisiToken.Parse.LR is
    procedure Add_Action
      (State       : in out Parse_State;
       Symbol      : in     Token_ID;
+      Production  : in     Production_ID;
       State_Index : in     WisiToken.State_Index);
    --  Add a Shift action to tail of State action list.
 
@@ -419,11 +425,6 @@ package WisiToken.Parse.LR is
          Ins_Token_Index : WisiToken.Base_Token_Index;
          --  Ins_ID is inserted before Token_Index.
 
-         State       : Unknown_State_Index;
-         Stack_Depth : SAL.Base_Peek_Type;
-         --  Used in Minimal_Completion_Actions to detect cycles; only set for
-         --  Insert by Minimal_Completion_Actions.
-
       when Delete =>
          Del_ID : Token_ID;
          --  The token ID deleted.
@@ -452,8 +453,6 @@ package WisiToken.Parse.LR is
    function Equal (Left : in Config_Op; Right : in Insert_Op) return Boolean;
    --  Ignore state, stack_depth
 
-   package Config_Op_Queues is new SAL.Gen_Unbounded_Definite_Queues 
(Config_Op);
-
    package Config_Op_Arrays is new SAL.Gen_Bounded_Definite_Vectors
      (Positive_Index_Type, Config_Op, Capacity => 80);
    --  Using a fixed size vector significantly speeds up
@@ -475,10 +474,7 @@ package WisiToken.Parse.LR is
             when Push_Back => Image (Item.PB_ID, Descriptor) & "," &
                  WisiToken.Token_Index'Image (Item.PB_Token_Index),
             when Insert => Image (Item.Ins_ID, Descriptor) & "," &
-                 WisiToken.Token_Index'Image (Item.Ins_Token_Index) &
-                (if Item.State = Unknown_State or Trace_McKenzie <= Detail 
then ""
-                 else "," & State_Index'Image (Item.State) &
-                    SAL.Base_Peek_Type'Image (Item.Stack_Depth)),
+                 WisiToken.Token_Index'Image (Item.Ins_Token_Index),
             when Delete => Image (Item.Del_ID, Descriptor) & "," &
                  WisiToken.Token_Index'Image (Item.Del_Token_Index))
            & ")");
@@ -486,7 +482,6 @@ package WisiToken.Parse.LR is
    function Image (Item : in Config_Op; Descriptor : in WisiToken.Descriptor) 
return String
      renames Config_Op_Image;
 
-   function Image is new Config_Op_Queues.Gen_Image_Aux (WisiToken.Descriptor, 
Image);
    function Config_Op_Array_Image is new Config_Op_Arrays.Gen_Image_Aux 
(WisiToken.Descriptor, Image);
    function Image (Item : in Config_Op_Arrays.Vector; Descriptor : in 
WisiToken.Descriptor) return String
      renames Config_Op_Array_Image;
@@ -505,17 +500,51 @@ package WisiToken.Parse.LR is
    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 Sorted_Insert_Delete_Arrays is new 
SAL.Gen_Bounded_Definite_Vectors_Sorted
-     (Insert_Delete_Op, Compare, Capacity => 80);
+   type Recover_Op (Op : Insert_Delete_Op_Label := Insert) is record
+      --  Add Ins_Tree_Node to Config_Op info, set when item is
+      --  parsed; used to create user augmented token.
+
+      case Op is
+      when Insert =>
+         Ins_ID : Token_ID := Invalid_Token_ID;
+         --  The token ID inserted.
+
+         Ins_Token_Index : Base_Token_Index := Invalid_Token_Index;
+         --  Ins_ID is inserted before Token_Index.
+
+         Ins_Tree_Node : Node_Index := Invalid_Node_Index;
+
+      when Delete =>
+         Del_ID : Token_ID;
+         --  The token ID deleted.
+
+         Del_Token_Index : Base_Token_Index;
+         --  Token at Token_Index is deleted.
+
+      end case;
+   end record;
+
+   package Recover_Op_Arrays is new SAL.Gen_Bounded_Definite_Vectors
+     (Positive_Index_Type, Recover_Op, Capacity => 80);
+
+   package Recover_Op_Array_Refs is new Recover_Op_Arrays.Gen_Refs;
 
-   package Insert_Delete_Array_Refs is new 
Sorted_Insert_Delete_Arrays.Gen_Refs;
+   function Image (Item : in Recover_Op; Descriptor : in WisiToken.Descriptor) 
return String
+     is ("(" & Item.Op'Image & ", " &
+           (case Item.Op is
+            when Insert => Image (Item.Ins_ID, Descriptor) & "," &
+                 Item.Ins_Token_Index'Image & "," &
+                 Item.Ins_Tree_Node'Image,
+            when Delete => Image (Item.Del_ID, Descriptor) & "," &
+                 Item.Del_Token_Index'Image)
+           & ")");
 
-   function Image is new Sorted_Insert_Delete_Arrays.Gen_Image_Aux 
(WisiToken.Descriptor, Image);
+   function Image is new Recover_Op_Arrays.Gen_Image_Aux 
(WisiToken.Descriptor, Image);
 
    type Recover_Stack_Item is record
-      State : Unknown_State_Index;
+      State : Unknown_State_Index := Unknown_State;
 
-      Tree_Index : Syntax_Trees.Node_Index;
+      Tree_Index : Node_Index := Invalid_Node_Index;
       --  Valid if copied at recover initialize, Invalid if pushed during
       --  recover.
 
@@ -547,7 +576,8 @@ package WisiToken.Parse.LR is
    --  pushed by recover.
 
    type Strategies is
-     (Language_Fix, Minimal_Complete, Matching_Begin, Push_Back, Undo_Reduce, 
Insert, Delete, String_Quote);
+     (Ignore_Error, Language_Fix, Minimal_Complete, Matching_Begin,
+      Push_Back, Undo_Reduce, Insert, Delete, String_Quote);
 
    type Strategy_Counts is array (Strategies) of Natural;
    function Image is new SAL.Gen_Array_Image (Strategies, Natural, 
Strategy_Counts, Trimmed_Image);
@@ -577,7 +607,7 @@ package WisiToken.Parse.LR is
       String_Quote_Checked : Line_Number_Type := Invalid_Line_Number;
       --  Max line checked for missing string quote.
 
-      Insert_Delete : aliased Sorted_Insert_Delete_Arrays.Vector;
+      Insert_Delete : aliased Config_Op_Arrays.Vector;
       --  Edits to the input stream that are not yet parsed; contains only
       --  Insert and Delete ops, in token_index order.
 
@@ -652,7 +682,7 @@ package WisiToken.Parse.LR is
 
       case Label is
       when Action =>
-         Error_Token : Syntax_Trees.Valid_Node_Index; -- index into Parser.Tree
+         Error_Token : Valid_Node_Index; -- index into Parser.Tree
          Expecting   : Token_ID_Set (First_Terminal .. Last_Terminal);
 
       when Check =>
diff --git a/packages/wisi/wisitoken-parse-packrat-generated.adb 
b/packages/wisi/wisitoken-parse-packrat-generated.adb
index f5f4b16..7d73f34 100644
--- a/packages/wisi/wisitoken-parse-packrat-generated.adb
+++ b/packages/wisi/wisitoken-parse-packrat-generated.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -27,7 +27,7 @@ package body WisiToken.Parse.Packrat.Generated is
 
       Descriptor : WisiToken.Descriptor renames Parser.Trace.Descriptor.all;
 
-      Junk : WisiToken.Syntax_Trees.Valid_Node_Index;
+      Junk : WisiToken.Valid_Node_Index;
       pragma Unreferenced (Junk);
 
       Result : Memo_Entry;
@@ -66,6 +66,13 @@ package body WisiToken.Parse.Packrat.Generated is
       return Parser.Tree;
    end Tree;
 
+   overriding function Tree_Var_Ref
+     (Parser : aliased in out Generated.Parser)
+     return Syntax_Trees.Tree_Variable_Reference
+   is begin
+      return (Element => Parser.Tree'Access);
+   end Tree_Var_Ref;
+
    overriding function Any_Errors (Parser : in Generated.Parser) return Boolean
    is
       use all type Ada.Containers.Count_Type;
diff --git a/packages/wisi/wisitoken-parse-packrat-generated.ads 
b/packages/wisi/wisitoken-parse-packrat-generated.ads
index 2eddd56..4932465 100644
--- a/packages/wisi/wisitoken-parse-packrat-generated.ads
+++ b/packages/wisi/wisitoken-parse-packrat-generated.ads
@@ -7,7 +7,7 @@
 --
 --  see parent.
 --
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -39,7 +39,7 @@ package WisiToken.Parse.Packrat.Generated is
          null;
 
       when Success =>
-         Result : aliased WisiToken.Syntax_Trees.Valid_Node_Index;
+         Result : aliased Valid_Node_Index;
 
          Last_Token : Base_Token_Index; --  FIXME: change to Last_Pos
 
@@ -67,6 +67,9 @@ package WisiToken.Parse.Packrat.Generated is
 
    overriding procedure Parse (Parser : aliased in out Generated.Parser);
    overriding function Tree (Parser : in Generated.Parser) return 
Syntax_Trees.Tree;
+   overriding function Tree_Var_Ref
+     (Parser : aliased in out Generated.Parser)
+     return Syntax_Trees.Tree_Variable_Reference;
    overriding function Any_Errors (Parser : in Generated.Parser) return 
Boolean;
    overriding procedure Put_Errors (Parser : in Generated.Parser);
 
diff --git a/packages/wisi/wisitoken-parse-packrat-procedural.adb 
b/packages/wisi/wisitoken-parse-packrat-procedural.adb
index 97f71ff..44ab122 100644
--- a/packages/wisi/wisitoken-parse-packrat-procedural.adb
+++ b/packages/wisi/wisitoken-parse-packrat-procedural.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -60,12 +60,12 @@ package body WisiToken.Parse.Packrat.Procedural is
                   Result             => Parser.Tree.Add_Nonterm
                     (Production      => (R, RHS_Index),
                      Action          => RHS.Action,
-                     Children        => (1 .. 0 => 
Syntax_Trees.Invalid_Node_Index),
+                     Children        => (1 .. 0 => Invalid_Node_Index),
                      Default_Virtual => False),
                   Last_Pos           => Pos);
             else
                declare
-                  Children : Syntax_Trees.Valid_Node_Index_Array
+                  Children : Valid_Node_Index_Array
                     (SAL.Base_Peek_Type (RHS.Tokens.First_Index) .. 
SAL.Base_Peek_Type (RHS.Tokens.Last_Index));
                begin
                   for I in RHS.Tokens.First_Index .. RHS.Tokens.Last_Index loop
@@ -213,7 +213,7 @@ package body WisiToken.Parse.Packrat.Procedural is
    is
       Descriptor : WisiToken.Descriptor renames Parser.Trace.Descriptor.all;
 
-      Junk : WisiToken.Syntax_Trees.Valid_Node_Index;
+      Junk : Valid_Node_Index;
       pragma Unreferenced (Junk);
 
       Result : Memo_Entry;
@@ -250,4 +250,11 @@ package body WisiToken.Parse.Packrat.Procedural is
       return Parser.Tree;
    end Tree;
 
+   overriding function Tree_Var_Ref
+     (Parser : aliased in out Procedural.Parser)
+     return Syntax_Trees.Tree_Variable_Reference
+   is begin
+      return (Element => Parser.Tree'Access);
+   end Tree_Var_Ref;
+
 end WisiToken.Parse.Packrat.Procedural;
diff --git a/packages/wisi/wisitoken-parse-packrat-procedural.ads 
b/packages/wisi/wisitoken-parse-packrat-procedural.ads
index 107fead..ff04837 100644
--- a/packages/wisi/wisitoken-parse-packrat-procedural.ads
+++ b/packages/wisi/wisitoken-parse-packrat-procedural.ads
@@ -9,7 +9,7 @@
 --
 --  See parent.
 --
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -43,7 +43,7 @@ package WisiToken.Parse.Packrat.Procedural is
          null;
 
       when Success =>
-         Result   : WisiToken.Syntax_Trees.Valid_Node_Index;
+         Result   : WisiToken.Valid_Node_Index;
          Last_Pos : Base_Token_Index;
 
       end case;
@@ -72,6 +72,9 @@ package WisiToken.Parse.Packrat.Procedural is
 
    overriding procedure Parse (Parser : aliased in out Procedural.Parser);
    overriding function Tree (Parser : in Procedural.Parser) return 
Syntax_Trees.Tree;
+   overriding function Tree_Var_Ref
+     (Parser : aliased in out Procedural.Parser)
+     return Syntax_Trees.Tree_Variable_Reference;
 
    overriding function Any_Errors (Parser : in Procedural.Parser) return 
Boolean
      is (False);
diff --git a/packages/wisi/wisitoken-parse-packrat.adb 
b/packages/wisi/wisitoken-parse-packrat.adb
index 14fd2bb..46ea1e9 100644
--- a/packages/wisi/wisitoken-parse-packrat.adb
+++ b/packages/wisi/wisitoken-parse-packrat.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2018 Free Software Foundation, Inc.
+--  Copyright (C) 2018, 2020 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
@@ -19,13 +19,16 @@ pragma License (Modified_GPL);
 
 package body WisiToken.Parse.Packrat is
 
-   overriding procedure Execute_Actions (Parser : in out Packrat.Parser)
+   overriding
+   procedure Execute_Actions
+     (Parser          : in out Packrat.Parser;
+      Image_Augmented : in     Syntax_Trees.Image_Augmented := null)
    is
       Descriptor : WisiToken.Descriptor renames Parser.Trace.Descriptor.all;
 
       procedure Process_Node
         (Tree : in out Syntax_Trees.Tree;
-         Node : in     Syntax_Trees.Valid_Node_Index)
+         Node : in     Valid_Node_Index)
       is
          use all type Syntax_Trees.Node_Label;
       begin
@@ -35,7 +38,7 @@ package body WisiToken.Parse.Packrat is
 
          declare
             use all type Syntax_Trees.Semantic_Action;
-            Tree_Children : constant Syntax_Trees.Valid_Node_Index_Array := 
Tree.Children (Node);
+            Tree_Children : constant Valid_Node_Index_Array := Tree.Children 
(Node);
          begin
             Parser.User_Data.Reduce (Tree, Node, Tree_Children);
 
@@ -47,6 +50,10 @@ package body WisiToken.Parse.Packrat is
 
    begin
       if Trace_Action > Outline then
+         if Trace_Action > Extra then
+            Parser.Tree.Print_Tree (Descriptor, Parser.Tree.Root, 
Image_Augmented);
+            Parser.Trace.New_Line;
+         end if;
          Parser.Trace.Put_Line ("root node: " & Parser.Tree.Image 
(Parser.Tree.Root, Descriptor));
       end if;
 
diff --git a/packages/wisi/wisitoken-parse-packrat.ads 
b/packages/wisi/wisitoken-parse-packrat.ads
index 40eeba0..9c0421f 100644
--- a/packages/wisi/wisitoken-parse-packrat.ads
+++ b/packages/wisi/wisitoken-parse-packrat.ads
@@ -14,7 +14,7 @@
 --  [warth 2008]  Warth, A., Douglass, J.R. and Millstein, T.D., 2008. Packrat
 --                parsers can support left recursion. PEPM, 8, pp.103-110.
 --
---  Copyright (C) 2018 Free Software Foundation, Inc.
+--  Copyright (C) 2018, 2020 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
@@ -47,17 +47,18 @@ pragma License (Modified_GPL);
 with WisiToken.Syntax_Trees;
 package WisiToken.Parse.Packrat is
 
-   function Tree_Index (Terminal_Index : in Token_Index) return 
Syntax_Trees.Valid_Node_Index
-     is (Syntax_Trees.Valid_Node_Index (Terminal_Index));
+   function Tree_Index (Terminal_Index : in Token_Index) return 
Valid_Node_Index
+     is (Valid_Node_Index (Terminal_Index));
    --  All tokens are read and entered into the syntax tree before any
    --  nonterms are reduced, so the mapping from Terminals token_index to
    --  Tree node_index is identity.
+   --  FIXME: use Terminals (Terminal_Index).Tree_Index
 
    type Parser is abstract new Base_Parser with record
       --  Dynamic parsing data
 
       Base_Tree : aliased WisiToken.Syntax_Trees.Base_Tree;
-      Tree      : WisiToken.Syntax_Trees.Tree;
+      Tree      : aliased WisiToken.Syntax_Trees.Tree;
       --  FIXME: Current we only need Base_Tree for Execute_Actions, except
       --  that Syntax_Trees only declares the needed operations on Tree. But
       --  we may need more trees for error recovery; if not, fix
@@ -66,6 +67,9 @@ package WisiToken.Parse.Packrat is
 
    end record;
 
-   overriding procedure Execute_Actions (Parser : in out Packrat.Parser);
+   overriding
+   procedure Execute_Actions
+     (Parser          : in out Packrat.Parser;
+      Image_Augmented : in     Syntax_Trees.Image_Augmented := null);
 
 end WisiToken.Parse.Packrat;
diff --git a/packages/wisi/wisitoken-parse.adb 
b/packages/wisi/wisitoken-parse.adb
index 3685b4e..535c423 100644
--- a/packages/wisi/wisitoken-parse.adb
+++ b/packages/wisi/wisitoken-parse.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -19,7 +19,7 @@ pragma License (Modified_GPL);
 
 package body WisiToken.Parse is
 
-   function Next_Grammar_Token (Parser : in out Base_Parser) return Token_ID
+   function Next_Grammar_Token (Parser : in out Base_Parser'Class) return 
Token_ID
    is
       use all type Ada.Containers.Count_Type;
       use all type Syntax_Trees.User_Data_Access;
@@ -32,10 +32,6 @@ package body WisiToken.Parse is
 
          --  We don't handle Error until later; we assume it was recovered.
 
-         if Parser.User_Data /= null then
-            Parser.User_Data.Lexer_To_Augmented (Token, Parser.Lexer);
-         end if;
-
          if Token.Line /= Invalid_Line_Number then
             --  Some lexers don't support line numbers.
             if Parser.Lexer.First then
@@ -57,9 +53,28 @@ package body WisiToken.Parse is
             Parser.Trace.Put_Line (Image (Token, Parser.Trace.Descriptor.all));
          end if;
 
-         exit when Token.ID >= Parser.Trace.Descriptor.First_Terminal;
+         if Token.ID >= Parser.Trace.Descriptor.First_Terminal then
+
+            Parser.Terminals.Append (Token);
+
+            --  We create the syntax tree node here, so Lexer_To_Augmented can
+            --  store augmented data in it.
+            Parser.Terminals (Parser.Terminals.Last_Index).Tree_Index := 
Parser.Tree_Var_Ref.Add_Terminal
+              (Parser.Terminals.Last_Index, Parser.Terminals);
+
+            if Parser.User_Data /= null then
+               Parser.User_Data.Lexer_To_Augmented
+                 (Parser.Tree_Var_Ref, Parser.Terminals 
(Parser.Terminals.Last_Index), Parser.Lexer);
+            end if;
+
+            exit;
+         else
+            --  non-grammar; not in syntax tree
+            if Parser.User_Data /= null then
+               Parser.User_Data.Lexer_To_Augmented (Parser.Tree_Var_Ref, 
Token, Parser.Lexer);
+            end if;
+         end if;
       end loop;
-      Parser.Terminals.Append (Token);
 
       if Error then
          declare
@@ -74,7 +89,7 @@ package body WisiToken.Parse is
       return Token.ID;
    end Next_Grammar_Token;
 
-   procedure Lex_All (Parser : in out Base_Parser)
+   procedure Lex_All (Parser : in out Base_Parser'Class)
    is
       EOF_ID : constant Token_ID := Parser.Trace.Descriptor.EOI_ID;
    begin
diff --git a/packages/wisi/wisitoken-parse.ads 
b/packages/wisi/wisitoken-parse.ads
index edecb90..1493658 100644
--- a/packages/wisi/wisitoken-parse.ads
+++ b/packages/wisi/wisitoken-parse.ads
@@ -2,7 +2,7 @@
 --
 --  Subprograms common to more than one parser, higher-level than in 
wisitoken.ads
 --
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -35,19 +35,19 @@ package WisiToken.Parse is
       --  if the only token on line I is a non_grammar token (ie a comment,
       --  or a newline for a blank line), Line_Begin_Token (I) is the last
       --  grammar token on the previous non-blank line. If Line (I) is a
-      --  non-first line in a multi-line token, Line_Begin_Token (I) is
-      --  Invalid_Token_Index.
+      --  non-first line in a multi-line terminal token, Line_Begin_Token
+      --  (I) is Invalid_Token_Index.
    end record;
    --  Common to all parsers. Finalize should free any allocated objects.
 
-   function Next_Grammar_Token (Parser : in out Base_Parser) return Token_ID;
+   function Next_Grammar_Token (Parser : in out Base_Parser'Class) return 
Token_ID;
    --  Get next token from Lexer, call User_Data.Lexer_To_Augmented. If
    --  it is a grammar token, store in Terminals and return its id.
    --  Otherwise, repeat.
    --
    --  Propagates Fatal_Error from Lexer.
 
-   procedure Lex_All (Parser : in out Base_Parser);
+   procedure Lex_All (Parser : in out Base_Parser'Class);
    --  Clear Terminals, Line_Begin_Token; reset User_Data. Then call
    --  Next_Grammar_Token repeatedly until EOF_ID is returned.
    --
@@ -67,12 +67,18 @@ package WisiToken.Parse is
    function Tree (Parser : in Base_Parser) return Syntax_Trees.Tree is 
abstract;
    --  Return the syntax tree resulting from the parse.
 
+   function Tree_Var_Ref (Parser : aliased in out Base_Parser) return 
Syntax_Trees.Tree_Variable_Reference is abstract;
+   --  Return a writable reference to the syntax tree resulting from the parse.
+
    function Any_Errors (Parser : in Base_Parser) return Boolean is abstract;
 
    procedure Put_Errors (Parser : in Base_Parser) is abstract;
    --  Output error messages to Ada.Text_IO.Current_Error.
 
-   procedure Execute_Actions (Parser : in out Base_Parser) is abstract;
+   procedure Execute_Actions
+     (Parser          : in out Base_Parser;
+      Image_Augmented : in     Syntax_Trees.Image_Augmented := null)
+     is abstract;
    --  Execute all actions in Parser.Tree.
 
 end WisiToken.Parse;
diff --git a/packages/wisi/wisitoken-parse_table-mode.el 
b/packages/wisi/wisitoken-parse_table-mode.el
index 13a727c..e864ab0 100644
--- a/packages/wisi/wisitoken-parse_table-mode.el
+++ b/packages/wisi/wisitoken-parse_table-mode.el
@@ -1,6 +1,6 @@
 ;; wisitoken-parse_table-mode.el --- For navigating in a parse table as output 
by wisitoken-bnf-generate. -*- lexical-binding:t -*-
 ;;
-;; Copyright (C) 2017 - 2019  Free Software Foundation, Inc.
+;; Copyright (C) 2017 - 2020  Free Software Foundation, Inc.
 ;;
 ;; Author: Stephen Leake <address@hidden>
 ;; Maintainer: Stephen Leake <address@hidden>
@@ -43,22 +43,20 @@
   ;;
   ;; - 'reduce n tokens to <nonterminal> <prod_id>'
   ;; => return 'prod_id: name'
-  (save-excursion
-    (cond
-     ((save-excursion
-       (end-of-line)
-       ;; "go to" for bison output
-       (or (looking-back "go ?to state \\([0-9]+\\),?" 
(line-beginning-position))
-           (looking-back "( \\([0-9]+\\))" (line-beginning-position))))
-      (match-string 1))
+  (cond
+   ((save-excursion
+      (beginning-of-line)
+      ;; "go to" for bison output
+      (search-forward-regexp "go ?to state \\([0-9]+\\)" (line-end-position) 
t))
+    (match-string 1))
 
-     ((save-excursion
-       (back-to-indentation)
-       (looking-at "[a-zA-Z_]+ + => reduce [0-9]+ tokens to \\([a-z0-9_]+\\) 
\\([0-9.]+\\)"))
-      (concat (match-string 2) ": " (match-string 1)))
+   ((save-excursion
+      (beginning-of-line)
+      (search-forward-regexp "reduce [0-9]+ tokens to \\([[:alnum:]_]+\\) 
\\([0-9.]+\\)" (line-end-position) t))
+    (concat (match-string 2) ": " (match-string 1)))
 
-     (t
-      (thing-at-point 'symbol)))))
+   (t
+    (thing-at-point 'symbol))))
 
 (cl-defgeneric xref-backend-definitions ((_backend (eql 
wisitoken-parse_table)) identifier)
   ;; IDENTIFIER is from xref-back-identifier-at-point; a state number or a 
nonterminal
diff --git a/packages/wisi/wisitoken-productions.adb 
b/packages/wisi/wisitoken-productions.adb
index f95210b..2f1892f 100644
--- a/packages/wisi/wisitoken-productions.adb
+++ b/packages/wisi/wisitoken-productions.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2018 Free Software Foundation, Inc.
+--  Copyright (C) 2018, 2020 Free Software Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -23,6 +23,31 @@ pragma License (Modified_GPL);
 with Ada.Text_IO;
 package body WisiToken.Productions is
 
+   function Image (Item : in Recursion_Arrays.Vector) return String
+   is
+      use Ada.Strings.Unbounded;
+      Result     : Ada.Strings.Unbounded.Unbounded_String := +"(";
+      Need_Comma : Boolean                                := False;
+   begin
+      --  We assume most are None, so we use named association
+      for I in Item.First_Index .. Item.Last_Index loop
+         if Item (I) /= None then
+            Result := Result & (if Need_Comma then ", " else "") & 
Trimmed_Image (I) & " => " & Image (Item (I));
+            Need_Comma := True;
+         end if;
+      end loop;
+      Result := Result & ")";
+      return -Result;
+   end Image;
+
+   function Constant_Ref_RHS
+     (Grammar : in Prod_Arrays.Vector;
+      ID      : in Production_ID)
+     return RHS_Arrays.Constant_Reference_Type
+   is begin
+      return RHS_Arrays.Constant_Ref (Grammar (ID.LHS).RHSs, ID.RHS);
+   end Constant_Ref_RHS;
+
    function Image
      (LHS        : in Token_ID;
       RHS_Index  : in Natural;
@@ -40,10 +65,17 @@ package body WisiToken.Productions is
    end Image;
 
    procedure Put (Grammar : Prod_Arrays.Vector; Descriptor : in 
WisiToken.Descriptor)
-   is begin
+   is
+      use Ada.Text_IO;
+   begin
       for P of Grammar loop
          for R in P.RHSs.First_Index .. P.RHSs.Last_Index loop
-            Ada.Text_IO.Put_Line (Image (P.LHS, R, P.RHSs (R).Tokens, 
Descriptor));
+            Put (Image (P.LHS, R, P.RHSs (R).Tokens, Descriptor));
+            if (for all Item of Grammar (P.LHS).RHSs (R).Recursion => Item = 
None) then
+               New_Line;
+            else
+               Put_Line (" ; " & Image (Grammar (P.LHS).RHSs (R).Recursion));
+            end if;
          end loop;
       end loop;
    end Put;
diff --git a/packages/wisi/wisitoken-productions.ads 
b/packages/wisi/wisitoken-productions.ads
index 854b302..8b8c8f8 100644
--- a/packages/wisi/wisitoken-productions.ads
+++ b/packages/wisi/wisitoken-productions.ads
@@ -2,7 +2,7 @@
 --
 --  Type and operations for building grammar productions.
 --
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 Free Software Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -24,12 +24,27 @@ with SAL.Gen_Unbounded_Definite_Vectors;
 with WisiToken.Semantic_Checks;
 with WisiToken.Syntax_Trees;
 package WisiToken.Productions is
+   use all type Ada.Containers.Count_Type;
+
+   package Recursion_Arrays is new SAL.Gen_Unbounded_Definite_Vectors
+     (Positive, Recursion_Class, Default_Element => None);
+
+   function Image (Item : in Recursion_Arrays.Vector) return String;
+   --  For parse_table
 
    type Right_Hand_Side is record
-      Tokens : Token_ID_Arrays.Vector;
+      Tokens    : Token_ID_Arrays.Vector;
+      Recursion : Recursion_Arrays.Vector;
+      --  Recursion for each token. There may be more than one recursion cycle 
for any token,
+      --  but we don't track that.
+
       Action : WisiToken.Syntax_Trees.Semantic_Action;
       Check  : WisiToken.Semantic_Checks.Semantic_Check;
-   end record;
+   end record
+   with Dynamic_Predicate =>
+     (Tokens.Length = 0 or Tokens.First_Index = 1) and
+     (Recursion.Length = 0 or
+      (Recursion.First_Index = Tokens.First_Index and Recursion.Last_Index = 
Tokens.Last_Index));
 
    package RHS_Arrays is new SAL.Gen_Unbounded_Definite_Vectors
      (Natural, Right_Hand_Side, Default_Element => (others => <>));
@@ -42,6 +57,11 @@ package WisiToken.Productions is
    package Prod_Arrays is new SAL.Gen_Unbounded_Definite_Vectors
      (Token_ID, Instance, Default_Element => (others => <>));
 
+   function Constant_Ref_RHS
+     (Grammar : in Prod_Arrays.Vector;
+      ID      : in Production_ID)
+     return RHS_Arrays.Constant_Reference_Type;
+
    function Image
      (LHS        : in Token_ID;
       RHS_Index  : in Natural;
@@ -51,7 +71,7 @@ package WisiToken.Productions is
    --  For comments in generated code, diagnostic messages.
 
    procedure Put (Grammar : Prod_Arrays.Vector; Descriptor : in 
WisiToken.Descriptor);
-   --  Put Image of each production to Ada.Text_IO.Current_Output.
+   --  Put Image of each production to Ada.Text_IO.Current_Output, for 
parse_table.
 
    package Line_Number_Arrays is new SAL.Gen_Unbounded_Definite_Vectors
      (Natural, Line_Number_Type, Default_Element => Invalid_Line_Number);
diff --git a/packages/wisi/wisitoken-syntax_trees-lr_utils.adb 
b/packages/wisi/wisitoken-syntax_trees-lr_utils.adb
index a456d82..c75ccea 100644
--- a/packages/wisi/wisitoken-syntax_trees-lr_utils.adb
+++ b/packages/wisi/wisitoken-syntax_trees-lr_utils.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2019 Stephen Leake All Rights Reserved.
+--  Copyright (C) 2019, 2020 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
@@ -24,9 +24,9 @@ package body WisiToken.Syntax_Trees.LR_Utils is
       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)
+      Node       : in Node_Index)
    is
-      Terminal_Index : constant Base_Token_Index := Tree.Min_Terminal_Index 
(Node);
+      Terminal_Index : constant Base_Token_Index := Tree.First_Shared_Terminal 
(Node);
    begin
       raise SAL.Programmer_Error with Error_Message
         (Lexer.File_Name,
diff --git a/packages/wisi/wisitoken-syntax_trees-lr_utils.ads 
b/packages/wisi/wisitoken-syntax_trees-lr_utils.ads
index 9033f49..84292b4 100644
--- a/packages/wisi/wisitoken-syntax_trees-lr_utils.ads
+++ b/packages/wisi/wisitoken-syntax_trees-lr_utils.ads
@@ -2,7 +2,7 @@
 --
 --  Utilities for navigating syntax trees produced by an LR parser.
 --
---  Copyright (C) 2019 Stephen Leake All Rights Reserved.
+--  Copyright (C) 2019, 2020 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
@@ -26,7 +26,7 @@ package WisiToken.Syntax_Trees.LR_Utils is
       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);
+      Node       : in WisiToken.Node_Index);
    pragma No_Return (Raise_Programmer_Error);
 
    ----------
diff --git a/packages/wisi/wisitoken-syntax_trees.adb 
b/packages/wisi/wisitoken-syntax_trees.adb
index abcc4d8..7e98947 100644
--- a/packages/wisi/wisitoken-syntax_trees.adb
+++ b/packages/wisi/wisitoken-syntax_trees.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -32,8 +32,6 @@ package body WisiToken.Syntax_Trees is
       Include_RHS_Index : in Boolean := False)
      return String;
 
-   function Min (Item : in Valid_Node_Index_Array) return Valid_Node_Index;
-
    procedure Move_Branch_Point (Tree : in out Syntax_Trees.Tree; Required_Node 
: in Valid_Node_Index);
 
    type Visit_Parent_Mode is (Before, After);
@@ -52,7 +50,7 @@ package body WisiToken.Syntax_Trees is
    --  all nodes have been processed (Process_Tree returns True).
 
    procedure Set_Children
-     (Nodes    : in out Node_Arrays.Vector;
+     (Tree     : in out Syntax_Trees.Tree;
       Parent   : in     Valid_Node_Index;
       Children : in     Valid_Node_Index_Array);
 
@@ -133,20 +131,7 @@ package body WisiToken.Syntax_Trees is
          return Nonterm_Node;
       end if;
 
-      if Tree.Flush then
-         Set_Children (Tree.Shared_Tree.Nodes, Nonterm_Node, Children);
-
-      else
-         declare
-            Min_Child_Node : constant Valid_Node_Index := Min (Children);
-         begin
-            if Min_Child_Node <= Tree.Last_Shared_Node then
-               Move_Branch_Point (Tree, Min_Child_Node);
-            end if;
-         end;
-
-         Set_Children (Tree.Branched_Nodes, Nonterm_Node, Children);
-      end if;
+      Set_Children (Tree, Nonterm_Node, Children);
 
       return Nonterm_Node;
    end Add_Nonterm;
@@ -179,13 +164,15 @@ package body WisiToken.Syntax_Trees is
 
    function Add_Terminal
      (Tree     : in out Syntax_Trees.Tree;
-      Terminal : in     Token_ID)
+      Terminal : in     Token_ID;
+      Before   : in     Base_Token_Index := Invalid_Token_Index)
      return Valid_Node_Index
    is begin
       if Tree.Flush then
          Tree.Shared_Tree.Nodes.Append
            ((Label  => Virtual_Terminal,
              ID     => Terminal,
+             Before => Before,
              others => <>));
          Tree.Last_Shared_Node := Tree.Shared_Tree.Nodes.Last_Index;
          return Tree.Last_Shared_Node;
@@ -193,11 +180,24 @@ package body WisiToken.Syntax_Trees is
          Tree.Branched_Nodes.Append
            ((Label  => Virtual_Terminal,
              ID     => Terminal,
+             Before => Before,
              others => <>));
          return Tree.Branched_Nodes.Last_Index;
       end if;
    end Add_Terminal;
 
+   function Before
+     (Tree             : in Syntax_Trees.Tree;
+      Virtual_Terminal : in Valid_Node_Index)
+     return Base_Token_Index
+   is begin
+      if Tree.Flush then
+         return Tree.Shared_Tree.Nodes (Virtual_Terminal).Before;
+      else
+         return Tree.Branched_Nodes (Virtual_Terminal).Before;
+      end if;
+   end Before;
+
    function Augmented
      (Tree : in Syntax_Trees.Tree;
       Node : in Valid_Node_Index)
@@ -210,6 +210,18 @@ package body WisiToken.Syntax_Trees is
       end if;
    end Augmented;
 
+   function Augmented_Const
+     (Tree : in Syntax_Trees.Tree;
+      Node : in Valid_Node_Index)
+     return Base_Token_Class_Access_Constant
+   is begin
+      if Node <= Tree.Last_Shared_Node then
+         return Base_Token_Class_Access_Constant (Tree.Shared_Tree.Nodes 
(Node).Augmented);
+      else
+         return Base_Token_Class_Access_Constant (Tree.Branched_Nodes 
(Node).Augmented);
+      end if;
+   end Augmented_Const;
+
    function Byte_Region
      (Tree : in Syntax_Trees.Tree;
       Node : in Valid_Node_Index)
@@ -305,12 +317,13 @@ package body WisiToken.Syntax_Trees is
                Node : Syntax_Trees.Node renames Tree.Shared_Tree.Nodes (Index);
             begin
                Tree.Shared_Tree.Nodes.Append
-                 ((Label         => Shared_Terminal,
-                   ID            => Node.ID,
-                   Byte_Region   => Node.Byte_Region,
-                   Parent        => Parent,
-                   State         => Unknown_State,
-                   Terminal      => Node.Terminal));
+                 ((Label       => Shared_Terminal,
+                   ID          => Node.ID,
+                   Byte_Region => Node.Byte_Region,
+                   Parent      => Parent,
+                   State       => Unknown_State,
+                   Augmented   => Node.Augmented,
+                   Terminal    => Node.Terminal));
             end;
 
          when Virtual_Terminal =>
@@ -318,11 +331,13 @@ package body WisiToken.Syntax_Trees is
                Node : Syntax_Trees.Node renames Tree.Shared_Tree.Nodes (Index);
             begin
                Tree.Shared_Tree.Nodes.Append
-                 ((Label          => Virtual_Terminal,
-                   ID             => Node.ID,
-                   Byte_Region    => Node.Byte_Region,
-                   Parent         => Parent,
-                   State          => Unknown_State));
+                 ((Label       => Virtual_Terminal,
+                   ID          => Node.ID,
+                   Byte_Region => Node.Byte_Region,
+                   Parent      => Parent,
+                   State       => Unknown_State,
+                   Augmented   => Node.Augmented,
+                   Before      => Node.Before));
             end;
 
          when Virtual_Identifier =>
@@ -330,12 +345,13 @@ package body WisiToken.Syntax_Trees is
                Node : Syntax_Trees.Node renames Tree.Shared_Tree.Nodes (Index);
             begin
                Tree.Shared_Tree.Nodes.Append
-                 ((Label            => Virtual_Identifier,
-                   ID               => Node.ID,
-                   Byte_Region      => Node.Byte_Region,
-                   Parent           => Parent,
-                   State            => Unknown_State,
-                   Identifier       => Node.Identifier));
+                 ((Label       => Virtual_Identifier,
+                   ID          => Node.ID,
+                   Byte_Region => Node.Byte_Region,
+                   Parent      => Parent,
+                   State       => Unknown_State,
+                   Augmented   => Node.Augmented,
+                   Identifier  => Node.Identifier));
             end;
 
          when Nonterm =>
@@ -377,14 +393,13 @@ package body WisiToken.Syntax_Trees is
                       Byte_Region        => Node.Byte_Region,
                       Parent             => Parent,
                       State              => Unknown_State,
+                      Augmented          => Node.Augmented,
                       Virtual            => Node.Virtual,
                       RHS_Index          => Node.RHS_Index,
                       Action             => Node.Action,
                       Name               => Node.Name,
                       Children           => New_Children,
-                      Min_Terminal_Index => Node.Min_Terminal_Index,
-                      Max_Terminal_Index => Node.Max_Terminal_Index,
-                      Augmented          => Node.Augmented));
+                      Min_Terminal_Index => Node.Min_Terminal_Index));
                end;
 
                Tree.Last_Shared_Node := Tree.Shared_Tree.Nodes.Last_Index;
@@ -465,7 +480,8 @@ package body WisiToken.Syntax_Trees is
 
    overriding procedure Finalize (Tree : in out Base_Tree)
    is begin
-      Tree.Traversing := False;
+      Tree.Traversing  := False;
+      Tree.Parents_Set := False;
       if Tree.Augmented_Present then
          for Node of Tree.Nodes loop
             if Node.Label = Nonterm then
@@ -480,19 +496,27 @@ package body WisiToken.Syntax_Trees is
    overriding procedure Finalize (Tree : in out Syntax_Trees.Tree)
    is begin
       if Tree.Last_Shared_Node /= Invalid_Node_Index then
-         if Tree.Shared_Tree.Augmented_Present then
-            for Node of Tree.Branched_Nodes loop
-               Free (Node.Augmented);
-            end loop;
-            --  We don't clear Tree.Shared_Tree.Augmented_Present here; other
-            --  branched trees may need to be finalized.
-         end if;
+         --  Tree.Branched_Nodes Augmented are shallow copies of
+         --  Tree.Shared_Tree.Nodes Augmented, so we don't free them there;
+         --  they are freed in Base_Tree.Finalize above.
          Tree.Branched_Nodes.Finalize;
          Tree.Last_Shared_Node := Invalid_Node_Index;
          Tree.Shared_Tree := null;
       end if;
    end Finalize;
 
+   function Insert_After
+     (User_Data            : in out User_Data_Type;
+      Tree                 : in     Syntax_Trees.Tree'Class;
+      Token                : in     Valid_Node_Index;
+      Insert_On_Blank_Line : in     Boolean)
+     return Boolean
+   is
+      pragma Unreferenced (User_Data, Tree, Token, Insert_On_Blank_Line);
+   begin
+      return False;
+   end Insert_After;
+
    function Find_Ancestor
      (Tree : in Syntax_Trees.Tree;
       Node : in Valid_Node_Index;
@@ -624,72 +648,6 @@ package body WisiToken.Syntax_Trees is
       return Found;
    end Find_Descendant;
 
-   function Find_Min_Terminal_Index
-     (Tree  : in Syntax_Trees.Tree;
-      Index : in Token_Index)
-     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
-         function Compute (N : in Syntax_Trees.Node) return Boolean
-         is begin
-            if N.Label /= Nonterm then
-               return True;
-            elsif Index = N.Min_Terminal_Index then
-               Found := Node;
-               return False;
-            else
-               return True;
-            end if;
-         end Compute;
-      begin
-         return Compute
-           ((if Node <= Tree.Last_Shared_Node
-             then Tree.Shared_Tree.Nodes (Node)
-             else Tree.Branched_Nodes (Node)));
-      end Process;
-
-      Junk : constant Boolean := Process_Tree (Tree, Tree.Root, Before, 
Process'Access);
-      pragma Unreferenced (Junk);
-   begin
-      return Found;
-   end Find_Min_Terminal_Index;
-
-   function Find_Max_Terminal_Index
-     (Tree  : in Syntax_Trees.Tree;
-      Index : in Token_Index)
-     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
-         function Compute (N : in Syntax_Trees.Node) return Boolean
-         is begin
-            if N.Label /= Nonterm then
-               return True;
-            elsif Index = N.Max_Terminal_Index then
-               Found := Node;
-               return False;
-            else
-               return True;
-            end if;
-         end Compute;
-      begin
-         return Compute
-           ((if Node <= Tree.Last_Shared_Node
-             then Tree.Shared_Tree.Nodes (Node)
-             else Tree.Branched_Nodes (Node)));
-      end Process;
-
-      Junk : constant Boolean := Process_Tree (Tree, Tree.Root, Before, 
Process'Access);
-      pragma Unreferenced (Junk);
-   begin
-      return Found;
-   end Find_Max_Terminal_Index;
-
    function Find_Sibling
      (Tree : in Syntax_Trees.Tree;
       Node : in Valid_Node_Index;
@@ -838,6 +796,34 @@ package body WisiToken.Syntax_Trees is
       end return;
    end Get_Terminals;
 
+   function First_Terminal (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Node_Index
+   is
+      function Compute (Index : in Valid_Node_Index; N : in Syntax_Trees.Node) 
return Node_Index
+      is begin
+         case N.Label is
+         when Shared_Terminal | Virtual_Terminal | Virtual_Identifier =>
+            return Index;
+         when Nonterm =>
+            for C of N.Children loop
+               declare
+                  Term : constant Node_Index := First_Terminal (Tree, C);
+               begin
+                  if Term /= Invalid_Node_Index then
+                     return Term;
+                  end if;
+               end;
+            end loop;
+            return Invalid_Node_Index;
+         end case;
+      end Compute;
+   begin
+      return Compute
+        (Node,
+         (if Node <= Tree.Last_Shared_Node
+          then Tree.Shared_Tree.Nodes (Node)
+          else Tree.Branched_Nodes (Node)));
+   end First_Terminal;
+
    procedure Get_Terminal_IDs
      (Tree   : in     Syntax_Trees.Tree;
       Node   : in     Valid_Node_Index;
@@ -877,6 +863,26 @@ package body WisiToken.Syntax_Trees is
       end return;
    end Get_Terminal_IDs;
 
+   function First_Shared_Terminal (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Base_Token_Index
+   is
+      function Compute (N : in Syntax_Trees.Node) return Base_Token_Index
+      is begin
+         return
+           (case N.Label is
+            when Shared_Terminal => N.Terminal,
+            when Virtual_Terminal |
+              Virtual_Identifier => Invalid_Token_Index,
+            when Nonterm         => N.Min_Terminal_Index);
+      end Compute;
+
+   begin
+      if Node <= Tree.Last_Shared_Node then
+         return Compute (Tree.Shared_Tree.Nodes (Node));
+      else
+         return Compute (Tree.Branched_Nodes (Node));
+      end if;
+   end First_Shared_Terminal;
+
    function First_Terminal_ID (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Token_ID
    is
       function Compute (N : in Syntax_Trees.Node) return Token_ID
@@ -886,7 +892,16 @@ package body WisiToken.Syntax_Trees is
             return N.ID;
 
          when Nonterm =>
-            return First_Terminal_ID (Tree, N.Children (1));
+            for C of N.Children loop
+               declare
+                  ID : constant Token_ID := First_Terminal_ID (Tree, C);
+               begin
+                  if ID /= Invalid_Token_ID then
+                     return ID;
+                  end if;
+               end;
+            end loop;
+            return Invalid_Token_ID;
          end case;
       end Compute;
    begin
@@ -1083,14 +1098,23 @@ package body WisiToken.Syntax_Trees is
       end if;
    end Is_Nonterm;
 
-   function Is_Terminal (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Boolean
+   function Is_Shared_Terminal (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Boolean
    is begin
       if Node <= Tree.Last_Shared_Node then
          return Tree.Shared_Tree.Nodes (Node).Label = Shared_Terminal;
       else
          return Tree.Branched_Nodes (Node).Label = Shared_Terminal;
       end if;
-   end Is_Terminal;
+   end Is_Shared_Terminal;
+
+   function Is_Virtual_Terminal (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Boolean
+   is begin
+      if Node <= Tree.Last_Shared_Node then
+         return Tree.Shared_Tree.Nodes (Node).Label = Virtual_Terminal;
+      else
+         return Tree.Branched_Nodes (Node).Label = Virtual_Terminal;
+      end if;
+   end Is_Virtual_Terminal;
 
    function Is_Virtual (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Boolean
    is
@@ -1131,17 +1155,61 @@ package body WisiToken.Syntax_Trees is
          else Tree.Branched_Nodes.Last_Index);
    end Last_Index;
 
-   function Min (Item : in Valid_Node_Index_Array) return Valid_Node_Index
+   function Last_Shared_Terminal (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Base_Token_Index
+   is
+      --  Max_Terminal_Index is not cached, because it is not needed in 
recover.
+
+      function Compute (N : in Syntax_Trees.Node) return Base_Token_Index
+      is begin
+         case N.Label is
+         when Shared_Terminal =>
+            return N.Terminal;
+
+         when Virtual_Terminal | Virtual_Identifier =>
+            return Invalid_Token_Index;
+
+         when Nonterm =>
+            for C of reverse N.Children loop
+               declare
+                  Last_Term : constant Base_Token_Index := 
Tree.Last_Shared_Terminal (C);
+               begin
+                  if Last_Term /= Invalid_Token_Index then
+                     return Last_Term;
+                  end if;
+               end;
+            end loop;
+            return Invalid_Token_Index;
+         end case;
+      end Compute;
+
+   begin
+      if Node <= Tree.Last_Shared_Node then
+         return Compute (Tree.Shared_Tree.Nodes (Node));
+      else
+         return Compute (Tree.Branched_Nodes (Node));
+      end if;
+   end Last_Shared_Terminal;
+
+   function Last_Terminal (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Node_Index
    is
-      Result : Node_Index := Item (Item'First);
+      N : constant Node_Const_Ref := Tree.Get_Node_Const_Ref (Node);
    begin
-      for I in Item'Range loop
-         if Item (I) < Result then
-            Result := Item (I);
-         end if;
-      end loop;
-      return Result;
-   end Min;
+      case N.Label is
+      when Shared_Terminal | Virtual_Terminal | Virtual_Identifier =>
+         return Node;
+      when Nonterm =>
+         for C of reverse N.Children loop
+            declare
+               Term : constant Node_Index := Last_Terminal (Tree, C);
+            begin
+               if Term /= Invalid_Node_Index then
+                  return Term;
+               end if;
+            end;
+         end loop;
+         return Invalid_Node_Index;
+      end case;
+   end Last_Terminal;
 
    function Min_Descendant (Nodes : in Node_Arrays.Vector; Node : in 
Valid_Node_Index) return Valid_Node_Index
    is
@@ -1163,44 +1231,6 @@ package body WisiToken.Syntax_Trees is
       end case;
    end Min_Descendant;
 
-   function Min_Terminal_Index (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Base_Token_Index
-   is
-      function Compute (N : in Syntax_Trees.Node) return Base_Token_Index
-      is begin
-         return
-           (case N.Label is
-            when Shared_Terminal                       => N.Terminal,
-            when Virtual_Terminal | Virtual_Identifier => Invalid_Token_Index,
-            when Nonterm                               => 
N.Min_Terminal_Index);
-      end Compute;
-
-   begin
-      if Node <= Tree.Last_Shared_Node then
-         return Compute (Tree.Shared_Tree.Nodes (Node));
-      else
-         return Compute (Tree.Branched_Nodes (Node));
-      end if;
-   end Min_Terminal_Index;
-
-   function Max_Terminal_Index (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Base_Token_Index
-   is
-      function Compute (N : in Syntax_Trees.Node) return Base_Token_Index
-      is begin
-         return
-           (case N.Label is
-            when Shared_Terminal                       => N.Terminal,
-            when Virtual_Terminal | Virtual_Identifier => Invalid_Token_Index,
-            when Nonterm                               => 
N.Max_Terminal_Index);
-      end Compute;
-
-   begin
-      if Node <= Tree.Last_Shared_Node then
-         return Compute (Tree.Shared_Tree.Nodes (Node));
-      else
-         return Compute (Tree.Branched_Nodes (Node));
-      end if;
-   end Max_Terminal_Index;
-
    procedure Move_Branch_Point (Tree : in out Syntax_Trees.Tree; Required_Node 
: in Valid_Node_Index)
    is begin
       --  Note that this preserves all stored indices in Branched_Nodes.
@@ -1208,6 +1238,70 @@ package body WisiToken.Syntax_Trees is
       Tree.Last_Shared_Node := Required_Node - 1;
    end Move_Branch_Point;
 
+   function Next_Terminal (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Node_Index
+   is
+      use Valid_Node_Index_Arrays;
+      use all type SAL.Base_Peek_Type;
+
+      function First_Child (Node : in Valid_Node_Index) return Node_Index
+      is
+         N : Node_Const_Ref renames Tree.Get_Node_Const_Ref (Node);
+      begin
+         case N.Label is
+         when Shared_Terminal | Virtual_Terminal | Virtual_Identifier =>
+            return Node;
+         when Nonterm =>
+            --  Use first non-empty
+            for J in N.Children.First_Index .. N.Children.Last_Index loop
+               declare
+                  Result : constant Node_Index := First_Child (N.Children (J));
+               begin
+                  if Result /= Invalid_Node_Index then
+                     return Result;
+                  end if;
+               end;
+            end loop;
+            --  All Children are empty
+            return Invalid_Node_Index;
+         end case;
+      end First_Child;
+
+      function Next_Child (Child : in Valid_Node_Index; Node : in Node_Index) 
return Node_Index
+      is begin
+         --  Node is Parent of Child; return node immediately after Child.
+         if Node = Invalid_Node_Index then
+            return Invalid_Node_Index;
+         else
+            declare
+               N : Node_Const_Ref renames Tree.Get_Node_Const_Ref (Node);
+            begin
+               pragma Assert (N.Label = Nonterm);
+               for I in N.Children.First_Index .. N.Children.Last_Index loop
+                  if N.Children (I) = Child then
+                     --  Use first non-empty next from I + 1.
+                     for J in I + 1 .. N.Children.Last_Index loop
+                        declare
+                           Result : constant Node_Index := First_Child 
(N.Children (J));
+                        begin
+                           if Result /= Invalid_Node_Index then
+                              return Result;
+                           end if;
+                        end;
+                     end loop;
+                     --  All next Children are empty
+                     return Next_Child (Node, N.Parent);
+                  end if;
+               end loop;
+               raise SAL.Programmer_Error;
+            end;
+         end if;
+      end Next_Child;
+
+      N : Node_Const_Ref renames Get_Node_Const_Ref (Tree, Node);
+   begin
+      return Next_Child (Node, N.Parent);
+   end Next_Terminal;
+
    function Parent
      (Tree  : in Syntax_Trees.Tree;
       Node  : in Valid_Node_Index;
@@ -1229,10 +1323,75 @@ package body WisiToken.Syntax_Trees is
       return Result;
    end Parent;
 
+   function Prev_Terminal (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Node_Index
+   is
+      use Valid_Node_Index_Arrays;
+      use all type SAL.Base_Peek_Type;
+
+      function Last_Child (Node : in Valid_Node_Index) return Node_Index
+      is
+         N : Node_Const_Ref renames Tree.Get_Node_Const_Ref (Node);
+      begin
+         case N.Label is
+         when Shared_Terminal | Virtual_Terminal | Virtual_Identifier =>
+            return Node;
+         when Nonterm =>
+            --  Use first non-empty from end.
+            for J in reverse N.Children.First_Index .. N.Children.Last_Index 
loop
+               declare
+                  Result : constant Node_Index := Last_Child (N.Children (J));
+               begin
+                  if Result /= Invalid_Node_Index then
+                     return Result;
+                  end if;
+               end;
+            end loop;
+            --  All Children are empty
+            return Invalid_Node_Index;
+         end case;
+      end Last_Child;
+
+      function Prev_Child (Child : in Valid_Node_Index; Node : in Node_Index) 
return Node_Index
+      is begin
+         --  Node is Parent of Child; return node immediately previous to 
Child.
+         if Node = Invalid_Node_Index then
+            return Invalid_Node_Index;
+         else
+            declare
+               N : Node_Const_Ref renames Tree.Get_Node_Const_Ref (Node);
+            begin
+               pragma Assert (N.Label = Nonterm);
+               for I in reverse N.Children.First_Index .. 
N.Children.Last_Index loop
+                  if N.Children (I) = Child then
+                     --  Use first non-empty from I - 1.
+                     for J in reverse N.Children.First_Index .. I - 1 loop
+                        declare
+                           Result : constant Node_Index := Last_Child 
(N.Children (J));
+                        begin
+                           if Result /= Invalid_Node_Index then
+                              return Result;
+                           end if;
+                        end;
+                     end loop;
+                     --  All previous Children are empty
+                     return Prev_Child (Node, N.Parent);
+                  end if;
+               end loop;
+               raise SAL.Programmer_Error;
+            end;
+         end if;
+      end Prev_Child;
+
+      N : Node_Const_Ref renames Get_Node_Const_Ref (Tree, Node);
+   begin
+      return Prev_Child (Node, N.Parent);
+   end Prev_Terminal;
+
    procedure Print_Tree
-     (Tree       : in Syntax_Trees.Tree;
-      Descriptor : in WisiToken.Descriptor;
-      Root       : in Node_Index := Invalid_Node_Index)
+     (Tree            : in Syntax_Trees.Tree;
+      Descriptor      : in WisiToken.Descriptor;
+      Root            : in Node_Index                   := Invalid_Node_Index;
+      Image_Augmented : in Syntax_Trees.Image_Augmented := null)
    is
       use Ada.Text_IO;
 
@@ -1256,7 +1415,12 @@ package body WisiToken.Syntax_Trees is
          for I in 1 .. Level loop
             Put ("| ");
          end loop;
-         Put_Line (Image (Tree, N, Descriptor, Include_Children => False, 
Include_RHS_Index => True));
+         Put (Image (Tree, N, Descriptor, Include_Children => False, 
Include_RHS_Index => True));
+         if Image_Augmented /=  null and N.Augmented /= null then
+            Put_Line (" - " & Image_Augmented (N.Augmented));
+         else
+            New_Line;
+         end if;
 
          if N.Label = Nonterm then
             for Child of N.Children loop
@@ -1391,9 +1555,35 @@ package body WisiToken.Syntax_Trees is
           Identifier  => Identifier,
           Byte_Region => Current.Byte_Region,
           Parent      => Current.Parent,
-          State       => Unknown_State));
+          State       => Unknown_State,
+          Augmented   => null));
    end Set_Node_Identifier;
 
+   procedure Set_Parents (Tree : in out Syntax_Trees.Tree)
+   is
+      procedure Set_Parents
+        (Tree   : in out Syntax_Trees.Tree;
+         Node   : in     Valid_Node_Index;
+         Parent : in     Node_Index)
+      is
+         N : Node_Var_Ref renames Tree.Get_Node_Var_Ref (Node);
+      begin
+         N.Parent := Parent;
+         case N.Label is
+         when Shared_Terminal | Virtual_Terminal | Virtual_Identifier =>
+            null;
+
+         when Nonterm =>
+            for C of N.Children loop
+               Set_Parents (Tree, C, Node);
+            end loop;
+         end case;
+      end Set_Parents;
+   begin
+      Set_Parents (Tree, Root (Tree), Invalid_Node_Index);
+      Tree.Shared_Tree.Parents_Set := True;
+   end Set_Parents;
+
    procedure Set_Root (Tree : in out Syntax_Trees.Tree; Root : in 
Valid_Node_Index)
    is begin
       Tree.Root := Root;
@@ -1449,25 +1639,36 @@ package body WisiToken.Syntax_Trees is
    end Set_Augmented;
 
    procedure Set_Children
-     (Nodes    : in out Node_Arrays.Vector;
+     (Tree     : in out Syntax_Trees.Tree;
       Parent   : in     Valid_Node_Index;
       Children : in     Valid_Node_Index_Array)
    is
       use all type SAL.Base_Peek_Type;
 
-      N : Nonterm_Node renames Nodes (Parent);
-      J : Positive_Index_Type := Positive_Index_Type'First;
+      N : Node_Var_Ref renames Tree.Get_Node_Var_Ref (Parent);
 
       Min_Terminal_Index_Set : Boolean := False;
    begin
       N.Children.Set_First_Last (Children'First, Children'Last);
       for I in Children'Range loop
-         N.Children (J) := Children (I);
+         N.Children (I) := Children (I);
+
+         if Tree.Parents_Set then
+            --  Parsing is done; we are editing the tree.
+            declare
+               K : Node_Var_Ref renames Tree.Get_Node_Var_Ref (Children (I));
+            begin
+               K.Parent := Parent;
+            end;
+         else
+            --  We do _not_ set K.Parent here; that is only done after parsing 
is
+            --  complete. See Design note in spec.
+            null;
+         end if;
+
          declare
-            K : Node renames Nodes (Children (I));
+            K : Node_Const_Ref renames Tree.Get_Node_Const_Ref (Children (I));
          begin
-            K.Parent := Parent;
-
             N.Virtual := N.Virtual or
               (case K.Label is
                when Shared_Terminal                       => False,
@@ -1499,27 +1700,7 @@ package body WisiToken.Syntax_Trees is
                   end if;
                end case;
             end if;
-
-            case K.Label is
-            when Shared_Terminal =>
-               if N.Max_Terminal_Index < K.Terminal then
-                  N.Max_Terminal_Index := K.Terminal;
-               end if;
-
-            when Virtual_Terminal | Virtual_Identifier =>
-               null;
-
-            when Nonterm =>
-               if K.Max_Terminal_Index /= Invalid_Token_Index and then
-                 --  not an empty nonterm
-                 N.Max_Terminal_Index < K.Max_Terminal_Index
-               then
-                  N.Max_Terminal_Index := K.Max_Terminal_Index;
-               end if;
-            end case;
          end;
-
-         J := J + 1;
       end loop;
    end Set_Children;
 
diff --git a/packages/wisi/wisitoken-syntax_trees.ads 
b/packages/wisi/wisitoken-syntax_trees.ads
index 85fd2c5..5eff265 100644
--- a/packages/wisi/wisitoken-syntax_trees.ads
+++ b/packages/wisi/wisitoken-syntax_trees.ads
@@ -2,17 +2,34 @@
 --
 --  Syntax tree type and operations.
 --
---  Rationale :
+--  Design :
+--
+--  There is one syntax tree for each parallel parser. There is one
+--  shared Terminals array (provided by the master parser), matching
+--  the actual input text.
+--
+--  Node contains a Parent component, to make it easy to traverse the
+--  tree in any direction. However, we do not set the Parent nodes
+--  while parsing, to simplify branching the syntax tree for parallel
+--  parsing. When a new nonterm is added to a branched tree, if it set
+--  the parent component of its children, it would first have to move
+--  those children, and all intervening nodes, into the branched tree.
+--  Since Shared_Terminals nodes are created before all other nodes
+--  (when the lexer is run, to allow Lexer_To_Augmented to store info
+--  in the node), that would mean every branched tree is a practically
+--  complete copy of the entire tree, significantly slowing down
+--  parsing (by a factor of 250 on ada-mode wisi.adb when we did this
+--  by mistake!).
+--
+--  The parent components are set by Set_Parents, which is called by
+--  Parser.Execute_Actions before the actions are executed.
+--  Fortunately, we don't need the parent components during error
+--  recover.
 --
 --  We provide Base_Tree and Tree in one package, because only Tree
 --  needs an API; the only way Base_Tree is accessed is via Tree.
 --
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
-
---  There is one syntax tree for each parser. There is one shared
---  Terminals array, matching the actual input text.
---
---  Copyright (C) 2018 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -41,6 +58,9 @@ package WisiToken.Syntax_Trees is
 
    type Tree is new Ada.Finalization.Controlled with private;
 
+   type Tree_Variable_Reference (Element : access Tree) is null record with
+     Implicit_Dereference => Element;
+
    procedure Initialize
      (Branched_Tree : in out Tree;
       Shared_Tree   : in     Base_Tree_Access;
@@ -50,18 +70,6 @@ package WisiToken.Syntax_Trees is
    overriding procedure Finalize (Tree : in out Syntax_Trees.Tree);
    --  Free any allocated storage.
 
-   type Node_Index is range 0 .. Integer'Last;
-   subtype Valid_Node_Index is Node_Index range 1 .. Node_Index'Last;
-
-   Invalid_Node_Index : constant Node_Index := Node_Index'First;
-
-   type Valid_Node_Index_Array is array (Positive_Index_Type range <>) of 
Valid_Node_Index;
-   --  Index matches Base_Token_Array, Augmented_Token_Array
-
-   package Valid_Node_Index_Arrays is new SAL.Gen_Unbounded_Definite_Vectors
-     (Positive_Index_Type, Valid_Node_Index, Default_Element => 
Valid_Node_Index'First);
-   --  Index matches Valid_Node_Index_Array.
-
    type Node_Label is
      (Shared_Terminal,    -- text is user input, accessed via Parser.Terminals
       Virtual_Terminal,   -- no text; inserted during error recovery
@@ -92,19 +100,45 @@ package WisiToken.Syntax_Trees is
 
    procedure Lexer_To_Augmented
      (User_Data : in out          User_Data_Type;
+      Tree      : in out          Syntax_Trees.Tree'Class;
       Token     : in              Base_Token;
       Lexer     : not null access WisiToken.Lexer.Instance'Class)
      is null;
    --  Read auxiliary data from Lexer, do something useful with it.
-   --  Called before parsing, once for each token in the input stream.
+   --  Called before parsing, once for each token in the input stream. If
+   --  Token is a grammar token, client can use Tree.Set_Augmented
+   --  (Token.Tree_Node).
+
+   function Insert_After
+     (User_Data            : in out User_Data_Type;
+      Tree                 : in     Syntax_Trees.Tree'Class;
+      Token                : in     Valid_Node_Index;
+      Insert_On_Blank_Line : in     Boolean)
+     return Boolean;
+   --  Return True if ID should be treated as if inserted after the
+   --  previous shared terminal, rather than before the next (which is
+   --  the default). This can affect which line it appears on, which
+   --  affects indentation. Called from Insert_Token.
+   --
+   --  The default implementation always returns False.
+
+   procedure Insert_Token
+     (User_Data : in out User_Data_Type;
+      Tree      : in out Syntax_Trees.Tree'Class;
+      Token     : in     Valid_Node_Index)
+   is null;
+   --  Token was inserted in error recovery; update other tokens and Tree
+   --  as needed. Called from Execute_Actions for each inserted token,
+   --  before processing the syntax tree.
 
    procedure Delete_Token
      (User_Data   : in out User_Data_Type;
+      Tree        : in out Syntax_Trees.Tree'Class;
       Token_Index : in     WisiToken.Token_Index)
    is null;
    --  Token at Token_Index was deleted in error recovery; update
-   --  remaining tokens and Tree as needed. Called from Execute_Actions
-   --  for each deleted token, before processing the syntax tree.
+   --  remaining tokens as needed. Called from Execute_Actions for each
+   --  deleted token, before processing the syntax tree.
 
    procedure Reduce
      (User_Data : in out User_Data_Type;
@@ -145,12 +179,13 @@ package WisiToken.Syntax_Trees is
       Root : in     Valid_Node_Index;
       Last : in     Valid_Node_Index)
      return Valid_Node_Index
-   with Pre => Tree.Flushed;
+   with Pre => Tree.Flushed and Tree.Parents_Set;
    --  Deep copy (into Tree) subtree of Tree rooted at Root. Stop copying
    --  after children of Last are copied. Return root of new subtree.
    --
-   --  Node index order is preserved. References to objects external to
-   --  tree are shallow copied.
+   --  Parents of new child nodes are set. Node index order is preserved.
+   --  References to objects external to tree are shallow copied
+   --  (Terminals, Augmented).
 
    function Add_Nonterm
      (Tree            : in out Syntax_Trees.Tree;
@@ -175,11 +210,21 @@ package WisiToken.Syntax_Trees is
 
    function Add_Terminal
      (Tree     : in out Syntax_Trees.Tree;
-      Terminal : in     Token_ID)
+      Terminal : in     Token_ID;
+      Before   : in     Base_Token_Index := Invalid_Token_Index)
      return Valid_Node_Index
    with Pre => not Tree.Traversing;
-   --  Add a new Virtual_Terminal node with no parent. Result points to
-   --  the added node.
+   --  Add a new Virtual_Terminal node with no parent. Before is the
+   --  index of the terminal in Terminals that this virtual is inserted
+   --  before during error correction; if Invalid_Token_Index, it is
+   --  inserted during EBNF translation, and there is no such terminal in
+   --  Terminals. Result points to the added node.
+
+   function Before
+     (Tree             : in Syntax_Trees.Tree;
+      Virtual_Terminal : in Valid_Node_Index)
+     return Base_Token_Index
+   with Pre => Tree.Is_Virtual_Terminal (Virtual_Terminal);
 
    function Add_Identifier
      (Tree        : in out Syntax_Trees.Tree;
@@ -209,6 +254,7 @@ package WisiToken.Syntax_Trees is
       Children : in     Valid_Node_Index_Array)
    with
      Pre => Tree.Flushed and
+            Tree.Parents_Set and
             (not Tree.Traversing) and
             Tree.Is_Nonterm (Node);
    --  Set ID of Node to New_ID, and children to Children; set parent of
@@ -251,16 +297,25 @@ package WisiToken.Syntax_Trees is
    function Has_Parent (Tree : in Syntax_Trees.Tree; Children : in 
Valid_Node_Index_Array) return Boolean;
    function Is_Empty (Tree : in Syntax_Trees.Tree; Node : in Valid_Node_Index) 
return Boolean;
    function Is_Nonterm (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Boolean;
-   function Is_Terminal (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Boolean;
+   function Is_Shared_Terminal (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Boolean;
+   function Is_Virtual_Terminal (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Boolean;
+
    function Is_Virtual (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Boolean;
+   --  Virtual_Terminal, Virtual_Identifier, or Nonterm that contains some 
Virtual tokens.
+
    function Is_Virtual_Identifier (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Boolean;
    function Traversing (Tree : in Syntax_Trees.Tree) return Boolean;
 
+   function Parents_Set (Tree : in Syntax_Trees.Tree) return Boolean;
+   procedure Set_Parents (Tree : in out Syntax_Trees.Tree)
+   with Pre => Tree.Flushed;
+
    function Parent
      (Tree  : in Syntax_Trees.Tree;
       Node  : in Valid_Node_Index;
       Count : in Positive := 1)
-     return Node_Index;
+     return Node_Index
+   with Pre => Tree.Parents_Set;
    --  Return Count parent of Node.
 
    procedure Set_Name_Region
@@ -308,23 +363,24 @@ package WisiToken.Syntax_Trees is
      (Tree  : in Syntax_Trees.Tree;
       Nodes : in Valid_Node_Index_Array)
      return WisiToken.Recover_Token_Array;
-   --  For non-virtual terminals, copied from Tree.Terminals. For others,
-   --  constructed from Tree data.
 
    procedure Set_Augmented
      (Tree  : in out Syntax_Trees.Tree;
       Node  : in     Valid_Node_Index;
-      Value : in     Base_Token_Class_Access)
-   with Pre => Tree.Is_Nonterm (Node);
+      Value : in     Base_Token_Class_Access);
    --  Value will be deallocated when Tree is finalized.
 
    function Augmented
      (Tree : in Syntax_Trees.Tree;
       Node : in Valid_Node_Index)
-     return Base_Token_Class_Access
-   with Pre => Tree.Is_Nonterm (Node);
+     return Base_Token_Class_Access;
    --  Returns result of Set_Augmented.
 
+   function Augmented_Const
+     (Tree : in Syntax_Trees.Tree;
+      Node : in Valid_Node_Index)
+     return Base_Token_Class_Access_Constant;
+
    function Action
      (Tree : in Syntax_Trees.Tree;
       Node : in Valid_Node_Index)
@@ -335,12 +391,14 @@ package WisiToken.Syntax_Trees is
      (Tree : in Syntax_Trees.Tree;
       Node : in Valid_Node_Index;
       ID   : in Token_ID)
-     return Node_Index;
+     return Node_Index
+   with Pre => Tree.Parents_Set;
    function Find_Ancestor
      (Tree : in Syntax_Trees.Tree;
       Node : in Valid_Node_Index;
       IDs  : in Token_ID_Array)
-     return Node_Index;
+     return Node_Index
+   with Pre => Tree.Parents_Set;
    --  Return the ancestor of Node that contains ID, or Invalid_Node_Index if
    --  none match.
 
@@ -349,7 +407,7 @@ package WisiToken.Syntax_Trees is
       Node : in Valid_Node_Index;
       ID   : in Token_ID)
      return Node_Index
-   with Pre => Tree.Has_Parent (Node);
+   with Pre => Tree.Parents_Set and then Tree.Has_Parent (Node);
    --  Return the sibling of Node that contains ID, or Invalid_Node_Index if
    --  none match.
 
@@ -378,24 +436,6 @@ package WisiToken.Syntax_Trees is
    --  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)
-     return Node_Index
-   with Post => Find_Min_Terminal_Index'Result = Invalid_Node_Index or else
-                Tree.Is_Nonterm (Find_Min_Terminal_Index'Result);
-   --  Return the first node whose Min_Terminal_Index is Index, or
-   --  Invalid_Node_Index if none match.
-
-   function Find_Max_Terminal_Index
-     (Tree  : in Syntax_Trees.Tree;
-      Index : in Token_Index)
-     return Node_Index
-   with Post => Find_Max_Terminal_Index'Result = Invalid_Node_Index or else
-                Tree.Is_Nonterm (Find_Max_Terminal_Index'Result);
-   --  Return the first node whose Max_Terminal_Index is Index, or
-   --  Invalid_Node_Index if none match.
-
    procedure Set_Root (Tree : in out Syntax_Trees.Tree; Root : in 
Valid_Node_Index);
 
    function Root (Tree : in Syntax_Trees.Tree) return Node_Index;
@@ -415,13 +455,17 @@ package WisiToken.Syntax_Trees is
    with Pre => Tree.Is_Virtual_Identifier (Node);
 
    function Terminal (Tree : in Syntax_Trees.Tree; Node : in Valid_Node_Index) 
return Base_Token_Index
-   with Pre => Tree.Is_Terminal (Node);
+   with Pre => Tree.Is_Shared_Terminal (Node);
 
-   function Min_Terminal_Index (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Base_Token_Index;
-   function Max_Terminal_Index (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Base_Token_Index;
-   --  Returns lowest/highest index of shared terminal in subtree under
-   --  Node. If result is Invalid_Token_Index, all terminals are virtual,
-   --  or a nonterm is empty.
+   function First_Shared_Terminal (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Base_Token_Index;
+   --  Returns first shared terminal in subtree under Node
+   --  (ignoring virtual terminals). If result is Invalid_Token_Index,
+   --  all terminals are virtual, or a nonterm is empty.
+
+   function Last_Shared_Terminal (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Base_Token_Index;
+   --  Returns last shared terminal in subtree under Node (ignoring
+   --  virtual terminals). If result is Invalid_Token_Index, all
+   --  terminals are virtual, or a nonterm is empty.
 
    function Get_Terminals (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Valid_Node_Index_Array;
    --  Return sequence of terminals in Node.
@@ -429,11 +473,27 @@ package WisiToken.Syntax_Trees is
    --  "Terminals" can be Shared_Terminal, Virtual_Terminal,
    --  Virtual_Identifier.
 
+   function First_Terminal (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Node_Index;
+   --  First of Get_Terminals. Invalid_Node_Index if Node is an empty 
nonterminal.
+
+   function Last_Terminal (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Node_Index;
+   --  Last of Get_Terminals. Invalid_Node_Index if Node is an empty 
nonterminal.
+
+   function Prev_Terminal (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Node_Index
+   with Pre => Tree.Parents_Set and Tree.Label (Node) in Shared_Terminal | 
Virtual_Terminal | Virtual_Identifier;
+   --  Return the terminal that is immediately before Node in Tree;
+   --  Invalid_Node_Index if Node is the first terminal in Tree.
+
+   function Next_Terminal (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Node_Index
+   with Pre => Tree.Parents_Set and Tree.Label (Node) in Shared_Terminal | 
Virtual_Terminal | Virtual_Identifier;
+   --  Return the terminal that is immediately after Node in Tree;
+   --  Invalid_Node_Index if Node is the last terminal in Tree.
+
    function Get_Terminal_IDs (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Token_ID_Array;
    --  Same as Get_Terminals, but return the IDs.
 
    function First_Terminal_ID (Tree : in Syntax_Trees.Tree; Node : in 
Valid_Node_Index) return Token_ID;
-   --  First of Get_Terminal_IDs
+   --  First of Get_Terminal_IDs; Invalid_Token_ID if Node is empty.
 
    function Get_IDs
      (Tree : in Syntax_Trees.Tree;
@@ -466,13 +526,18 @@ package WisiToken.Syntax_Trees is
      return String;
    --  Simple list of numbers, for debugging
 
+   type Image_Augmented is access function (Aug : in Base_Token_Class_Access) 
return String;
+
    procedure Print_Tree
-     (Tree       : in Syntax_Trees.Tree;
-      Descriptor : in WisiToken.Descriptor;
-      Root       : in Node_Index := Invalid_Node_Index)
+     (Tree            : in Syntax_Trees.Tree;
+      Descriptor      : in WisiToken.Descriptor;
+      Root            : in Node_Index                   := Invalid_Node_Index;
+      Image_Augmented : in Syntax_Trees.Image_Augmented := null)
    with Pre => Tree.Flushed;
    --  Print tree rooted at Root (default Tree.Root) to
-   --  Text_IO.Current_Output, for debugging.
+   --  Text_IO.Current_Output, for debugging. For each node,
+   --  Image_Augmented is called if it is not null and node.augmented is
+   --  not null.
 
 private
    use all type Ada.Containers.Count_Type;
@@ -492,12 +557,14 @@ private
       --  Parse state that was on stack with this token, to allow undoing a
       --  reduce.
 
+      Augmented : Base_Token_Class_Access := null;
+
       case Label is
       when Shared_Terminal =>
          Terminal : Token_Index; -- into Parser.Terminals
 
       when Virtual_Terminal =>
-         null;
+         Before : Base_Token_Index := Invalid_Token_Index; -- into 
Parser.Terminals
 
       when Virtual_Identifier =>
          Identifier : Identifier_Index; -- into user data
@@ -520,11 +587,6 @@ private
 
          Min_Terminal_Index : Base_Token_Index := Invalid_Token_Index;
          --  Cached for push_back of nonterminals during recovery
-
-         Max_Terminal_Index : Base_Token_Index := Invalid_Token_Index;
-         --  Cached for building a WisiToken tree from a libadalang tree.
-
-         Augmented : Base_Token_Class_Access := null;
       end case;
    end record;
 
@@ -552,6 +614,9 @@ private
       --  True while traversing tree in Process_Tree.
       --  Declared in Base_Tree so it is cleared by Finalize.
 
+      Parents_Set : Boolean := False;
+      --  We don't set Node.Parent until after parse is done; see Design
+      --  note above.
    end record;
 
    type Tree is new Ada.Finalization.Controlled with record
@@ -579,4 +644,26 @@ private
          else Last_Shared_Node <= Shared_Tree.Nodes.Last_Index and
             Last_Shared_Node < Branched_Nodes.First_Index));
 
+   subtype Node_Const_Ref is Node_Arrays.Constant_Reference_Type;
+   subtype Node_Var_Ref is Node_Arrays.Variable_Reference_Type;
+
+   function Get_Node_Const_Ref
+     (Tree : in Syntax_Trees.Tree;
+      Node : in Valid_Node_Index)
+     return Node_Const_Ref
+   is (if Node <= Tree.Last_Shared_Node
+         then Tree.Shared_Tree.Nodes.Constant_Ref (Node)
+         else Tree.Branched_Nodes.Constant_Ref (Node));
+
+   function Get_Node_Var_Ref
+     (Tree : in Syntax_Trees.Tree;
+      Node : in Valid_Node_Index)
+     return Node_Var_Ref
+   is (if Node <= Tree.Last_Shared_Node
+         then Tree.Shared_Tree.Nodes.Variable_Ref (Node)
+         else Tree.Branched_Nodes.Variable_Ref (Node));
+
+   function Parents_Set (Tree : in Syntax_Trees.Tree) return Boolean
+   is (Tree.Shared_Tree.Parents_Set);
+
 end WisiToken.Syntax_Trees;
diff --git a/packages/wisi/wisitoken-text_io_trace.ads 
b/packages/wisi/wisitoken-text_io_trace.ads
index c6892c8..b400c23 100644
--- a/packages/wisi/wisitoken-text_io_trace.ads
+++ b/packages/wisi/wisitoken-text_io_trace.ads
@@ -2,7 +2,7 @@
 --
 --  Trace output to Ada.Text_IO
 --
---  Copyright (C) 2017, 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2017, 2019, 2020 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,6 +31,7 @@ package WisiToken.Text_IO_Trace is
 
    overriding
    procedure Put_Line (Trace : in out Text_IO_Trace.Trace; Item : in String);
+   --  If Item contains ASCII.LF, Prefix is output after each one.
 
    overriding
    procedure New_Line (Trace : in out Text_IO_Trace.Trace);
diff --git a/packages/wisi/wisitoken-user_guide.info 
b/packages/wisi/wisitoken-user_guide.info
index 6d04498..982869c 100644
--- a/packages/wisi/wisitoken-user_guide.info
+++ b/packages/wisi/wisitoken-user_guide.info
@@ -1,7 +1,7 @@
-This is wisitoken-user_guide.info, produced by makeinfo version 6.3 from
+This is wisitoken-user_guide.info, produced by makeinfo version 6.7 from
 wisitoken-user_guide.texinfo.
 
-Copyright (C) 2014-2015, 2017, 2018 Stephen Leake.
+Copyright (C) 2014-2015, 2017, 2018, 2020 Stephen Leake.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
@@ -20,7 +20,7 @@ File: wisitoken-user_guide.info,  Node: Top,  Next: Overview, 
 Up: (dir)
 WisiToken User Guide
 ********************
 
-Copyright (C) 2014-2015, 2017, 2018 Stephen Leake.
+Copyright (C) 2014-2015, 2017, 2018, 2020 Stephen Leake.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
@@ -42,16 +42,15 @@ File: wisitoken-user_guide.info,  Node: Overview,  Next: 
Common grammar problems
 **********
 
 WisiToken is a parser and parser generator toolkit, supporting
-generalized LR (both LALR and LR1) and packrat parsers.  The grammar can
-be expressed as either Ada source code statements, or in an EBNF file.
-The parser generator generates either Ada or elisp source (the elisp
-source assumes the Emacs wisi Gnu ELPA package).
+generalized LR (both LALR and LR1) and packrat parsers; the LR parser
+provides robust error recovery.  The grammar can be expressed as either
+Ada source code statements, or in an EBNF file.  The parser generator
+generates Ada, either plain or assuming the Emacs wisi package.
 
    At one point, "wisi" was short for "Wisent Indentation engine"; the
 Emacs 'wisi' package implements an indentation engine that used to be
 based on the Emacs wisent parser.  However, that parser has now been
-replaced by a generalized LALR parser with error recovery, so "wisi" is
-just a name.
+replaced by the WisiToken parser, so "wisi" is just a name.
 
 * Menu:
 
@@ -63,13 +62,15 @@ File: wisitoken-user_guide.info,  Node: Install,  Up: 
Overview
 1.1 Install
 ===========
 
-WisiToken is available as source code only.
+WisiToken is available as source code only, although a subset is
+available in the GNU ELPA package 'wisi'.
 
-   To use the Ada runtime, you will also need to install a lexer
-generator.  WisiToken supports re2c, and other lexers can be added.
+   You will also need to install a lexer generator.  WisiToken supports
+re2c, and other lexers can be added.
 
-   re2c is available from <http://re2c.org/>.  WisiToken uses the
-environment variable RE2C_HOME to locate re2c.
+   re2c is available from <http://re2c.org/>; it is also packaged in
+Mingw64 and Debian.  WisiToken requires at least version 1.3.  WisiToken
+assumes the executable 're2c' is in '$PATH'.
 
 
 File: wisitoken-user_guide.info,  Node: Common grammar problems,  Next: 
Grammar File Syntax,  Prev: Overview,  Up: Top
@@ -200,7 +201,7 @@ and deletions (*note Bison: (bison)Top.).
    The top level file structure is a list of declarations and
 nonterminals.
 
-   Comments are started by ";;" and terminated by end of line.
+   Comments are started by ';;' and terminated by end of line.
 
 * Menu:
 
@@ -214,8 +215,8 @@ File: wisitoken-user_guide.info,  Node: Declarations,  
Next: Nonterminals,  Up:
 3.1 Declarations
 ================
 
-The Declarations sections declares terminal tokens, conflicts, and other
-parser parameters.
+Declarations declare terminal tokens, conflicts, and other parser
+parameters.
 
 * Menu:
 
@@ -231,17 +232,11 @@ File: wisitoken-user_guide.info,  Node: Raw Code,  Next: 
Keywords,  Up: Declarat
 3.1.1 Raw code
 --------------
 
-%code { actions | copyright_license } [spec | body | context | pre | post]... 
%{ <output language code> }%
+%code { actions | copyright_license } [spec | body | context | pre | post]... 
%{ <output language code> }%
 
    Raw code declarations contain arbitrary code, copied verbatim into
-the output.
-
-   For Elisp output, the generator adds the necessary 'require' forms
-for the elisp lexer, parser, and wisi actions; you only need to add add
-additional code if you use other actions.
-
-   For Ada output, the keywords following '%code' determine where the
-section is output.
+the output.  The keywords following '%code' determine where the section
+is output.
 
 
 File: wisitoken-user_guide.info,  Node: Keywords,  Next: Tokens,  Prev: Raw 
Code,  Up: Declarations
@@ -249,10 +244,10 @@ File: wisitoken-user_guide.info,  Node: Keywords,  Next: 
Tokens,  Prev: Raw Code
 3.1.2 Keywords
 --------------
 
-%keyword <name> <string>
+%keyword <name> <string>
 
-example:
-%keyword SEMICOLON ";"
+   example:
+%keyword SEMICOLON ";"
 
    "Keywords" are reserved words or symbols in the target language; the
 lexers recognize them by the given string.
@@ -263,62 +258,49 @@ File: wisitoken-user_guide.info,  Node: Tokens,  Next: 
Error recovery,  Prev: Ke
 3.1.3 Tokens
 ------------
 
-%token < kind > name regexp
-
-example:
-%token <symbol> IDENTIFIER
-%token <punctuation> TICK "'"
-
-   The meaning of 'kind' is determined by the lexer and parser runtime.
-The syntax of the regular expression is determined by the lexer
-generator.
+%token < kind > name regexp
 
-   In the Emacs wisi lexer, the token kinds are recognized by Emacs
-syntax properties:
+   example:
+%token <symbol> IDENTIFIER %[ ... ]%
+%token <punctuation> TICK "'"
 
-'<punctuation>'
-     %token <punctuation> TICK "'"
-     A string of characters that have punctuation syntax, and match the
-     token string.
-
-'<symbol>'
-     %token <symbol> IDENTIFIER
-     A string of characters that have word syntax, that match no other
-     token.
+   The syntax of the regular expression is determined by the lexer
+generator.  The meaning of 'kind' is determined by the lexer ('re2c'
+ignores this), with the following defined by the WisiToken generator.
+Other token kinds have no effect; they may be used for documentation.
 
 '<string-double>'
-     %token <string-double> STRING_LITERAL
+     %token <string-double> STRING_LITERAL %[ ... ]%
      A string of characters that have string syntax, with double quote
      delimiters.
 
 '<string-single>'
-     %token <string-single> CHARACTER_LITERAL
+     %token <string-single> CHARACTER_LITERAL %[ ... ]%
      A string of characters that have string syntax, with single quote
      delimiters.
 
-'<number>'
-     %token <number> NUMERIC_LITERAL ada-wisi-number-p ada-wisi
-     A string of characters that have word syntax, recognized by the
-     function given in the third parameter.  The fourth parameter is the
-     source file for the recognizer (included via 'require').
-
-'<whitespace>'
-     %token <whitespace> WHITESPACE [ \t\n]
-     Not used by the wisi lexer; required by the Ada lexer.
-
-'<comment>'
-     %token <line_comment> COMMENT "--"[^\n]*[\n]
+'<new-line>'
+     %token <new-line> [\n] %[ ... ]%
      Not used by the wisi lexer; required by the Ada lexer.  The third
      argument is the regular expression to recognize the entire comment.
 
+'<non-reporting>'
+     %token <non-reporting> WHITESPACE %[ [ \t] ]%
+     A token that is recognized by the lexer, but not returned to the
+     parser.
+
+'<delimited-text>'
+     %token <delimited-text> RAW_CODE "%{" "}%"
+     A token that contains arbitrary text, delimited by the two strings.
+
 
 File: wisitoken-user_guide.info,  Node: Error recovery,  Next: Other 
declarations,  Prev: Tokens,  Up: Declarations
 
 3.1.4 Error recovery
 --------------------
 
-The parser can use error recovery algorithms when it encounters syntax
-errors; if a solution is found, the parse continues.
+The parser uses an error recovery algorithm when it encounters a syntax
+error; if a solution is found, the parse continues.
 
    Error recovery uses multiple tasks to take advantage of multiple CPU
 cores.  Unfortunately, this means there is a race condition; the
@@ -327,15 +309,20 @@ This matters because each solution results in a 
successful parse,
 possibly with different actions (different indentation computed, for
 example).  Which solution finally succeeds depends on which are
 terminated due to identical parser stacks, which in turn depends on the
-order they were delivered.  See
-'ada-mode/tests/ada_mode-interactive_2.adb' for an example.
+order they were delivered.
 
-   Once the syntax errors are fixed, only the ambiguities in the grammar
+   Once the syntax errors are fixed, only ambiguities in the grammar
 itself can cause a similar problem.
 
-   Several declarations set parameters for the error recovery.  If none
-of these parameters are present in the grammar file, the generated
-parser does not do error recovery.
+   Several grammar file declarations set parameters for the error
+recovery.  If none of these parameters are present in the grammar file,
+the generated parser does not do error recovery.
+
+   The error recovery algorithm generates possible solutions based on
+the parse state preceding the error point, by inserting, deleting, or
+pushing back tokens.  Each possible solution is given a cost, and
+enqueued to be checked later.  Solutions are checked in cost order
+(lowest first).
 
 '%mckenzie_check_limit <limit>'
      The number of tokens past the error point that must be parsed
@@ -357,7 +344,8 @@ parser does not do error recovery.
 
      "Push back" means undo parsing; remove tokens from the parse stack
      and put them back into the input stream.  This moves the
-     insert/delete point, allowing better solutions.
+     insert/delete point, allowing better solutions.  The push back
+     default cost is also the undo reduce default cost.
 
      If not specified, costs are zero.  Costs can be negative; they all
      add linearly.
@@ -365,25 +353,31 @@ parser does not do error recovery.
 '%mckenzie_cost_delete <token> <cost>'
      McKenzie error recovery delete cost for a specific token.
 
+'%mckenzie_cost_fast_forward <cost>'
+     McKenzie error recovery cost for parsing ahead after fixing one
+     error, moving to the next error location.
+
 '%mckenzie_cost_insert <token> <cost>'
      McKenzie error recovery insert cost for a specific token.
 
-'%mckenzie_cost_limit <integer>'
-     McKenzie error recovery limit on cost of solutions; default max
-     integer.
+'%mckenzie_cost_fast_forward <cost>'
+     McKenzie error recovery cost for using the 'matching_begin'
+     strategy.
 
 '%mckenzie_cost_push_back <token> <cost>'
      McKenzie error recovery push back cost for a specific token.
 
+'%mckenzie_cost_undo_reduce <token> <cost>'
+     McKenzie error recovery undo reduce cost for a specific token.
+
 '%mckenzie_enqueue_limit <integer>'
      McKenzie error recovery limit on possible solutions enqueued (to be
      checked); default max integer.
 
-     The error recovery algorithm generates possible solutions based on
-     the grammar preceding the error point, by inserting, deleting, or
-     pushing back tokens.  Each possible solution is given a cost, and
-     enqueued to be checked later.  Solutions are checked in cost order
-     (lowest first).
+'%mckenzie_minimal_complete_cost_delta <cost>'
+     McKenzie error recovery cost added to the cost of an inserted token
+     when the insert is done by the minimal complete strategy; this cost
+     is normally negative.
 
 
 File: wisitoken-user_guide.info,  Node: Other declarations,  Prev: Error 
recovery,  Up: Declarations
@@ -398,7 +392,7 @@ File: wisitoken-user_guide.info,  Node: Other declarations, 
 Prev: Error recover
      Declare a known conflict.
 
      Example conflict declaration:
-     %conflict REDUCE/REDUCE in state abstract_limited_opt, 
abstract_limited_synchronized_opt on token NEW
+     %conflict REDUCE/REDUCE in state abstract_limited_opt, 
abstract_limited_synchronized_opt on token NEW
 
      The conflict description is output by 'wisitoken-bnf-generate' when
      an undeclared conflict is detected.  If the user decides to not fix
@@ -422,10 +416,12 @@ File: wisitoken-user_guide.info,  Node: Other 
declarations,  Prev: Error recover
      in 'wisi-indent' actions must be declared, so the elisp and Ada
      code aggree on what they mean.
 
-'embedded_quote_escape_doubled'
-     If present, quote characters embedded in strings are escaped by
-     doubling (as in Ada); otherwise they are escaped by preceding with
-     backslash (as in C). Default is backslash.
+'%elisp_action <elisp name> <Ada name>'
+     Declare elisp and Ada names for a custom action subprogram written
+     in Ada.
+
+     The term "elisp" here is historical; the name is not actually used
+     by elisp in the current implementation.
 
 'end_names_optional_option <name>'
      When generating Ada code for Emacs, the name of the Ada variable
@@ -434,31 +430,24 @@ File: wisitoken-user_guide.info,  Node: Other 
declarations,  Prev: Error recover
      In the Ada language, block names can be repeated at the end; for
      example:
 
-     Get_Inputs :
-     loop
-     ...
-     end loop Get_Inputs;
+     Get_Inputs :
+     loop
+     ...
+     end loop Get_Inputs;
 
      These names are optional in the Ada standard.  Making them required
      improves error recovery; the recovery algorithm can use matching
      names to isolate the error.
 
-'generate <generate_algorithm> <output_language> [text_rep |'
-     elisp | re2c | process | module]
+'generate <generate_algorithm> <output_language> [text_rep]'
 
      '<generate_algorithm>' is one of 'LALR | LR1 | Packrat_Gen |
      Packrat_Proc | External'
 
-     '<output_language>' is one of 'Ada | Ada_Emacs | elisp'
-
-     Declare one output source set.  Multiple sets can be declared; they
-     are all generated together.
+     '<output_language>' is one of 'Ada | Ada_Emacs'
 
-     'elisp | re2c' determine the lexer used by the generated code.
-
-     'process | module' determine the style of code generated by
-     'Ada_Emacs'; an external process executable, or an Emacs loadable
-     module.
+     The algorithm/output_language pair declares one output source set.
+     Multiple sets can be declared; they are all generated together.
 
      'text_rep' determines how the parse table is represented; if
      present, it is in a text file that is loaded at parser run time.
@@ -469,11 +458,14 @@ File: wisitoken-user_guide.info,  Node: Other 
declarations,  Prev: Error recover
      in the code.  The text file can take a long time to read at parser
      startup (a few seconds for the Ada language).
 
-'%no_language_runtime'
-     When generating Ada code for Emacs, '%no_language_runtime' causes
-     the generated code to not include the runtime.  Some grammars may
-     need no runtime, particularly if they are small grammars intendend
-     to test some generator feature.
+'%language_runtime'
+     Specify an alternate name for the language runtime package; the
+     default is 'Wisi.<language_name>'.
+
+'%meta_syntax [BNF | EBNF]'
+     Declares the syntax used by the grammar file.  BNF is a minor
+     extension of standard Backus Naur Form; EBNF is a large extension.
+     The default is BNF.
 
 '%no_enum'
      By default, the generated Ada code includes an enumeration type
@@ -484,6 +476,19 @@ File: wisitoken-user_guide.info,  Node: Other 
declarations,  Prev: Error recover
      '%no_enum' causes the generated code to not include the token
      enumeration type.
 
+'%no_language_runtime'
+     When generating Ada code for Emacs, '%no_language_runtime' causes
+     the generated code to not include the runtime.  Some grammars may
+     need no runtime, particularly if they are small grammars intendend
+     to test some generator feature.
+
+'%partial_recursion'
+     The error recovery algorithm requires computing the recursion
+     present in the language grammar.  For some grammars (such as Java),
+     this is too hard; '%partial_recursion' tells WisiToken to use a
+     simpler approximate calculation.  This will affect the quality of
+     the error recovery, but it will still be robust.
+
 '%start'
      The start token for the grammar.
 
@@ -497,19 +502,23 @@ File: wisitoken-user_guide.info,  Node: Nonterminals,  
Next: Conditional code,
 3.2 Nonterminals
 ================
 
-The nonterminals section declares the nonterminal tokens, and the
-associated production rules and actions.
+A nonterminal statement declares a nonterminal token, and the associated
+production rules and actions.
 
-   The syntax of nonterminals is:
+   The syntax of a nonterminal statement is:
 
-{nonterminal} : {token} ... [ %( action code )% [| {token} ... [ %(
-action code )% ] ]... ;
+{nonterminal} : {token} ... [ %( post-parse action )% [ %( in-parse action )% 
]] [| {token} ... [ %(
+action code )% ] ... ;
 
    Each nonterminal gives the expansion of a nonterminal token into a
 list of tokens (both terminal and nonterminal); optional productions are
-separated by "|".  Each list of tokens is followed by an "action", which
-is output-language code (enclosed in '%( )%'), that will be executed
-when the production is reduced.
+separated by "|".  Each list of tokens is followed by zero to two
+actions, one executed after the parse is complete, one during the parse
+when the production is reduced.  in-parse actions can add semantic
+checks that help during error recovery.  post-parse actions typically
+build an abstract syntax tree.  The actions are written in
+output-language code; for 'Ada_Emacs' output, this is elisp (a hold-over
+from when WisiToken only output elisp code).
 
 
 File: wisitoken-user_guide.info,  Node: Conditional code,  Prev: Nonterminals, 
 Up: Grammar File Syntax
@@ -517,16 +526,13 @@ File: wisitoken-user_guide.info,  Node: Conditional code, 
 Prev: Nonterminals,
 3.3 Conditional code
 ====================
 
-The elisp and elisp lexers support different regular expression syntax,
-so it is sometimes necessary to include or exclude some declarations and
-portions of rules based on the lexer.
+It is sometimes necessary to include or exclude some declarations and
+portions of rules based on the choice of lexer or parser.
 
-   In addition, LALR parsers can have more conflicts than LR1 parsers.
-
-   Therefore the EBNF supports '%if ... %end if':
-%if {lexer | parser} = {<lexer> | <generate_algorithm>}
-...
-%end if
+   Therefore WisiToken supports '%if ... %end if' in the grammar file:
+%if {lexer | parser} = {<lexer> | <generate_algorithm>}
+...
+%end if
 
    The lines between '%if' and '%end if' are ignored if the current
 lexer or parser is not the one specified in the '%if' condition.
@@ -536,19 +542,24 @@ lexer or parser is not the one specified in the '%if' 
condition.
 
 
 Tag Table:
-Node: Top721
-Node: Overview1366
-Node: Install2139
-Node: Common grammar problems2523
-Node: Empty choice in list2816
-Node: Grammar File Syntax5798
-Node: Declarations6355
-Node: Raw Code6675
-Node: Keywords7260
-Node: Tokens7569
-Node: Error recovery9217
-Node: Other declarations12453
-Node: Nonterminals16475
-Node: Conditional code17192
+Node: Top727
+Node: Overview1378
+Node: Install2140
+Node: Common grammar problems2637
+Node: Empty choice in list2930
+Node: Grammar File Syntax5912
+Node: Declarations6469
+Node: Raw Code6775
+Node: Keywords7157
+Node: Tokens7471
+Node: Error recovery8814
+Node: Other declarations12536
+Node: Nonterminals17033
+Node: Conditional code18069
 
 End Tag Table
+
+
+Local Variables:
+coding: utf-8
+End:
diff --git a/packages/wisi/wisitoken-wisi_ada.adb 
b/packages/wisi/wisitoken-wisi_ada.adb
index 34dad7c..dd5e072 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 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2013, 2014, 2015, 2017 - 2020 Free Software Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -47,17 +47,17 @@ package body WisiToken.Wisi_Ada is
 
    function "+" (Tokens : in Token_ID_Arrays.Vector; Action : in 
Syntax_Trees.Semantic_Action) return Right_Hand_Side
    is begin
-      return (Tokens, Action, null);
+      return (Tokens, Recursion => <>, Action => Action, Check => null);
    end "+";
 
    function "+" (Tokens : in Token_ID; Action : in 
Syntax_Trees.Semantic_Action) return Right_Hand_Side
    is begin
-      return (Only (Tokens), Action, null);
+      return (Only (Tokens), Recursion => <>, Action => Action, Check => null);
    end "+";
 
    function "+" (Action : in Syntax_Trees.Semantic_Action) return 
Right_Hand_Side
    is begin
-      return (Token_ID_Arrays.Empty_Vector, Action, null);
+      return (Tokens => <>, Recursion => <>, Action => Action, Check => null);
    end "+";
 
    function Only (Item : in WisiToken.Productions.Right_Hand_Side) return 
WisiToken.Productions.RHS_Arrays.Vector
diff --git a/packages/wisi/wisitoken.adb b/packages/wisi/wisitoken.adb
index 16d9249..9efeb18 100644
--- a/packages/wisi/wisitoken.adb
+++ b/packages/wisi/wisitoken.adb
@@ -2,7 +2,7 @@
 --
 --  See spec
 --
---  Copyright (C) 2009, 2014-2015, 2017 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2009, 2014-2015, 2017 - 2020 Free Software Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -224,26 +224,6 @@ package body WisiToken is
       end return;
    end To_Vector;
 
-   function Net_Recursion (A, B : in Recursion) return Recursion
-   is begin
-      return
-        (case A is
-         when None => B,
-         when Single =>
-           (case B is
-            when None => Single,
-            when others => B),
-         when Right =>
-           (case B is
-            when None | Single => Right,
-            when others => B),
-         when Left =>
-           (case B is
-            when None | Single | Left => Left,
-            when others => B),
-         when Middle => Middle);
-   end Net_Recursion;
-
    function Slice (Item : in Token_Array_Token_Set; I : in Token_ID) return 
Token_ID_Set
    is
       Result : Token_ID_Set := (Item'First (2) .. Item'Last (2) => False);
@@ -376,7 +356,11 @@ package body WisiToken is
       Descriptor : in WisiToken.Descriptor)
      return String
    is begin
-      return "(" & Image (Item.ID, Descriptor) &
+      return
+        (if Item.Min_Terminal_Index = Invalid_Token_Index
+         then ""
+         else Trimmed_Image (Item.Min_Terminal_Index) & ":") &
+        "(" & Image (Item.ID, Descriptor) &
         (if Item.Byte_Region = Null_Buffer_Region then "" else ", " & Image 
(Item.Byte_Region)) & ")";
    end Image;
 
diff --git a/packages/wisi/wisitoken.ads b/packages/wisi/wisitoken.ads
index 891fb26..0230d55 100644
--- a/packages/wisi/wisitoken.ads
+++ b/packages/wisi/wisitoken.ads
@@ -16,7 +16,7 @@
 --  Sethi, and Ullman (aka: "The [Red] Dragon Book" due to the dragon
 --  on the cover).
 --
---  Copyright (C) 2009, 2010, 2013 - 2015, 2017 - 2019 Free Software 
Foundation, Inc.
+--  Copyright (C) 2009, 2010, 2013 - 2015, 2017 - 2020 Free Software 
Foundation, Inc.
 --
 --  This file is part of the WisiToken package.
 --
@@ -142,7 +142,7 @@ package WisiToken is
    --  is a terminal) or to Image_Width.
 
    function Image (Item : in Token_ID; Desc : in Descriptor) return String;
-   --  Return Desc.Image (Item), or empty string for Invalid_Token_ID.
+   --  Return Desc.Image (Item), or "-" for Invalid_Token_ID.
 
    function Trimmed_Image is new SAL.Gen_Trimmed_Image (Token_ID);
 
@@ -160,6 +160,9 @@ package WisiToken is
      (Positive, Token_ID, Default_Element => Invalid_Token_ID);
 
    function Image is new Token_ID_Arrays.Gen_Image_Aux (Descriptor, 
Trimmed_Image, Image);
+   function Image_No_Assoc (Item : in Token_ID_Arrays.Vector; Aux : in 
Descriptor) return String
+     is (Image (Item, Aux, Association => False));
+
    function Trimmed_Image is new Token_ID_Arrays.Gen_Image (Trimmed_Image);
 
    procedure To_Vector (Item : in Token_ID_Array; Vector : in out 
Token_ID_Arrays.Vector);
@@ -247,21 +250,17 @@ package WisiToken is
    function "+" (Item : in Production_ID_Array) return 
Production_ID_Arrays.Vector renames To_Vector;
    function "+" (Item : in Production_ID) return Production_ID_Arrays.Vector 
is (To_Vector ((1 => Item)));
 
-   type Recursion is
-     (None,
-      Single, --  Single token in right hand side is recursive.
-      Middle, --  Multiple tokens in right hand side, recursive token not at 
either end.
-      Right,  --  Multiple tokens in right hand side, recursive token not at 
right end.
-      Left    --  Multiple tokens in right hand side, recursive token not at 
left end.
-     );
-   --  In worst-case order; Left recursion causes the most
-   --  problems in LR error recovery, and in Packrat.
-
-   function Worst_Recursion (A, B : in Recursion) return Recursion
-   is (Recursion'Max (A, B));
+   type Token_Array_Production_ID is array (Token_ID range <>) of 
Production_ID;
 
-   function Net_Recursion (A, B : in Recursion) return Recursion;
-   --  For finding the net recursion of a chain; Middle dominates.
+   type Recursion_Class is (None, Direct_Left, Other_Left, Other, Other_Right, 
Direct_Right);
+   function Image (Item : in Recursion_Class) return String
+     is (case Item is
+         when None         => "None",
+         when Direct_Left  => "Direct_Left",
+         when Other_Left   => "Other_Left",
+         when Other        => "Other",
+         when Other_Right  => "Other_Right",
+         when Direct_Right => "Direct_Right");
 
    ----------
    --  Tokens
@@ -291,11 +290,26 @@ package WisiToken is
 
    Invalid_Line_Number : constant Line_Number_Type := Line_Number_Type'Last;
 
+   --  Syntax tree nodes.
+   type Node_Index is range 0 .. Integer'Last;
+   subtype Valid_Node_Index is Node_Index range 1 .. Node_Index'Last;
+
+   Invalid_Node_Index : constant Node_Index := Node_Index'First;
+
+   type Valid_Node_Index_Array is array (Positive_Index_Type range <>) of 
Valid_Node_Index;
+   --  Index matches Base_Token_Array, Augmented_Token_Array
+
+   package Valid_Node_Index_Arrays is new SAL.Gen_Unbounded_Definite_Vectors
+     (Positive_Index_Type, Valid_Node_Index, Default_Element => 
Valid_Node_Index'First);
+   --  Index matches Valid_Node_Index_Array.
+
    type Base_Token is tagged record
-      --  Base_Token is used in the core parser. The parser only needs ID;
+      --  Base_Token is used in the core parser. The parser only needs ID and 
Tree_Node;
       --  semantic checks need Byte_Region to compare names. Line, Col, and
       --  Char_Region are included for error messages.
-      ID : Token_ID := Invalid_Token_ID;
+
+      ID         : Token_ID   := Invalid_Token_ID;
+      Tree_Index : Node_Index := Invalid_Node_Index;
 
       Byte_Region : Buffer_Region := Null_Buffer_Region;
       --  Index into the Lexer buffer for the token text.
@@ -352,8 +366,8 @@ package WisiToken is
      (Line_Number_Type, Base_Token_Index, Default_Element => 
Invalid_Token_Index);
 
    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
+      --  Maintaining a syntax tree during error recovery is too slow, so we
+      --  store 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
@@ -419,7 +433,9 @@ package WisiToken is
    Trace_Action : Integer := 0;
    --  Output during Execute_Action, and unit tests.
 
-   Trace_Generate : Integer := 0;
+   Trace_Generate_EBNF             : Integer := 0;
+   Trace_Generate_Table            : Integer := 0;
+   Trace_Generate_Minimal_Complete : Integer := 0;
    --  Output during grammar generation.
 
    Debug_Mode : Boolean := False;
diff --git a/packages/wisi/wisitoken_grammar_actions.adb 
b/packages/wisi/wisitoken_grammar_actions.adb
index 8f4faf7..8819828 100644
--- a/packages/wisi/wisitoken_grammar_actions.adb
+++ b/packages/wisi/wisitoken_grammar_actions.adb
@@ -28,8 +28,8 @@ package body Wisitoken_Grammar_Actions is
    procedure declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       pragma Unreferenced (Nonterm);
    begin
@@ -39,8 +39,8 @@ package body Wisitoken_Grammar_Actions is
    procedure declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       pragma Unreferenced (Nonterm);
    begin
@@ -50,8 +50,8 @@ package body Wisitoken_Grammar_Actions is
    procedure declaration_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       pragma Unreferenced (Nonterm);
    begin
@@ -61,8 +61,8 @@ package body Wisitoken_Grammar_Actions is
    procedure declaration_3
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       pragma Unreferenced (Nonterm);
    begin
@@ -72,8 +72,8 @@ package body Wisitoken_Grammar_Actions is
    procedure declaration_4
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       pragma Unreferenced (Nonterm);
    begin
@@ -83,8 +83,8 @@ package body Wisitoken_Grammar_Actions is
    procedure declaration_5
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       pragma Unreferenced (Tree, Nonterm, Tokens);
    begin
@@ -94,8 +94,8 @@ package body Wisitoken_Grammar_Actions is
    procedure nonterminal_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       pragma Unreferenced (Nonterm);
    begin
@@ -105,8 +105,8 @@ package body Wisitoken_Grammar_Actions is
    procedure nonterminal_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       pragma Unreferenced (Nonterm);
    begin
@@ -116,8 +116,8 @@ package body Wisitoken_Grammar_Actions is
    procedure rhs_item_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       pragma Unreferenced (Nonterm);
    begin
@@ -127,8 +127,8 @@ package body Wisitoken_Grammar_Actions is
    procedure rhs_item_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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       pragma Unreferenced (Nonterm);
    begin
@@ -138,8 +138,8 @@ package body Wisitoken_Grammar_Actions is
    procedure rhs_item_3
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       pragma Unreferenced (Nonterm);
    begin
@@ -149,8 +149,8 @@ package body Wisitoken_Grammar_Actions is
    procedure rhs_item_4
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       pragma Unreferenced (Nonterm);
    begin
@@ -160,8 +160,8 @@ package body Wisitoken_Grammar_Actions is
    procedure rhs_item_5
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       pragma Unreferenced (Nonterm);
    begin
@@ -171,8 +171,8 @@ package body Wisitoken_Grammar_Actions is
    procedure rhs_optional_item_3
     (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)
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       pragma Unreferenced (Nonterm);
    begin
diff --git a/packages/wisi/wisitoken_grammar_actions.ads 
b/packages/wisi/wisitoken_grammar_actions.ads
index 5e346e8..1308267 100644
--- a/packages/wisi/wisitoken_grammar_actions.ads
+++ b/packages/wisi/wisitoken_grammar_actions.ads
@@ -167,71 +167,71 @@ package Wisitoken_Grammar_Actions is
    procedure declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure declaration_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure declaration_3
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure declaration_4
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure declaration_5
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure nonterminal_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure nonterminal_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure rhs_item_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure rhs_item_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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure rhs_item_3
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure rhs_item_4
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure rhs_item_5
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
    procedure rhs_optional_item_3
     (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);
+     Nonterm   : in     WisiToken.Valid_Node_Index;
+     Tokens    : in     WisiToken.Valid_Node_Index_Array);
 end Wisitoken_Grammar_Actions;
diff --git a/packages/wisi/wisitoken_grammar_main.adb 
b/packages/wisi/wisitoken_grammar_main.adb
index 981e60c..cb91adf 100644
--- a/packages/wisi/wisitoken_grammar_main.adb
+++ b/packages/wisi/wisitoken_grammar_main.adb
@@ -50,86 +50,86 @@ package body Wisitoken_Grammar_Main is
          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_Action (Table.States (0), 23, (38, 0), 1);
+            Add_Action (Table.States (0), 33, (43, 0), 2);
             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);
-            Add_Action (Table.States (1), 6, 10);
-            Add_Action (Table.States (1), 7, 11);
-            Add_Action (Table.States (1), 8, 12);
-            Add_Action (Table.States (1), 33, 13);
+            Add_Action (Table.States (1), 3, (38, 1), 7);
+            Add_Action (Table.States (1), 4, (38, 5), 8);
+            Add_Action (Table.States (1), 5, (38, 4), 9);
+            Add_Action (Table.States (1), 6, (39, 0), 10);
+            Add_Action (Table.States (1), 7, (39, 1), 11);
+            Add_Action (Table.States (1), 8, (39, 2), 12);
+            Add_Action (Table.States (1), 33, (38, 2), 13);
             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_Action (Table.States (2), 13, (43, 0), 15);
+            Add_Action (Table.States (2), 14, (43, 1), 16);
             Table.States (3).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (3), (23, 33, 36), (55, 0), 1, null, 
null);
+            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);
+            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);
+            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_Action (Table.States (6), 23, (38, 0), 1);
+            Add_Action (Table.States (6), 33, (43, 0), 2);
+            Add_Action (Table.States (6), 36, Accept_It, (37, 0),  1, null, 
null);
             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_Action (Table.States (7), 33, (40, 0), 18);
             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_Action (Table.States (8), 5, (38, 5), 20);
             Table.States (9).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (9), 33, 21);
+            Add_Action (Table.States (9), 33, (38, 4), 21);
             Table.States (10).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (10), (1 =>  33), (39, 0), 1, null, null);
+            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_Action (Table.States (11), 21, (39, 1), 22);
             Table.States (12).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (12), 21, 23);
+            Add_Action (Table.States (12), 21, (39, 2), 23);
             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);
-            Add_Action (Table.States (13), 16, 27);
-            Add_Action (Table.States (13), 20, 28);
-            Add_Action (Table.States (13), 23, Reduce, (38, 3), 2, 
declaration_3'Access, null);
-            Add_Action (Table.States (13), 28, 29);
-            Add_Action (Table.States (13), 30, 30);
-            Add_Action (Table.States (13), 32, 31);
-            Add_Action (Table.States (13), 33, 32);
-            Add_Conflict (Table.States (13), 33, (38, 3), 2, 
declaration_3'Access, null);
-            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_Action (Table.States (13), 8, (42, 10), 24);
+            Add_Action (Table.States (13), 10, (42, 5), 25);
+            Add_Action (Table.States (13), 15, (42, 0), 26);
+            Add_Action (Table.States (13), 16, (42, 2), 27);
+            Add_Action (Table.States (13), 20, (42, 3), 28);
+            Add_Action (Table.States (13), 23, Reduce, (38, 3),  2, 
declaration_3'Access, null);
+            Add_Action (Table.States (13), 28, (42, 6), 29);
+            Add_Action (Table.States (13), 30, (42, 7), 30);
+            Add_Action (Table.States (13), 32, (42, 4), 31);
+            Add_Action (Table.States (13), 33, (42, 1), 32);
+            Add_Conflict (Table.States (13), 33, (38, 3),  2, 
declaration_3'Access, null);
+            Add_Action (Table.States (13), 34, (42, 8), 33);
+            Add_Action (Table.States (13), 35, (42, 9), 34);
+            Add_Action (Table.States (13), 36, Reduce, (38, 3),  2, 
declaration_3'Access, null);
             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_Action (Table.States (14), 33, (38, 0), 37);
             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);
-            Add_Action (Table.States (15), 20, 40);
-            Add_Action (Table.States (15), 21, 41);
-            Add_Action (Table.States (15), 23, Reduce, (46, 0), 0, null, null);
-            Add_Action (Table.States (15), 29, Reduce, (46, 0), 0, null, null);
-            Add_Action (Table.States (15), 33, 42);
-            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_Action (Table.States (15), 12, Reduce, (46, 0),  0, null, 
null);
+            Add_Action (Table.States (15), 18, (53, 0), 38);
+            Add_Action (Table.States (15), 19, (52, 0), 39);
+            Add_Action (Table.States (15), 20, (51, 0), 40);
+            Add_Action (Table.States (15), 21, (47, 0), 41);
+            Add_Action (Table.States (15), 23, Reduce, (46, 0),  0, null, 
null);
+            Add_Action (Table.States (15), 29, Reduce, (46, 0),  0, null, 
null);
+            Add_Action (Table.States (15), 33, (48, 1), 42);
+            Add_Conflict (Table.States (15), 33, (46, 0),  0, null, null);
+            Add_Action (Table.States (15), 35, (50, 1), 43);
+            Add_Action (Table.States (15), 36, Reduce, (46, 0),  0, null, 
null);
             Table.States (15).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (15), 45, 44);
             Add_Goto (Table.States (15), 46, 45);
@@ -141,17 +141,17 @@ package body Wisitoken_Grammar_Main is
             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);
-            Add_Action (Table.States (16), 20, 40);
-            Add_Action (Table.States (16), 21, 41);
-            Add_Action (Table.States (16), 23, Reduce, (46, 0), 0, null, null);
-            Add_Action (Table.States (16), 29, Reduce, (46, 0), 0, null, null);
-            Add_Action (Table.States (16), 33, 42);
-            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_Action (Table.States (16), 12, Reduce, (46, 0),  0, null, 
null);
+            Add_Action (Table.States (16), 18, (53, 0), 38);
+            Add_Action (Table.States (16), 19, (52, 0), 39);
+            Add_Action (Table.States (16), 20, (51, 0), 40);
+            Add_Action (Table.States (16), 21, (47, 0), 41);
+            Add_Action (Table.States (16), 23, Reduce, (46, 0),  0, null, 
null);
+            Add_Action (Table.States (16), 29, Reduce, (46, 0),  0, null, 
null);
+            Add_Action (Table.States (16), 33, (48, 1), 42);
+            Add_Conflict (Table.States (16), 33, (46, 0),  0, null, null);
+            Add_Action (Table.States (16), 35, (50, 1), 43);
+            Add_Action (Table.States (16), 36, Reduce, (46, 0),  0, null, 
null);
             Table.States (16).Goto_List.Set_Capacity (9);
             Add_Goto (Table.States (16), 45, 53);
             Add_Goto (Table.States (16), 46, 45);
@@ -163,95 +163,95 @@ package body Wisitoken_Grammar_Main is
             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);
+            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);
+            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_Action (Table.States (19), 9, (38, 1), 54);
+            Add_Action (Table.States (19), 33, (40, 1), 55);
             Table.States (20).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (20), (23, 33, 36), (38, 5), 3, 
declaration_5'Access, null);
+            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_Action (Table.States (21), 16, (38, 4), 56);
             Table.States (22).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (22), 33, 57);
+            Add_Action (Table.States (22), 33, (39, 1), 57);
             Table.States (23).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (23), 33, 58);
+            Add_Action (Table.States (23), 33, (39, 2), 58);
             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,
+            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,
+            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,
+            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,
+            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,
+            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,
+            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,
+            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,
+            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,
+            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,
+            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,
+            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);
-            Add_Action (Table.States (35), 16, 27);
-            Add_Action (Table.States (35), 20, 28);
-            Add_Action (Table.States (35), 23, Reduce, (38, 2), 3, 
declaration_2'Access, null);
-            Add_Action (Table.States (35), 28, 29);
-            Add_Action (Table.States (35), 30, 30);
-            Add_Action (Table.States (35), 32, 31);
-            Add_Action (Table.States (35), 33, 32);
-            Add_Conflict (Table.States (35), 33, (38, 2), 3, 
declaration_2'Access, null);
-            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_Action (Table.States (35), 8, (42, 10), 24);
+            Add_Action (Table.States (35), 10, (42, 5), 25);
+            Add_Action (Table.States (35), 15, (42, 0), 26);
+            Add_Action (Table.States (35), 16, (42, 2), 27);
+            Add_Action (Table.States (35), 20, (42, 3), 28);
+            Add_Action (Table.States (35), 23, Reduce, (38, 2),  3, 
declaration_2'Access, null);
+            Add_Action (Table.States (35), 28, (42, 6), 29);
+            Add_Action (Table.States (35), 30, (42, 7), 30);
+            Add_Action (Table.States (35), 32, (42, 4), 31);
+            Add_Action (Table.States (35), 33, (42, 1), 32);
+            Add_Conflict (Table.States (35), 33, (38, 2),  3, 
declaration_2'Access, null);
+            Add_Action (Table.States (35), 34, (42, 8), 33);
+            Add_Action (Table.States (35), 35, (42, 9), 34);
+            Add_Action (Table.States (35), 36, Reduce, (38, 2),  3, 
declaration_2'Access, null);
             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,
+            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);
-            Add_Action (Table.States (37), 16, 27);
-            Add_Action (Table.States (37), 20, 28);
-            Add_Action (Table.States (37), 28, 29);
-            Add_Action (Table.States (37), 30, 30);
-            Add_Action (Table.States (37), 32, 31);
-            Add_Action (Table.States (37), 33, 32);
-            Add_Action (Table.States (37), 34, 33);
-            Add_Action (Table.States (37), 35, 34);
+            Add_Action (Table.States (37), 8, (42, 10), 24);
+            Add_Action (Table.States (37), 10, (42, 5), 25);
+            Add_Action (Table.States (37), 15, (42, 0), 26);
+            Add_Action (Table.States (37), 16, (42, 2), 27);
+            Add_Action (Table.States (37), 20, (42, 3), 28);
+            Add_Action (Table.States (37), 28, (42, 6), 29);
+            Add_Action (Table.States (37), 30, (42, 7), 30);
+            Add_Action (Table.States (37), 32, (42, 4), 31);
+            Add_Action (Table.States (37), 33, (42, 1), 32);
+            Add_Action (Table.States (37), 34, (42, 8), 33);
+            Add_Action (Table.States (37), 35, (42, 9), 34);
             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_Action (Table.States (38), 18, (53, 0), 38);
+            Add_Action (Table.States (38), 19, (52, 0), 39);
+            Add_Action (Table.States (38), 20, (51, 0), 40);
+            Add_Action (Table.States (38), 21, (47, 0), 41);
+            Add_Action (Table.States (38), 33, (48, 1), 42);
+            Add_Action (Table.States (38), 35, (50, 1), 43);
             Table.States (38).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (38), 47, 46);
             Add_Goto (Table.States (38), 48, 47);
@@ -262,12 +262,12 @@ package body Wisitoken_Grammar_Main is
             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_Action (Table.States (39), 18, (53, 0), 38);
+            Add_Action (Table.States (39), 19, (52, 0), 39);
+            Add_Action (Table.States (39), 20, (51, 0), 40);
+            Add_Action (Table.States (39), 21, (47, 0), 41);
+            Add_Action (Table.States (39), 33, (48, 1), 42);
+            Add_Action (Table.States (39), 35, (50, 1), 43);
             Table.States (39).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (39), 47, 46);
             Add_Goto (Table.States (39), 48, 47);
@@ -278,12 +278,12 @@ package body Wisitoken_Grammar_Main is
             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_Action (Table.States (40), 18, (53, 0), 38);
+            Add_Action (Table.States (40), 19, (52, 0), 39);
+            Add_Action (Table.States (40), 20, (51, 0), 40);
+            Add_Action (Table.States (40), 21, (47, 0), 41);
+            Add_Action (Table.States (40), 33, (48, 1), 42);
+            Add_Action (Table.States (40), 35, (50, 1), 43);
             Table.States (40).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (40), 47, 46);
             Add_Goto (Table.States (40), 48, 47);
@@ -294,72 +294,72 @@ package body Wisitoken_Grammar_Main is
             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_Action (Table.States (41), 33, (47, 0), 65);
             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);
-            Add_Action (Table.States (42), 18, Reduce, (50, 0), 1, null, null);
-            Add_Action (Table.States (42), 19, Reduce, (50, 0), 1, null, null);
-            Add_Action (Table.States (42), 20, Reduce, (50, 0), 1, null, null);
-            Add_Action (Table.States (42), 21, Reduce, (50, 0), 1, null, null);
-            Add_Action (Table.States (42), 23, Reduce, (50, 0), 1, null, null);
-            Add_Action (Table.States (42), 24, 67);
-            Add_Action (Table.States (42), 25, 68);
-            Add_Action (Table.States (42), 26, Reduce, (50, 0), 1, null, null);
-            Add_Action (Table.States (42), 27, Reduce, (50, 0), 1, null, null);
-            Add_Action (Table.States (42), 28, Reduce, (50, 0), 1, null, null);
-            Add_Action (Table.States (42), 29, Reduce, (50, 0), 1, null, null);
-            Add_Action (Table.States (42), 31, 69);
-            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_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, (48, 1), 66);
+            Add_Action (Table.States (42), 18, Reduce, (50, 0),  1, null, 
null);
+            Add_Action (Table.States (42), 19, Reduce, (50, 0),  1, null, 
null);
+            Add_Action (Table.States (42), 20, Reduce, (50, 0),  1, null, 
null);
+            Add_Action (Table.States (42), 21, Reduce, (50, 0),  1, null, 
null);
+            Add_Action (Table.States (42), 23, Reduce, (50, 0),  1, null, 
null);
+            Add_Action (Table.States (42), 24, (53, 4), 67);
+            Add_Action (Table.States (42), 25, (52, 2), 68);
+            Add_Action (Table.States (42), 26, Reduce, (50, 0),  1, null, 
null);
+            Add_Action (Table.States (42), 27, Reduce, (50, 0),  1, null, 
null);
+            Add_Action (Table.States (42), 28, Reduce, (50, 0),  1, null, 
null);
+            Add_Action (Table.States (42), 29, Reduce, (50, 0),  1, null, 
null);
+            Add_Action (Table.States (42), 31, (53, 5), 69);
+            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);
             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);
-            Add_Action (Table.States (43), 19, Reduce, (50, 1), 1, 
rhs_item_1'Access, null);
-            Add_Action (Table.States (43), 20, Reduce, (50, 1), 1, 
rhs_item_1'Access, null);
-            Add_Action (Table.States (43), 21, Reduce, (50, 1), 1, 
rhs_item_1'Access, null);
-            Add_Action (Table.States (43), 23, Reduce, (50, 1), 1, 
rhs_item_1'Access, null);
-            Add_Action (Table.States (43), 25, 70);
-            Add_Action (Table.States (43), 26, Reduce, (50, 1), 1, 
rhs_item_1'Access, null);
-            Add_Action (Table.States (43), 27, Reduce, (50, 1), 1, 
rhs_item_1'Access, null);
-            Add_Action (Table.States (43), 28, Reduce, (50, 1), 1, 
rhs_item_1'Access, null);
-            Add_Action (Table.States (43), 29, Reduce, (50, 1), 1, 
rhs_item_1'Access, null);
-            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_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);
+            Add_Action (Table.States (43), 19, Reduce, (50, 1),  1, 
rhs_item_1'Access, null);
+            Add_Action (Table.States (43), 20, Reduce, (50, 1),  1, 
rhs_item_1'Access, null);
+            Add_Action (Table.States (43), 21, Reduce, (50, 1),  1, 
rhs_item_1'Access, null);
+            Add_Action (Table.States (43), 23, Reduce, (50, 1),  1, 
rhs_item_1'Access, null);
+            Add_Action (Table.States (43), 25, (52, 3), 70);
+            Add_Action (Table.States (43), 26, Reduce, (50, 1),  1, 
rhs_item_1'Access, null);
+            Add_Action (Table.States (43), 27, Reduce, (50, 1),  1, 
rhs_item_1'Access, null);
+            Add_Action (Table.States (43), 28, Reduce, (50, 1),  1, 
rhs_item_1'Access, null);
+            Add_Action (Table.States (43), 29, Reduce, (50, 1),  1, 
rhs_item_1'Access, null);
+            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);
             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_Action (Table.States (44), 12, (45, 1), 71);
+            Add_Action (Table.States (44), 23, (45, 2), 72);
+            Add_Conflict (Table.States (44), 23, (44, 1),  0, null, null);
+            Add_Action (Table.States (44), 29, (44, 0), 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);
             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);
+            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,
+            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,
+            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);
-            Add_Action (Table.States (48), 19, 39);
-            Add_Action (Table.States (48), 20, 40);
-            Add_Action (Table.States (48), 21, 41);
-            Add_Action (Table.States (48), 23, Reduce, (46, 1), 1, null, null);
-            Add_Action (Table.States (48), 29, Reduce, (46, 1), 1, null, null);
-            Add_Action (Table.States (48), 33, 42);
-            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_Action (Table.States (48), 11, (46, 2), 75);
+            Add_Action (Table.States (48), 12, Reduce, (46, 1),  1, null, 
null);
+            Add_Action (Table.States (48), 18, (53, 0), 38);
+            Add_Action (Table.States (48), 19, (52, 0), 39);
+            Add_Action (Table.States (48), 20, (51, 0), 40);
+            Add_Action (Table.States (48), 21, (47, 0), 41);
+            Add_Action (Table.States (48), 23, Reduce, (46, 1),  1, null, 
null);
+            Add_Action (Table.States (48), 29, Reduce, (46, 1),  1, null, 
null);
+            Add_Action (Table.States (48), 33, (48, 1), 42);
+            Add_Conflict (Table.States (48), 33, (46, 1),  1, null, null);
+            Add_Action (Table.States (48), 35, (50, 1), 43);
+            Add_Action (Table.States (48), 36, Reduce, (46, 1),  1, null, 
null);
             Table.States (48).Goto_List.Set_Capacity (6);
             Add_Goto (Table.States (48), 47, 46);
             Add_Goto (Table.States (48), 48, 76);
@@ -368,67 +368,67 @@ package body Wisitoken_Grammar_Main is
             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,
+            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,
+            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,
+            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,
+            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_Action (Table.States (53), 12, (45, 1), 71);
+            Add_Action (Table.States (53), 23, (45, 2), 72);
+            Add_Conflict (Table.States (53), 23, (44, 1),  0, null, null);
+            Add_Action (Table.States (53), 29, (44, 0), 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);
             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);
+            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);
+            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_Action (Table.States (56), 33, (38, 4), 78);
             Table.States (57).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (57), 17, 79);
+            Add_Action (Table.States (57), 17, (39, 1), 79);
             Table.States (58).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (58), 17, 80);
+            Add_Action (Table.States (58), 17, (39, 2), 80);
             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,
+            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);
-            Add_Action (Table.States (60), 16, 27);
-            Add_Action (Table.States (60), 20, 28);
-            Add_Action (Table.States (60), 23, Reduce, (38, 0), 4, 
declaration_0'Access, null);
-            Add_Action (Table.States (60), 28, 29);
-            Add_Action (Table.States (60), 30, 30);
-            Add_Action (Table.States (60), 32, 31);
-            Add_Action (Table.States (60), 33, 32);
-            Add_Conflict (Table.States (60), 33, (38, 0), 4, 
declaration_0'Access, null);
-            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_Action (Table.States (60), 8, (42, 10), 24);
+            Add_Action (Table.States (60), 10, (42, 5), 25);
+            Add_Action (Table.States (60), 15, (42, 0), 26);
+            Add_Action (Table.States (60), 16, (42, 2), 27);
+            Add_Action (Table.States (60), 20, (42, 3), 28);
+            Add_Action (Table.States (60), 23, Reduce, (38, 0),  4, 
declaration_0'Access, null);
+            Add_Action (Table.States (60), 28, (42, 6), 29);
+            Add_Action (Table.States (60), 30, (42, 7), 30);
+            Add_Action (Table.States (60), 32, (42, 4), 31);
+            Add_Action (Table.States (60), 33, (42, 1), 32);
+            Add_Conflict (Table.States (60), 33, (38, 0),  4, 
declaration_0'Access, null);
+            Add_Action (Table.States (60), 34, (42, 8), 33);
+            Add_Action (Table.States (60), 35, (42, 9), 34);
+            Add_Action (Table.States (60), 36, Reduce, (38, 0),  4, 
declaration_0'Access, null);
             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);
-            Add_Action (Table.States (61), 20, 40);
-            Add_Action (Table.States (61), 21, 41);
-            Add_Action (Table.States (61), 26, Reduce, (54, 0), 1, null, null);
-            Add_Action (Table.States (61), 27, Reduce, (54, 0), 1, null, null);
-            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_Action (Table.States (61), 12, Reduce, (54, 0),  1, null, 
null);
+            Add_Action (Table.States (61), 18, (53, 0), 38);
+            Add_Action (Table.States (61), 19, (52, 0), 39);
+            Add_Action (Table.States (61), 20, (51, 0), 40);
+            Add_Action (Table.States (61), 21, (47, 0), 41);
+            Add_Action (Table.States (61), 26, Reduce, (54, 0),  1, null, 
null);
+            Add_Action (Table.States (61), 27, Reduce, (54, 0),  1, null, 
null);
+            Add_Action (Table.States (61), 28, Reduce, (54, 0),  1, null, 
null);
+            Add_Action (Table.States (61), 33, (48, 1), 42);
+            Add_Action (Table.States (61), 35, (50, 1), 43);
             Table.States (61).Goto_List.Set_Capacity (6);
             Add_Goto (Table.States (61), 47, 46);
             Add_Goto (Table.States (61), 48, 76);
@@ -437,23 +437,23 @@ package body Wisitoken_Grammar_Main is
             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_Action (Table.States (62), 12, (54, 1), 81);
+            Add_Action (Table.States (62), 26, (53, 0), 82);
             Table.States (63).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (63), 12, 81);
-            Add_Action (Table.States (63), 27, 83);
+            Add_Action (Table.States (63), 12, (54, 1), 81);
+            Add_Action (Table.States (63), 27, (52, 0), 83);
             Table.States (64).Action_List.Set_Capacity (2);
-            Add_Action (Table.States (64), 12, 81);
-            Add_Action (Table.States (64), 28, 84);
+            Add_Action (Table.States (64), 12, (54, 1), 81);
+            Add_Action (Table.States (64), 28, (51, 0), 84);
             Table.States (65).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (65), 16, 85);
+            Add_Action (Table.States (65), 16, (47, 0), 85);
             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_Action (Table.States (66), 18, (53, 0), 38);
+            Add_Action (Table.States (66), 19, (52, 0), 39);
+            Add_Action (Table.States (66), 20, (51, 0), 40);
+            Add_Action (Table.States (66), 21, (47, 0), 41);
+            Add_Action (Table.States (66), 33, (50, 0), 86);
+            Add_Action (Table.States (66), 35, (50, 1), 43);
             Table.States (66).Goto_List.Set_Capacity (5);
             Add_Goto (Table.States (66), 47, 46);
             Add_Goto (Table.States (66), 50, 87);
@@ -461,29 +461,29 @@ package body Wisitoken_Grammar_Main is
             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,
+            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,
+            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,
+            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,
+            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);
-            Add_Action (Table.States (71), 20, 40);
-            Add_Action (Table.States (71), 21, 41);
-            Add_Action (Table.States (71), 23, Reduce, (46, 0), 0, null, null);
-            Add_Action (Table.States (71), 29, Reduce, (46, 0), 0, null, null);
-            Add_Action (Table.States (71), 33, 42);
-            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_Action (Table.States (71), 12, Reduce, (46, 0),  0, null, 
null);
+            Add_Action (Table.States (71), 18, (53, 0), 38);
+            Add_Action (Table.States (71), 19, (52, 0), 39);
+            Add_Action (Table.States (71), 20, (51, 0), 40);
+            Add_Action (Table.States (71), 21, (47, 0), 41);
+            Add_Action (Table.States (71), 23, Reduce, (46, 0),  0, null, 
null);
+            Add_Action (Table.States (71), 29, Reduce, (46, 0),  0, null, 
null);
+            Add_Action (Table.States (71), 33, (48, 1), 42);
+            Add_Conflict (Table.States (71), 33, (46, 0),  0, null, null);
+            Add_Action (Table.States (71), 35, (50, 1), 43);
+            Add_Action (Table.States (71), 36, Reduce, (46, 0),  0, null, 
null);
             Table.States (71).Goto_List.Set_Capacity (8);
             Add_Goto (Table.States (71), 46, 88);
             Add_Goto (Table.States (71), 47, 46);
@@ -494,37 +494,37 @@ package body Wisitoken_Grammar_Main is
             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_Action (Table.States (72), 4, (45, 3), 89);
+            Add_Action (Table.States (72), 5, (45, 2), 90);
             Table.States (73).Action_List.Set_Capacity (3);
-            Add_Action (Table.States (73), (23, 33, 36), (44, 0), 1, null, 
null);
+            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);
+            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_Action (Table.States (75), 11, (46, 3), 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);
             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,
+            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);
+            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);
+            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);
+            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);
+            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_Action (Table.States (81), 18, (53, 0), 38);
+            Add_Action (Table.States (81), 19, (52, 0), 39);
+            Add_Action (Table.States (81), 20, (51, 0), 40);
+            Add_Action (Table.States (81), 21, (47, 0), 41);
+            Add_Action (Table.States (81), 33, (48, 1), 42);
+            Add_Action (Table.States (81), 35, (50, 1), 43);
             Table.States (81).Goto_List.Set_Capacity (7);
             Add_Goto (Table.States (81), 47, 46);
             Add_Goto (Table.States (81), 48, 47);
@@ -534,84 +534,84 @@ package body Wisitoken_Grammar_Main is
             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);
-            Add_Action (Table.States (82), 19, Reduce, (53, 0), 3, null, null);
-            Add_Action (Table.States (82), 20, Reduce, (53, 0), 3, null, null);
-            Add_Action (Table.States (82), 21, Reduce, (53, 0), 3, null, null);
-            Add_Action (Table.States (82), 22, 93);
-            Add_Action (Table.States (82), 23, Reduce, (53, 0), 3, null, null);
-            Add_Action (Table.States (82), 26, Reduce, (53, 0), 3, null, null);
-            Add_Action (Table.States (82), 27, Reduce, (53, 0), 3, null, null);
-            Add_Action (Table.States (82), 28, Reduce, (53, 0), 3, null, null);
-            Add_Action (Table.States (82), 29, Reduce, (53, 0), 3, null, null);
-            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_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);
+            Add_Action (Table.States (82), 19, Reduce, (53, 0),  3, null, 
null);
+            Add_Action (Table.States (82), 20, Reduce, (53, 0),  3, null, 
null);
+            Add_Action (Table.States (82), 21, Reduce, (53, 0),  3, null, 
null);
+            Add_Action (Table.States (82), 22, (53, 1), 93);
+            Add_Action (Table.States (82), 23, Reduce, (53, 0),  3, null, 
null);
+            Add_Action (Table.States (82), 26, Reduce, (53, 0),  3, null, 
null);
+            Add_Action (Table.States (82), 27, Reduce, (53, 0),  3, null, 
null);
+            Add_Action (Table.States (82), 28, Reduce, (53, 0),  3, null, 
null);
+            Add_Action (Table.States (82), 29, Reduce, (53, 0),  3, null, 
null);
+            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);
             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,
+            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);
-            Add_Action (Table.States (84), 19, Reduce, (51, 0), 3, null, null);
-            Add_Action (Table.States (84), 20, Reduce, (51, 0), 3, null, null);
-            Add_Action (Table.States (84), 21, Reduce, (51, 0), 3, null, null);
-            Add_Action (Table.States (84), 23, Reduce, (51, 0), 3, null, null);
-            Add_Action (Table.States (84), 24, 94);
-            Add_Action (Table.States (84), 25, 95);
-            Add_Action (Table.States (84), 26, Reduce, (51, 0), 3, null, null);
-            Add_Action (Table.States (84), 27, Reduce, (51, 0), 3, null, null);
-            Add_Action (Table.States (84), 28, Reduce, (51, 0), 3, null, null);
-            Add_Action (Table.States (84), 29, Reduce, (51, 0), 3, null, null);
-            Add_Action (Table.States (84), 31, 96);
-            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_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);
+            Add_Action (Table.States (84), 19, Reduce, (51, 0),  3, null, 
null);
+            Add_Action (Table.States (84), 20, Reduce, (51, 0),  3, null, 
null);
+            Add_Action (Table.States (84), 21, Reduce, (51, 0),  3, null, 
null);
+            Add_Action (Table.States (84), 23, Reduce, (51, 0),  3, null, 
null);
+            Add_Action (Table.States (84), 24, (53, 2), 94);
+            Add_Action (Table.States (84), 25, (52, 1), 95);
+            Add_Action (Table.States (84), 26, Reduce, (51, 0),  3, null, 
null);
+            Add_Action (Table.States (84), 27, Reduce, (51, 0),  3, null, 
null);
+            Add_Action (Table.States (84), 28, Reduce, (51, 0),  3, null, 
null);
+            Add_Action (Table.States (84), 29, Reduce, (51, 0),  3, null, 
null);
+            Add_Action (Table.States (84), 31, (53, 3), 96);
+            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);
             Table.States (85).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (85), 33, 97);
+            Add_Action (Table.States (85), 33, (47, 0), 97);
             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);
-            Add_Action (Table.States (86), 19, Reduce, (50, 0), 1, null, null);
-            Add_Action (Table.States (86), 20, Reduce, (50, 0), 1, null, null);
-            Add_Action (Table.States (86), 21, Reduce, (50, 0), 1, null, null);
-            Add_Action (Table.States (86), 23, Reduce, (50, 0), 1, null, null);
-            Add_Action (Table.States (86), 24, 67);
-            Add_Action (Table.States (86), 25, 68);
-            Add_Action (Table.States (86), 26, Reduce, (50, 0), 1, null, null);
-            Add_Action (Table.States (86), 27, Reduce, (50, 0), 1, null, null);
-            Add_Action (Table.States (86), 28, Reduce, (50, 0), 1, null, null);
-            Add_Action (Table.States (86), 29, Reduce, (50, 0), 1, null, null);
-            Add_Action (Table.States (86), 31, 69);
-            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_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);
+            Add_Action (Table.States (86), 19, Reduce, (50, 0),  1, null, 
null);
+            Add_Action (Table.States (86), 20, Reduce, (50, 0),  1, null, 
null);
+            Add_Action (Table.States (86), 21, Reduce, (50, 0),  1, null, 
null);
+            Add_Action (Table.States (86), 23, Reduce, (50, 0),  1, null, 
null);
+            Add_Action (Table.States (86), 24, (53, 4), 67);
+            Add_Action (Table.States (86), 25, (52, 2), 68);
+            Add_Action (Table.States (86), 26, Reduce, (50, 0),  1, null, 
null);
+            Add_Action (Table.States (86), 27, Reduce, (50, 0),  1, null, 
null);
+            Add_Action (Table.States (86), 28, Reduce, (50, 0),  1, null, 
null);
+            Add_Action (Table.States (86), 29, Reduce, (50, 0),  1, null, 
null);
+            Add_Action (Table.States (86), 31, (53, 5), 69);
+            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);
             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,
+            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);
+            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_Action (Table.States (89), 5, (45, 3), 98);
             Table.States (90).Action_List.Set_Capacity (1);
-            Add_Action (Table.States (90), 33, 99);
+            Add_Action (Table.States (90), 33, (45, 2), 99);
             Table.States (91).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (91), (12, 23, 29, 33, 36), (46, 3), 3, 
null, null);
+            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);
-            Add_Action (Table.States (92), 20, 40);
-            Add_Action (Table.States (92), 21, 41);
-            Add_Action (Table.States (92), 26, Reduce, (54, 1), 3, null, null);
-            Add_Action (Table.States (92), 27, Reduce, (54, 1), 3, null, null);
-            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_Action (Table.States (92), 12, Reduce, (54, 1),  3, null, 
null);
+            Add_Action (Table.States (92), 18, (53, 0), 38);
+            Add_Action (Table.States (92), 19, (52, 0), 39);
+            Add_Action (Table.States (92), 20, (51, 0), 40);
+            Add_Action (Table.States (92), 21, (47, 0), 41);
+            Add_Action (Table.States (92), 26, Reduce, (54, 1),  3, null, 
null);
+            Add_Action (Table.States (92), 27, Reduce, (54, 1),  3, null, 
null);
+            Add_Action (Table.States (92), 28, Reduce, (54, 1),  3, null, 
null);
+            Add_Action (Table.States (92), 33, (48, 1), 42);
+            Add_Action (Table.States (92), 35, (50, 1), 43);
             Table.States (92).Goto_List.Set_Capacity (6);
             Add_Goto (Table.States (92), 47, 46);
             Add_Goto (Table.States (92), 48, 76);
@@ -620,34 +620,34 @@ package body Wisitoken_Grammar_Main is
             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,
+            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,
+            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,
+            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,
+            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_Action (Table.States (97), 17, (47, 0), 100);
             Table.States (98).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (98), (12, 23, 29, 33, 36), (45, 3), 4, 
null, null);
+            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_Action (Table.States (99), 16, (45, 2), 101);
             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);
+            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_Action (Table.States (101), 33, (45, 2), 102);
             Table.States (102).Action_List.Set_Capacity (5);
-            Add_Action (Table.States (102), (12, 23, 29, 33, 36), (45, 2), 6, 
null, null);
+            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);
+         Table.Error_Action := new Parse_Action_Node'((Verb => Error, others 
=> <>), null);
       end;
 
       WisiToken.Parse.LR.Parser_No_Recover.New_Parser
diff --git a/packages/wisi/wisitoken_grammar_re2c.c 
b/packages/wisi/wisitoken_grammar_re2c.c
index ef82744..b58f1d0 100644
--- a/packages/wisi/wisitoken_grammar_re2c.c
+++ b/packages/wisi/wisitoken_grammar_re2c.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 1.0.3 */
+/* Generated by re2c 1.3 */
 #line 1 "../wisitoken_grammar.re2c"
 //  generated parser support file. -*- mode: C -*-
 //  command line: wisitoken-bnf-generate.exe  --generate LALR Ada re2c 
wisitoken_grammar.wy
@@ -332,21 +332,21 @@ yy2:
        YYSKIP ();
 yy3:
        YYDEBUG(3, YYPEEK ());
-#line 261 "../wisitoken_grammar.re2c"
+#line 262 "../wisitoken_grammar.re2c"
        {status = ERROR_unrecognized_character; continue;}
 #line 338 "../wisitoken_grammar_re2c.c"
 yy4:
        YYDEBUG(4, YYPEEK ());
        YYSKIP ();
        YYDEBUG(5, YYPEEK ());
-#line 259 "../wisitoken_grammar.re2c"
+#line 260 "../wisitoken_grammar.re2c"
        {*id =  36; continue;}
 #line 345 "../wisitoken_grammar_re2c.c"
 yy6:
        YYDEBUG(6, YYPEEK ());
        YYSKIP ();
        YYDEBUG(7, YYPEEK ());
-#line 217 "../wisitoken_grammar.re2c"
+#line 218 "../wisitoken_grammar.re2c"
        { lexer->byte_token_start = lexer->cursor;
           lexer->char_token_start = lexer->char_pos;
           if (*lexer->cursor == 0x0A)
@@ -359,7 +359,7 @@ yy8:
        YYDEBUG(8, YYPEEK ());
        YYSKIP ();
        YYDEBUG(9, YYPEEK ());
-#line 224 "../wisitoken_grammar.re2c"
+#line 225 "../wisitoken_grammar.re2c"
        {*id =  1; continue;}
 #line 365 "../wisitoken_grammar_re2c.c"
 yy10:
@@ -538,7 +538,7 @@ yy12:
        }
 yy13:
        YYDEBUG(13, YYPEEK ());
-#line 246 "../wisitoken_grammar.re2c"
+#line 247 "../wisitoken_grammar.re2c"
        {*id =  23; continue;}
 #line 544 "../wisitoken_grammar_re2c.c"
 yy14:
@@ -701,35 +701,35 @@ yy15:
        YYDEBUG(15, YYPEEK ());
        YYSKIP ();
        YYDEBUG(16, YYPEEK ());
-#line 243 "../wisitoken_grammar.re2c"
+#line 244 "../wisitoken_grammar.re2c"
        {*id =  20; continue;}
 #line 707 "../wisitoken_grammar_re2c.c"
 yy17:
        YYDEBUG(17, YYPEEK ());
        YYSKIP ();
        YYDEBUG(18, YYPEEK ());
-#line 251 "../wisitoken_grammar.re2c"
+#line 252 "../wisitoken_grammar.re2c"
        {*id =  28; continue;}
 #line 714 "../wisitoken_grammar_re2c.c"
 yy19:
        YYDEBUG(19, YYPEEK ());
        YYSKIP ();
        YYDEBUG(20, YYPEEK ());
-#line 254 "../wisitoken_grammar.re2c"
+#line 255 "../wisitoken_grammar.re2c"
        {*id =  31; continue;}
 #line 721 "../wisitoken_grammar_re2c.c"
 yy21:
        YYDEBUG(21, YYPEEK ());
        YYSKIP ();
        YYDEBUG(22, YYPEEK ());
-#line 247 "../wisitoken_grammar.re2c"
+#line 248 "../wisitoken_grammar.re2c"
        {*id =  24; continue;}
 #line 728 "../wisitoken_grammar_re2c.c"
 yy23:
        YYDEBUG(23, YYPEEK ());
        YYSKIP ();
        YYDEBUG(24, YYPEEK ());
-#line 238 "../wisitoken_grammar.re2c"
+#line 239 "../wisitoken_grammar.re2c"
        {*id =  15; continue;}
 #line 735 "../wisitoken_grammar_re2c.c"
 yy25:
@@ -752,14 +752,14 @@ yy25:
        }
 yy26:
        YYDEBUG(26, YYPEEK ());
-#line 245 "../wisitoken_grammar.re2c"
+#line 246 "../wisitoken_grammar.re2c"
        {*id =  22; continue;}
 #line 758 "../wisitoken_grammar_re2c.c"
 yy27:
        YYDEBUG(27, YYPEEK ());
        YYSKIP ();
        YYDEBUG(28, YYPEEK ());
-#line 253 "../wisitoken_grammar.re2c"
+#line 254 "../wisitoken_grammar.re2c"
        {*id =  30; continue;}
 #line 765 "../wisitoken_grammar_re2c.c"
 yy29:
@@ -783,7 +783,7 @@ yy29:
        }
 yy31:
        YYDEBUG(31, YYPEEK ());
-#line 255 "../wisitoken_grammar.re2c"
+#line 256 "../wisitoken_grammar.re2c"
        {*id =  32; continue;}
 #line 789 "../wisitoken_grammar_re2c.c"
 yy32:
@@ -798,7 +798,7 @@ yy32:
        }
 yy33:
        YYDEBUG(33, YYPEEK ());
-#line 236 "../wisitoken_grammar.re2c"
+#line 237 "../wisitoken_grammar.re2c"
        {*id =  13; continue;}
 #line 804 "../wisitoken_grammar_re2c.c"
 yy34:
@@ -811,35 +811,35 @@ yy34:
        }
 yy35:
        YYDEBUG(35, YYPEEK ());
-#line 252 "../wisitoken_grammar.re2c"
+#line 253 "../wisitoken_grammar.re2c"
        {*id =  29; continue;}
 #line 817 "../wisitoken_grammar_re2c.c"
 yy36:
        YYDEBUG(36, YYPEEK ());
        YYSKIP ();
        YYDEBUG(37, YYPEEK ());
-#line 244 "../wisitoken_grammar.re2c"
+#line 245 "../wisitoken_grammar.re2c"
        {*id =  21; continue;}
 #line 824 "../wisitoken_grammar_re2c.c"
 yy38:
        YYDEBUG(38, YYPEEK ());
        YYSKIP ();
        YYDEBUG(39, YYPEEK ());
-#line 239 "../wisitoken_grammar.re2c"
+#line 240 "../wisitoken_grammar.re2c"
        {*id =  16; continue;}
 #line 831 "../wisitoken_grammar_re2c.c"
 yy40:
        YYDEBUG(40, YYPEEK ());
        YYSKIP ();
        YYDEBUG(41, YYPEEK ());
-#line 240 "../wisitoken_grammar.re2c"
+#line 241 "../wisitoken_grammar.re2c"
        {*id =  17; continue;}
 #line 838 "../wisitoken_grammar_re2c.c"
 yy42:
        YYDEBUG(42, YYPEEK ());
        YYSKIP ();
        YYDEBUG(43, YYPEEK ());
-#line 248 "../wisitoken_grammar.re2c"
+#line 249 "../wisitoken_grammar.re2c"
        {*id =  25; continue;}
 #line 845 "../wisitoken_grammar_re2c.c"
 yy44:
@@ -970,21 +970,21 @@ yy45:
        }
 yy46:
        YYDEBUG(46, YYPEEK ());
-#line 256 "../wisitoken_grammar.re2c"
+#line 257 "../wisitoken_grammar.re2c"
        {*id =  33; continue;}
 #line 976 "../wisitoken_grammar_re2c.c"
 yy47:
        YYDEBUG(47, YYPEEK ());
        YYSKIP ();
        YYDEBUG(48, YYPEEK ());
-#line 242 "../wisitoken_grammar.re2c"
+#line 243 "../wisitoken_grammar.re2c"
        {*id =  19; continue;}
 #line 983 "../wisitoken_grammar_re2c.c"
 yy49:
        YYDEBUG(49, YYPEEK ());
        YYSKIP ();
        YYDEBUG(50, YYPEEK ());
-#line 250 "../wisitoken_grammar.re2c"
+#line 251 "../wisitoken_grammar.re2c"
        {*id =  27; continue;}
 #line 990 "../wisitoken_grammar_re2c.c"
 yy51:
@@ -1051,21 +1051,21 @@ yy57:
        YYDEBUG(57, YYPEEK ());
        YYSKIP ();
        YYDEBUG(58, YYPEEK ());
-#line 241 "../wisitoken_grammar.re2c"
+#line 242 "../wisitoken_grammar.re2c"
        {*id =  18; continue;}
 #line 1057 "../wisitoken_grammar_re2c.c"
 yy59:
        YYDEBUG(59, YYPEEK ());
        YYSKIP ();
        YYDEBUG(60, YYPEEK ());
-#line 235 "../wisitoken_grammar.re2c"
+#line 236 "../wisitoken_grammar.re2c"
        {*id =  12; continue;}
 #line 1064 "../wisitoken_grammar_re2c.c"
 yy61:
        YYDEBUG(61, YYPEEK ());
        YYSKIP ();
        YYDEBUG(62, YYPEEK ());
-#line 249 "../wisitoken_grammar.re2c"
+#line 250 "../wisitoken_grammar.re2c"
        {*id =  26; continue;}
 #line 1071 "../wisitoken_grammar_re2c.c"
 yy63:
@@ -1593,7 +1593,7 @@ yy72:
        }
 yy73:
        YYDEBUG(73, YYPEEK ());
-#line 257 "../wisitoken_grammar.re2c"
+#line 258 "../wisitoken_grammar.re2c"
        {*id =  34; continue;}
 #line 1599 "../wisitoken_grammar_re2c.c"
 yy74:
@@ -1930,21 +1930,21 @@ yy80:
        YYDEBUG(80, YYPEEK ());
        YYSKIP ();
        YYDEBUG(81, YYPEEK ());
-#line 234 "../wisitoken_grammar.re2c"
+#line 235 "../wisitoken_grammar.re2c"
        {*id =  11; skip_to(lexer, ")%"); continue;}
 #line 1936 "../wisitoken_grammar_re2c.c"
 yy82:
        YYDEBUG(82, YYPEEK ());
        YYSKIP ();
        YYDEBUG(83, YYPEEK ());
-#line 233 "../wisitoken_grammar.re2c"
+#line 234 "../wisitoken_grammar.re2c"
        {*id =  10; skip_to(lexer, "]%"); continue;}
 #line 1943 "../wisitoken_grammar_re2c.c"
 yy84:
        YYDEBUG(84, YYPEEK ());
        YYSKIP ();
        YYDEBUG(85, YYPEEK ());
-#line 232 "../wisitoken_grammar.re2c"
+#line 233 "../wisitoken_grammar.re2c"
        {*id =  9; skip_to(lexer, "}%"); continue;}
 #line 1950 "../wisitoken_grammar_re2c.c"
 yy86:
@@ -2115,7 +2115,7 @@ yy88:
        }
 yy89:
        YYDEBUG(89, YYPEEK ());
-#line 258 "../wisitoken_grammar.re2c"
+#line 259 "../wisitoken_grammar.re2c"
        {*id =  35; continue;}
 #line 2121 "../wisitoken_grammar_re2c.c"
 yy90:
@@ -2645,7 +2645,7 @@ yy97:
        }
 yy99:
        YYDEBUG(99, YYPEEK ());
-#line 225 "../wisitoken_grammar.re2c"
+#line 226 "../wisitoken_grammar.re2c"
        {*id =  2; continue;}
 #line 2651 "../wisitoken_grammar_re2c.c"
 yy100:
@@ -3124,7 +3124,7 @@ yy108:
        }
 yy109:
        YYDEBUG(109, YYPEEK ());
-#line 228 "../wisitoken_grammar.re2c"
+#line 229 "../wisitoken_grammar.re2c"
        {*id =  5; continue;}
 #line 3130 "../wisitoken_grammar_re2c.c"
 yy110:
@@ -3161,7 +3161,7 @@ yy113:
        YYDEBUG(113, YYPEEK ());
        YYSKIP ();
        YYDEBUG(114, YYPEEK ());
-#line 237 "../wisitoken_grammar.re2c"
+#line 238 "../wisitoken_grammar.re2c"
        {*id =  14; continue;}
 #line 3167 "../wisitoken_grammar_re2c.c"
 yy115:
@@ -3630,7 +3630,7 @@ yy122:
        }
 yy123:
        YYDEBUG(123, YYPEEK ());
-#line 227 "../wisitoken_grammar.re2c"
+#line 228 "../wisitoken_grammar.re2c"
        {*id =  4; continue;}
 #line 3636 "../wisitoken_grammar_re2c.c"
 yy124:
@@ -3789,7 +3789,7 @@ yy127:
        }
 yy128:
        YYDEBUG(128, YYPEEK ());
-#line 226 "../wisitoken_grammar.re2c"
+#line 227 "../wisitoken_grammar.re2c"
        {*id =  3; continue;}
 #line 3795 "../wisitoken_grammar_re2c.c"
 yy129:
@@ -3968,7 +3968,7 @@ yy134:
        }
 yy135:
        YYDEBUG(135, YYPEEK ());
-#line 231 "../wisitoken_grammar.re2c"
+#line 232 "../wisitoken_grammar.re2c"
        {*id =  8; continue;}
 #line 3974 "../wisitoken_grammar_re2c.c"
 yy136:
@@ -4117,7 +4117,7 @@ yy138:
        }
 yy139:
        YYDEBUG(139, YYPEEK ());
-#line 229 "../wisitoken_grammar.re2c"
+#line 230 "../wisitoken_grammar.re2c"
        {*id =  6; continue;}
 #line 4123 "../wisitoken_grammar_re2c.c"
 yy140:
@@ -4286,11 +4286,11 @@ yy144:
        }
 yy145:
        YYDEBUG(145, YYPEEK ());
-#line 230 "../wisitoken_grammar.re2c"
+#line 231 "../wisitoken_grammar.re2c"
        {*id =  7; continue;}
 #line 4292 "../wisitoken_grammar_re2c.c"
 }
-#line 262 "../wisitoken_grammar.re2c"
+#line 263 "../wisitoken_grammar.re2c"
 
    }
    /* lexer->cursor and lexer ->char_pos are one char past end of token */
diff --git a/packages/wisi/wisitoken_grammar_runtime.adb 
b/packages/wisi/wisitoken_grammar_runtime.adb
index 346eadb..42d61fe 100644
--- a/packages/wisi/wisitoken_grammar_runtime.adb
+++ b/packages/wisi/wisitoken_grammar_runtime.adb
@@ -2,7 +2,7 @@
 --
 --  See spec.
 --
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -25,11 +25,11 @@ with GNAT.Regexp;
 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;
+   use Wisitoken_Grammar_Actions;
 
    ----------
    --  Body subprograms, misc order
@@ -38,14 +38,14 @@ package body WisiToken_Grammar_Runtime is
      (Label : in String;
       Data  : in User_Data_Type;
       Tree  : in WisiToken.Syntax_Trees.Tree;
-      Node  : in WisiToken.Syntax_Trees.Node_Index);
+      Node  : in WisiToken.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)
+      Node  : in WisiToken.Node_Index)
    is begin
       WisiToken.Syntax_Trees.LR_Utils.Raise_Programmer_Error
         (Label, Wisitoken_Grammar_Actions.Descriptor, Data.Grammar_Lexer, 
Tree, Data.Terminals.all, Node);
@@ -54,7 +54,7 @@ package body WisiToken_Grammar_Runtime is
    function Get_Line
      (Data : in User_Data_Type;
       Tree : in Syntax_Trees.Tree;
-      Node : in WisiToken.Syntax_Trees.Valid_Node_Index)
+      Node : in WisiToken.Valid_Node_Index)
      return WisiToken.Line_Number_Type
    is
       --  Find a source line for Node.
@@ -64,12 +64,12 @@ package body WisiToken_Grammar_Runtime is
       Temp : Node_Index := Node;
    begin
       loop
-         if Tree.Min_Terminal_Index (Temp) = Invalid_Token_Index then
+         if Tree.First_Shared_Terminal (Temp) = Invalid_Token_Index then
             --  Node is empty or all virtual_identifiers; try parents.
             Temp := Tree.Parent (Temp);
             exit when Temp = Invalid_Node_Index;
          else
-            return Data.Terminals.all (Tree.Min_Terminal_Index (Temp)).Line;
+            return Data.Terminals.all (Tree.First_Shared_Terminal (Temp)).Line;
          end if;
       end loop;
       return Invalid_Line_Number;
@@ -78,13 +78,13 @@ package body WisiToken_Grammar_Runtime is
    function Get_Text
      (Data         : in User_Data_Type;
       Tree         : in Syntax_Trees.Tree;
-      Tree_Index   : in Syntax_Trees.Valid_Node_Index;
+      Tree_Index   : in Valid_Node_Index;
       Strip_Quotes : in Boolean := False)
      return String
    is
       use all type Syntax_Trees.Node_Label;
 
-      function Strip_Delimiters (Tree_Index : in 
Syntax_Trees.Valid_Node_Index) return String
+      function Strip_Delimiters (Tree_Index : in Valid_Node_Index) return 
String
       is
          Region : Buffer_Region renames Data.Terminals.all (Tree.Terminal 
(Tree_Index)).Byte_Region;
       begin
@@ -124,7 +124,7 @@ package body WisiToken_Grammar_Runtime is
          declare
             use all type Ada.Strings.Unbounded.Unbounded_String;
             Result       : Ada.Strings.Unbounded.Unbounded_String;
-            Tree_Indices : constant Syntax_Trees.Valid_Node_Index_Array := 
Tree.Get_Terminals (Tree_Index);
+            Tree_Indices : constant Valid_Node_Index_Array := 
Tree.Get_Terminals (Tree_Index);
             Need_Space   : Boolean                                      := 
False;
          begin
             for Tree_Index of Tree_Indices loop
@@ -140,12 +140,12 @@ package body WisiToken_Grammar_Runtime is
    function Get_Child_Text
      (Data         : in User_Data_Type;
       Tree         : in Syntax_Trees.Tree;
-      Parent       : in Syntax_Trees.Valid_Node_Index;
+      Parent       : in Valid_Node_Index;
       Child        : in SAL.Peek_Type;
       Strip_Quotes : in Boolean := False)
      return String
    is
-      Tree_Indices : constant Syntax_Trees.Valid_Node_Index_Array := 
Tree.Get_Terminals (Parent);
+      Tree_Indices : constant Valid_Node_Index_Array := Tree.Get_Terminals 
(Parent);
    begin
       return Get_Text (Data, Tree, Tree_Indices (Child), Strip_Quotes);
    end Get_Child_Text;
@@ -153,8 +153,8 @@ package body WisiToken_Grammar_Runtime is
    procedure Start_If_1
      (Data    : in out User_Data_Type;
       Tree    : in     Syntax_Trees.Tree;
-      A_Index : in     Syntax_Trees.Valid_Node_Index;
-      B_Index : in     Syntax_Trees.Valid_Node_Index)
+      A_Index : in     Valid_Node_Index;
+      B_Index : in     Valid_Node_Index)
    is
       use all type WisiToken.BNF.Generate_Algorithm;
       use all type WisiToken.BNF.Lexer_Type;
@@ -171,7 +171,7 @@ package body WisiToken_Grammar_Runtime is
       else
          raise Grammar_Error with
            Error_Message
-             (Data.Grammar_Lexer.File_Name, Data.Terminals.all 
(Tree.Min_Terminal_Index (A_Index)).Line,
+             (Data.Grammar_Lexer.File_Name, Data.Terminals.all 
(Tree.First_Shared_Terminal (A_Index)).Line,
               "invalid '%if'; must be one of {lexer | parser}");
       end if;
    end Start_If_1;
@@ -180,12 +180,11 @@ package body WisiToken_Grammar_Runtime is
      (Data   : in out User_Data_Type;
       Tree   : in     Syntax_Trees.Tree;
       Labels : in out WisiToken.BNF.String_Arrays.Vector;
-      Token  : in     Syntax_Trees.Valid_Node_Index)
+      Token  : in     Valid_Node_Index)
      return WisiToken.BNF.RHS_Type
    is
-      use all type WisiToken.Syntax_Trees.Node_Index;
       use all type SAL.Base_Peek_Type;
-      Children : constant Syntax_Trees.Valid_Node_Index_Array := Tree.Children 
(Token);
+      Children : constant Valid_Node_Index_Array := Tree.Children (Token);
    begin
       pragma Assert (-Tree.ID (Token) = rhs_ID);
 
@@ -253,9 +252,9 @@ package body WisiToken_Grammar_Runtime is
       Tree             : in     WisiToken.Syntax_Trees.Tree;
       Right_Hand_Sides : in out WisiToken.BNF.RHS_Lists.List;
       Labels           : in out WisiToken.BNF.String_Arrays.Vector;
-      Token            : in     WisiToken.Syntax_Trees.Valid_Node_Index)
+      Token            : in     WisiToken.Valid_Node_Index)
    is
-      Tokens : constant Syntax_Trees.Valid_Node_Index_Array := Tree.Children 
(Token);
+      Tokens : constant Valid_Node_Index_Array := Tree.Children (Token);
    begin
       pragma Assert (-Tree.ID (Token) = rhs_list_ID);
 
@@ -345,6 +344,7 @@ package body WisiToken_Grammar_Runtime is
    overriding
    procedure Lexer_To_Augmented
      (Data  : in out          User_Data_Type;
+      Tree  : in out          WisiToken.Syntax_Trees.Tree'Class;
       Token : in              WisiToken.Base_Token;
       Lexer : not null access WisiToken.Lexer.Instance'Class)
    is
@@ -353,23 +353,31 @@ package body WisiToken_Grammar_Runtime is
    begin
       if Token.ID < Wisitoken_Grammar_Actions.Descriptor.First_Terminal then
          --  Non-grammar token
-         if Data.Non_Grammar.Length = 0 then
-            Data.Non_Grammar.Set_First_Last (0, 0);
-         end if;
-
          if Data.Terminals.Length = 0 then
-            Data.Non_Grammar (0).Append (Token);
+            Data.Leading_Non_Grammar.Append (Token);
          else
-            Data.Non_Grammar.Set_First_Last (0, Data.Terminals.Last_Index);
-            Data.Non_Grammar (Data.Terminals.Last_Index).Append (Token);
+            declare
+               Containing_Aug : Augmented_Token_Access := 
Augmented_Token_Access
+                 (Tree.Augmented (Data.Last_Terminal_Node));
+            begin
+               if Containing_Aug = null then
+                  Containing_Aug := new Augmented_Token'
+                    (Data.Terminals.all (Tree.First_Shared_Terminal 
(Data.Last_Terminal_Node)) with Non_Grammar => <>);
+                  Tree.Set_Augmented (Data.Last_Terminal_Node, 
WisiToken.Base_Token_Class_Access (Containing_Aug));
+               end if;
+
+               Containing_Aug.Non_Grammar.Append (Token);
+            end;
          end if;
+      else
+         Data.Last_Terminal_Node := Token.Tree_Index;
       end if;
    end Lexer_To_Augmented;
 
    procedure Start_If
      (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
       Tree      : in     WisiToken.Syntax_Trees.Tree;
-      Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array)
+      Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is begin
       --  all phases
       Start_If_1 (User_Data_Type (User_Data), Tree, Tokens (3), Tokens (5));
@@ -386,7 +394,7 @@ package body WisiToken_Grammar_Runtime is
    procedure Add_Declaration
      (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
       Tree      : in     WisiToken.Syntax_Trees.Tree;
-      Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array)
+      Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       use all type WisiToken.Syntax_Trees.Node_Label;
       use all type Ada.Strings.Unbounded.Unbounded_String;
@@ -425,7 +433,7 @@ package body WisiToken_Grammar_Runtime is
                   elsif Kind = "generate" then
                      declare
                         use all type SAL.Base_Peek_Type;
-                        Children : constant 
Syntax_Trees.Valid_Node_Index_Array := Tree.Get_Terminals (Tokens (3));
+                        Children : constant Valid_Node_Index_Array := 
Tree.Get_Terminals (Tokens (3));
                         Tuple    : WisiToken.BNF.Generate_Tuple;
                      begin
                         Tuple.Gen_Alg  := WisiToken.BNF.To_Generate_Algorithm 
(Get_Text (Data, Tree, Children (1)));
@@ -498,13 +506,13 @@ package body WisiToken_Grammar_Runtime is
       when Syntax_Trees.Nonterm =>
          --  must be token_keyword_non_grammar
          declare
-            Children_2 : constant Syntax_Trees.Valid_Node_Index_Array := 
Tree.Children (Tokens (2));
+            Children_2 : constant 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 =>
                declare
-                  Children_4 : constant Syntax_Trees.Valid_Node_Index_Array := 
Tree.Children (Tokens (4));
+                  Children_4 : constant Valid_Node_Index_Array := 
Tree.Children (Tokens (4));
                begin
                   WisiToken.BNF.Add_Token
                     (Data.Tokens.Tokens,
@@ -639,7 +647,7 @@ package body WisiToken_Grammar_Runtime is
 
                elsif Kind = "conflict" then
                   declare
-                     Tree_Indices : constant 
Syntax_Trees.Valid_Node_Index_Array := Tree.Get_Terminals
+                     Tree_Indices : constant Valid_Node_Index_Array := 
Tree.Get_Terminals
                        (Tokens (3));
                      --   %conflict <action_a>/<action_b> in state <LHS_A>, 
<LHS_B> on token <on>
                      --              1        2 3         4  5      6     7  8 
     9  10     11
@@ -695,13 +703,15 @@ package body WisiToken_Grammar_Runtime is
                   if Tree.Get_Terminals (Tokens (3))'Length /= 4 then
                      raise Grammar_Error with
                        Error_Message
-                         (Data.Grammar_Lexer.File_Name, Data.Terminals.all 
(Tree.Min_Terminal_Index (Tokens (3))).Line,
+                         (Data.Grammar_Lexer.File_Name,
+                          Data.Terminals.all (Tree.First_Shared_Terminal 
(Tokens (3))).Line,
                           "too " & (if Tree.Get_Terminals (Tokens (3))'Length 
> 4 then "many" else "few") &
                             " default costs; should be 'insert, delete, push 
back, ignore check fail'.");
                   end if;
 
                   Data.Language_Params.Error_Recover := True;
-                  Data.McKenzie_Recover.Source_Line := Data.Terminals.all 
(Tree.Min_Terminal_Index (Tokens (1))).Line;
+                  Data.McKenzie_Recover.Source_Line := Data.Terminals.all
+                    (Tree.First_Shared_Terminal (Tokens (1))).Line;
 
                   Data.McKenzie_Recover.Default_Insert          := 
Natural'Value
                     (Get_Child_Text (Data, Tree, Tokens (3), 1));
@@ -796,7 +806,7 @@ package body WisiToken_Grammar_Runtime is
    procedure Add_Nonterminal
      (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
       Tree      : in     WisiToken.Syntax_Trees.Tree;
-      Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array)
+      Tokens    : in     WisiToken.Valid_Node_Index_Array)
    is
       use all type Ada.Containers.Count_Type;
       use WisiToken.Syntax_Trees;
@@ -841,7 +851,7 @@ package body WisiToken_Grammar_Runtime is
            ((+LHS_String, Right_Hand_Sides, Labels,
              Source_Line =>
                (case Tree.Label (LHS_Node) is
-                when Shared_Terminal    => Data.Terminals.all 
(Tree.Min_Terminal_Index (LHS_Node)).Line,
+                when Shared_Terminal    => Data.Terminals.all 
(Tree.First_Shared_Terminal (LHS_Node)).Line,
                 when Virtual_Identifier => Invalid_Line_Number, -- IMPROVEME: 
get line from Right_Hand_Sides
                 when others             => raise SAL.Programmer_Error)));
       end if;
@@ -850,7 +860,7 @@ package body WisiToken_Grammar_Runtime is
    procedure Check_EBNF
      (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
       Tree      : in     WisiToken.Syntax_Trees.Tree;
-      Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array;
+      Tokens    : in     WisiToken.Valid_Node_Index_Array;
       Token     : in     WisiToken.Positive_Index_Type)
    is
       Data : User_Data_Type renames User_Data_Type (User_Data);
@@ -861,7 +871,7 @@ package body WisiToken_Grammar_Runtime is
 
          if Data.Meta_Syntax /= EBNF_Syntax then
             declare
-               Tok  : Base_Token renames Data.Terminals.all 
(Tree.Min_Terminal_Index (Tokens (Token)));
+               Tok  : Base_Token renames Data.Terminals.all 
(Tree.First_Shared_Terminal (Tokens (Token)));
             begin
                raise Grammar_Error with Error_Message
                  (Data.Grammar_Lexer.File_Name, Tok.Line, Tok.Column,
@@ -879,7 +889,7 @@ package body WisiToken_Grammar_Runtime is
    is
       use WisiToken.Syntax_Trees;
 
-      Copied_EBNF_Nodes : 
WisiToken.Syntax_Trees.Valid_Node_Index_Arrays.Vector;
+      Copied_EBNF_Nodes : WisiToken.Valid_Node_Index_Arrays.Vector;
 
       Symbol_Regexp : constant GNAT.Regexp.Regexp := GNAT.Regexp.Compile
         ((if Data.Language_Params.Case_Insensitive
@@ -1201,7 +1211,7 @@ package body WisiToken_Grammar_Runtime is
                  ((+rhs_ID, 2),
                   (1 => RHS_Item_List,
                    2 => Tree.Add_Terminal
-                     (Tree.Min_Terminal_Index (Orig_RHS_Children (2)),
+                     (Tree.First_Shared_Terminal (Orig_RHS_Children (2)),
                       Data.Terminals.all)));
 
             when 3   =>
@@ -1209,10 +1219,10 @@ package body WisiToken_Grammar_Runtime is
                  ((+rhs_ID, 3),
                   (1 => RHS_Item_List,
                    2 => Tree.Add_Terminal
-                     (Tree.Min_Terminal_Index (Orig_RHS_Children (2)),
+                     (Tree.First_Shared_Terminal (Orig_RHS_Children (2)),
                       Data.Terminals.all),
                    3 => Tree.Add_Terminal
-                     (Tree.Min_Terminal_Index (Orig_RHS_Children (3)),
+                     (Tree.First_Shared_Terminal (Orig_RHS_Children (3)),
                       Data.Terminals.all)));
 
             when others =>
@@ -1227,7 +1237,7 @@ package body WisiToken_Grammar_Runtime is
               (Last => Orig_RHS_Element_A_Head,
                Root => Orig_RHS_Item_List_A_Root);
 
-            if Trace_Generate > Extra then
+            if Trace_Generate_EBNF > Extra then
                Ada.Text_IO.New_Line;
                Ada.Text_IO.Put_Line ("new a:");
                Tree.Print_Tree (Wisitoken_Grammar_Actions.Descriptor, 
New_RHS_Item_List_A);
@@ -1240,7 +1250,7 @@ package body WisiToken_Grammar_Runtime is
               (Last => Orig_RHS_Element_C_Head,
                Root => Orig_RHS_Item_List_C_Root);
 
-            if Trace_Generate > Extra then
+            if Trace_Generate_EBNF > Extra then
                Ada.Text_IO.New_Line;
                Ada.Text_IO.Put_Line ("new c:");
                Tree.Print_Tree (Wisitoken_Grammar_Actions.Descriptor, 
New_RHS_Item_List_C);
@@ -1293,7 +1303,7 @@ package body WisiToken_Grammar_Runtime is
             end if;
          end if;
 
-         if Trace_Generate > Extra then
+         if Trace_Generate_EBNF > Extra then
             Ada.Text_IO.New_Line;
             Ada.Text_IO.Put_Line ("new ac:");
             Tree.Print_Tree (Wisitoken_Grammar_Actions.Descriptor, New_RHS_AC);
@@ -1303,7 +1313,7 @@ package body WisiToken_Grammar_Runtime is
          declare
             procedure Record_Copied_Node
               (Tree : in out WisiToken.Syntax_Trees.Tree;
-               Node : in WisiToken.Syntax_Trees.Valid_Node_Index)
+               Node : in WisiToken.Valid_Node_Index)
             is begin
                if To_Token_Enum (Tree.ID (Node)) in
                  rhs_optional_item_ID |
@@ -1338,7 +1348,7 @@ package body WisiToken_Grammar_Runtime is
             Append_Element (Compilation_Unit_List_Tail, Comp_Unit);
          end if;
 
-         if Trace_Generate > Extra then
+         if Trace_Generate_EBNF > Extra then
             Ada.Text_IO.New_Line;
             Ada.Text_IO.Put_Line ("new comp_unit:");
             Tree.Print_Tree (Wisitoken_Grammar_Actions.Descriptor, Unit);
@@ -1540,9 +1550,28 @@ package body WisiToken_Grammar_Runtime is
          New_Nonterminal_List_1 (List_Nonterm, RHS_Element_1, RHS_Element_3, 
Byte_Region);
       end New_Nonterminal_List;
 
+      procedure Copy_Non_Grammar
+        (From : in Valid_Node_Index;
+         To   : in Valid_Node_Index)
+      is
+         From_Aug : constant Base_Token_Class_Access := Tree.Augmented (From);
+      begin
+         if From_Aug /= null then
+            declare
+               New_Aug : constant Augmented_Token_Access := new 
Augmented_Token'
+                 (ID          => Tree.ID (From),
+                  Tree_Index  => To,
+                  Non_Grammar => Augmented_Token_Access (From_Aug).Non_Grammar,
+                  others => <>);
+            begin
+               Tree.Set_Augmented (To, Base_Token_Class_Access (New_Aug));
+            end;
+         end if;
+      end Copy_Non_Grammar;
+
       procedure Process_Node (Node : in Valid_Node_Index)
       is begin
-         if Trace_Generate > Detail then
+         if Trace_Generate_EBNF > Detail then
             Ada.Text_IO.New_Line;
             Ada.Text_IO.Put_Line ("translate node" & Node_Index'Image (Node));
          end if;
@@ -1552,13 +1581,15 @@ package body WisiToken_Grammar_Runtime is
          when declaration_ID =>
             --  Must be "%meta_syntax EBNF"; change to BNF
             declare
-               Decl_Item : constant Valid_Node_Index := Tree.Find_Descendant
+               Decl_Item    : constant Valid_Node_Index       := 
Tree.Find_Descendant
                  (Tree.Child (Node, 3), +declaration_item_ID);
-               Children : Valid_Node_Index_Array := Tree.Children (Decl_Item);
+               Old_Children : constant Valid_Node_Index_Array := Tree.Children 
(Decl_Item);
+               New_Children : constant Valid_Node_Index_Array :=
+                 (1 => Tree.Add_Identifier
+                    (+IDENTIFIER_ID, New_Identifier ("BNF"), Tree.Byte_Region 
(Decl_Item)));
             begin
-               Children (1) := Tree.Add_Identifier
-                 (+IDENTIFIER_ID, New_Identifier ("BNF"), Tree.Byte_Region 
(Decl_Item));
-               Tree.Set_Children (Decl_Item, (+declaration_item_ID, 1), 
Children);
+               Copy_Non_Grammar (Old_Children (1), New_Children (1));
+               Tree.Set_Children (Decl_Item, (+declaration_item_ID, 1), 
New_Children);
             end;
 
          when rhs_alternative_list_ID =>
@@ -1613,14 +1644,15 @@ package body WisiToken_Grammar_Runtime is
             --  | | | rhs_alternative_list: Child (Node, 2)
             --  | | | RIGHT_PAREN
 
-            --  See if there's an existing nonterminal for this content.
             declare
-               Element_Content : constant String       := Get_Text (Data, 
Tree, Tree.Child (Node, 2));
-               Temp            : Node_Index            := First_List_Element
+               Element_Content  : constant String           := Get_Text (Data, 
Tree, Tree.Child (Node, 2));
+               Right_Paren_Node : constant Valid_Node_Index := Tree.Child 
(Node, 3);
+               Temp             : Node_Index                := 
First_List_Element
                  (Tree.Child (Tree.Root, 1), +compilation_unit_ID);
-               Name_Node       : Node_Index;
-               New_Ident       : Base_Identifier_Index := 
Invalid_Identifier_Index;
+               Name_Node        : Node_Index;
+               New_Ident        : Base_Identifier_Index     := 
Invalid_Identifier_Index;
             begin
+               --  See if there's an existing nonterminal for this content.
                loop
                   pragma Assert (Tree.ID (Temp) = +compilation_unit_ID);
 
@@ -1664,6 +1696,7 @@ package body WisiToken_Grammar_Runtime is
                end if;
 
                Tree.Set_Node_Identifier (Node, +IDENTIFIER_ID, New_Ident);
+               Copy_Non_Grammar (Right_Paren_Node, Node);
                Tree.Set_Children (Tree.Parent (Node), (+rhs_item_ID, 0), (1 => 
Node));
                Clear_EBNF_Node (Node);
             end;
@@ -1810,7 +1843,7 @@ package body WisiToken_Grammar_Runtime is
 
                   declare
                      List_Name_Node   : constant Valid_Node_Index := 
Tree.Find_Ancestor (RHS_2, +nonterminal_ID);
-                     List_Name_Tok    : constant Token_Index      := 
Tree.Min_Terminal_Index (List_Name_Node);
+                     List_Name_Tok    : constant Token_Index      := 
Tree.First_Shared_Terminal (List_Name_Node);
                      List_Name_Region : constant Buffer_Region    := 
Data.Terminals.all (List_Name_Tok).Byte_Region;
                      List_Name        : constant String           := 
Data.Grammar_Lexer.Buffer_Text (List_Name_Region);
 
@@ -1823,13 +1856,13 @@ package body WisiToken_Grammar_Runtime is
                      RHS_1_Action : constant Node_Index :=
                        (case RHS_2_Index is
                         when 2 | 3 => Tree.Add_Terminal
-                          (Tree.Min_Terminal_Index (RHS_2_Children (2)), 
Data.Terminals.all),
+                          (Tree.First_Shared_Terminal (RHS_2_Children (2)), 
Data.Terminals.all),
                         when others => Invalid_Node_Index);
 
                      RHS_1_Check : constant Node_Index :=
                        (case RHS_2_Index is
                         when 3 => Tree.Add_Terminal
-                          (Tree.Min_Terminal_Index (RHS_2_Children (3)), 
Data.Terminals.all),
+                          (Tree.First_Shared_Terminal (RHS_2_Children (3)), 
Data.Terminals.all),
                         when others => Invalid_Node_Index);
 
                      RHS_1              : constant Valid_Node_Index :=
@@ -1902,7 +1935,7 @@ package body WisiToken_Grammar_Runtime is
 
                   Clear_EBNF_Node (Node);
 
-                  if Trace_Generate > Extra then
+                  if Trace_Generate_EBNF > Extra then
                      Ada.Text_IO.New_Line;
                      Ada.Text_IO.Put_Line ("edited rhs_list:");
                      Tree.Print_Tree (Wisitoken_Grammar_Actions.Descriptor, 
Tree.Parent (RHS_2));
@@ -2000,7 +2033,7 @@ package body WisiToken_Grammar_Runtime is
                                  if Element_Content = RHS_1 and RHS_2 = 
Expected_RHS_2 then
                                     case Tree.Label (Name_Node) is
                                     when Shared_Terminal =>
-                                       List_Nonterm_Terminal_Name := 
Tree.Min_Terminal_Index (Name_Node);
+                                       List_Nonterm_Terminal_Name := 
Tree.First_Shared_Terminal (Name_Node);
                                     when Virtual_Identifier =>
                                        List_Nonterm_Virtual_Name := 
Tree.Identifier (Name_Node);
                                     when others =>
@@ -2042,7 +2075,7 @@ package body WisiToken_Grammar_Runtime is
                      then
                         List_Nonterm_Virtual_Name := Next_Nonterm_Name 
("_list");
                         New_Nonterminal_List
-                          (List_Nonterm_Virtual_Name, Tree.Min_Terminal_Index 
(Tree.Child (Node, 2)),
+                          (List_Nonterm_Virtual_Name, 
Tree.First_Shared_Terminal (Tree.Child (Node, 2)),
                            Data.Terminals.all, Tree.Byte_Region (Node));
                      end if;
                   else
@@ -2063,7 +2096,8 @@ package body WisiToken_Grammar_Runtime is
                   if List_Nonterm_Virtual_Name = Invalid_Identifier_Index then
                      List_Nonterm_Virtual_Name := Next_Nonterm_Name ("_list");
                      New_Nonterminal_List
-                       (List_Nonterm_Virtual_Name, Tree.Min_Terminal_Index 
(Tree.Child (Node, 1)), Data.Terminals.all,
+                       (List_Nonterm_Virtual_Name,
+                        Tree.First_Shared_Terminal (Tree.Child (Node, 1)), 
Data.Terminals.all,
                         Tree.Byte_Region (Node));
                   end if;
 
@@ -2089,7 +2123,7 @@ package body WisiToken_Grammar_Runtime is
 
                Clear_EBNF_Node (Node);
 
-               if Trace_Generate > Extra then
+               if Trace_Generate_EBNF > Extra then
                   Ada.Text_IO.New_Line;
                   Ada.Text_IO.Put_Line ("edited rhs_item:");
                   Tree.Print_Tree (Wisitoken_Grammar_Actions.Descriptor, 
Parent_RHS_Item);
@@ -2165,7 +2199,7 @@ package body WisiToken_Grammar_Runtime is
                               Name_Identifier_Node := Tree.Child (Tree.Child 
(Name_Element_Node, 1), 1);
                            else
                               --  Name has a label
-                              Name_Label           := Tree.Min_Terminal_Index 
(Tree.Child (Name_Element_Node, 1));
+                              Name_Label           := 
Tree.First_Shared_Terminal (Tree.Child (Name_Element_Node, 1));
                               Name_Identifier_Node := Tree.Child (Tree.Child 
(Name_Element_Node, 3), 1);
                            end if;
 
@@ -2173,7 +2207,7 @@ package body WisiToken_Grammar_Runtime is
                            when Virtual_Identifier =>
                               Name_Ident := Tree.Identifier 
(Name_Identifier_Node);
                            when Shared_Terminal =>
-                              Name_Terminal := Tree.Min_Terminal_Index 
(Name_Identifier_Node);
+                              Name_Terminal := Tree.First_Shared_Terminal 
(Name_Identifier_Node);
                            when others =>
                               Raise_Programmer_Error ("unhandled rhs_optional 
case ", Data, Tree, Name_Identifier_Node);
                            end case;
@@ -2308,7 +2342,7 @@ package body WisiToken_Grammar_Runtime is
                               end;
                            end if;
 
-                           if Trace_Generate > Extra then
+                           if Trace_Generate_EBNF > Extra then
                               Ada.Text_IO.New_Line;
                               Ada.Text_IO.Put_Line ("edited rhs:");
                               Tree.Print_Tree 
(Wisitoken_Grammar_Actions.Descriptor, RHS);
@@ -2484,7 +2518,7 @@ package body WisiToken_Grammar_Runtime is
 
       Data.Meta_Syntax := BNF_Syntax;
 
-      if Trace_Generate > Detail then
+      if Trace_Generate_EBNF > Detail then
          Ada.Text_IO.New_Line;
          Ada.Text_IO.Put_Line ("Identifiers:");
          for I in Data.Tokens.Virtual_Identifiers.First_Index .. 
Data.Tokens.Virtual_Identifiers.Last_Index loop
@@ -2500,29 +2534,39 @@ package body WisiToken_Grammar_Runtime is
    is
       use Ada.Text_IO;
       use WisiToken.Syntax_Trees;
-      File                     : File_Type;
-      Comments_Include_Newline : Boolean;
 
-      procedure Put_Comments (Node : in Valid_Node_Index)
+      File : File_Type;
+
+      procedure Put_Comments
+        (Node           : in Valid_Node_Index;
+         Force_New_Line : in Boolean := False;
+         Force_Comment  : in String  := "")
       is
-         Token : constant Base_Token_Index := Tree.Max_Terminal_Index (Node);
+         Last_Term : constant Node_Index              := Tree.Last_Terminal 
(Node);
+         Aug       : constant Base_Token_Class_Access :=
+           (if Last_Term = Invalid_Node_Index
+            then null
+            else Tree.Augmented (Last_Term));
+
+         Comments_Include_Newline : Boolean := False;
       begin
-         --  Not all tokens have trailing non_grammar, so Data.Non_Grammar may
-         --  not have entries for every token.
-         Comments_Include_Newline := False;
-         if Token /= Invalid_Token_Index and then
-           Token in Data.Non_Grammar.First_Index .. Data.Non_Grammar.Last_Index
-         then
-            declare
-               Tokens : Base_Token_Arrays.Vector renames Data.Non_Grammar 
(Token);
-            begin
-               for Token of Tokens loop
-                  if Token.ID = +NEW_LINE_ID then
-                     Comments_Include_Newline := True;
-                  end if;
-                  Put (File, Data.Grammar_Lexer.Buffer_Text 
(Token.Byte_Region));
-               end loop;
-            end;
+         if Aug = null then
+            if Force_Comment /= "" then
+               Put_Line (File, Force_Comment);
+
+            elsif Force_New_Line then
+               New_Line (File);
+            end if;
+         else
+            for Token of Augmented_Token_Access (Aug).Non_Grammar loop
+               if Token.ID = +NEW_LINE_ID then
+                  Comments_Include_Newline := True;
+               end if;
+               Put (File, Data.Grammar_Lexer.Buffer_Text (Token.Byte_Region));
+            end loop;
+            if Force_New_Line and not Comments_Include_Newline then
+               New_Line (File);
+            end if;
          end if;
       end Put_Comments;
 
@@ -2627,9 +2671,8 @@ package body WisiToken_Grammar_Runtime is
       end Put_RHS_Item_List;
 
       procedure Put_RHS
-        (Node    : in Valid_Node_Index;
-         First   : in Boolean;
-         Virtual : in Boolean)
+        (Node  : in Valid_Node_Index;
+         First : in Boolean)
       with Pre => Tree.ID (Node) = +rhs_ID
       is
          Children : constant Valid_Node_Index_Array := Tree.Children (Node);
@@ -2637,34 +2680,19 @@ package body WisiToken_Grammar_Runtime is
          Put (File, (if First then "  : " else "  | "));
          case Tree.RHS_Index (Node) is
          when 0 =>
-            if Virtual then
-               Put_Line (File, ";; empty");
-            else
-               Put_Comments (Tree.Parent (Node));
-            end if;
+            Put_Comments (Tree.Parent (Node), Force_Comment => ";; empty");
 
          when 1 .. 3 =>
             Put_RHS_Item_List (Children (1));
-            if Virtual then
-               New_Line (File);
-            else
-               Put_Comments (Children (1));
-            end if;
+            Put_Comments (Children (1), Force_New_Line => True);
 
             if Tree.RHS_Index (Node) > 1 then
                Put (File, "    %(" & Get_Text (Data, Tree, Children (2)) & 
")%"); -- action
-               if Virtual then
-                  New_Line (File);
-               else
-                  Put_Comments (Children (2));
-               end if;
+               Put_Comments (Children (2), Force_New_Line => True);
+
                if Tree.RHS_Index (Node) > 2 then
                   Put (File, "    %(" & Get_Text (Data, Tree, Children (3)) & 
")%"); -- check
-                  if Virtual then
-                     New_Line (File);
-                  else
-                     Put_Comments (Children (3));
-                  end if;
+                  Put_Comments (Children (3), Force_New_Line => True);
                end if;
             end if;
 
@@ -2693,11 +2721,11 @@ package body WisiToken_Grammar_Runtime is
       begin
          case Tree.RHS_Index (Node) is
          when 0 =>
-            Put_RHS (Children (1), First, Virtual or Children (1) > 
Data.EBNF_Nodes.Last_Index);
+            Put_RHS (Children (1), First);
             First := False;
          when 1 =>
             Put_RHS_List (Children (1), First, Virtual);
-            Put_RHS (Children (3), First => False, Virtual => Virtual or 
Children (3) > Data.EBNF_Nodes.Last_Index);
+            Put_RHS (Children (3), First => False);
          when 2 =>
             Put
               (File, "%if " & Get_Text (Data, Tree, Children (3)) & " = " & 
Get_Text (Data, Tree, Children (4)));
@@ -2764,11 +2792,7 @@ package body WisiToken_Grammar_Runtime is
 
                   Put (File, " " & Get_Text (Data, Tree, Children (3)));
                   Put_Declaration_Item_List (Children (4));
-                  if Tree.Is_Virtual (Children (4)) then
-                     New_Line (File);
-                  else
-                     Put_Comments (Children (4));
-                  end if;
+                  Put_Comments (Children (4), Force_New_Line => True);
 
                when 1 =>
                   Put (File, "%code ");
@@ -2814,14 +2838,7 @@ package body WisiToken_Grammar_Runtime is
                First    : Boolean                         := True;
             begin
                Put (File, Get_Text (Data, Tree, Children (1)));
-               if Virtual then
-                  New_Line (File);
-               else
-                  Put_Comments (Children (1));
-                  if not Comments_Include_Newline then
-                     New_Line (File);
-                  end if;
-               end if;
+               Put_Comments (Children (1), Force_New_Line => True);
 
                Put_RHS_List (Children (3), First, Virtual);
 
@@ -2847,13 +2864,9 @@ package body WisiToken_Grammar_Runtime is
       Put_Line (File, ";;; generated from " & Data.Grammar_Lexer.File_Name & " 
-*- buffer-read-only:t -*-");
       Put_Line (File, ";;;");
 
-      declare
-         Tokens : Base_Token_Arrays.Vector renames Data.Non_Grammar (0);
-      begin
-         for Token of Tokens loop
-            Put (File, Data.Grammar_Lexer.Buffer_Text (Token.Byte_Region));
-         end loop;
-      end;
+      for Token of Data.Leading_Non_Grammar loop
+         Put (File, Data.Grammar_Lexer.Buffer_Text (Token.Byte_Region));
+      end loop;
 
       Process_Node (Tree.Root);
 
diff --git a/packages/wisi/wisitoken_grammar_runtime.ads 
b/packages/wisi/wisitoken_grammar_runtime.ads
index df848a9..082e26e 100644
--- a/packages/wisi/wisitoken_grammar_runtime.ads
+++ b/packages/wisi/wisitoken_grammar_runtime.ads
@@ -2,7 +2,7 @@
 --
 --  Runtime utils for wisi_grammar.wy actions.
 --
---  Copyright (C) 2018 - 2019 Free Software Foundation, Inc.
+--  Copyright (C) 2018 - 2020 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
@@ -18,10 +18,10 @@
 pragma License (Modified_GPL);
 
 with Ada.Containers;
-with SAL.Gen_Unbounded_Definite_Vectors;
 with WisiToken.BNF;
 with WisiToken.Lexer;
 with WisiToken.Syntax_Trees;
+with Wisitoken_Grammar_Actions;
 package WisiToken_Grammar_Runtime is
 
    type Meta_Syntax is (Unknown, BNF_Syntax, EBNF_Syntax);
@@ -29,10 +29,6 @@ package WisiToken_Grammar_Runtime is
 
    type Action_Phase is (Meta, Other);
 
-   package Base_Token_Array_Arrays is new SAL.Gen_Unbounded_Definite_Vectors
-     (WisiToken.Base_Token_Index, WisiToken.Base_Token_Arrays.Vector,
-      Default_Element => WisiToken.Base_Token_Arrays.Empty_Vector);
-
    type User_Data_Type is new WisiToken.Syntax_Trees.User_Data_Type with
    record
       Grammar_Lexer : WisiToken.Lexer.Handle; -- used to read the .wy file now.
@@ -61,10 +57,10 @@ package WisiToken_Grammar_Runtime is
       Conflicts        : WisiToken.BNF.Conflict_Lists.List;
       McKenzie_Recover : WisiToken.BNF.McKenzie_Recover_Param_Type;
 
-      Non_Grammar : Base_Token_Array_Arrays.Vector;
-      --  Non_Grammar (0) contains leading blank lines and comments;
-      --  Non_Grammar (I) contains blank lines and comments following
-      --  Terminals (I). Only used in Print_Source.
+      Leading_Non_Grammar : WisiToken.Base_Token_Arrays.Vector;
+      --  leading blank lines and comments
+
+      Last_Terminal_Node : WisiToken.Node_Index := 
WisiToken.Invalid_Node_Index;
 
       Rule_Count   : Integer                   := 0;
       Action_Count : Integer                   := 0;
@@ -81,6 +77,15 @@ package WisiToken_Grammar_Runtime is
       --  An '%if' specified a different lexer, during Execute_Actions
    end record;
 
+   type Augmented_Token is new WisiToken.Base_Token with
+   record
+      Non_Grammar : WisiToken.Base_Token_Arrays.Vector;
+   end record;
+   type Augmented_Token_Access is access all Augmented_Token;
+
+   function Image (Item : in WisiToken.Base_Token_Class_Access) return String
+     is (WisiToken.Image (Augmented_Token_Access (Item).Non_Grammar, 
Wisitoken_Grammar_Actions.Descriptor));
+
    overriding
    procedure Set_Lexer_Terminals
      (User_Data : in out User_Data_Type;
@@ -97,37 +102,38 @@ package WisiToken_Grammar_Runtime is
    overriding
    procedure Lexer_To_Augmented
      (Data  : in out          User_Data_Type;
+      Tree  : in out          WisiToken.Syntax_Trees.Tree'Class;
       Token : in              WisiToken.Base_Token;
       Lexer : not null access WisiToken.Lexer.Instance'Class);
 
    procedure Start_If
      (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
       Tree      : in     WisiToken.Syntax_Trees.Tree;
-      Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
+      Tokens    : in     WisiToken.Valid_Node_Index_Array);
 
    procedure End_If (User_Data : in out 
WisiToken.Syntax_Trees.User_Data_Type'Class);
 
    procedure Add_Declaration
      (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
       Tree      : in     WisiToken.Syntax_Trees.Tree;
-      Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
+      Tokens    : in     WisiToken.Valid_Node_Index_Array);
 
    procedure Add_Nonterminal
      (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
       Tree      : in     WisiToken.Syntax_Trees.Tree;
-      Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array);
+      Tokens    : in     WisiToken.Valid_Node_Index_Array);
 
    procedure Check_EBNF
      (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
       Tree      : in     WisiToken.Syntax_Trees.Tree;
-      Tokens    : in     WisiToken.Syntax_Trees.Valid_Node_Index_Array;
+      Tokens    : in     WisiToken.Valid_Node_Index_Array;
       Token     : in     WisiToken.Positive_Index_Type);
 
    procedure Translate_EBNF_To_BNF
      (Tree : in out WisiToken.Syntax_Trees.Tree;
       Data : in out User_Data_Type);
    --  Process EBNF nonterms, adding new nonterms as needed, resulting in
-   --  a BNF tree. Descriptor is used for error messages.
+   --  a BNF tree.
    --
    --  Generator.LR.*_Generate requires a BNF grammar.
 



reply via email to

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