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

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

[elpa] master 99fea42: * externals-list: Convert ada-mode to :external


From: Stefan Monnier
Subject: [elpa] master 99fea42: * externals-list: Convert ada-mode to :external
Date: Mon, 30 Nov 2020 17:21:00 -0500 (EST)

branch: master
commit 99fea426e764d90098976b02676c55ec43cd24ad
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>

    * externals-list: Convert ada-mode to :external
---
 externals-list                                     |     1 +
 packages/ada-mode/NEWS                             |   606 -
 packages/ada-mode/README                           |    36 -
 packages/ada-mode/ada-build.el                     |   344 -
 packages/ada-mode/ada-compiler-gnat.el             |   804 -
 packages/ada-mode/ada-core.el                      |   778 -
 packages/ada-mode/ada-gnat-xref.el                 |   317 -
 packages/ada-mode/ada-imenu.el                     |    77 -
 packages/ada-mode/ada-indent-user-options.el       |   197 -
 packages/ada-mode/ada-mode.el                      |  1690 --
 packages/ada-mode/ada-mode.info                    |  2604 ---
 packages/ada-mode/ada-mode.texi                    |  2202 ---
 packages/ada-mode/ada-prj.el                       |     9 -
 packages/ada-mode/ada-process.el                   |   479 -
 packages/ada-mode/ada-skel.el                      |   364 -
 packages/ada-mode/ada-stmt.el                      |     9 -
 packages/ada-mode/ada-xref.el                      |    10 -
 packages/ada-mode/ada.wy                           |  2652 ---
 packages/ada-mode/ada_license.text                 |   127 -
 packages/ada-mode/ada_lr1_parse_table.txt.gz       |   Bin 5209667 -> 0 bytes
 packages/ada-mode/ada_mode_wisi_lalr_parse.ads     |    35 -
 packages/ada-mode/ada_mode_wisi_lr1_parse.ads      |    36 -
 packages/ada-mode/ada_mode_wisi_parse.gpr.gp       |   146 -
 packages/ada-mode/ada_process_actions.adb          |  5237 ------
 packages/ada-mode/ada_process_actions.ads          |  2108 ---
 packages/ada-mode/ada_process_lalr_main.adb        | 16487 ------------------
 packages/ada-mode/ada_process_lalr_main.ads        |    32 -
 packages/ada-mode/ada_process_lr1_main.adb         |   483 -
 packages/ada-mode/ada_process_lr1_main.ads         |    33 -
 packages/ada-mode/ada_re2c.c                       | 16811 -------------------
 packages/ada-mode/ada_re2c_c.ads                   |    59 -
 packages/ada-mode/build.sh                         |    39 -
 packages/ada-mode/config.pragmas                   |     6 -
 packages/ada-mode/dir                              |    22 -
 packages/ada-mode/gnat-core.el                     |   449 -
 packages/ada-mode/gpr-indent-user-options.el       |    48 -
 packages/ada-mode/gpr-mode.el                      |   427 -
 packages/ada-mode/gpr-mode.info                    |   737 -
 packages/ada-mode/gpr-mode.texi                    |   256 -
 packages/ada-mode/gpr-process.el                   |   145 -
 packages/ada-mode/gpr-query.el                     |  1026 --
 packages/ada-mode/gpr-skel.el                      |   136 -
 packages/ada-mode/gpr.wy                           |   377 -
 packages/ada-mode/gpr_mode_wisi_parse.ads          |    34 -
 packages/ada-mode/gpr_process_actions.adb          |   431 -
 packages/ada-mode/gpr_process_actions.ads          |   316 -
 packages/ada-mode/gpr_process_main.adb             |  2405 ---
 packages/ada-mode/gpr_process_main.ads             |    32 -
 packages/ada-mode/gpr_query.adb                    |  1316 --
 packages/ada-mode/gpr_re2c.c                       |  6362 -------
 packages/ada-mode/gpr_re2c_c.ads                   |    59 -
 packages/ada-mode/install.sh                       |    15 -
 packages/ada-mode/run_ada_lalr_parse.ads           |    32 -
 packages/ada-mode/run_ada_libadalang_parse.ads     |    25 -
 packages/ada-mode/run_ada_lr1_parse.ads            |    33 -
 packages/ada-mode/run_gpr_parse.ads                |    31 -
 .../ada-mode/wisi-ada-format_parameter_list.adb    |   319 -
 packages/ada-mode/wisi-ada.adb                     |   952 --
 packages/ada-mode/wisi-ada.ads                     |   156 -
 packages/ada-mode/wisi-gpr.adb                     |    63 -
 packages/ada-mode/wisi-gpr.ads                     |    60 -
 packages/ada-mode/wisi.gpr.gp                      |    64 -
 .../wisitoken-parse-lr-mckenzie_recover-ada.adb    |  1368 --
 .../wisitoken-parse-lr-mckenzie_recover-ada.ads    |    48 -
 64 files changed, 1 insertion(+), 72561 deletions(-)

diff --git a/externals-list b/externals-list
index 808e5bc..42df02f 100644
--- a/externals-list
+++ b/externals-list
@@ -31,6 +31,7 @@
 ;; diverged).
 
 (("ack"                        :external "https://github.com/leoliu/ack-el";)
+ ("ada-mode" :external nil)
  ("ada-ref-man"                :external nil)
  ("adaptive-wrap"      :external nil)
  ("advice-patch"       :external nil)
diff --git a/packages/ada-mode/NEWS b/packages/ada-mode/NEWS
deleted file mode 100644
index dc56248..0000000
--- a/packages/ada-mode/NEWS
+++ /dev/null
@@ -1,606 +0,0 @@
-GNU Emacs Ada mode NEWS -- history of user-visible changes.
-
-Copyright (C) 2014 - 2020 Free Software Foundation, Inc.
-
-Please send ada-mode bug reports to bug-gnu-emacs@gnu.org, with
-'ada-mode' in the subject. If possible, use M-x report-emacs-bug.
-
-
-* Ada Mode 7.1.4
-07 Aug 2020
-
-** Set auto-mode-alist for ada-mode. 
-
-* Ada Mode 7.1.3
-04 Jun 2020
-
-** Indentation of 'is' in expression functions is restored to 7.0.1
-   behavior.
-
-** wisi-get-identifier (used by wisi-goto-spec/body and others) sets
-   completion delimiters appropriately. When using gpr-query, for a
-   procedure declared as:
-
-   package Package_Name is
-      procedure Procedure_Name (args);
-
-   the completion string looks like:
-
-     Procedure_Name(args)<Package_Name<line>>
-
-   so for example you can type "iterate<wisitok" to complete on
-   WisiToken iterators, or "add(Data" to complete on all subprograms
-   whose name starts with "add" and whose first argument starts with
-   "Data".
-
-** New constant ada-declaration-nonterms holds the Ada nonterminal
-   identifiers, for use with wisi-cache-nonterm.
-
-** ada-which-function is now a command (can be invoked by M-x); useful
-   when you don't want which-function-mode turned on, but want to know
-   what function point is in.
-
-* Ada Mode 7.1.2
-20 May 2020
-
-** Revert change in indent of 'is' in expression_function_declaration
-   to 7.0.1 behavior.
-
-* Ada Mode 7.1.1
-14 May 2020
-
-** packaging bug fix
-
-* 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
-
-** fix packaging bugs
-
-** build.sh is now split into build.sh and install.sh; the latter
-   takes --prefix and may need to be run as root.
-
-** improve xref integration
-
-* Ada Mode 7.0.0
-19 Dec 2019
-
-** parser Ada language protocol version 3
-
-** Added support for the Ada 2020 features
-   iterated_component_association (ai12-0061), target_name
-   (ai12-0125), delta_aggregate (ai12-0127); these are supported in
-   GNAT Community 2019.
-
-** Major restructuring of code, moving many functions from ada-mode to
-   wisi for use in other language modes, and using cl-defgeneric
-   dispatching instead of function variables. Normal users should see
-   no changes, except that some ada-mode functions will warn about
-   being obsolete. If you've written custom code that depends on
-   ada-mode functions, you may have to change it.
-
-** gpr-mode fully supports auto-casing; new user variables
-   gpr-auto-case, gpr-case-keyword, gpr-case-strict,
-   gpr-case-identifier, respects 'casing' project file settings.
-
-** New commands `wisi-goto-containing-statement-start',
-   `wisi-indent-containing-statement' are in the menu.
-   `wisi-indent-containing-statement' is bound to 'C-c S-i'.
-
-** `ada-goto-declarative-region-start' now goes to the containing
-   region, when the start point is before the 'is' in the current
-   declaration (previously, it went to the declarative region of the
-   current declaration). This is required for adding a use_clause for
-   an identifier/operator in a format_part or aspect_clause.
-
-** Delete not-upper-case setting for ada-auto-case; instead, set
-   ada-case-strict to nil.
-
-** wisi-prj-identifier-at-point (previously ada-identifier-at-point)
-   now handles non-ASCII characters.
-
-* Ada Mode 6.2.1
-17 Aug 2019
-
-** fix packaging bugs
-
-* Ada Mode 6.2.0
-13 Aug 2019
-
-** parser Ada language protocol version 2
-
-** The elisp parser is deleted; only the Ada process parser is
-   supported.
-
-** New Ada menu entry "Refactor" supports converting between
-   Object.Method (...) and Method (Object, ...), and between Object
-   (Index) and Element (Object, Index). The same commands are on a
-   menu shown by `ada-refactor-menu-popup', which may be bound to a
-   keystroke or mouseclick.
-
-** Ada mode now provides a project.el backend, in ada-project.el.
-   `project-find-file' does file name completion on files in the
-   current project, using the `uniquify-files' completion style. To
-   use this backend with an existing Ada mode project file:
-
-   (setq ada-project-current (make-ada-project :ada-prj-file 
<exising-file.prj>))
-   (add-to-list 'project-find-functions #'ada-project-current)
-
-   You may want to define other functions for project-find-functions.
-
-* Ada Mode 6.1.1
-11 Jul 2019
-
-** parser Ada language protocol version 1
-** parser gpr language protocol version 1
-
-** ada-auto-case can now take the value `not-upper-case'; typed words
-   that are all upper case are not adjusted.
-
-** which-function-mode in large Ada buffers now uses partial parse;
-   the new user variable `ada-which-func-parse-size' sets the minimum
-   region to parse, centered on point. It should be set to the largest
-   subprogram size that parses in an acceptable time.
-
-** gpr-mode supports new gpr syntax "at n" in an attribute specification.
-
-** The ada-mode xref backend now includes object names in the local
-   file name completion table.
-
-* Ada mode 6.1.0
-21 Mar 2019
-
-** Add support for partial parsing; useful in very large files. Files
-   larger than wisi-partial-parse-threshold (default 100_001) will be
-   parsed partially. In general, partial parsing may yield incorrect
-   results for indentation; the Ada menu entry
-   "Edit | Indent lines in file" will parse the entire file and indent
-   correctly.
-
-** Better error correction in the Ada process parser; insert minimimal
-  tokens to complete a statement/declaration before or after the error
-  point.
-
-** New indent option: 'ada-indent-after-trailing-comment' If t (the
- default), align comment lines imediately following a comment on the
- same line as code with the preceding comment. Otherwise, ignore the
- preceding comment.
-
-** Delete support for the GPS backend; no need, given partial parsing
-   and error correction.
-
-** Miscellaneous bug fixes.
-
-* Ada mode 6.0.1
-8 Dec 2018
-
-** Compress ada_lr1_parse_table.txt
-
-** Assign copyright in Ada files to FSF
-
-* Ada mode 6.0.0
-17 Nov 2018
-
-** Use wisi 2.0; indentation computed directly in parser actions. This
-   has a few user visible changes in indention, making it more
-   consistent. It also makes it faster, so larger files are handled
-   more smoothly.
-
-** Support wisitoken generated Ada code parser, with error correction.
-   The parser runs in a background process.
-
-** ada-fix-compiler-error can now fix errors reported by the
-   background process parser.
-
-** ada-format-paramlist repairs syntax errors in buffer text before scanning.
-
-** Display marks in fringe at location of errors detected by
-   background parser.
-
-** Colorization of type and package names is somewhat improved, but
-   requires full name resolution to get fully correct.
-
-** new user option: ada-end-name-optional, default nil. If non-nil,
-   names at ends of blocks/subprograms are optional (as in standard
-   Ada). Setting this nil matches standard AdaCore style, and
-   significantly improves error correction in the parser (it can use
-   name matching to locate errors).
-
-** new user setting: ada-process-parse-exec,
-   ada-process-parse-exec-opts, gpr-process-parse-exec,
-   gpr-process-parse-exec-opts: the executable and options to run the
-   external parser for Ada and gpr modes. Default to the executables
-   built by the build.sh script included in the ELPA package, empty
-   options.
-
-   A useful setting for -exec-opts is '("--recover-log" "<log file
-   name>"); this will log every error recovery to a file, so you can
-   examine how well it is working.
-
-** new user setting: ada-parser; must be one of 'elisp, 'process.
-   Defaults to 'process if the executable named by
-   ada-process-parse-exec is found, 'elisp otherwise.
-
-** new user setting: ada-fallback; must be one of nil, 'simple or
-   'gps. Identifies fallback indentation algorithm used when parser
-   fails; 'simple is "indent to previous line", 'gps is "use the gps
-   indent engine". nil means set to 'gps if the executable named by
-   ada-gps-indent-exec is found.
-
-** new user command: ada-refresh-prj-file. Useful when the project
-   file has been edited.
-
-** Implement an xref backend for Ada, using gpr-query. See (info
-   "(emacs) Xref").
-
-** The various "find other file" commands assume the use of the Gnu
-   ELPA package other-frame-window; they no longer provide "other
-   window" options.
-
-** ada-xref-refresh (bound to "menu | Ada | Misc | refresh cross
-   reference cache", C-c C-q) now takes a prefix arg to delete the
-   xref files first as well. Useful when compiler options or version
-   have changed.
-
-* Ada mode 5.3.1
-3 Oct 2017
-
-** Ada mode 5.2.2 should have been numbered 5.3.0, since it introduced
-   the GPS indentation backend major feature.
-
-** GNAT GPL 2017 is supported for gpr_query and ada_mode_gps_indent;
-   see ada_mode.info for installation instructions.
-
-** New Ada-mode submenu "Select Project" lists all loaded Ada-mode
-   project, making it easier to switch between them.
-
-** New Ada-mode menu entry "Delete project..." allows deleting a
-   loaded project, to reduce clutter in the new "Select Project"
-   menu.
-
-** `ada-add-log-for-current-function' (for a revision control commit)
-   will return a type name. However, `ada-which-function' will not.
-
-** New option `ada-fill-comment-adaptive', if non-nil, causes all
-   comments to be filled to the same width, rather than to the same
-   column. This looks better in deeply nested code.
-
-** When 'ada-auto-case' is nil, 'ada-case-adjust-at-point' used to do
-   nothing; it now capitalizes the word at point. This helps with some
-   alternate casing styles.
-
-** Improve handling of GPR_PROJECT_PATH in 'compilation-environment'
-   when selecting/deselection ada-mode project files.
-
-** ada-gnat-xref-all (used by ada-show-references) now preserves point
-   when appending more references.
-
-** Minor bug fixes.
-
-* Ada mode 5.2.2
-9 Jul 2017
-
-** GNAT GPL 2017 is _not_ supported for gpr_query; GNAT GPL 2016 is
-   supported.
-
-** New option ada-indent-hanging-rel-exp; if non-nil, indent hanging
-   lines relative to start of expression. Otherwise, indent relative
-   to previous line. Default nil.
-
-** xref-ada allows entering an identifier to search for with
-   completion. The search is only in the current file.
-
-** ada-show-references, ada-show-local-references now take an 'append'
-   argument, set by interactive prefix; if non-nil, preserve previous
-   output in references buffer.
-
-** Support GPS indentation engine, either as primary or backup. See
-   user guide for how to set it up; it requires compiling Ada code.
-
-** ada_mode_gps_indent patch level 001 fixes ada-gps bugs 2, 6. See
-   test/ada-gps for bug descriptions/tests.
-
-** ada-identifier-at-point properly handles adjacent operator and
-   identifier (ie +Tree).
-
-** When a 'use type' clause is inserted by the compile error
-   correction code, 'use all type' is inserted if the lanuage version
-   is 2012 (the default).
-
-** The context menu is simplified.
-
-** The 'obj_dir' project variable is supported.
-
-** ada-next-statement-keyword, ada-prev-statement-keyword are deleted;
-   use forward-sexp instead.
-
-** The license inserted by ada-skel-modified-gpl uses GPL version 3
-   language.
-
-** Several indentation bugs are fixed.
-
-** New option ada-gnat-debug-run controls echoing GNAT commands in
-   GNAT buffers.
-
-* Ada mode 5.2.1
-31 Oct 2016
-
-** A line starting with '(' is now always indented with
-   ada-indent-broken. Previously, in some cases it was indented by
-   ada-indent - 1. Since the defaults set ada-indent = 3,
-   ada-indent-broken = 2, this is transparent unless you use other
-   values.
-
-** GPR_PROJECT_PATH is set in the compilation process environment when
-   the Ada project is selected, and cleared when the project is
-   deselected. This allows selecting other Emacs projects, then
-   returning to an Ada project.
-
-** New function ada-show-local-references (bound to C-c C-l) searches
-   for references within the current file only.
-
-** New option ada-xref-full-path (default nil) if t, shows full paths
-   in cross references.
-
-** The indentation functions are significantly rewritten to make them
-   better organized and easier to understand and maintain. This
-   resulted in some minor indentation changes, mostly for consistency;
-   in particular, case expressions are indented by ada-indent-broken,
-   to match if espressions.
-
-* Ada mode 5.2.0
-26 Jul 2016
-
-** GNAT 2016 drops support for 'gnat find'; users must use gpr_query.
-
-** ada-xref-tool now defaults to gpr_query if gpr_query executable is
-   found in PATH.
-
-** source code for compiling gpr_query is installed with the Gnu ELPA
-   package; instructions for compiling and installing it are in
-   ada-mode.info.
-
-** better handling of cross-compile targets.
-
-** Allow trailing label in a sequence_of_statements:
-   loop
-      ...
-      goto Next;
-   <<Next>>
-   end loop;
-
-** Handle package aspects.
-
-** tested with GNAT GPL 2016.
-
-** several bug fixes
-
-* Ada mode 5.1.9
-20 Jan 2016
-
-** New option ada-indent-comment-gnat matches the GNAT style check for
-   comments in all cases (previously, there were some cases where the
-   comment indent algorithm did not match the GNAT check).
-
-** New menu command "Show source file search path"; displays
-   compilation-search-path in a buffer.
-
-** Adding missing grammar statements to allow removing parens around
-   conditional and quantified expressions.
-
-** Key binding for ada-case-create-partial-exception in ada-mode
-   changed to C-c C-M-y; this is easier to type, and matches the key
-   binding in gpr-mode.
-
-** ada-case-keyword changed to accept the symbols 'lower-case,
-   'upper-case instead of the functions downcase-word, upcase-word.
-
-** ada-case-identifier changed to accept the symbols 'mixed-case,
-   'lower-case, 'upper-case instead of the functions 'ada-mixed-case,
-   'ada-lower-case, 'ada-upper-case.
-
-** ada-fix-add-context-clause now sorts "limited with" and "private
-   with" clauses after other clauses.
-
-** ada-align now aligns '=>' in case expressions.
-
-** ada-align-paramlist now handles access function parameters:
-
-   procedure Choose
-     (X, Y, Z    :        Integer;
-      Preference : access function (A, B : Integer) return Boolean);
-
-** ada-next-statement-keyword now moves to matching close paren if on
-   open paren, ada-prev-statement-keyword moves from close paren to
-   open paren.
-
-** New hook ada-prj-parse-hook, run from ada-parse-prj-file.
-
-** GPR mode now does case adjust similar to Ada mode.
-
-** gpr parser handles nested case statements without blowing up.
-
-** gpr parser handles package renames
-
-** fix other bugs
-
-* Ada mode 5.1.8
-10 Apr 2015
-
-** requires OpenToken 6.0
-
-** ada-align handle identifiers that start with Ada keywords
-
-** functions for ada-case-identifier now take three args: start, end,
-   force-case
-
-** parsing is not required by find-other-file if the current buffer is
-   larger than wisi-size-threshold
-
-** fix misc bugs
-
-* Ada mode 5.1.7
-18 Nov 2014
-
-** add ada-find-file that prompts for a file from the current project,
-   with completion.
-
-** fix bug that prevented
-    Y : Boolean := Boolean'(if True then False);
-
-** add ada-create-select-default-prj, to simplify working with small
-   projects
-
-** Handle deleting whitespace between words, inserting whitespace in
-   the middle of a word properly.
-
-** Change ada-case-adjust to capitalize words in comments and strings
-   by default; C-u adjusts case as if code.
-
-** allow 'raise' in expressions for GNAT GPL 2014 aspects
-
-** move all except keyword face highighting to grammar; much more
-   accurate, easier to maintain, simpler, faster.
-
-** delete gnatinspect support; gpr_query is better
-
-** misc bug fixes
-
-* Ada mode 5.1.6
-28 Sep 2014
-
-** improve syntax highlighting of names after 'of', 'new', 'renames'
-
-** fix ada-format-paramlist to handle 'aliased' keyword (new in Ada
-   2012), and 'not null' without 'access'.
-
-** fix ada-find-other-file in separate bodies; now navigates to the
-   spec.
-
-** restore ada-indent-newline-indent for [return]
-
-* Ada mode 5.1.5
-12 Jul 2014
-
-** add C-c <, C-c >; goto-declaration-start, -end
-
-** improve parsing speed significantly
-
-* Ada mode 5.1.4
-26 May 2014
-
-** support expression functions
-
-** beginning-of-defun-function, end-of-defun-function are now set. A
-   "defun" is a generic, package, protected, subprogram, or task spec
-   or body.
-
-** C-c C-s is now bound to ada-goto-previous-pos, which goes to the
-   first position in ada-goto-pos-ring. Most navigation functions set
-   ada-goto-pos-ring. This allows easy navigation back to the start of
-   a cross-reference chain.
-
-** xref tool error handlers no longer show the xref tool buffer; the
-   new Ada menu item 'show xref tool buffer' can be used instead.
-
-** The parser supports more deeply nested case statements.
-
-* Ada mode 5.1.3
-19 Apr 2014
-
-** more GNAT error message auto-fixes
-
-** support aspects on subprogram declarations; format same as SPARK examples.
-
-** fix bug in ada-syntax-propertize that caused query-replace to screw up
-
-** inhibit reparse due to case adjust; case adjust entire buffer is
-   now _much_ faster.
-
-** Non-ASCII characters supported in Ada mode buffers, including GNAT
-   bracket notation.
-
-* Ada mode 5.1.2
-16 Mar 2014
-
-** fix another packaging bug; forgot to add files to ELPA git!
-
-* Ada mode 5.1.1
-14 Mar 2014
-
-** require wisi-1.0.2, to fix packaging bug
-
-** gnat-find now called with -a to include read-only .ali files in the results.
-
-* Ada mode 5.1.0
-13 Mar 2014
-
-** Emacs 24.2 supported, via cl-lib in Gnu ELPA
-
-** Better handling of aspects.
-
-** 'record' is aligned with 'type' in derived types
-
-** Several minor indentation bugs have been fixed.
-
-** Added "2.2 Upgrading from previous versions" to the user guide.
-
-** ada-align now properly handles subprograms with the opening paren
-   on the same line as the preceding code and code on the same line as
-   the closing paren:
-
-    function Foo (Param_1 : Integer;
-                  Param_2 : Integer) return Integer;
-
-** When no project file is selected, the default variables are
-   consistently used instead. Previously, the default variables were
-   only used when parsing a project file.
-
-** info files are properly visible in main info menu
-
-** 'C-c ;' used to run `comment-dim', which is bound to 'M-;' in the
-   global keymap. 'C-c ;' now gives an error with a message saying
-   'use M-; instead'.
-
-* Ada mode 5.0.1
-Feb 2 2014
-
-First public release, via ELPA
-
-* Ada mode 5.0.0
-Dec 24 2013
-
-** first release in ELPA
-
-** Previous version was 4.00, in Emacs core. 5.0.1 is a complete
-   rewrite, using a generalized LALR parser that caches syntactic
-   information in text properties.
diff --git a/packages/ada-mode/README b/packages/ada-mode/README
deleted file mode 100644
index 9035cce..0000000
--- a/packages/ada-mode/README
+++ /dev/null
@@ -1,36 +0,0 @@
-Emacs Ada mode version 7.1.3
-
-Ada mode provides auto-casing, fontification, navigation, and
-indentation for Ada source code files.
-
-Cross-reference information output by the compiler is used to provide
-powerful code navigation (jump to definition, find all uses, show
-overriding, etc). By default, only the AdaCore GNAT compiler is
-supported; other compilers can be supported. Ada mode uses gpr_query
-to query compiler-generated cross reference information. 
-
-Ada mode uses a parser to provide fontification, navigation, and
-indentation. The parser is implemented in Ada, is fast enough even for very 
-large files (via partial parsing), and recovers from almost all syntax
-errors.
-
-gpr_query and the parser are provided as Ada source code that must be
-compiled and installed:
-
-cd ~/.emacs.d/elpa/ada-mode-i.j.k
-./build.sh
-./install.sh
-
-install.sh can take an option "--prefix=<dir>" to set the installation
-directory.
-
-See ada-mode.info section Installation for more information on
-installing; you may need additional packages.
-
-Ada mode will be automatically loaded when you open a file
-with a matching extension (default *.ads, *.adb).
-
-Ada mode uses project files to define large (multi-directory)
-projects, and to define casing exceptions.
-
-See ada-mode.info for help on using and customizing Ada mode.
diff --git a/packages/ada-mode/ada-build.el b/packages/ada-mode/ada-build.el
deleted file mode 100644
index 7d12dbf..0000000
--- a/packages/ada-mode/ada-build.el
+++ /dev/null
@@ -1,344 +0,0 @@
-;; ada-build.el --- Extensions to ada-mode for compiling and running  -*- 
lexical-binding:t -*-
-;; Ada projects without 'make' or similar tool
-;;
-;; Copyright (C) 1994, 1995, 1997 - 2017, 2019  Free Software Foundation, Inc.
-;;
-;; Author: Stephen Leake <stephen_leake@member.fsf.org>
-;; Maintainer: Stephen Leake <stephen_leake@member.fsf.org>
-;;
-;; This file is part of GNU Emacs.
-;;
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-;;
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Design:
-;;
-;; Separate from ada-mode.el because sophisticated users don't need
-;; this (they use 'make' or similar tool), so it would just get in the
-;; way, particularly for fixing bugs in the core capabilities of
-;; ada-mode.
-
-;;; History:
-;;
-;; see ada-mode.el; the current code is a complete rewrite of the
-;; compiling and running capabilities in Ada mode 4.01, done in 2013 by
-;; Stephen Leake <stephen_leake@stephe-leake.org>.
-
-(require 'ada-core)
-(require 'gnat-core)
-(require 'cl-lib)
-
-;;;; User customization
-
-(defgroup ada-build nil
-  "Major mode for compiling and running Ada projects in Emacs."
-  :group 'ada)
-
-(defcustom ada-build-prompt-prj 'default
-  "Policy for finding a project file when none is currently selected.
-See `ada-build-require-project-file'."
-  :type '(choice (const default)
-                (const search-prompt)
-                (const prompt)
-                (const error))
-  :safe  #'symbolp)
-
-(defcustom ada-build-confirm-command nil
-  "If non-nil, prompt for confirmation/edit of each command before it is run."
-  :type  'boolean
-  :safe  #'booleanp)
-
-(defcustom ada-build-check-cmd
-  "${cross_prefix}gprbuild -P${gpr_file} -u -c -gnatc ${gprbuild_opt} 
${full_current}"
-  "Default command to syntax check a single file.
-Overridden by project variable `check_cmd'."
-  :type 'string)
-
-(defcustom ada-build-make-cmd
-  "${cross_prefix}gprbuild -P${gpr_file} ${main} ${gprbuild_opt} "
-  "Default command and link to compile the application.
-Overridden by project variable `make_cmd'."
-  :type 'string)
-
-(defcustom ada-build-run-cmd "${main}"
-  "Default command to run the application, in a spawned shell.
-Overridden by project variable `run_cmd'."
-  :type 'string)
-
-;;;; code
-
-(defun ada-build-replace-vars (project cmd-string)
-  "Recursively expand variable references in CMD-STRING.
-${var} is a project variable or environment variable, $var an
-environment variable.
-
-A prefix may be specified with the format `-<prefix>${var}'; then
-the value is expanded with the prefix prepended. If the value is
-a list, the prefix is prepended to each list element. For
-example, if src_dir contains `dir_1 dir_2', `-I${src_dir}'
-expands to `-Idir_1 -Idir_2'.
-
-As a special case, ${full_current} is replaced by the current
-buffer file name including the directory and extension."
-
-  (while (string-match "\\(-[^-$ ]+\\)?\\${\\([^}]+\\)}" cmd-string)
-    (let ((prefix (match-string 1 cmd-string))
-         (name (match-string 2 cmd-string))
-         value)
-
-      (cond
-       ((string= name "full_current")
-       (setq value (buffer-file-name)))
-
-       ;; Handle names that are likely to occur in commands.
-       ((string= name "src_dir")
-       (setq value (ada-prj-source-path project)))
-
-       ((or (string= name "gpr_project_path")
-          (string= name "ada_project_path"))
-       (setq value (gnat-compiler-project-path (ada-prj-compiler project))))
-
-       ((string= name "gpr_file")
-       (when (gnat-compiler-gpr-file (ada-prj-compiler project))
-         (setq value (file-name-nondirectory (gnat-compiler-gpr-file 
(ada-prj-compiler project))))))
-
-       )
-
-      (when (null value)
-       (setq value (plist-get (ada-prj-plist project) (intern name))))
-
-      (when (null value)
-       (setq value (getenv name)))
-
-      (cond
-       ((null value)
-       (setq cmd-string (replace-match "" t t cmd-string)))
-
-       ((stringp value)
-       (setq cmd-string (replace-match (concat prefix value) t t cmd-string)))
-
-       ((listp value)
-       (setq cmd-string (replace-match
-                         (mapconcat (lambda (x) (concat prefix x)) value " ")
-                           t t cmd-string)))
-       )))
-
-  (substitute-in-file-name cmd-string))
-
-(defun ada-build-default-prj (project)
-  "Add to PROJECT the default project variables used by ada-build."
-  (setf (ada-prj-plist project)
-       (append
-        (ada-prj-plist project)
-        (list
-         'check_cmd       ada-build-check-cmd
-         'main            (when (buffer-file-name)
-                            (file-name-nondirectory
-                             (file-name-sans-extension (buffer-file-name))))
-         'make_cmd        ada-build-make-cmd
-         'run_cmd         ada-build-run-cmd
-         ))))
-
-(defun ada-build-find-select-prj-file (prj)
-  "Search for a project file in the current directory, parse and select it.
-The file must have the same basename as the project variable
-`main' in PRJ or the current buffer if `main' is nil, and extension from
-`wisi-prj-file-extensions'.  Returns the project if a file is
-selected, nil otherwise."
-  (let* ((base-file-name (file-name-base
-                         (or (and (ada-prj-p prj)
-                                  (plist-get (ada-prj-plist prj) 'main))
-                             (file-name-nondirectory (file-name-sans-extension 
(buffer-file-name))))))
-        (filename
-         (file-name-completion base-file-name
-                               ""
-                               (lambda (name) (member (file-name-extension 
name) wisi-prj-file-extensions))))
-        )
-    (when filename
-      (let ((default-prj (ada-prj-default (file-name-nondirectory 
(file-name-sans-extension filename)))))
-       (wisi-prj-dtrt-parse-file filename default-prj filename 
default-directory)
-       default-prj))
-    ))
-
-;;;###autoload
-(defun ada-build-prompt-select-prj-file ()
-  "Prompt for a project file, parse and select it.
-The file must have an extension from `wisi-prj-file-extensions'.
-Returns the project if a file is selected, nil otherwise."
-  (interactive)
-  (let (filename)
-    (condition-case-unless-debug nil
-       (setq filename
-             (read-file-name
-              "Project file: " ; prompt
-              nil ; dir
-              "" ; default-filename
-              t   ; mustmatch
-              nil; initial
-              (lambda (name)
-                ;; this allows directories, which enables navigating
-                ;; to the desired file. We just assume the user won't
-                ;; return a directory.
-                (or (file-accessible-directory-p name)
-                    (member (file-name-extension name) 
wisi-prj-file-extensions)))))
-      (error
-       (setq filename nil))
-      )
-
-    (when (and filename
-              (not (equal "" filename)))
-
-      (unless (wisi-prj-find-function-set-p)
-       ;; See comment in ada-build-require-project-file. We also do
-       ;; this here because it may be the first project-related
-       ;; function the user runs.
-       (add-hook 'project-find-functions #'wisi-prj-find-dominating-cached)
-       (add-hook 'xref-backend-functions #'wisi-prj-xref-backend))
-
-      (let ((default-prj (ada-prj-default (file-name-nondirectory 
(file-name-sans-extension filename)))))
-       (wisi-prj-dtrt-parse-file filename default-prj filename 
(file-name-directory filename)))
-      )))
-
-(defun ada-build-create-select-default-prj ()
-  "Create a default project with source-path set current directory, select it."
-  (let* ((prj-file (expand-file-name "default_.adp" default-directory)) ;; we 
assume this does not exist
-        (ada-xref-tool 'gnat) ;; since we are not specifying a gpr file.
-        (project (ada-prj-default default-directory)))
-
-    ;; We use buffer-file-name as the dominating file (nominally the
-    ;; main program), since we assume it exists but the dummy project
-    ;; file does not.
-    (wisi-prj-dtrt-parse-file prj-file project (file-name-nondirectory 
(buffer-file-name)) default-directory)))
-
-(defun ada-build-require-project-file ()
-  "Ensure that a project file is selected, return the project.
-Action when no project file is currently selected is determined
-by `ada-build-prompt-prj':
-
-default - Search for a project file in the current directory with
-the same name as the main file. If not found, use a default
-project; no gpr file, current directory only, current file as
-main.
-
-search-prompt - Search for a project file in the current
-directory with the same name as the main file. If not found,
-prompt for a project file; thow error if user aborts
-
-prompt - Prompt for a project file; thow error if user aborts.
-
-error - Throw an error (no prompt, no default project).
-
-'search' means look for a file with an extension in
-`wisi-prj-file-extensions'.
-
-An error result does not change the current project."
-  (let ((prj (project-current)))
-
-    (unless (wisi-prj-find-function-set-p)
-      ;; We set project-find-functions, xref-backend-functions here so
-      ;; the user doesn't have to for simple projects. We use
-      ;; 'dominating' to avoid the user actions required by select
-      ;; when switching directories/projects (especially in the
-      ;; ada-mode tutorial), and 'cached' to preserve the value of
-      ;; "main" in the project. An experienced user can change to
-      ;; select/cached as they need to.
-      (add-hook 'project-find-functions #'wisi-prj-find-dominating-cached)
-      (add-hook 'xref-backend-functions #'wisi-prj-xref-backend))
-
-    (unless (ada-prj-p prj)
-      (cl-ecase ada-build-prompt-prj
-       (default
-         (or (setq prj (ada-build-find-select-prj-file prj))
-             (setq prj (ada-build-create-select-default-prj))
-             ))
-
-       (search-prompt
-         (or (setq prj (ada-build-find-select-prj-file prj))
-             (setq prj (ada-build-prompt-select-prj-file))))
-
-       (prompt
-        (setq prj (ada-build-prompt-select-prj-file)))
-
-       (error
-        (user-error "no project file selected"))
-       ))
-    prj))
-
-;;;; user functions
-
-(defun ada-build-run-cmd (prj-field confirm prompt)
-  "Run the command in the PRJ-FIELD project variable.
-If CONFIRM or `ada-build-confirm-command' are non-nil, ask for
-user confirmation of the command, using PROMPT."
-  (let* ((project (ada-build-require-project-file))
-        (cmd (plist-get (ada-prj-plist project) prj-field))
-        (compilation-environment
-         (append
-          (wisi-prj-compile-env project)
-          (wisi-prj-file-env project))))
-
-    (unless cmd
-      (setq cmd '("")
-           confirm t))
-
-    (when (or ada-build-confirm-command confirm)
-      (setq cmd (read-from-minibuffer (concat prompt ": ") cmd)))
-
-    (compile (ada-build-replace-vars project cmd))))
-
-;;;###autoload
-(defun ada-build-check (&optional confirm)
-  "Run the check_cmd project variable.
-By default, this checks the current file for syntax errors.
-If CONFIRM is non-nil, prompt for user confirmation of the command."
-  (interactive "P")
-  (ada-build-run-cmd 'check_cmd confirm "check command"))
-
-;;;###autoload
-(defun ada-build-make (&optional confirm)
-  "Run the make_cmd project variable.
-By default, this compiles and links the main program.
-If CONFIRM is non-nil, prompt for user confirmation of the command."
-  (interactive "P")
-  (ada-build-run-cmd 'make_cmd confirm "make command"))
-
-;;;###autoload
-(defun ada-build-set-make (&optional confirm)
-  "Set the main project variable to the current file, then run the make_cmd 
project variable.
-By default, this compiles and links the new main program.
-If CONFIRM is non-nil, prompt for user confirmation of the command."
-  (interactive "P")
-  (let ((prj (ada-build-require-project-file)))
-    (setf (ada-prj-plist prj)
-         (plist-put (ada-prj-plist prj)
-                    'main (file-name-nondirectory (file-name-sans-extension 
(buffer-file-name))))))
-  (ada-build-run-cmd 'make_cmd confirm "make command"))
-
-;;;###autoload
-(defun ada-build-run (&optional confirm)
-  "Run the run_cmd project variable.
-By default, this runs the main program.
-If CONFIRM is non-nil, prompt for user confirmation of the command."
-  (interactive "P")
-  (ada-build-run-cmd 'run_cmd confirm "run command"))
-
-(defun ada-build-show-main ()
-  "Show current project main program filename."
-  (interactive)
-  (message "Ada mode main: %s" (plist-get (ada-prj-plist 
(ada-prj-require-prj)) 'main)))
-
-;;; setup
-(add-to-list 'ada-prj-default-list 'ada-build-default-prj)
-
-(provide 'ada-build)
-;; end of file
diff --git a/packages/ada-mode/ada-compiler-gnat.el 
b/packages/ada-mode/ada-compiler-gnat.el
deleted file mode 100644
index a19fcda..0000000
--- a/packages/ada-mode/ada-compiler-gnat.el
+++ /dev/null
@@ -1,804 +0,0 @@
-;;; ada-compiler-gnat.el --- Ada mode compiling functionality provided by GNAT 
 -*- lexical-binding:t -*-
-;;;
-;; GNAT is provided by AdaCore; see http://libre.adacore.com/
-;;
-;;; Copyright (C) 2012 - 2020  Free Software Foundation, Inc.
-;;
-;; Author: Stephen Leake <stephen_leake@member.fsf.org>
-;; Maintainer: Stephen Leake <stephen_leake@member.fsf.org>
-;;
-;; This file is part of GNU Emacs.
-;;
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-;;
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-;;
-;;; Usage:
-;;
-;; Emacs should enter Ada mode automatically when you load an Ada
-;; file, based on the file extension.
-;;
-;; By default, ada-mode is configured to load this file, so nothing
-;; special needs to be done to use it.
-
-(require 'ada-core)
-(require 'cl-lib)
-(require 'compile)
-(require 'gnat-core)
-(require 'wisi)
-
-;;;; compiler message handling
-
-(defconst ada-gnat-predefined-package-alist
-  '(
-    ("a-calend" . "Ada.Calendar")
-    ("a-chahan" . "Ada.Characters.Handling")
-    ("a-comlin" . "Ada.Command_Line")
-    ("a-contai" . "Ada.Containers")
-    ("a-direct" . "Ada.Directories")
-    ("a-except" . "Ada.Exceptions")
-    ("a-ioexce" . "Ada.IO_Exceptions")
-    ("a-finali" . "Ada.Finalization")
-    ("a-numeri" . "Ada.Numerics")
-    ("a-nuflra" . "Ada.Numerics.Float_Random")
-    ("a-stream" . "Ada.Streams")
-    ("a-ststio" . "Ada.Streams.Stream_IO")
-    ("a-string" . "Ada.Strings")
-    ("a-strfix" . "Ada.Strings.Fixed")
-    ("a-strmap" . "Ada.Strings.Maps")
-    ("a-strunb" . "Ada.Strings.Unbounded")
-    ("a-stwiun" . "Ada.Strings.Wide_Unbounded")
-    ("a-textio" . "Ada.Text_IO")
-    ("g-comlin" . "GNAT.Command_Line")
-    ("g-dirope" . "GNAT.Directory_Operations")
-    ("g-socket" . "GNAT.Sockets")
-    ("i-c"      . "Interfaces.C")
-    ("i-cstrin" . "Interfaces.C.Strings")
-    ("interfac" . "Interfaces")
-    ("s-stoele" . "System.Storage_Elements")
-    )
-  "Alist (filename . package name) of GNAT file names for predefined Ada 
packages.")
-
-(defun ada-gnat-compilation-filter ()
-  "Filter to add text properties to secondary file references.
-For `compilation-filter-hook'."
-  (save-excursion
-    (goto-char compilation-filter-start)
-
-    ;; primary references are handled by font-lock functions; see
-    ;; `compilation-mode-font-lock-keywords'.
-    ;;
-    ;; compilation-filter might insert partial lines, or it might insert 
multiple lines
-    (goto-char (line-beginning-position))
-    (while (not (eobp))
-      ;; We don't want 'next-error' to always go to secondary
-      ;; references, so we _don't_ set 'compilation-message text
-      ;; property. Instead, we set 'ada-secondary-error, so
-      ;; `ada-show-secondary-error' will handle it. We also set
-      ;; fonts, so the user can see the reference.
-
-      ;; typical secondary references look like:
-      ;;
-      ;; trivial_productions_test.adb:57:77:   ==> in call to "Get" at \
-      ;;    opentoken-token-enumerated-analyzer.ads:88, instance at line 41
-      ;;
-      ;; c:/foo/bar/lookahead_test.adb:379:14: found type access to 
"Standard.String" defined at line 379
-      ;;
-      ;; lookahead_test.ads:23:09: "Name" has been inherited from subprogram 
at aunit-simple_test_cases.ads:47
-      ;;
-      ;; lalr.adb:668:37: non-visible declaration at analyzer.ads:60, instance 
at parser.ads:38
-      ;;
-      ;; save the file from the primary reference, look for "*.ad?:nn", "at 
line nnn"
-
-      (let (file)
-       (when (looking-at "^\\(\\(.:\\)?[^ :\n]+\\):")
-         (setq file (match-string-no-properties 1)))
-
-       (skip-syntax-forward "^-"); space following primary reference
-
-       (while (search-forward-regexp 
"\\s-\\(\\([^[:blank:]]+\\.[[:alpha:]]+\\):\\([0-9]+\\):?\\([0-9]+\\)?\\)"
-                                     (line-end-position) t)
-
-         (goto-char (match-end 0))
-         (with-silent-modifications
-           (compilation--put-prop 2 'font-lock-face compilation-info-face); 
file
-           (compilation--put-prop 3 'font-lock-face compilation-line-face); 
line
-           (compilation--put-prop 4 'font-lock-face compilation-line-face); col
-           (put-text-property
-            (match-beginning 0) (match-end 0)
-            'ada-secondary-error
-            (list
-             (match-string-no-properties 2); file
-             (string-to-number (match-string-no-properties 3)); line
-             (if (match-string 4)
-                 (1- (string-to-number (match-string-no-properties 4)))
-               0); column
-             ))
-           ))
-
-       (when (search-forward-regexp "\\(at line \\)\\([0-9]+\\)" 
(line-end-position) t)
-         (with-silent-modifications
-           (compilation--put-prop 1 'font-lock-face compilation-info-face); 
"at line" instead of file
-           (compilation--put-prop 2 'font-lock-face compilation-line-face); 
line
-           (put-text-property
-            (match-beginning 1) (match-end 1)
-            'ada-secondary-error
-            (list
-             file
-             (string-to-number (match-string-no-properties 2)); line
-             1)); column
-           ))
-       (forward-line 1))
-      )
-    ))
-
-(defun ada-gnat-debug-filter ()
-  ;; call ada-gnat-compilation-filter with `compilation-filter-start' bound
-  (interactive)
-  (beginning-of-line)
-  (let ((compilation-filter-start (point)))
-    (ada-gnat-compilation-filter)))
-
-;;;;; auto fix compilation errors
-
-(defconst ada-gnat-file-name-regexp
-  "\\([a-z-_.]+\\)"
-  "regexp to extract a file name")
-
-(defconst ada-gnat-quoted-name-regexp
-  "\"\\([[:alnum:]_.']+\\)\""
-  "regexp to extract the quoted names in error messages")
-
-(defconst ada-gnat-quoted-punctuation-regexp
-  "\"\\([,:;=()|]+\\)\""
-  "regexp to extract quoted punctuation in error messages")
-
-(defun ada-gnat-misspelling ()
-  "Return correct spelling from current compiler error, if there are 
corrections offered.
-Prompt user if more than one."
-  ;; wisi-output.adb:115:41: no selector "Productions" for type "RHS_Type" 
defined at wisi.ads:77
-  ;; wisi-output.adb:115:41: invalid expression in loop iterator
-  ;; wisi-output.adb:115:42: possible misspelling of "Production"
-  ;; wisi-output.adb:115:42: possible misspelling of "Production"
-  ;;
-  ;; column number can vary, so only check the line number
-  (save-excursion
-    (let* ((start-msg (get-text-property (line-beginning-position) 
'compilation-message))
-          (start-line (nth 1 (compilation--message->loc start-msg)))
-          done choices)
-      (while (not done)
-       (forward-line 1)
-       (let ((msg (get-text-property (line-beginning-position) 
'compilation-message)))
-         (setq done (or (not msg)
-                        (not (equal start-line (nth 1 
(compilation--message->loc msg)))))))
-       (when (and (not done)
-                  (progn
-                    (skip-syntax-forward "^-")
-                    (forward-char 1)
-                    (looking-at (concat "possible misspelling of " 
ada-gnat-quoted-name-regexp))))
-         (push (match-string 1) choices)))
-
-      ;; return correct spelling
-      (cond
-       ((= 0 (length choices))
-       nil)
-
-       ((= 1 (length choices))
-       (car choices))
-
-       (t ;; multiple choices
-       (completing-read "correct spelling: " choices))
-       ))))
-
-(defun ada-gnat-qualified ()
-  "Return qualified name from current compiler error, if there is one offered."
-  (save-excursion
-    (forward-line 1)
-    (skip-syntax-forward "^ ")
-    (looking-at " use fully qualified name starting with \\([[:alnum:]_]+\\) 
to make")
-    (match-string 1)
-    ))
-
-(cl-defmethod wisi-compiler-fix-error ((_compiler gnat-compiler) source-buffer)
-  (let ((start-pos (point))
-       message-column
-       result)
-    ;; Move to start of error message text
-    (skip-syntax-forward "^-")
-    (forward-char 1)
-    (setq message-column (current-column))
-
-    ;; recognize it, handle it
-    (setq
-     result
-     (unwind-protect
-        (cond
-         ;; It is tempting to define an alist of (MATCH . ACTION), but
-         ;; that is too hard to debug
-         ;;
-         ;; This list will get long, so let's impose some order.
-         ;;
-         ;; First expressions that start with a named regexp,
-         ;; alphabetical by variable name and following string.
-         ;;
-         ;; Then expressions that start with a string, alphabetical by string.
-         ;;
-         ;; Then style errors.
-
-         ((looking-at (concat ada-gnat-quoted-name-regexp " is not a component 
of "))
-                  (save-excursion
-            (let ((child-name (match-string 1))
-                  (correct-spelling (ada-gnat-misspelling)))
-              (setq correct-spelling (match-string 1))
-              (pop-to-buffer source-buffer)
-              (search-forward child-name)
-              (replace-match correct-spelling))
-            t))
-
-         ((looking-at (concat ada-gnat-quoted-name-regexp " is not visible"))
-          (let* ((done nil)
-                 (err-msg (get-text-property (line-beginning-position) 
'compilation-message))
-                 (file-line-struct err-msg)
-                 pos choices unit-name)
-            ;; next line may contain a reference to where ident is
-            ;; defined; if present, it will have been marked by
-            ;; ada-gnat-compilation-filter:
-            ;;
-            ;; gnatquery.adb:255:13: "Has_Element" is not visible
-            ;; gnatquery.adb:255:13: non-visible declaration at 
a-convec.ads:68, instance at gnatcoll-arg_lists.ads:157
-            ;; gnatquery.adb:255:13: non-visible declaration at 
a-coorse.ads:62, instance at gnatcoll-xref.ads:912
-            ;; gnatquery.adb:255:13: non-visible declaration at 
a-coorse.ads:62, instance at gnatcoll-xref.ads:799
-            ;; gnatquery.adb:255:13: non-visible declaration at 
gnatcoll-xref.ads:314
-            ;;
-            ;; or the next line may contain "multiple use clauses cause hiding"
-            ;;
-            ;; the lines after that may contain alternate matches;
-            ;; collect all, let user choose.
-            (forward-line 1)
-            (when (looking-at ".* multiple use clauses cause hiding")
-              (forward-line 1))
-            (while (not done)
-              (let ((limit (1- (line-end-position))))
-                ;; 1- because next compilation error is at next line beginning
-                (setq done (not
-                            (and
-                             (equal file-line-struct err-msg)
-                             (setq pos (next-single-property-change (point) 
'ada-secondary-error nil limit))
-                             (< pos limit))))
-                (when (not done)
-                  (let* ((item (get-text-property pos 'ada-secondary-error))
-                         (unit-file (nth 0 item))
-                         (prj (project-current))
-                         (choice (ada-compiler-ada-name-from-file-name 
(wisi-prj-compiler prj) prj unit-file)))
-                    (unless (member choice choices) (push choice choices))
-                    (goto-char (1+ pos))
-                    (goto-char (1+ (next-single-property-change (point) 
'ada-secondary-error nil limit)))
-                    (when (eolp) (forward-line 1))
-                    ))
-                ))
-
-            (setq unit-name
-                  (cond
-                   ((= 0 (length choices)) nil)
-                   ((= 1 (length choices)) (car choices))
-                   (t ;; multiple choices
-                    (completing-read "package name: " choices))))
-
-            (when unit-name
-              (pop-to-buffer source-buffer)
-              ;; We either need to add a with_clause for a package, or
-              ;; prepend the package name here (or add a use clause, but I
-              ;; don't want to do that automatically).
-              ;;
-              ;; If we need to add a with_clause, unit-name may be only
-              ;; the prefix of the real package name, but in that case
-              ;; we'll be back after the next compile; no way to get the
-              ;; full package name (without the function/type name) now.
-              ;; Note that we can't use gnat find, because the code
-              ;; doesn't compile.
-              (cond
-               ((looking-at (concat unit-name "\\."))
-                (ada-fix-add-with-clause unit-name))
-               (t
-                (ada-fix-insert-unit-name unit-name)
-                (insert ".")))
-              t) ;; success, else nil => fail
-            ))
-
-         ((or (looking-at (concat ada-gnat-quoted-name-regexp " is undefined"))
-              (looking-at (concat ada-gnat-quoted-name-regexp " is not a 
predefined library unit")))
-          ;; We either need to add a with_clause for a package, or
-          ;; something is spelled wrong.
-          (save-excursion
-            (let ((unit-name (match-string 1))
-                  (correct-spelling (ada-gnat-misspelling)))
-              (if correct-spelling
-                  (progn
-                    (pop-to-buffer source-buffer)
-                    (search-forward unit-name)
-                    (replace-match correct-spelling))
-
-                ;; else assume missing with
-                (pop-to-buffer source-buffer)
-                (ada-fix-add-with-clause unit-name))))
-          t)
-
-         ((looking-at (concat ada-gnat-quoted-name-regexp " not declared in " 
ada-gnat-quoted-name-regexp))
-          (save-excursion
-            (let ((child-name (match-string 1))
-                  (correct-spelling (ada-gnat-misspelling))
-                  (qualified (ada-gnat-qualified)))
-              (cond
-               (correct-spelling
-                (pop-to-buffer source-buffer)
-                (search-forward child-name)
-                (replace-match correct-spelling))
-
-               (qualified
-                (pop-to-buffer source-buffer)
-                (search-forward child-name)
-                (skip-syntax-backward "w_.")
-                (insert qualified "."))
-
-               (t
-                ;; else guess that "child" is a child package, and extend the 
with_clause
-                (pop-to-buffer source-buffer)
-                (ada-fix-extend-with-clause child-name))))
-          t))
-
-         ((looking-at (concat ada-gnat-quoted-punctuation-regexp
-                              " should be "
-                              ada-gnat-quoted-punctuation-regexp))
-          (let ((bad (match-string-no-properties 1))
-                (good (match-string-no-properties 2)))
-            (pop-to-buffer source-buffer)
-            (looking-at bad)
-            (delete-region (match-beginning 0) (match-end 0))
-            (insert good))
-          t)
-
-;;;; strings
-         ((looking-at (concat "\"end " ada-name-regexp ";\" expected"))
-          (let ((expected-name (match-string 1)))
-            (pop-to-buffer source-buffer)
-            (if (looking-at (concat "end " ada-name-regexp ";"))
-                (progn
-                  (goto-char (match-end 1))   ; just before ';'
-                  (delete-region (match-beginning 1) (match-end 1)))
-              ;; else we have just 'end;'
-              (forward-word 1)
-              (insert " "))
-            (insert expected-name))
-          t)
-
-         ((looking-at (concat "\"end loop " ada-name-regexp ";\" expected"))
-          (let ((expected-name (match-string 1)))
-            (pop-to-buffer source-buffer)
-            (if (looking-at (concat "end loop " ada-name-regexp ";"))
-                (progn
-                  (goto-char (match-end 1))   ; just before ';'
-                  (delete-region (match-beginning 1) (match-end 1)))
-              ;; else we have just 'end loop;'
-              (forward-word 2)
-              (insert " "))
-            (insert expected-name))
-          t)
-
-         ((looking-at "expected an access type")
-          (progn
-            (set-buffer source-buffer)
-            (backward-char 1)
-            (when (looking-at "\\.all")
-              (delete-char 4)
-              t)))
-
-         ((looking-at (concat "expected \\(private \\)?type " 
ada-gnat-quoted-name-regexp))
-          (forward-line 1)
-          (move-to-column message-column)
-          (cond
-           ((looking-at "found procedure name")
-            (pop-to-buffer source-buffer)
-            (forward-word 1)
-            (insert "'Access")
-            t)
-           ((looking-at "found type access")
-            (pop-to-buffer source-buffer)
-            (if (looking-at "'Access")
-                (kill-word 1)
-              (forward-word 1)
-              (insert ".all"))
-            t)
-           ((looking-at "found type .*_Access_Type")
-            ;; assume just need '.all'
-            (pop-to-buffer source-buffer)
-            (forward-word 1)
-            (insert ".all")
-            t)
-           ))
-
-         ((looking-at "extra \".\" ignored")
-          (set-buffer source-buffer)
-          (delete-char 1)
-          t)
-
-         ((looking-at (concat "keyword " ada-gnat-quoted-name-regexp " 
expected here"))
-          (let ((expected-keyword (match-string 1)))
-            (pop-to-buffer source-buffer)
-            (insert " " expected-keyword))
-          t)
-
-         ((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)
-            ;; Could check if prefix is already with'd, extend
-            ;; it. But no one has reported that case yet; this
-            ;; message only occurs for predefined Ada packages.
-            (ada-fix-add-with-clause package-name))
-          t)
-
-         ;; must be after above
-         ;;
-         ;; missing "end;" for "begin" at line 234
-         ((looking-at "missing \"\\([^ ]+\\)\"")
-          (let ((stuff (match-string-no-properties 1)))
-            (set-buffer source-buffer)
-            (insert (concat stuff)));; if missing ")", don't need space; 
otherwise do?
-          t)
-
-         ((looking-at (concat "\\(?:possible \\)?misspelling of " 
ada-gnat-quoted-name-regexp))
-          (let ((expected-name (match-string 1)))
-            (pop-to-buffer source-buffer)
-            (looking-at ada-name-regexp)
-            (delete-region (match-beginning 1) (match-end 1))
-            (insert expected-name))
-          t)
-
-         ((looking-at "No legal interpretation for operator")
-          (forward-line 1)
-          (move-to-column message-column)
-          (looking-at (concat "use clause on " ada-gnat-quoted-name-regexp))
-          (let ((package (match-string 1)))
-            (pop-to-buffer source-buffer)
-            (ada-fix-add-use package))
-          t)
-
-         ((looking-at (concat "no selector " ada-gnat-quoted-name-regexp))
-          ;; Check next line for spelling error.
-          (save-excursion
-            (let ((unit-name (match-string 1))
-                  (correct-spelling (ada-gnat-misspelling)))
-              (when correct-spelling
-                (pop-to-buffer source-buffer)
-                (search-forward unit-name)
-                (replace-match correct-spelling)
-                t))))
-
-         ((looking-at (concat "operator for \\(private \\)?type " 
ada-gnat-quoted-name-regexp
-                              "\\( defined at " ada-gnat-file-name-regexp 
"\\)?"))
-          (let ((type (match-string 2))
-                (package-file (match-string 4))
-                (prj (project-current)))
-            (when package-file
-              (setq type (concat
-                          (ada-compiler-ada-name-from-file-name 
(wisi-prj-compiler prj) prj package-file)
-                          "." type)))
-            (pop-to-buffer source-buffer)
-            (ada-fix-add-use-type type)
-          t))
-
-         ((looking-at "package \"Ada\" is hidden")
-          (pop-to-buffer source-buffer)
-          (forward-word -1)
-          (insert "Standard.")
-          t)
-
-         ((looking-at "parentheses required for unary minus")
-          (set-buffer source-buffer)
-          (insert "(")
-          (forward-word 1)
-          (insert ")")
-          t)
-
-         ((looking-at "prefix of dereference must be an access type")
-          (pop-to-buffer source-buffer)
-          ;; point is after '.' in '.all'
-          (delete-region (- (point) 1) (+ (point) 3))
-          t)
-
-;;;; warnings
-         ((looking-at (concat "warning: " ada-gnat-quoted-name-regexp " is 
already use-visible"))
-          ;; just delete the 'use'; assume it's on a line by itself.
-          (pop-to-buffer source-buffer)
-          (beginning-of-line)
-          (delete-region (point) (progn (forward-line 1) (point)))
-          t)
-
-         ((looking-at (concat "warning: " ada-gnat-quoted-name-regexp " is not 
modified, could be declared constant"))
-          (pop-to-buffer source-buffer)
-          (search-forward ":")
-          (forward-comment (- (point-max) (point)))
-          ;; "aliased" must be before "constant", so check for it
-          (when (looking-at "aliased")
-            (forward-word 1)
-            (forward-char 1))
-          (insert "constant ")
-          t)
-
-         ((looking-at (concat "warning: constant " ada-gnat-quoted-name-regexp 
" is not referenced"))
-          (let ((constant (match-string 1)))
-            (pop-to-buffer source-buffer)
-            (end-of-line)
-            (newline-and-indent)
-            (insert "pragma Unreferenced (" constant ");"))
-          t)
-
-         ((looking-at (concat "warning: formal parameter " 
ada-gnat-quoted-name-regexp " is not referenced"))
-          (let ((param (match-string 1))
-                cache)
-            (pop-to-buffer source-buffer)
-            ;; 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)
-
-         ((looking-at (concat "warning: formal parameter " 
ada-gnat-quoted-name-regexp " is not modified"))
-          (let ((mode-regexp "\"\\([in out]+\\)\"")
-                new-mode
-                old-mode)
-            (forward-line 1)
-            (search-forward-regexp
-             (concat "mode could be " mode-regexp " instead of " mode-regexp))
-            (setq new-mode (match-string 1))
-            (setq old-mode (match-string 2))
-            (pop-to-buffer source-buffer)
-            (search-forward old-mode)
-            (replace-match new-mode)
-            (ada-align)
-            )
-          t)
-
-         ((looking-at (concat "warning: variable " ada-gnat-quoted-name-regexp 
" is not referenced"))
-          (let ((param (match-string 1)))
-            (pop-to-buffer source-buffer)
-            (forward-sexp);; end of declaration
-            (forward-char);; skip semicolon
-            (newline-and-indent)
-            (insert "pragma Unreferenced (" param ");"))
-          t)
-
-         ((or
-           (looking-at (concat "warning: no entities of " 
ada-gnat-quoted-name-regexp " are referenced"))
-           (looking-at (concat "warning: unit " ada-gnat-quoted-name-regexp " 
is never instantiated"))
-           (looking-at "warning: redundant with clause"))
-          ;; just delete the 'with'; assume it's on a line by itself.
-          (pop-to-buffer source-buffer)
-          (beginning-of-line)
-          (delete-region (point) (progn (forward-line 1) (point)))
-          t)
-
-         ((looking-at (concat "warning: variable " ada-gnat-quoted-name-regexp 
" is assigned but never read"))
-          (let ((param (match-string 1)))
-            (pop-to-buffer source-buffer)
-            (wisi-goto-statement-end) ;; leaves point before semicolon
-            (forward-char 1)
-            (newline-and-indent)
-            (insert "pragma Unreferenced (" param ");"))
-          t)
-
-         ((looking-at (concat "warning: unit " ada-gnat-quoted-name-regexp " 
is not referenced"))
-          ;; just delete the 'with'; assume it's on a line by itself.
-          (pop-to-buffer source-buffer)
-          (beginning-of-line)
-          (delete-region (point) (progn (forward-line 1) (point)))
-          t)
-
-         ((looking-at (concat "warning: use clause for 
\\(package\\|type\\|private type\\) " ada-gnat-quoted-name-regexp " \\(defined 
at\\|from instance at\\|has no effect\\)"))
-          ;; delete the 'use'; assume it's on a line by itself.
-          (pop-to-buffer source-buffer)
-          (beginning-of-line)
-          (delete-region (point) (progn (forward-line 1) (point)))
-          t)
-
-;;;; style errors
-         ((or (looking-at "(style) \".*\" in wrong column")
-              (looking-at "(style) this token should be in column"))
-          (set-buffer source-buffer)
-          (funcall indent-line-function)
-          t)
-
-         ((looking-at "(style) bad capitalization, mixed case required")
-          (set-buffer source-buffer)
-          (forward-word)
-          (wisi-case-adjust-identifier)
-          t)
-
-         ((looking-at (concat "(style) bad casing of " 
ada-gnat-quoted-name-regexp))
-          (let ((correct (match-string-no-properties 1))
-                end)
-            ;; gnat leaves point on first bad character, but we need to 
replace the whole word
-            (set-buffer source-buffer)
-            (skip-syntax-backward "w_")
-            (setq end (point))
-            (skip-syntax-forward "w_")
-            (delete-region (point) end)
-            (insert correct))
-          t)
-
-         ((or
-           (looking-at "(style) bad column")
-           (looking-at "(style) bad indentation")
-           (looking-at "(style) incorrect layout"))
-          (set-buffer source-buffer)
-          (funcall indent-line-function)
-          t)
-
-         ((looking-at "(style) \"exit \\(.*\\)\" required")
-          (let ((name (match-string-no-properties 1)))
-            (set-buffer source-buffer)
-            (forward-word 1)
-            (insert (concat " " name))
-          t))
-
-         ((looking-at "(style) misplaced \"then\"")
-          (set-buffer source-buffer)
-          (delete-indentation)
-          t)
-
-         ((looking-at "(style) missing \"overriding\" indicator")
-          (set-buffer source-buffer)
-          (cond
-           ((looking-at "\\(procedure\\)\\|\\(function\\)")
-            (insert "overriding ")
-           t)
-           (t
-            nil)))
-
-         ((looking-at "(style) reserved words must be all lower case")
-          (set-buffer source-buffer)
-          (downcase-word 1)
-          t)
-
-         ((looking-at "(style) space not allowed")
-          (set-buffer source-buffer)
-          ;; Error places point on space. More than one trailing space
-          ;; should be fixed by delete-trailing-whitespace in
-          ;; before-save-hook, once the file is modified.
-          (delete-char 1)
-          t)
-
-         ((looking-at "(style) space required")
-          (set-buffer source-buffer)
-          (insert " ")
-          t)
-         )));; end of setq unwind-protect cond
-    (if result
-       t
-      (goto-char start-pos)
-      nil)
-    ))
-
-;;;; generic methods
-
-(cl-defmethod ada-prj-select-compiler ((_compiler gnat-compiler) _project)
-  ;; These can't be in wisi-compiler-select-prj (gnat-compiler),
-  ;; because that is shared with gpr-mode (and maybe others).
-  (add-hook 'compilation-filter-hook 'ada-gnat-compilation-filter)
-  (add-hook 'ada-syntax-propertize-hook #'ada-gnat-syntax-propertize)
-
-  ;; We should call `syntax-ppss-flush-cache' here, to force ppss with
-  ;; the new hook function. But that must be done in all ada-mode
-  ;; buffers, which is tedious. So we're ignoring it until it becomes
-  ;; a problem; normally, the compiler is selected before any Ada
-  ;; files are visited, so it's not an issue.
-  )
-
-(cl-defmethod ada-prj-deselect-compiler ((_compiler gnat-compiler) _project)
-  (remove-hook 'ada-syntax-propertize-hook #'ada-gnat-syntax-propertize)
-  (remove-hook 'compilation-filter-hook #'ada-gnat-compilation-filter)
-  )
-
-(cl-defmethod ada-compiler-file-name-from-ada-name ((compiler gnat-compiler) 
project ada-name)
-  (let ((result nil))
-
-    (while (string-match "\\." ada-name)
-      (setq ada-name (replace-match "-" t t ada-name)))
-
-    (setq ada-name (downcase ada-name))
-
-    (with-current-buffer (gnat-run-buffer project 
(gnat-compiler-run-buffer-name compiler))
-      (gnat-run-no-prj
-       (list
-       "krunch"
-       ada-name
-       ;; "0" means only krunch GNAT library names
-       "0"))
-
-      (goto-char (point-min))
-      (when ada-gnat-debug-run (forward-line 1)); skip  cmd
-      (setq result (buffer-substring-no-properties (line-beginning-position) 
(line-end-position)))
-      )
-    result))
-
-(cl-defmethod ada-compiler-ada-name-from-file-name ((_compiler gnat-compiler) 
_project file-name)
-  (let* ((ada-name (file-name-sans-extension (file-name-nondirectory 
file-name)))
-        (predefined (cdr (assoc ada-name ada-gnat-predefined-package-alist))))
-
-    (if predefined
-        predefined
-      (while (string-match "-" ada-name)
-       (setq ada-name (replace-match "." t t ada-name)))
-      ada-name)))
-
-(cl-defmethod ada-compiler-make-package-body ((compiler gnat-compiler) project 
body-file-name)
-  ;; gnatstub always creates the body in the current directory (in the
-  ;; process where gnatstub is running); the -o parameter may not
-  ;; contain path info. So we bind default-directory here.
-  (let ((start-file (buffer-file-name))
-       (opts (when (gnat-compiler-gnat-stub-opts compiler)
-               (split-string (gnat-compiler-gnat-stub-opts compiler))))
-       (cargs (when (gnat-compiler-gnat-stub-cargs compiler)
-               (append (list "-cargs") (split-string 
(gnat-compiler-gnat-stub-cargs compiler)))))
-       (process-environment
-        (append
-          (wisi-prj-compile-env project)
-          (wisi-prj-file-env project)
-          (copy-sequence process-environment)))
-       )
-
-    ;; Make sure all relevant files are saved to disk.
-    (save-some-buffers t)
-
-    (with-current-buffer (gnat-run-buffer compiler 
(gnat-compiler-run-buffer-name compiler))
-      (let ((default-directory (file-name-directory body-file-name)))
-       (gnat-run-gnat
-        project
-        "stub"
-        (append opts (list start-file) cargs))
-
-       (find-file body-file-name)
-       (indent-region (point-min) (point-max))
-       (save-buffer)))
-    nil))
-
-(defun ada-gnat-syntax-propertize (start end)
-  (goto-char start)
-  (save-match-data
-    (while (re-search-forward
-           (concat
-            "[^[: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)
-      (cond
-       ((match-beginning 1)
-       (put-text-property
-        (match-beginning 1) (match-end 1) 'syntax-table '(7 . ?'))
-       (put-text-property
-        (match-beginning 2) (match-end 2) 'syntax-table '(7 . ?')))
-
-       ((match-beginning 3)
-       (put-text-property
-        (match-beginning 3) (match-end 3) 'syntax-table '(2 . nil)))
-       )
-      )))
-
-(provide 'ada-compiler-gnat)
-;; ada-compiler-gnat.el ends here
diff --git a/packages/ada-mode/ada-core.el b/packages/ada-mode/ada-core.el
deleted file mode 100644
index 85c1787..0000000
--- a/packages/ada-mode/ada-core.el
+++ /dev/null
@@ -1,778 +0,0 @@
-;;; ada-core.el --- core facilities for ada-mode -*- lexical-binding:t -*-
-
-;; Copyright (C) 1994, 1995, 1997 - 2017, 2019 - 2020  Free Software 
Foundation, Inc.
-;;
-;; Author: Stephen Leake <stephen_leake@member.fsf.org>
-;; Maintainer: Stephen Leake <stephen_leake@member.fsf.org>
-;;
-;; This file is part of GNU Emacs.
-;;
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-;;
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-(require 'compile)
-(require 'find-file)
-(require 'uniquify-files)
-(require 'wisi)
-(require 'wisi-prj)
-
-;;;; misc
-
-(defgroup ada nil
-  "Major mode for editing Ada source code in Emacs."
-  :group 'languages)
-
-(defcustom ada-fix-sort-context-clause t
-  "*If non-nil, sort context clause when inserting `with'"
-  :type 'boolean
-  :group 'ada)
-
-(defconst ada-operator-re
-  
"\\+\\|-\\|/\\|\\*\\*\\|\\*\\|=\\|&\\|\\_<\\(abs\\|mod\\|rem\\|and\\|not\\|or\\|xor\\)\\_>\\|<=\\|<\\|>=\\|>"
-  "Regexp matching Ada operator_symbol.")
-
-(defconst ada-name-regexp
-  "\\(\\(?:\\sw\\|[_.]\\)+\\)")
-
-(defvar ada-compiler 'gnat
-  "Default Ada compiler; can be overridden in project files.
-Values defined by compiler packages.")
-
-(defvar ada-syntax-propertize-hook nil
-  "Hook run from `ada-syntax-propertize'.
-Called by `syntax-propertize', which is called by font-lock in
-`after-change-functions'.")
-
-(defun ada-declarative-region-start-p (cache)
-  "Return t if cache is a keyword starting a declarative region."
-  (memq (wisi-cache-token cache) '(DECLARE IS PRIVATE))
-  ;; IS has a cache only if start of declarative region
-  )
-
-(defun ada-goto-declarative-region-start ()
-  "Goto start of declarative region containing point."
-  (interactive)
-  (wisi-validate-cache (point-min) (point-max) t 'navigate)
-  (push-mark)
-  (when (looking-back "declare" (line-beginning-position))
-    ;; We just did ada-goto-declarative-region-start to get here; we
-    ;; want the next one up.
-    (backward-word 1))
-  (let ((done nil)
-       (start-pos (point))
-       (outermost nil)
-       (cache (or (wisi-get-cache (point))
-                  (wisi-backward-cache))))
-
-    ;; We use backward-cache, not forward-cache, to handle the case
-    ;; where point is in the whitespace or comment before a block; we
-    ;; want the containing block, not the next block.
-    ;;
-    ;; The typical use case for calling this fuction is to add a
-    ;; use_clause for an identifier/operator at start-pos.
-
-    (when cache ;; nil at bob
-      (while (not done)
-       (unless (wisi-cache-containing cache)
-         (setq outermost t))
-
-       (if (ada-declarative-region-start-p cache)
-           (if (< (point) start-pos)
-               ;; found it.
-               (progn
-                 (forward-word);; past 'is' or 'declare'.
-                 (setq done t))
-
-             ;; test/ada_mode-nominal.adb function F2
-             ;;
-             ;; start-point is in a subprogram_declarator,
-             ;; formal_part, aspect_clause, etc; code that contains a
-             ;; declarative part. We want the next level up.
-             (if outermost
-                 ;; there is no next level up; add the use_clause in the 
context_clause.
-                 (progn
-                   (setq cache (wisi-goto-containing cache))
-                   (setq done t))
-
-             (setq cache (wisi-goto-containing cache))
-             (setq cache (wisi-goto-containing cache))))
-
-         (cl-case (wisi-cache-class cache)
-           (motion
-            (setq cache (wisi-goto-containing cache)));; statement-start
-
-           (statement-end
-            (setq cache (wisi-goto-containing cache)) ;; statement-start
-            (cl-case (wisi-cache-nonterm cache)
-              ((generic_package_declaration
-                package_declaration
-                entry_body package_body package_declaration protected_body 
subprogram_body task_body
-                protected_type_declaration single_protected_declaration 
single_task_declaration task_type_declaration)
-               ;; This is a block scope before the starting point; we want the 
containing scope
-               (setq cache (wisi-goto-containing cache)))
-
-              (t
-               nil)
-              ))
-
-           (statement-start
-            (cl-case (wisi-cache-nonterm cache)
-              (generic_package_declaration
-               (setq cache (wisi-next-statement-cache cache)) ;; 'package'
-               (setq cache (wisi-next-statement-cache cache))) ;; 'is'
-
-              (package_declaration
-               (setq cache (wisi-next-statement-cache cache))) ;; 'is'
-
-              ((entry_body package_body protected_body subprogram_body 
task_body)
-               (while (not (eq 'IS (wisi-cache-token cache)))
-                 (setq cache (wisi-next-statement-cache cache))))
-
-              ((protected_type_declaration single_protected_declaration 
single_task_declaration task_type_declaration)
-               (while (not (eq 'IS (wisi-cache-token cache)))
-                 (setq cache (wisi-next-statement-cache cache)))
-               (when (looking-at "\<new\>")
-                 (while (not (eq 'WITH (wisi-cache-token cache)))
-                   (setq cache (wisi-next-statement-cache cache)))))
-
-              (t
-               (setq cache (wisi-goto-containing cache t)))
-              ))
-
-           (t
-            (setq cache (wisi-goto-containing cache t)))
-           )))
-      )))
-
-;;;; additional ada-compiler generic interfaces
-
-(cl-defgeneric ada-compiler-file-name-from-ada-name (compiler project ada-name)
-  "Return the filename that would contain the library level ADA-NAME.")
-
-(defun ada-file-name-from-ada-name (ada-name)
-  "Return the filename in which ADA-NAME is found."
-  (let ((project (ada-prj-require-prj)))
-    (ada-compiler-file-name-from-ada-name (ada-prj-compiler project) project 
ada-name)))
-
-(cl-defgeneric ada-compiler-ada-name-from-file-name (compiler project 
file-name)
-  "Return the Ada library unit name that should be found in FILE-NAME.")
-
-(cl-defgeneric ada-compiler-make-package-body (compiler project body-file-name)
-  "Create a package body skeleton from a package spec.
-BODY-FILE-NAME is the file name of the body file. Current buffer
-is the package spec.")
-
-(defun ada-make-package-body (body-file-name)
-  (let ((prj (ada-prj-require-prj)))
-    (ada-compiler-make-package-body (ada-prj-compiler prj)
-                                   prj
-                                   (expand-file-name body-file-name))))
-
-;;;; refactor
-
-;; Refactor actions; must match wisi-ada.adb Refactor
-(defconst ada-refactor-method-object-to-object-method 1)
-(defconst ada-refactor-object-method-to-method-object 2)
-
-(defconst ada-refactor-element-object-to-object-index 3)
-(defconst ada-refactor-object-index-to-element-object 4)
-
-(defconst ada-refactor-format-paramlist 5)
-
-(defun ada-refactor (action)
-  (wisi-validate-cache (line-end-position -7) (line-end-position 7) t 
'navigate)
-  (save-excursion
-    (skip-syntax-backward "w_.\"")
-    (let* ((edit-begin (point))
-          (cache (wisi-goto-statement-start))
-          (parse-begin (point))
-          (parse-end (wisi-cache-end cache)))
-      (if parse-end
-         (setq parse-end (+ parse-end (wisi-cache-last (wisi-get-cache 
(wisi-cache-end cache)))))
-       ;; else there is a syntax error; missing end of statement
-       (setq parse-end (point-max)))
-      (wisi-refactor wisi--parser action parse-begin parse-end edit-begin)
-      )))
-
-(defun ada-refactor-1 ()
-  "Refactor Method (Object) => Object.Method.
-Point must be in Method."
-  (interactive)
-  (ada-refactor ada-refactor-method-object-to-object-method))
-
-(defun ada-refactor-2 ()
-  "Refactor Object.Method => Method (Object).
-Point must be in Object.Method."
-  (interactive)
-  (ada-refactor ada-refactor-object-method-to-method-object))
-
-(defun ada-refactor-3 ()
-  "Refactor Element (Object, Index) => Object (Index).
-Point must be in Element"
-  (interactive)
-  (ada-refactor ada-refactor-element-object-to-object-index))
-
-(defun ada-refactor-4 ()
-  "Refactor Object (Index) => Element (Object, Index).
-Point must be in Object"
-  (interactive)
-  (ada-refactor ada-refactor-object-index-to-element-object))
-
-;; refactor-5 in ada-format-paramlist below
-
-(defcustom ada-language-version 'ada2012
-  ;; ada-fix-error.el needs this.
-  "Ada language version; one of `ada83', `ada95', `ada2005', `ada2012'.
-Only affects the keywords to highlight, not which version the
-parser accepts; the parser always accepts a superset of ada2012."
-  :type '(choice (const ada83)
-                (const ada95)
-                (const ada2005)
-                (const ada2012))
-  :safe  #'symbolp)
-(make-variable-buffer-local 'ada-language-version)
-
-(defun ada-in-case-expression (parse-result)
-  "Return non-nil if point is in a case expression."
-  (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
-current construct."
-  (interactive)
-  (if (use-region-p)
-      (progn
-        (align (region-beginning) (region-end))
-        (deactivate-mark))
-
-    ;; else see if we are in a construct we know how to align
-    (let ((parse-result (syntax-ppss)))
-      (cond
-       ((ada-in-paramlist-p parse-result)
-        (ada-format-paramlist))
-
-       ((ada-in-case-expression parse-result)
-       ;; align '=>'
-       (let* ((begin (nth 1 parse-result))
-              (end   (scan-lists begin 1 0)))
-         (align begin end 'entire)))
-
-       (t
-       (align-current))
-       ))))
-
-(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'."
-  ;; (info "(elisp)Parser State" "*syntax-ppss*")
-  (let (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."
-  (interactive)
-  (condition-case nil
-      (wisi-goto-open-paren)
-    (error
-     (user-error "Not in parameter list")))
-  (funcall indent-line-function); so new list is indented properly
-  (when (not (looking-back "^[ \t]*" (line-beginning-position)))
-    (delete-horizontal-space)
-    (insert " "))
-  (ada-refactor ada-refactor-format-paramlist))
-
-;;;; fix compiler errors
-(defun ada-fix-context-clause ()
-  "Return the region containing the context clause for the current buffer,
-excluding leading pragmas."
-  (wisi-validate-cache (point-min) (point-max) t 'navigate)
-  (save-excursion
-    (goto-char (point-min))
-    (let ((begin nil)
-         (end nil)
-         cache)
-
-      (while (not end)
-       (setq cache (wisi-forward-cache))
-       (cl-case (wisi-cache-nonterm cache)
-         (pragma_g (wisi-goto-end-1 cache))
-         (use_clause (wisi-goto-end-1 cache))
-         (with_clause
-          (when (not begin)
-            (setq begin (line-beginning-position)))
-          (wisi-goto-end-1 cache))
-         (t
-          ;; start of compilation unit
-          (setq end (line-beginning-position))
-          (unless begin
-            (setq begin end)))
-         ))
-      (cons begin end)
-    )))
-
-(defun ada-fix-sort-context-pred (a b)
-  "Predicate for `sort-subr'; sorts \"limited with\", \"private with\" last.
-Returns non-nil if a should preceed b in buffer."
-  ;; a, b are buffer ranges in the current buffer
-  (cl-flet
-      ((starts-with
-       (pat reg)
-       (string= pat (buffer-substring-no-properties (car reg)
-                                                    (min (point-max)
-                                                         (+(car reg) (length 
pat)))))))
-    (cond
-     ((and
-       (starts-with "limited with" a)
-       (starts-with "private with" b))
-      t)
-
-     ((and
-       (starts-with "limited with" a)
-       (not (starts-with "limited with" b)))
-      nil)
-
-     ((and
-       (not (starts-with "limited with" a))
-       (starts-with "limited with" b))
-      t)
-
-     ((and
-       (starts-with "private with" a)
-       (not (starts-with "private with" b)))
-      nil)
-
-     ((and
-       (not (starts-with "private with" a))
-       (starts-with "private with" b))
-      t)
-
-     (t
-      (> 0 (compare-buffer-substrings
-           nil (car a) (cdr a)
-           nil (car b) (cdr b))) )
-     )))
-
-(defun ada-fix-sort-context-clause (beg end)
-  "Sort context clauses in range BEG END."
-  (save-excursion
-    (save-restriction
-      (narrow-to-region beg end)
-      (goto-char (point-min))
-      (sort-subr nil 'forward-line 'end-of-line nil nil 
'ada-fix-sort-context-pred)
-      )))
-
-(defun ada-fix-add-with-clause (package-name)
-  "Add a with_clause for PACKAGE_NAME.
-If ada-fix-sort-context-clause, sort the context clauses using
-sort-lines."
-  (let ((context-clause (ada-fix-context-clause)))
-    (when (not context-clause)
-      (error "no compilation unit found"))
-
-    (goto-char (cdr context-clause))
-    (insert "with ")
-    (ada-fix-insert-unit-name package-name)
-    (insert ";\n")
-
-    (when (and (< (car context-clause) (cdr context-clause))
-              ada-fix-sort-context-clause)
-      (ada-fix-sort-context-clause (car context-clause) (point)))
-    ))
-
-(defun ada-fix-extend-with-clause (child-name)
-  "Assuming point is in a selected name, just before CHILD-NAME, add or
-extend a with_clause to include CHILD-NAME  .  "
-  (let ((parent-name-end (point)))
-    ;; Find the full parent name; skip back to whitespace, then match
-    ;; the name forward.
-    (skip-syntax-backward "w_.")
-    (search-forward-regexp ada-name-regexp parent-name-end)
-    (let ((parent-name (match-string 0))
-         (context-clause (ada-fix-context-clause)))
-      (goto-char (car context-clause))
-      (if (search-forward-regexp (concat "^with " parent-name ";") (cdr 
context-clause) t)
-         ;; found exisiting 'with' for parent; extend it
-         (progn
-           (forward-char -1) ; skip back over semicolon
-           (insert "." child-name))
-
-       ;; not found; we are in a package body, with_clause for parent is in 
spec.
-       ;; insert a new one
-       (ada-fix-add-with-clause (concat parent-name "." child-name)))
-      )))
-
-(defun ada-fix-insert-unit-name (unit-name)
-  "Insert UNIT-NAME at point and capitalize it."
-  ;; unit-name is normally gotten from a file-name, and is thus all lower-case.
-  (let ((start-point (point))
-        search-bound)
-    (insert unit-name)
-    (setq search-bound (point))
-    (insert " ") ; separate from following words, if any, for 
wisi-case-adjust-identifier
-    (goto-char start-point)
-    (while (search-forward "." search-bound t)
-      (forward-char -1)
-      (wisi-case-adjust-identifier)
-      (forward-char 1))
-    (goto-char search-bound)
-    (wisi-case-adjust-identifier)
-    (delete-char 1)))
-
-(defun ada-fix-add-use-type (type)
-  "Insert `use type' clause for TYPE at start of declarative part for current 
construct."
-  (ada-goto-declarative-region-start); leaves point after 'is'
-  (newline-and-indent)
-  (cl-ecase ada-language-version
-    (ada2012
-     (insert "use all type "))
-    ((ada83 ada95 ada2005)
-     (insert "use type ")))
-  (let ((begin (point))
-       end)
-    (insert type ";")
-    (setq end (point))
-    (goto-char begin)
-    (while (< (point) end)
-      (wisi-case-adjust-at-point)
-      (forward-char 1))
-    ))
-
-(defun ada-fix-add-use (package)
-  "Insert `use' clause for PACKAGE at start of declarative part for current 
construct."
-  (ada-goto-declarative-region-start); leaves point after 'is'
-  (newline-and-indent)
-  (insert "use " package ";"))
-
-;;;; xref
-
-(defvar ada-xref-tool (if (locate-file "gpr_query" exec-path '("" ".exe")) 
'gpr_query 'gnat)
-  "Default Ada cross reference tool; can be overridden in project files.")
-
-(defconst ada-xref-known-tools '(gpr_query gnat)
-  "Supported xref tools")
-
-(defun ada-make-subprogram-body ()
-  "Convert subprogram specification after point into a subprogram body stub."
-  (interactive)
-  (wisi-goto-statement-start)
-  ;; point is at start of subprogram specification;
-  ;; wisi-parse-expand-region will find the terminal semicolon.
-  (wisi-validate-cache (point-min) (point-max) t 'navigate)
-
-  (let* ((begin (point))
-        (end (wisi-cache-end (wisi-get-cache (point))))
-        (name (wisi-next-name)))
-    (goto-char end)
-    (newline)
-    (insert " is begin\n\nend ");; legal syntax; parse does not fail
-    (insert name)
-    (forward-char 1)
-
-    ;; newline after body to separate from next body
-    (newline-and-indent)
-    (indent-region begin (point))
-    (forward-line -2)
-    (back-to-indentation)
-    ))
-
-(defun ada-ff-create-body ()
-  ;; ff-find-other-file calls this with point in an empty buffer for
-  ;; the body file; ada-make-package-body expects to be in the
-  ;; spec. So go back to the spec, and delete the body buffer so it
-  ;; does not get written to disk.
-  (let ((body-buffer (current-buffer))
-       (body-file-name (buffer-file-name))
-       (prj (ada-prj-require-prj)))
-
-    (set-buffer-modified-p nil);; may have a skeleton; allow silent delete
-
-    (ff-find-the-other-file);; back to spec
-
-    (kill-buffer body-buffer)
-
-    (ada-compiler-make-package-body (ada-prj-compiler prj) prj body-file-name)
-
-    ;; back to the new body file, read in from the disk.
-    (ff-find-the-other-file)
-    (revert-buffer t t))
-  )
-
-;;;; project files
-
-(cl-defstruct
-    (ada-prj
-     (:include wisi-prj)
-     (:copier nil)
-     (:constructor nil)
-     (:constructor make-ada-prj
-                  (&key
-                   name
-                   compile-env
-                   (compiler-label ada-compiler)
-                   (xref-label ada-xref-tool)
-                   source-path
-                   plist
-                   file-pred
-                   &aux
-                   (compiler (ada-prj-make-compiler compiler-label))
-                   (xref (ada-prj-make-xref xref-label))
-                   (compile-env (ada-prj-check-env compile-env))
-                   )))
-  compiler-label
-  xref-label
-  ;; save labels for wisi-prj-default
-
-  plist    ;; user-declared project variables; also obj_dir, mostly as an 
example.
-  )
-
-;;;###autoload
-(cl-defun create-ada-prj
-    (&key
-     name
-     compile-env
-     (compiler-label ada-compiler)
-     (xref-label ada-xref-tool)
-     source-path
-     plist
-     file-pred)
-  ;; We declare and autoload this because we can't autoload
-  ;; make-ada-prj in emacs < 27. We can't use '(defalias
-  ;; 'create-ada-prj 'make-ada-prj); then make-ada-prj is not defined
-  ;; by autoload.
-  (make-ada-prj
-   :name name
-   :compile-env compile-env
-   :compiler-label compiler-label
-   :xref-label xref-label
-   :source-path source-path
-   :plist plist
-   :file-pred file-pred))
-
-(defun ada-prj-check-env (env)
-  "Check that ENV has the proper structure; list of \"NAME=VALUE\".
-Return ENV."
-  ;; Previous versions used ("NAME" . "VALUE"), which screws up.
-  (let ((err-msg "env is not list of \"NAME=VALUE\"."))
-    (unless (listp env)
-      (error err-msg))
-    (dolist (item env)
-      (unless (stringp item)
-       (error err-msg))))
-  env)
-
-(defvar ada-prj-default-list nil
-  ;; This is used by ada-build.el; we keep it to allow other similar
-  ;; uses.
-  "List of functions to add default project variables. Called
-with one argument; the project. `default-directory' is set to the
-directory containing the project file. Function should update the
-project.")
-
-;;;###autoload
-(defun ada-prj-default (&optional name src-dir)
-  "Return the default `ada-prj' object.
-If SRC-DIR is non-nil, use it as the default for project.source-path."
-  (let ((project
-        (make-ada-prj
-         :name (or name "_default_")
-         :compiler-label  ada-compiler
-         :xref-label      ada-xref-tool
-         :source-path    (cond
-                          ((null src-dir) nil)
-                          ((listp src-dir) src-dir)
-                          (t (list src-dir)))
-         )))
-
-    (cl-dolist (func ada-prj-default-list)
-      (funcall func project))
-
-    project))
-
-(cl-defmethod wisi-prj-default ((prj ada-prj))
-  (let ((project
-        (make-ada-prj
-         :name           (wisi-prj-name prj)
-         :compile-env    (wisi-prj-compile-env prj)
-         :compiler-label (ada-prj-compiler-label prj)
-         :xref-label     (ada-prj-xref-label prj)
-         )))
-
-    (cl-dolist (func ada-prj-default-list)
-      (funcall func project))
-
-    project))
-
-;;;###autoload
-(defun ada-prj-make-compiler (label)
-  ;; We use the autoloaded constructor here
-  (require (intern (format "ada-compiler-%s" (symbol-name label))))
-  (funcall (intern (format "create-%s-compiler" (symbol-name label)))))
-
-(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))))
-  )
-
-(defun ada-prj-require-prj ()
-  "Return current `ada-prj' object.
-Throw an error if current project is not an ada-prj."
-  (let ((prj (project-current)))
-    (if (ada-prj-p prj)
-       prj
-      (error "current project is not an ada project."))))
-
-(cl-defmethod wisi-prj-parse-one :after (project name value)
-  (cond
-   ;; variable name alphabetical order
-   ((string= name "ada_compiler")
-    (let ((comp (intern value)))
-      (setf (ada-prj-compiler project) (ada-prj-make-compiler comp))))
-
-   ((string= name "obj_dir")
-    (let ((obj-dir (plist-get (ada-prj-plist project) 'obj_dir)))
-      (cl-pushnew (file-name-as-directory (expand-file-name value))
-                 obj-dir :test #'equal)
-      (setf (ada-prj-plist project) (plist-put (ada-prj-plist project) 
'obj_dir obj-dir))
-      ))
-
-   ((string= name "xref_tool")
-    ;; This is defined here, rather than in wisi, because the list of
-    ;; xref tools is likely to be language-specific (but not always;
-    ;; for example Gnu global supports many languages).
-    (let ((xref-label (intern value)))
-      (if (memq xref-label ada-xref-known-tools)
-         (progn
-           (setf (ada-prj-xref-label project) xref-label)
-           (setf (ada-prj-xref project) (ada-prj-make-xref xref-label)))
-
-       (user-error "'%s' is not a recognized xref tool (must be one of %s)"
-                   xref-label ada-xref-known-tools))
-      ))
-   ))
-
-(defun ada-prj-parse-undefined (project name value)
-  "For `wisi-prj-parse-undefined-function'."
-  ;; Otherwise undefined names are set as a project file variable.
-  ;; eg "comp_opt"
-  ;;
-  ;; This is defined here, rather than in wisi, because we only
-  ;; maintain it for compatibility with previous ada-mode versions.
-  ;;
-  ;; We assume any repeated names are lists
-  (let ((prev (plist-get (ada-prj-plist project) (intern name))))
-    (if prev
-       (setf (ada-prj-plist project)
-             (plist-put (ada-prj-plist project)
-                        (intern name)
-                        (append (if (listp prev) prev (list prev))
-                                (list value))))
-
-      (setf (ada-prj-plist project)
-           (plist-put
-            (ada-prj-plist project)
-            (intern name)
-            value)))
-    ))
-
-;; This is autoloaded because it is often used in Makefiles, and thus
-;; will be the first ada-mode function executed.
-;;;###autoload
-(defun ada-select-prj-file (prj-file)
-  ;; not ada-prj-select-file for backward compatibility
-  "Select PRJ-FILE as the current project file, parsing it if necessary.
-Deselects the current project first."
-  (wisi-prj-select-cache prj-file (ada-prj-default "")))
-(make-obsolete 'ada-select-prj-file 'wisi-prj-select-cache "ada-mode 7.0")
-
-(cl-defgeneric ada-prj-select-compiler (compiler project)
-  "PROJECT has been selected; set any project options that are both Ada and 
compiler specific.")
-
-(cl-defgeneric ada-prj-deselect-compiler (compiler project)
-  "PROJECT has been deselected; unset any project options that are both Ada 
and compiler specific.")
-
-(cl-defmethod wisi-prj-select :after ((project ada-prj))
-  (ada-prj-select-compiler (ada-prj-compiler project) project))
-
-(cl-defmethod wisi-prj-deselect :before ((project ada-prj))
-  (ada-prj-deselect-compiler (ada-prj-compiler project) project))
-
-(cl-defmethod wisi-prj-identifier-at-point ((_project ada-prj))
-  ;; Handle adjacent operator/identifer like:
-  ;; test/ada_mode-slices.adb
-  ;;   D1, D2 : Day := +Sun;
-  ;;
-  ;; For operators, return quoted operator
-
-  (cond
-   ((wisi-in-comment-p)
-    nil)
-
-   ((wisi-in-string-p)
-    ;; In an operator, or a string literal
-    (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
-      nil)
-     )))
-
-   ((looking-at (concat "\"\\(" ada-operator-re "\\)\""))
-    (list (match-beginning 0) (match-end 0) (match-string-no-properties 0)))
-
-   ((looking-at ada-operator-re)
-    (list (match-beginning 0) (match-end 0) (concat "\"" 
(match-string-no-properties 0) "\"")))
-
-   ((or (memq (syntax-class (syntax-after (1- (point)))) '(2 3))
-       (memq (syntax-class (syntax-after (point))) '(2 3)))
-    ;; word or symbol syntax.
-    (let (start)
-      (skip-syntax-backward "w_")
-      (setq start (point))
-      (skip-syntax-forward "w_")
-      (list start (point) (buffer-substring-no-properties start (point)))))
-
-   (t
-    nil)
-   ))
-
-;;;; initialization
-(push (cons "adp" #'wisi-prj-parse-file-1) wisi-prj-parser-alist)
-
-(add-to-list 'wisi-prj-file-extensions "adp")
-
-(provide 'ada-core)
-;; ada-core.el ends here
diff --git a/packages/ada-mode/ada-gnat-xref.el 
b/packages/ada-mode/ada-gnat-xref.el
deleted file mode 100644
index 8b3b340..0000000
--- a/packages/ada-mode/ada-gnat-xref.el
+++ /dev/null
@@ -1,317 +0,0 @@
-;;; ada-gnat-xref.el --- Ada mode cross-reference functionality provided by 
'gnat xref'  -*- lexical-binding:t -*-
-;;
-;; These tools are all Ada-specific; see gpr-query for multi-language
-;; GNAT cross-reference tools.
-;;
-;; GNAT is provided by AdaCore; see http://libre.adacore.com/
-;;
-;;; Copyright (C) 2012 - 2020  Free Software Foundation, Inc.
-;;
-;; Author: Stephen Leake <stephen_leake@member.fsf.org>
-;; Maintainer: Stephen Leake <stephen_leake@member.fsf.org>
-;;
-;; This file is part of GNU Emacs.
-;;
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-;;
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-;;
-;;; Usage:
-;;
-;; Emacs should enter Ada mode automatically when you load an Ada
-;; file, based on the file extension.
-;;
-;; By default, ada-mode is configured to load this file, so nothing
-;; special needs to done to use it.
-
-(require 'compile)
-(require 'gnat-core)
-
-;;;;; code
-
-;;;; uses of gnat tools
-
-(defconst gnatxref-buffer-name-prefix "*gnatxref-")
-
-(defconst ada-gnat-file-line-col-regexp "\\(.*\\):\\([0-9]+\\):\\([0-9]+\\)")
-
-(defconst ada-gnat-file-line-col-type-regexp
-  (concat ada-gnat-file-line-col-regexp ": +\\(?:(\\(.*\\))\\)?")
-  "Regexp matching <file>:<line>:<column> (<type>)")
-
-(cl-defstruct (gnatxref-xref (:include gnat-compiler))
-  ;; no new slots
-  )
-
-;;;###autoload
-(cl-defun create-gnat-xref
-    (&key
-     gpr-file
-     run-buffer-name
-     project-path
-     target
-     runtime
-     gnat-stub-opts
-     gnat-stub-cargs)
-  ;; See note on `create-ada-prj' for why this is not a defalias.
-  (make-gnatxref-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
-   ))
-
-(cl-defmethod wisi-xref-parse-one ((xref gnatxref-xref) project name value)
-  (wisi-compiler-parse-one xref project name value))
-
-(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:
-    ;;
-    ;; In both cases, gnat find wants the operators quoted, and the
-    ;; column on the +. Gnat column is one-indexed; emacs is 0 indexed.
-    ;;
-    ;; In the first case, the front end passes in a column on the leading ", 
so we add one.
-    ;;
-    ;; In the second case, the front end passes in a column on the +
-    (cond
-     ((= ?\" (char-after (point)))
-      ;; test/ada_mode-slices.adb
-      ;; function "+" (Left : in Day; Right : in Integer) return Day;
-      (+ 2 col))
-
-     (t
-      ;; test/ada_mode-slices.adb
-      ;; D1, D2 : Day := +Sun;
-      (+ 1 col))
-     ))
-
-   (t
-    ;; Gnat column is one-indexed; emacs is 0 indexed.
-    (+ 1 col))
-   ))
-
-(defun ada-gnat-xref-common-cmd (project)
-  "Returns the gnatfind command to run to find cross-references."
-  (format "%sgnatfind" (or (gnat-compiler-target (wisi-prj-xref project)) "")))
-
-(defun ada-gnat-xref-common-args (project identifier file line col)
-  "Returns a list of arguments to pass to gnatfind.  Some
-elements of the result may be nil."
-  (list "-a"
-        (when wisi-xref-full-path "-f")
-       ;; 'gnatfind' does not take a gnat project file argument. We
-       ;; assue you are not using gnatxref if you are using a gnat
-       ;; project file; use gpr_query.
-        (when (wisi-prj-source-path project)
-          (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:%s:%s"
-                identifier
-                (file-name-nondirectory file)
-                (or line "")
-                (or (ada-gnat-xref-adj-col identifier col) ""))))
-
-(defun ada-gnat-xref-refs (project item all)
-  (with-slots (summary location) item
-    (with-slots (file line column) location
-      (let* ((wisi-xref-full-path t)
-            (args (cons "-r" (ada-gnat-xref-common-args project summary file 
line column)))
-            (result nil))
-       (with-current-buffer (gnat-run-buffer project 
(gnat-compiler-run-buffer-name (wisi-prj-xref project)))
-         (gnat-run project (ada-gnat-xref-common-cmd project) args)
-
-         (goto-char (point-min))
-         (when ada-gnat-debug-run (forward-line 2)); skip ADA_PROJECT_PATH, 
'gnat find'
-
-         (while (not (eobp))
-           (cond
-            ((looking-at ada-gnat-file-line-col-type-regexp)
-             ;; process line
-             (let ((found-file (match-string 1))
-                   (found-line (string-to-number (match-string 2)))
-                   (found-col  (string-to-number (match-string 3)))
-                   (found-type (match-string 4)))
-               (when (or all found-type)
-                 (push (xref-make (if found-type
-                                      (concat summary " " found-type)
-                                    summary)
-                                  (xref-make-file-location found-file 
found-line found-col))
-                       result))
-               ))
-            (t
-             ;; ignore line
-             ))
-           (forward-line 1)))
-       (nreverse result) ;; specs first.
-       ))))
-
-(cl-defmethod wisi-xref-definitions (_xref project item)
-  (ada-gnat-xref-refs project item nil))
-
-(cl-defmethod wisi-xref-references (_xref project item)
-  (ada-gnat-xref-refs project item t))
-
-(cl-defmethod wisi-xref-other ((_xref gnatxref-xref) project &key identifier 
filename line column)
-  (let* ((wisi-xref-full-path t)
-        (cmd (ada-gnat-xref-common-cmd project))
-        (args (ada-gnat-xref-common-args project identifier filename line 
column))
-        (result nil))
-    (with-current-buffer (gnat-run-buffer project 
(gnat-compiler-run-buffer-name (wisi-prj-xref project)))
-      (gnat-run project cmd args)
-
-      (goto-char (point-min))
-      (when ada-gnat-debug-run (forward-line 2)); skip ADA_PROJECT_PATH, 'gnat 
find'
-
-      ;; gnat find returns two items; the starting point, and the 'other' point
-      (unless (looking-at (concat ada-gnat-file-line-col-regexp ":"))
-       ;; no results
-       (error "'%s' not found in cross-reference files; recompile?" 
identifier))
-
-      (while (not result)
-       (looking-at (concat ada-gnat-file-line-col-regexp "\\(: warning:\\)?"))
-       (if (match-string 4)
-           ;; error in *.gpr; ignore here.
-           (forward-line 1)
-         ;; else process line
-         (let ((found-file (match-string 1))
-               (found-line (string-to-number (match-string 2)))
-               (found-col  (string-to-number (match-string 3))))
-           ;; Sometimes gnatfind does not respect "-f" (test/ada_mode.ads 
Separate_Procedure full body)
-           (unless (file-name-absolute-p found-file)
-             (setq found-file (locate-file found-file 
compilation-search-path)))
-
-           (if (not
-                (and
-                 ;; due to symbolic links, only the non-dir filename is 
comparable.
-                 (equal (file-name-nondirectory filename) 
(file-name-nondirectory found-file))
-                 (= line found-line)
-                 (= (ada-gnat-xref-adj-col identifier column) found-col)))
-               ;; Found other item.
-               (setq result (list found-file found-line (1- found-col)))
-             ;; else keep searching
-             (forward-line 1))
-           ))
-
-       (when (eobp)
-         (error "gnat find did not return other item"))
-       ))
-    result))
-
-(cl-defmethod wisi-xref-parents ((_xref gnatxref-xref) project &key identifier 
filename line column)
-  (let* ((arg (ada-gnat-xref-common-args project identifier filename line 
column))
-        (result nil))
-    (with-current-buffer (gnat-run-buffer project 
(gnat-compiler-run-buffer-name (wisi-prj-xref project)))
-      (gnat-run project (ada-gnat-xref-common-cmd project) (cons "-d" arg))
-
-      (goto-char (point-min))
-      (when ada-gnat-debug-run (forward-line 2)); skip GPR_PROJECT_PATH, 'gnat 
find'
-
-      ;; gnat find returns two items; the starting point, and the 'other' point
-      (unless (looking-at (concat ada-gnat-file-line-col-regexp ":"))
-       ;; no results
-       (error "'%s' not found in cross-reference files; recompile?" 
identifier))
-
-      (while (not result)
-       (looking-at (concat ada-gnat-file-line-col-regexp "\\(: warning:\\)?"))
-       (if (match-string 4)
-           ;; error in *.gpr; ignore here.
-           (forward-line 1)
-         ;; else process line
-         (skip-syntax-forward "^ ")
-         (skip-syntax-forward " ")
-         (if (looking-at (concat "derived from .* (" 
ada-gnat-file-line-col-regexp ")"))
-             ;; found other item
-             (setq result (list (match-string 1)
-                                (string-to-number (match-string 2))
-                                (1- (string-to-number (match-string 3)))))
-           (forward-line 1))
-         )
-       (when (eobp)
-         (error "gnat find did not return parent types"))
-       ))
-
-    (wisi-goto-source (nth 0 result)
-                     (nth 1 result)
-                     (nth 2 result))
-    ))
-
-(cl-defmethod wisi-xref-all ((_xref gnatxref-xref) project &key identifier 
filename line column local-only append)
-  ;; we use `compilation-start' to run gnat, not `gnat-run', so it
-  ;; is asynchronous, and automatically runs the compilation error
-  ;; filter.
-
-  (let* ((arg (ada-gnat-xref-common-args project identifier filename line 
column)))
-    (setq arg (cons "-r" arg))
-    (when local-only (setq arg (append arg (list filename))))
-
-    (with-current-buffer (gnat-run-buffer project 
(gnat-compiler-run-buffer-name (wisi-prj-xref project)))
-      (let ((compilation-buffer-name "*gnatfind*")
-            (compilation-error "reference")
-            (command-and-args (mapconcat (lambda (a) (or a ""))
-                                         (cons (ada-gnat-xref-common-cmd 
project) arg)
-                                         " "))
-           ;; gnat find uses standard gnu format for output, so don't
-           ;; need to set compilation-error-regexp-alist
-           prev-pos
-           prev-content)
-
-       ;; compilation-environment is set in `wisi-prj-select'
-
-       ;; WORKAROUND: the 'compilation' API doesn't let us specify "append", 
so we use this.
-       (with-current-buffer (get-buffer-create compilation-buffer-name)
-         (when append
-           (setq prev-pos (point))
-           (setq prev-content (buffer-substring (point-min) (point-max))))
-
-          (unless ada-gnat-debug-run
-           ;; hide the command and arguments using text properties, show only 
the bare minimum
-           (setq command-and-args
-                 (propertize command-and-args
-                             'display
-                             (format "References to %s at %s:%d:%d" identifier 
filename line column))))
-         (compilation-start command-and-args
-                            'compilation-mode
-                            (lambda (_name) compilation-buffer-name))
-         (when append
-           (let ((inhibit-read-only t))
-               (goto-char (point-min))
-               (insert prev-content)
-               (goto-char prev-pos))))
-       ))))
-
-(cl-defmethod wisi-xref-overriding ((_xref gnatxref-xref) _project &key 
_identifier _filename _line _column)
-  (error "gnatxref does not support 'show overriding' - use gpr_query?"))
-
-(cl-defmethod wisi-xref-overridden ((_xref gnatxref-xref) _project &key 
_identifier _filename _line _column)
-  (error "gnatxref does not support 'show overridden' - use gpr_query?"))
-
-(provide 'ada-gnat-xref)
-;; end of file
diff --git a/packages/ada-mode/ada-imenu.el b/packages/ada-mode/ada-imenu.el
deleted file mode 100644
index 06d9595..0000000
--- a/packages/ada-mode/ada-imenu.el
+++ /dev/null
@@ -1,77 +0,0 @@
-;;; ada-imenu.el - Ada mode interface to imenu for Ada Mode  -*- 
lexical-binding:t -*-
-
-;; Copyright (C) 2012, 2013, 2015, 2019  Free Software Foundation, Inc.
-;;
-;; Author: Simon Wright <simon@pushface.org>
-;; Contributors: see ada-mode.el, and specifically Christian Egli
-;;     <Christian.Egli@hcsd.hac.com> for ada-imenu-generic-expression
-;;
-;; This file is part of GNU Emacs.
-;;
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-;;
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-;;
-;;; History: see ada_mode.el
-;;
-
-(require 'ada-core)
-(require 'imenu)
-
-(defconst ada--imenu-comment-re "\\([ \t]*--.*\\)?")
-
-(defconst ada--imenu-subprogram-menu-re
-  (concat "^[ \t]*\\(overriding[ \t]*\\)?\\(procedure\\|function\\)[ \t\n]+"
-         "\\(\\(\\sw\\|_\\)+\\)[ \t\n]*\\([ \t\n]\\|([^)]+)"
-         ada--imenu-comment-re
-         "\\)[ \t\n]*"
-         "\\(return[ \t\n]+\\(\\sw\\|[_.]\\)+[ \t\n]*\\)?is[ \t\n]"))
-
-(defvar ada--imenu-generic-expression
-  (list
-   (list nil ada--imenu-subprogram-menu-re 3)
-   (list "*Specs*"
-        (concat
-         "^[ \t]*\\(procedure\\|function\\)[ \t\n]+\\(\\(\\sw\\|_\\)+\\)"
-         "\\("
-         "\\(" ada--imenu-comment-re "[ \t\n]+\\|[ \t\n]*([^)]+)"
-         ada--imenu-comment-re "\\)";; parameter list or simple space
-         "\\([ \t\n]*return[ \t\n]+\\(\\sw\\|[_.]\\)+[ \t\n]*\\)?"
-         "\\)?;") 2)
-   '("*Tasks*" "^[ \t]*task[ \t]+\\(type[ \t]+\\)?\\(\\(body[ 
\t]+\\)?\\(\\sw\\|_\\)+\\)" 2)
-   '("*Type Defs*" "^[ \t]*\\(sub\\)?type[ \t]+\\(\\(\\sw\\|_\\)+\\)" 2)
-   '("*Protected*"
-     "^[ \t]*protected[ \t]+\\(type[ \t]+\\)?\\(\\(body[ 
\t]+\\)?\\(\\sw\\|_\\)+\\)" 2)
-   '("*Packages*" "^[ \t]*package[ \t]+\\(\\(body[ 
\t]+\\)?\\(\\sw\\|[_.]\\)+\\)" 1))
-  "Imenu generic expression for Ada mode.
-See `imenu-generic-expression'.  This variable will create several submenus for
-each type of entity that can be found in an Ada file.")
-
-(defun ada--imenu-mode ()
-  ;;  In 4.01, these were called in 'ada-mode or required to be set in
-  ;;  the user's .emacs.
-
-  (setq imenu-auto-rescan t)
-  (setq imenu-case-fold-search t)
-  (setq imenu-generic-expression ada--imenu-generic-expression)
-  (setq imenu-sort-function 'imenu--sort-by-name)
-  (setq imenu-use-markers nil)
-
-  (imenu-add-to-menubar "Entities")
-)
-
-;; ada--imenu-mode does not depend on file local variables
-(add-hook 'ada-mode-hook #'ada--imenu-mode)
-
-(provide 'ada-imenu)
-
-;;; ada-imenu.el ends here
diff --git a/packages/ada-mode/ada-indent-user-options.el 
b/packages/ada-mode/ada-indent-user-options.el
deleted file mode 100644
index 0169d00..0000000
--- a/packages/ada-mode/ada-indent-user-options.el
+++ /dev/null
@@ -1,197 +0,0 @@
-;; user options shared by Ada mode indentation engines  -*- lexical-binding:t 
-*-
-;;
-;; Copyright (C) 2012, 2013, 2015, 2017 - 2020  Free Software Foundation, Inc.
-;;
-;; Author: Stephen Leake <stephen_leake@member.fsf.org>
-;; Contributors: Simon Wright <simon.j.wright@mac.com>
-;;
-;; This file is part of GNU Emacs.
-;;
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-;;
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-;;
-;;; History: see ada_mode.el
-
-;;;; code
-
-(defgroup ada-indentation nil
-  "Indentation options for Ada source."
-  :group 'ada)
-
-(defcustom ada-indent 3
-  "Size of Ada default indentation, when no other indentation is used.
-
-Example :
-procedure Foo is
-begin
->>>null;"
-  :type 'integer
-  :safe #'integerp)
-(make-variable-buffer-local 'ada-indent)
-
-(defcustom ada-indent-broken 2
-  "Indentation for the continuation of a broken line.
-
-Example :
-   My_Var : My_Type :=
-   >>(Field1 => Value);"
-  :type 'integer
-  :safe #'integerp)
-(make-variable-buffer-local 'ada-indent-broken)
-
-(defcustom ada-indent-comment-col-0 nil
-  "If non-nil, comments currently starting in column 0 are left in column 0.
-Otherwise, they are indented with previous comments or code."
-  :type 'boolean
-  :safe #'booleanp)
-(make-variable-buffer-local 'ada-indent-comment-col-0)
-
-(defcustom ada-indent-comment-gnat nil
-  "If non-nil, comments are indented to meet the GNAT comment style check.
-That is, one of:
-
-- multiple of ada-indent
-- next non-blank line
-- previous non-blank line
-
-Otherwise, they are indented as previous comments or code."
-  :type  'boolean
-  :safe  #'booleanp)
-(make-variable-buffer-local 'ada-indent-comment-gnat)
-
-(defcustom ada-indent-label -3
-  "Indentation for a loop, block, or statement label, relative to the item it 
labels.
-
-Example :
-   Label_1 :
-   <<<<declare
-
-   <<Label_2>>
-   <<<<Foo := 0;"
-  :type  'integer
-  :safe  #'integerp)
-(make-variable-buffer-local 'ada-indent-label)
-
-(defcustom ada-indent-record-rel-type 3
-  "Indentation for line containing `record' relative to `type' or `for'.
-
-An example is:
-   type A is
-   >>>record"
-  :type 'integer
-  :safe #'integerp)
-(make-variable-buffer-local 'ada-indent-record-rel-type)
-
-(defcustom ada-indent-renames 2
-  "Indentation for `renames' relative to the subprogram keyword.
-
-For `renames' of non-subprograms the indentation is
-`ada-indent-broken' relative to the start of the statement.
-
-If the subprogram has parameters then if `ada-indent-renames' is
-zero or less the indentation is abs `ada-indent-renames' relative
-to the open parenthesis; if `ada-indent-renames' is one or more
-the indentation is relative to the line containing the subprogram
-keyword ('function' or 'procedure').
-
-If the subprogram has no parameters then the indentation is
-`ada-indent-broken' relative to the line containing the keyword.
-
-Examples:
-   ada-indent-renames = 2
-   generic function A (B : Integer) return C
-   >>renames Foo;
-
-   ada-indent-renames = -1
-   function A (B : Integer)
-               return C
-   >>>>>>>>>>>renames Foo;"
-  :type 'integer
-  :safe #'integerp)
-(make-variable-buffer-local 'ada-indent-renames)
-
-(defcustom ada-indent-return 0
-  "Indentation for `return' relative to the matching `function' keyword.
-
-If the function has parameters, then if `ada-indent-return' is
-zero or less, the indentation is abs `ada-indent-return' relative
-to the open parenthesis; if `ada-indent-return' is one or more,
-indentation is relative to line containing `function'.
-
-If the function has no parameters, `ada-indent-broken' is used
-relative to line containing `function'.
-
-An example is:
-   function A (B : Integer)
-   >>>>>>>>>>>return C;"
-  :type 'integer
-  :safe #'integerp)
-(make-variable-buffer-local 'ada-indent-return)
-
-(defcustom ada-indent-use ada-indent-broken
-  "Indentation for the lines in a `use' statement.
-
-An example is:
-   use Ada.Text_IO,
-   >>Ada.Numerics;"
-  :type 'integer
-  :safe #'integerp)
-(make-variable-buffer-local 'ada-indent-use)
-
-(defcustom ada-indent-when 3
-  "Indentation for `when' relative to `exception', `case', `or' in select.
-
-An example is:
-   case A is
-   >>>when B =>"
-  :type  'integer
-  :safe  #'integerp)
-(make-variable-buffer-local 'ada-indent-when)
-
-(defcustom ada-indent-with ada-indent-broken
-  "Indentation for the lines in a `with' context clause.
-
-An example is:
-   with Ada.Text_IO,
-   >>Ada.Numerics;"
-  :type 'integer
-  :safe #'integerp)
-(make-variable-buffer-local 'ada-indent-with)
-
-(defcustom ada-indent-hanging-rel-exp nil
-  "If nil, indent hanging lines in an expression relative to the first line.
-Otherwise, indent by `ada-indent-broken' relative to the start of the 
expression."
-  :type 'boolean
-  :safe #'booleanp)
-(make-variable-buffer-local 'ada-indent-hanging-rel-exp)
-
-(defcustom ada-indent-after-trailing-comment t
- "If t, align comment lines imediately following a comment on the
- same line as code with the preceding comment. Otherwise, ignore
- the preceding comment."
-  :type 'boolean
-  :safe #'booleanp)
-(make-variable-buffer-local 'ada-indent-after-trailing-comment)
-
-(defcustom ada-end-name-optional nil
-  "If t, names at ends of blocks/subprograms are optional (as in
-standard Ada). If nil, they are required; this helps in error
-recovery, and matches the gnat style option -gnatye.
-Default is nil because it significantly improves error recovery."
-  :type 'boolean
-  :safe #'booleanp)
-(make-variable-buffer-local 'ada-indent-hanging-rel-exp)
-
-(provide 'ada-indent-user-options)
-
-;; end file
diff --git a/packages/ada-mode/ada-mode.el b/packages/ada-mode/ada-mode.el
deleted file mode 100644
index ae4cbd2..0000000
--- a/packages/ada-mode/ada-mode.el
+++ /dev/null
@@ -1,1690 +0,0 @@
-;;; ada-mode.el --- major-mode for editing Ada sources  -*- lexical-binding:t 
-*-
-;;
-;; Copyright (C) 1994, 1995, 1997 - 2020  Free Software Foundation, Inc.
-;;
-;; Author: Stephen Leake <stephen_leake@stephe-leake.org>
-;; Maintainer: Stephen Leake <stephen_leake@stephe-leake.org>
-;; Keywords: languages
-;;  ada
-;; Version: 7.1.4
-;; package-requires: ((uniquify-files "1.0.1") (wisi "3.1.2") (emacs "25.0"))
-;; url: http://www.nongnu.org/ada-mode/
-;;
-;; This file is part of GNU Emacs.
-;;
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-;;
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-;;
-;;; Usage:
-;;
-;; Emacs should enter Ada mode automatically when you load an Ada
-;; file, based on the file extension.  The default extensions for Ada
-;; files are .ads, .adb; use ada-add-extensions to add other
-;; extensions.
-;;
-;; By default, ada-mode is configured to take full advantage of the
-;; GNAT compiler.  If you are using another compiler, you
-;; should load that compiler's ada-* file first.
-;;
-;; See the user guide (info "ada-mode"), built from ada-mode.texi.
-
-;;; Design:
-;;
-;; In order to support multiple compilers, and different compilers for
-;; different projects, we use cl-defgeneric function calls for all
-;; operations that depend on the compiler.  The user variable
-;; `ada-compiler' selects which compiler to use; it can be overridden
-;; by the "ada_compiler" setting in project files.
-;;
-;; We also support a cross reference tool (also called xref tool) that
-;; is different from the compiler. For example, you can use a local
-;; GNAT compiler to generate and access cross-reference information,
-;; while using a cross-compiler for compiling the final
-;; executable. The user variable `ada-xref-tool' selects the xref
-;; tool; it can be overridden by the "xref_tool" setting in project
-;; files.
-;;
-;; The indentation engine and skeleton tools are from the wisi
-;; package.
-;;
-;;; History:
-;;
-;; The first Ada mode for GNU Emacs was written by V. Broman in
-;; 1985. He based his work on the already existing Modula-2 mode.
-;; This was distributed as ada.el in versions of Emacs prior to 19.29.
-;;
-;; Lynn Slater wrote an extensive Ada mode in 1989. It consisted of
-;; several files with support for dired commands and other nice
-;; things.
-;;
-;; The probably very first Ada mode (called electric-ada.el) was
-;; written by Steven D. Litvintchouk and Steven M. Rosen for the
-;; Gosling Emacs. L. Slater based his development on ada.el and
-;; electric-ada.el.
-;;
-;; A complete rewrite by Rolf Ebert <ebert@inf.enst.fr> and Markus
-;; Heritsch <Markus.Heritsch@studbox.uni-stuttgart.de> was done at
-;; some point.  Some ideas from the Ada mode mailing list have been
-;; added.  Some of the functionality of L. Slater's mode has not (yet)
-;; been recoded in this new mode.
-;;
-;; A complete rewrite for Emacs-20 / GNAT-3.11 was done by Emmanuel
-;; Briot <briot@gnat.com> at Ada Core Technologies.
-;;
-;; A complete rewrite, to restructure the code more orthogonally, and
-;; to use wisi for the indentation engine, was done in 2012 - 2013 by
-;; Stephen Leake <stephen_leake@stephe-leake.org>.
-;;
-;; Another major refactoring, to use cl-defgeneric dispatching, was
-;; done in 2019 by Stephen Leake.
-
-;;; Credits:
-;;
-;;   Many thanks to John McCabe <john@assen.demon.co.uk> for sending so
-;;     many patches included in this package.
-;;   Christian Egli <Christian.Egli@hcsd.hac.com>:
-;;     ada-imenu-generic-expression
-;;   Many thanks also to the following persons that have contributed
-;;   to the ada-mode
-;;     Philippe Waroquiers (PW) <philippe@cfmu.eurocontrol.be> in particular,
-;;     woodruff@stc.llnl.gov (John Woodruff)
-;;     jj@ddci.dk (Jesper Joergensen)
-;;     gse@ocsystems.com (Scott Evans)
-;;     comar@gnat.com (Cyrille Comar)
-;;     robin-reply@reagans.org
-;;    and others for their valuable hints.
-
-(require 'ada-core)
-(require 'ada-indent-user-options)
-(require 'ada-process)
-(require 'ada-skel)
-(require 'align)
-(require 'cl-lib)
-(require 'compile)
-(require 'find-file)
-(require 'wisi)
-
-(defun ada-mode-version ()
-  "Return Ada mode version."
-  (interactive)
-  (let ((version-string "7.1.3"))
-    (if (called-interactively-p 'interactive)
-       (message version-string)
-      version-string)))
-
-;;;;; User variables
-
-(defcustom ada-fill-comment-prefix "-- "
-  "Comment fill prefix."
-  :group 'ada
-  :type 'string)
-(make-variable-buffer-local 'ada-fill-comment-prefix)
-
-(defcustom ada-fill-comment-postfix " --"
-  "Comment fill postfix."
-  :group 'ada
-  :type 'string)
-(make-variable-buffer-local 'ada-fill-comment-postfix)
-
-(defcustom ada-fill-comment-adaptive nil
-  "If non-nil, comments are filled to the same width (not including 
indentation),
-rather than to the same column."
-  :group 'ada
-  :type 'boolean
-  :safe #'booleanp)
-
-(defcustom ada-which-func-parse-size 30000
-  "Minimum size of the region surrounding point that is parsed for 
`which-function-mode'."
-  :group 'ada
-  :type 'integer
-  :safe #'integerp)
-
-(defcustom ada-process-parse-exec "ada_mode_wisi_lr1_parse"
-  "Name of executable to use for external process Ada parser.
-There are two standard choices; ada_mode_wisi_lalr_parse and
-ada_mode_wisi_lr1_parse. The LR1 version (the default) is
-slower to load on first use, but gives better error recovery."
-  :type 'string
-  :group 'ada)
-
-(defcustom ada-process-parse-exec-opts nil
-  "List of process start options for `ada-process-parse-exec'."
-  :type 'string
-  :group 'ada)
-
-(defcustom ada-xref-full-path nil
-  "If t, cross-references show the full path to source files; if
-nil, only the file name."
-  :group 'ada
-  :type 'boolean
-  :safe #'booleanp)
-
-;;;; keymap and menus
-
-(defvar ada-mode-map
-  (let ((map (make-sparse-keymap)))
-    ;; C-c <letter> are reserved for users
-
-    ;; global-map has C-x ` 'next-error
-    (define-key map [return]    'wisi-case-adjust-interactive)
-    (define-key map "\C-c`"     'ada-show-secondary-error)
-    (define-key map "\C-c;"      (lambda () (error "use M-; instead"))) ; 
comment-dwim
-    (define-key map "\C-c<"     'ada-goto-declaration-start)
-    (define-key map "\C-c>"     'ada-goto-declaration-end)
-    (define-key map "\C-c\M-`"          'wisi-fix-compiler-error)
-    (define-key map "\C-c\C-a"          'ada-align)
-    (define-key map "\C-c\C-b"          'ada-make-subprogram-body)
-    (define-key map "\C-c\C-c"   'ada-build-make)
-    (define-key map "\C-c\C-d"          'wisi-goto-spec/body)
-    (define-key map "\C-c\M-d"          'wisi-show-declaration-parents)
-    (define-key map "\C-c\C-e"          'wisi-skel-expand)
-    (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)
-    (define-key map "\C-c\M-n"          'wisi-skel-next-placeholder)
-    (define-key map "\C-c\C-o"          'ada-find-other-file)
-    (define-key map "\C-c\C-p"          'backward-sexp)
-    (define-key map "\C-c\M-p"          'wisi-skel-prev-placeholder)
-    (define-key map "\C-c\C-q"          'wisi-refresh-prj-cache)
-    (define-key map "\C-c\C-r"          'wisi-show-references)
-    (define-key map "\C-c\M-r"          'ada-build-run)
-    (define-key map "\C-c\C-s"   'pop-global-mark)
-    (define-key map "\C-c\C-t"          'ada-find-file)
-    (define-key map "\C-c\C-v"   'ada-build-check)
-    (define-key map "\C-c\C-w"          'wisi-case-adjust-at-point)
-    (define-key map "\C-c\C-x"   'wisi-show-overriding)
-    (define-key map "\C-c\M-x"   'wisi-show-overridden)
-    (define-key map "\C-c\C-y"          'wisi-case-create-exception)
-    (define-key map "\C-c\C-\M-y" 'wisi-case-create-partial-exception)
-    (define-key map [C-down-mouse-3] 'ada-popup-menu)
-
-    (wisi-case-activate-keys map)
-
-    map
-  )  "Local keymap used for Ada mode.")
-
-(defvar ada-mode-menu (make-sparse-keymap "Ada"))
-(easy-menu-define ada-mode-menu ada-mode-map "Menu keymap for Ada mode"
-  '("Ada"
-    ("Help"
-     ["Ada Mode"             (info "ada-mode") t]
-     ["Ada Reference Manual" (info "arm2012") t]
-     ["Key bindings"         describe-bindings t]
-     )
-    ["Customize"                  (customize-group 'ada)    t]
-    ("Project files"
-     ["Find and select project ..."   ada-build-prompt-select-prj-file t]
-     ["Show project"                  wisi-prj-show                    t]
-     ["Show project file search path" wisi-prj-show-prj-path           t]
-     ["Show source file search path"  wisi-prj-show-src-path           t]
-     ["Clear current project"         wisi-prj-clear-current           t]
-    )
-    ("Build"
-     ["Next compilation error"     next-error                t]
-     ["Show secondary error"       ada-show-secondary-error  t]
-     ["Fix compilation error"      wisi-fix-compiler-error   t]
-     ["Show last parse error"      wisi-show-parse-error     t]
-     ["Check syntax"               ada-build-check       t]
-     ["Show main"                  ada-build-show-main   t]
-     ["Build"                      ada-build-make        t]
-     ["Set main and Build"         ada-build-set-make    t]
-     ["Run"                        ada-build-run         t]
-     )
-    ("Navigate"
-     ["Other file"                    ada-find-other-file          t]
-     ["Find file in project"          project-find-file            t]
-     ["Goto declaration/body"         wisi-goto-spec/body          t]
-     ["Goto next statement keyword"   forward-sexp   t]
-     ["Goto prev statement keyword"   backward-sexp   t]
-     ["Goto subprogram/package start" ada-goto-declaration-start   t]
-     ["Goto subprogram/package end"   ada-goto-declaration-end     t]
-     ["Goto declarative region start" ada-goto-declarative-region-start   t]
-     ["Goto containing statement start" wisi-goto-containing-statement-start t]
-     ["Show parent declarations"        wisi-show-declaration-parents        t]
-     ["Show all references (classwide)" xref-find-references                 t]
-     ["Show all direct references"      wisi-show-references                 t]
-     ["Show local references"         wisi-show-local-references    t]
-     ["Show overriding"               wisi-show-overriding          t]
-     ["Show overridden"               wisi-show-overridden          t]
-     ["Goto prev position current buffer" pop-to-mark-command  t]
-     ["Goto prev position other buffer"   pop-global-mark      t]
-     ["Next placeholder"              wisi-skel-next-placeholder    t]
-     ["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]
-     ["Indent containing statement" wisi-indent-containing-statement    t]
-     ["Indent file"            (indent-region (point-min) (point-max))  t]
-     ["Align"                       ada-align               t]
-     ["Comment/uncomment selection" comment-dwim            t]
-     ["Fill comment paragraph"         ada-fill-comment-paragraph           t]
-     ["Fill comment paragraph justify" (ada-fill-comment-paragraph 'full)   t]
-     ["Fill comment paragraph postfix" (ada-fill-comment-paragraph 'full t) t]
-     ["Make body for subprogram"    ada-make-subprogram-body     t]
-     )
-    ("Refactor"
-     ["Method (Object) => Object.Method"   ada-refactor-1 t]
-     ["Object.Method   => Method (Object)" ada-refactor-2 t]
-     ["Element (Object, Index) => Object (Index)" ada-refactor-3 t]
-     ["Object (Index) => Element (Object, Index)" ada-refactor-4 t]
-     )
-    ("Casing"
-     ["Create full exception"       wisi-case-create-exception t]
-     ["Create partial exception"    wisi-case-create-partial-exception t]
-     ["Adjust case at point"        wisi-case-adjust-at-point  t]
-     ["Adjust case region"          wisi-case-adjust-region    t]
-     ["Adjust case buffer"          wisi-case-adjust-buffer    t]
-     ["Show casing files list"      wisi-case-show-files       t]
-     )
-    ("Misc"
-     ["Show last parse error"         wisi-show-parse-error       t]
-     ["Refresh cross reference cache" wisi-refresh-prj-cache      t]
-     ["Restart parser"                wisi-kill-parser            t]
-     )))
-
-(easy-menu-define ada-context-menu nil
-  "Context menu keymap for Ada mode"
-  '("Ada"
-    ["Goto declaration/body"         wisi-goto-spec-body         t]
-    ["Goto next statement keyword"   forward-sexp   t]
-    ["Goto prev statement keyword"   backward-sexp   t]
-    ["Goto declarative region start" ada-goto-declarative-region-start   t]
-    ["Goto containing statement start" wisi-goto-containing-statement-start t]
-    ["Goto subprogram/package start" ada-goto-declaration-start    t]
-    ["Goto subprogram/package end"   ada-goto-declaration-end      t]
-    ["Show parent declarations"      wisi-show-declaration-parents t]
-    ["Show references"               wisi-show-references          t]
-    ["Show overriding"               wisi-show-overriding          t]
-    ["Show overridden"               wisi-show-overridden          t]
-
-    ["-"                nil nil]
-
-    ["Align"                         ada-align                  t]
-    ["Comment/uncomment selection"    comment-dwim               t]
-    ["Fill comment paragraph"        ada-fill-comment-paragraph           
(wisi-in-comment-p)]
-    ["Fill comment paragraph justify" (ada-fill-comment-paragraph 'full)   
(wisi-in-comment-p)]
-    ["Fill comment paragraph postfix" (ada-fill-comment-paragraph 'full t) 
(wisi-in-comment-p)]
-    ["Adjust case at point"          wisi-case-adjust-at-point             
(not (use-region-p))]
-    ["Adjust case region"            wisi-case-adjust-region               
(use-region-p)]
-    ["Create full case exception"     wisi-case-create-exception         t]
-    ["Create partial case exception"  wisi-case-create-partial-exception t]
-    ["Indent current statement"              wisi-indent-statement             
t]
-    ["Expand skeleton"               wisi-skel-expand                  t]
-    ["Make body for subprogram"              ada-make-subprogram-body          
t]
-    ))
-
-(defun ada-popup-menu ()
-  "Pops up `ada-context-menu'.
-When a function from the menu is called, point is where the mouse
-button was clicked."
-  (interactive)
-  (mouse-set-point last-input-event)
-  (popup-menu ada-context-menu)
-  )
-
-(easy-menu-define ada-refactor-menu nil
-  "Context menu keymap for Ada mode refactor commands."
-  '("Ada refactor"
-    ["Method (Object) => Object.Method"   ada-refactor-1 t]
-    ["Object.Method   => Method (Object)" ada-refactor-2 t]
-    ["Element (Object, Index) => Object (Index)" ada-refactor-3 t]
-    ["Object (Index) => Element (Object, Index)" ada-refactor-4 t]
-    ))
-
-(defun ada-refactor-menu-popup ()
-  "Pops up `ada-refactor-menu'."
-  (interactive)
-  (mouse-set-point last-input-event)
-  (popup-menu ada-refactor-menu))
-
-;;;; abbrev, align
-
-(defvar ada-mode-abbrev-table nil
-  "Local abbrev table for Ada mode.")
-
-(defvar ada-align-rules
-  '((ada-declaration-assign
-     (regexp  . "[^:]\\(\\s-*\\)\\(:\\)[^:]")
-     (valid   . (lambda () (ada-align-valid)))
-     (repeat . t)
-     (modes   . '(ada-mode)))
-    (ada-associate
-     (regexp  . "[^=]\\(\\s-*\\)\\(=>\\)")
-     (valid   . (lambda () (ada-align-valid)))
-     (modes   . '(ada-mode)))
-    (ada-comment
-     (regexp  . "\\(\\s-*\\)--")
-     (valid   . (lambda () (ada-align-valid)))
-     (modes   . '(ada-mode)))
-    (ada-use
-     (regexp  . "\\(\\s-*\\)\\<\\(use\\s-\\)")
-     (valid   . (lambda () (ada-align-valid)))
-     (modes   . '(ada-mode)))
-    (ada-at
-     (regexp . "\\(\\s-+\\)\\(at\\)\\_>")
-     (valid   . (lambda () (ada-align-valid)))
-     (modes . '(ada-mode))))
-  "Rules to use to align different lines.")
-
-(defun ada-align-valid ()
-  "See use in `ada-align-rules'."
-  (save-excursion
-    ;; we don't put "when (match-beginning n)" here; missing a match
-    ;; is a bug in the regexp.
-    (goto-char (or (match-beginning 2) (match-beginning 1)))
-    (not (wisi-in-string-or-comment-p))))
-
-(defconst ada-align-region-separate
-  (eval-when-compile
-    (concat
-     "^\\s-*\\($\\|\\("
-     "begin\\|"
-     "declare\\|"
-     "else\\|"
-     "end\\|"
-     "exception\\|"
-     "for\\|"
-     "function\\|"
-     "generic\\|"
-     "if\\|"
-     "is\\|"
-     "procedure\\|"
-     "private\\|"
-     "record\\|"
-     "return\\|"
-     "type\\|"
-     "when"
-     "\\)\\_>\\)"))
-  "See the variable `align-region-separate' for more information.")
-
-;;;; syntax properties
-
-(defvar ada-mode-syntax-table
-  (let ((table (make-syntax-table)))
-    ;; (info "(elisp)Syntax Class Table" "*info syntax class table*")
-    ;; (info "(elisp) Syntax Flags") for comment start/end
-    ;; make-syntax-table sets all alphanumeric to w, etc; so we only
-    ;; have to add ada-specific things.
-
-    ;; string brackets. `%' is the obsolete alternative string
-    ;; bracket (arm J.2); if we make it syntax class ", it throws
-    ;; font-lock and indentation off the track, so we use syntax class
-    ;; $.
-    (modify-syntax-entry ?%  "$" table)
-    (modify-syntax-entry ?\" "\"" table)
-
-    ;; punctuation; operators etc
-    (modify-syntax-entry ?#  "." table); based number
-    (modify-syntax-entry ?&  "." table)
-    (modify-syntax-entry ?*  "." table)
-    (modify-syntax-entry ?+  "." table)
-    (modify-syntax-entry ?-  ". 124" table); operator, double hyphen as comment
-    (modify-syntax-entry ?. "." table)
-    (modify-syntax-entry ?/  "." table)
-    (modify-syntax-entry ?:  "." table)
-    (modify-syntax-entry ?<  "." table)
-    (modify-syntax-entry ?=  "." table)
-    (modify-syntax-entry ?>  "." table)
-    (modify-syntax-entry ?@  "." table)
-    (modify-syntax-entry ?\' "." table); attribute; see ada-syntax-propertize 
for character literal
-    (modify-syntax-entry ?\; "." table)
-    (modify-syntax-entry ?\\ "." table); default is escape; not correct for 
Ada strings
-    (modify-syntax-entry ?\|  "." table)
-
-    ;; \f and \n end a comment.
-    (modify-syntax-entry ?\f  ">" table)
-    (modify-syntax-entry ?\n  ">" table)
-
-    (modify-syntax-entry ?_ "_" table); symbol constituents, not word.
-
-    (modify-syntax-entry ?\( "()" table)
-    (modify-syntax-entry ?\) ")(" table)
-
-    ;; skeleton placeholder delimiters; see ada-skel.el. We use generic
-    ;; comment delimiter class, not comment starter/comment ender, so
-    ;; these can be distinguished from line end.
-    (modify-syntax-entry ?{ "!" table)
-    (modify-syntax-entry ?} "!" table)
-
-    table
-    )
-  "Syntax table to be used for editing Ada source code.")
-
-(defun ada-syntax-propertize (start end)
-  "For `syntax-propertize-function'.
-Assign `syntax-table' properties in region START .. END.
-In particular, character constants are set to have string syntax.
-Runs `ada-syntax-propertize-hook'."
-  ;; (info "(elisp)Syntax Properties")
-  ;;
-  ;; called from `syntax-propertize', inside save-excursion 
with-silent-modifications
-  (let ((inhibit-read-only t)
-       (inhibit-point-motion-hooks t))
-    (goto-char start)
-    (save-match-data
-      (while (re-search-forward
-             (concat
-              "[^[:alnum:])]\\('\\)[^'\n]\\('\\)"; 1, 2: character literal, 
not attribute
-              "\\|[^[:alnum:])]\\('''\\)"; 3: character literal '''
-              )
-             end t)
-       ;; syntax-propertize-extend-region-functions is set to
-       ;; syntax-propertize-wholelines by default. We assume no
-       ;; coding standard will permit a character literal at the
-       ;; start of a line (not preceded by whitespace).
-       (cond
-        ((match-beginning 1)
-         (put-text-property
-          (match-beginning 1) (match-end 1) 'syntax-table '(7 . ?'))
-         (put-text-property
-          (match-beginning 2) (match-end 2) 'syntax-table '(7 . ?')))
-        ((match-beginning 3)
-         (put-text-property
-          (match-beginning 3) (1+ (match-beginning 3)) 'syntax-table '(7 . ?'))
-         (put-text-property
-          (1- (match-end 3)) (match-end 3) 'syntax-table '(7 . ?')))
-        )))
-    (run-hook-with-args 'ada-syntax-propertize-hook start end))
-  )
-
-;;;; navigation within and between files
-
-(defvar ada-body-suffixes '(".adb")
-  "List of possible suffixes for Ada body files.
-The extensions should include a `.' if needed.")
-
-(defvar ada-spec-suffixes '(".ads")
-  "List of possible suffixes for Ada spec files.
-The extensions should include a `.' if needed.")
-
-(defvar ada-other-file-alist
-  '(("\\.ads$" (".adb"))
-    ("\\.adb$" (".ads")))
-  "Alist used by `find-file' to find the name of the other package.
-See `ff-other-file-alist'.")
-
-(defconst ada-declaration-nonterms
-  '(
-    abstract_subprogram_declaration
-    entry_body
-    entry_declaration
-    expression_function_declaration
-    full_type_declaration
-    generic_instantiation
-    generic_package_declaration
-    generic_subprogram_declaration
-    null_procedure_declaration
-    object_declaration
-    package_body
-    package_declaration
-    pragma_g
-    private_extension_declaration
-    private_type_declaration
-    protected_body
-    protected_type_declaration
-    single_protected_declaration
-    single_task_declaration
-    subprogram_body
-    subprogram_declaration
-    subprogram_renaming_declaration
-    subtype_declaration
-    task_body
-    task_type_declaration
-    use_clause
-    )
-  "wisi-cache nonterminal symbols that are Ada declarations.")
-
-(defconst ada-parent-name-regexp
-  "\\([[:alnum:]_\\.]+\\)\\.[[:alnum:]_]+"
-  "Regexp for extracting the parent name from fully-qualified name.")
-
-(defun ada-ff-special-extract-parent ()
-  (setq ff-function-name (match-string 1))
-  (file-name-nondirectory
-   (or
-    (ff-get-file-name
-     compilation-search-path
-     (ada-file-name-from-ada-name ff-function-name)
-     ada-spec-suffixes)
-    (error "parent '%s' not found; set project file?" ff-function-name))))
-
-(defun ada-ff-special-with ()
-  (let ((package-name (match-string 1)))
-    (setq ff-function-name (concat 
"^\\(function\\|procedure\\|package\\)\\s-+" package-name "\\([^_]\\|$\\)"))
-    (file-name-nondirectory
-     (or
-      (ff-get-file-name
-       compilation-search-path
-       (ada-file-name-from-ada-name package-name)
-       (append ada-spec-suffixes ada-body-suffixes))
-      (error "package '%s' not found; set project file?" package-name)))
-    ))
-
-(defun ada-set-ff-special-constructs ()
-  "Add Ada-specific pairs to `ff-special-constructs'."
-  (set (make-local-variable 'ff-special-constructs) nil)
-  (mapc (lambda (pair) (add-to-list 'ff-special-constructs pair))
-       ;; Each car is a regexp; if it matches at point, the cdr is invoked.
-       ;; Each cdr should set ff-function-name to a string or regexp
-       ;; for ada-set-point-accordingly, and return the file name
-       ;; (sans directory, must include suffix) to go to.
-       (list
-        ;; Top level child package declaration (not body), or child
-        ;; subprogram declaration or body; go to the parent package.
-        (cons (concat "^\\(?:private[ 
\t]+\\)?\\(?:package\\|procedure\\|function\\)[ \t]+"
-                      ada-parent-name-regexp "\\(?:;\\|[ \t]+\\|$\\)")
-              'ada-ff-special-extract-parent)
-
-        ;; A "with" clause. Note that it may refer to a procedure body, as 
well as a spec
-        (cons (concat "^\\(?:limited[ \t]+\\)?\\(?:private[ \t]+\\)?with[ 
\t]+" ada-name-regexp)
-              'ada-ff-special-with)
-        )))
-
-(defun ada-which-function-1 (keyword add-body)
-  "Used in `ada-which-function'."
-  (let* ((result (wisi-next-name)))
-
-    ;; See comment in ada-which-function on why we don't
-    ;; overwrite ff-function-name.
-    (when (not ff-function-name)
-      (setq ff-function-name
-           (concat
-            keyword
-            (when add-body "\\s-+body")
-            "\\s-+"
-            result
-            "\\_>")))
-    result))
-
-(defun ada-which-function (&optional include-type)
-  "Return name of subprogram/task/package containing point.
-Also sets ff-function-name for ff-pre-load-hook."
-  (interactive) ;; because which-function-mode does not provide which-function 
to call intermittently!
-  ;; Fail gracefully and silently, since this could be called from
-  ;; which-function-mode.
-  (let ((parse-begin (max (point-min) (- (point) (/ ada-which-func-parse-size 
2))))
-       (parse-end   (min (point-max) (+ (point) (/ ada-which-func-parse-size 
2)))))
-    (save-excursion
-      (condition-case nil
-         (progn
-           (wisi-validate-cache parse-begin parse-end nil 'navigate)
-           (when (wisi-cache-covers-region parse-begin parse-end 'navigate)
-             (let ((result nil)
-                   (cache (ada-goto-declaration-start-1 include-type)))
-               (if (null cache)
-                   ;; bob or failed parse
-                   (setq result "")
-
-                 (when (memq (wisi-cache-nonterm cache)
-                             '(generic_package_declaration 
generic_subprogram_declaration))
-                   ;; name is after next statement keyword
-                   (setq cache (wisi-next-statement-cache cache)))
-
-                 ;; add or delete 'body' as needed
-                 (cl-ecase (wisi-cache-nonterm cache)
-                   ((entry_body entry_declaration)
-                    (setq result (ada-which-function-1 "entry" nil)))
-
-                   ((full_type_declaration private_type_declaration)
-                    (setq result (ada-which-function-1 "type" nil)))
-
-                   (package_body
-                    (setq result (ada-which-function-1 "package" nil)))
-
-                   ((package_declaration
-                     package_specification) ;; after 'generic'
-                    (setq result (ada-which-function-1 "package" t)))
-
-                   (protected_body
-                    (setq result (ada-which-function-1 "protected" nil)))
-
-                   ((protected_type_declaration single_protected_declaration)
-                    (setq result (ada-which-function-1 "protected" t)))
-
-                   ((abstract_subprogram_declaration
-                     expression_function_declaration
-                     subprogram_declaration
-                     subprogram_renaming_declaration
-                     generic_subprogram_declaration ;; after 'generic'
-                     null_procedure_declaration)
-                    (setq result (ada-which-function-1
-                                  (progn (search-forward-regexp 
"function\\|procedure")(match-string 0))
-                                  nil))) ;; no 'body' keyword in subprogram 
bodies
-
-                   (subprogram_body
-                    (setq result (ada-which-function-1
-                                  (progn (search-forward-regexp 
"function\\|procedure")(match-string 0))
-                                  nil)))
-
-                   ((single_task_declaration task_type_declaration)
-                    (setq result (ada-which-function-1 "task" t)))
-
-
-                   (task_body
-                    (setq result (ada-which-function-1 "task" nil)))
-                   ))
-               (when (called-interactively-p 'interactive)
-                 (message result))
-               result)))
-       (error "")))
-    ))
-
-(defun ada-add-log-current-function ()
-  "For `add-log-current-defun-function'."
-  ;; add-log-current-defun is typically called with point at the start
-  ;; of an ediff change section, which is before the start of the
-  ;; declaration of a new item. So go to the start of the current line
-  ;; first
-  (save-excursion
-    (back-to-indentation)
-    (ada-which-function t)))
-
-(defun ada-on-context-clause ()
-  "Return non-nil if point is on a context clause."
-  (interactive)
-  (let (cache)
-    (save-excursion
-      ;; Don't require parse of large file just for ada-find-other-file
-      (and (< (point-max) wisi-size-threshold)
-          (setq cache (wisi-goto-statement-start))
-          (memq (wisi-cache-nonterm cache) '(use_clause with_clause))
-          ))))
-
-(defun ada-goto-subunit-name ()
-  "Return non-nil if the current buffer contains a subunit.
-Also move point to the subunit name. If no subunit, leave point
-alone, return nil."
-  (interactive)
-  (wisi-validate-cache (point-min) (point-max) t 'navigate)
-
-  (let (cache
-       (name-pos nil))
-    (save-excursion
-      ;; move to top declaration
-      (goto-char (point-min))
-      (setq cache (or (wisi-get-cache (point))
-                     (wisi-forward-cache)))
-
-      (when (eq (wisi-cache-nonterm cache) 'subunit)
-       (setq name-pos (car (wisi-next-name-region))))
-      )
-    (when name-pos
-      (goto-char name-pos))
-    ))
-
-(defun ada-set-point-accordingly ()
-  "Move to the string specified in `ff-function-name', which may be a regexp,
-previously set by a file navigation command."
-  (when ff-function-name
-    (let ((done nil)
-         (found nil))
-      (goto-char (point-min))
-      ;; We are looking for an Ada declaration, so don't stop for strings or 
comments
-      ;;
-      ;; This will still be confused by multiple references; we need
-      ;; to use compiler cross reference info for more precision.
-      (while (not done)
-       (if (search-forward-regexp ff-function-name nil t)
-           (setq found (match-beginning 0))
-         ;; not in remainder of buffer
-         (setq done t))
-       (if (wisi-in-string-or-comment-p)
-           (setq found nil)
-         (setq done t)))
-      (when found
-       (goto-char found)
-       ;; different parsers find different points on the line; normalize here
-       (back-to-indentation))
-      (setq ff-function-name nil))))
-
-(defun ada-find-other-file ()
-  "Move to the corresponding declaration in another file.
-
-- If region is active, assume it contains a package name;
-  position point on that package declaration.
-
-- If point is in the start line of a non-nested child package or
-  subprogram declaration, position point on the corresponding
-  parent package specification.
-
-- If point is in a context clause line, position point on the
-  first package declaration that is mentioned.
-
-- If point is in a separate body, position point on the
-  corresponding specification.
-
-- If point is in a subprogram body or specification, position point
-  on the corresponding specification or body."
-
-  ;; ff-get-file, ff-find-other file first process
-  ;; ff-special-constructs, then run the following hooks:
-  ;;
-  ;; ff-pre-load-hook      set to ada-which-function
-  ;; ff-file-created-hook  set to ada-ff-create-body
-  ;; ff-post-load-hook     set to ada-set-point-accordingly,
-  ;;                       or to a compiler-specific function that
-  ;;                       uses compiler-generated cross reference
-  ;;                       information
-
-  (interactive)
-  (wisi-check-current-project (buffer-file-name) #'ada-prj-default)
-
-  ;; clear ff-function-name, so either ff-special-constructs or
-  ;; ada-which-function will set it.
-  (setq ff-function-name nil)
-
-  (cond
-   (mark-active
-    (setq ff-function-name (buffer-substring-no-properties (point) (mark)))
-    (ff-get-file
-     compilation-search-path
-     (ada-file-name-from-ada-name ff-function-name)
-     ada-spec-suffixes
-     nil);; other-window
-    (deactivate-mark))
-
-   ((and (not (ada-on-context-clause))
-        (ada-goto-subunit-name))
-    (call-interactively 'wisi-goto-spec/body))
-
-   (t
-    (ff-find-other-file)))
-  )
-
-;;;; Misc
-
-;; This is autoloaded because it may be used in ~/.emacs
-;;;###autoload
-(defun ada-add-extensions (spec body)
-  "Define SPEC and BODY as being valid extensions for Ada files.
-SPEC and BODY are two regular expressions that must match against
-the file name."
-  (let* ((reg (concat (regexp-quote body) "$"))
-        (tmp (assoc reg ada-other-file-alist)))
-    (if tmp
-       (setcdr tmp (list (cons spec (cadr tmp))))
-      (add-to-list 'ada-other-file-alist (list reg (list spec)))))
-
-  (let* ((reg (concat (regexp-quote spec) "$"))
-        (tmp (assoc reg ada-other-file-alist)))
-    (if tmp
-       (setcdr tmp (list (cons body (cadr tmp))))
-      (add-to-list 'ada-other-file-alist (list reg (list body)))))
-
-  (add-to-list 'auto-mode-alist
-              (cons (concat (regexp-quote spec) "\\'") 'ada-mode))
-  (add-to-list 'auto-mode-alist
-              (cons (concat (regexp-quote body) "\\'") 'ada-mode))
-
-  (add-to-list 'ada-spec-suffixes spec)
-  (add-to-list 'ada-body-suffixes body)
-
-  (when (fboundp 'speedbar-add-supported-extension)
-    (speedbar-add-supported-extension spec)
-    (speedbar-add-supported-extension body))
-  )
-
-(defun ada-show-secondary-error ()
-  "Show the next secondary file reference in the compilation buffer.
-A secondary file reference is defined by text having text
-property `ada-secondary-error'.  These can be set by
-compiler-specific compilation filters."
-  (interactive)
-
-  ;; preserving the current window works only if the frame
-  ;; doesn't change, at least on Windows.
-  (let ((start-buffer (current-buffer))
-       pos item file)
-    ;; We use `pop-to-buffer', not `set-buffer', so point is correct
-    ;; for the current window showing compilation-last-buffer, and
-    ;; moving point in that window works. But that might eat an
-    ;; `other-frame-window-mode' prefix, which the user means to apply
-    ;; to ’ada-goto-source’ below; disable that temporarily.
-    (let ((display-buffer-overriding-action nil))
-      (pop-to-buffer compilation-last-buffer nil t)
-      (setq pos (next-single-property-change (point) 'ada-secondary-error))
-      (unless pos
-       ;; probably at end of compilation-buffer, in new compile
-       (goto-char (point-min))
-       (setq pos (next-single-property-change (point) 'ada-secondary-error)))
-
-      (when pos
-       (setq item (get-text-property pos 'ada-secondary-error))
-       ;; file-relative-name handles absolute Windows paths from
-       ;; g++. Do this in compilation buffer to get correct
-       ;; default-directory.
-       (setq file (file-relative-name (nth 0 item)))
-
-       ;; Set point in compilation buffer past this secondary error, so
-       ;; user can easily go to the next one.
-       (goto-char (next-single-property-change (1+ pos) 'ada-secondary-error)))
-
-      (pop-to-buffer start-buffer nil t);; for windowing history
-      )
-    (when item
-      (wisi-goto-source
-       file
-       (nth 1 item); line
-       (nth 2 item); column
-       ))
-    ))
-
-(defun ada-goto-declaration-start-1 (include-type)
-  "Subroutine of `ada-goto-declaration-start'."
-  (let ((start (point))
-       (cache (or (wisi-get-cache (point)) (wisi-backward-cache)))
-       (done nil))
-    ;; cache is null at bob
-    (while (not done)
-      (if cache
-         (progn
-           (setq done
-                 (cl-case (wisi-cache-nonterm cache)
-                   ((entry_body entry_declaration)
-                    (eq (wisi-cache-token cache) 'ENTRY))
-
-                   ((full_type_declaration private_type_declaration)
-                    (when include-type
-                      (eq (wisi-cache-token cache) 'TYPE)))
-
-                   ((generic_package_declaration 
generic_subprogram_declaration)
-                    (eq (wisi-cache-token cache) 'GENERIC))
-
-                   ((package_body package_declaration)
-                    (eq (wisi-cache-token cache) 'PACKAGE))
-
-                   ((protected_body protected_type_declaration 
single_protected_declaration)
-                    (eq (wisi-cache-token cache) 'PROTECTED))
-
-                   ((abstract_subprogram_declaration
-                     expression_function_declaration
-                     subprogram_body
-                     subprogram_declaration
-                     subprogram_renaming_declaration
-                     null_procedure_declaration)
-                    (memq (wisi-cache-token cache) '(NOT OVERRIDING FUNCTION 
PROCEDURE)))
-
-                   ((single_task_declaration task_body task_type_declaration)
-                    (eq (wisi-cache-token cache) 'TASK))
-
-                   ))
-           (unless (<= start (wisi-cache-end cache))
-             ;; found declaration does not include start; find containing one.
-             (setq done nil))
-           (unless done
-             (setq cache (wisi-goto-containing cache nil))))
-       (setq done t))
-       )
-    cache))
-
-(defun ada-goto-declaration-start (&optional include-type)
-  "Move point to start of the generic, package, protected,
-subprogram, or task declaration point is currently in or just
-after.  For `beginning-of-defun-function'."
-  (interactive)
-  (wisi-validate-cache (point-min) (point-max) t 'navigate)
-  (ada-goto-declaration-start-1 include-type))
-
-(defun ada-goto-declaration-end ()
-  "Move point to end of current declaration.
-For `end-of-defun-function'."
-  (interactive)
-  ;; First goto-declaration-start, so we get the right end, not just
-  ;; the current statement end.
-  (wisi-goto-end-1 (ada-goto-declaration-start)))
-
-;;;; fill-comment
-
-(defun ada-fill-comment-paragraph (&optional justify postfix)
-  "Fill the current comment paragraph.
-If JUSTIFY is non-nil, each line is justified as well.
-If POSTFIX and JUSTIFY are non-nil, `ada-fill-comment-postfix' is appended
-to each line filled and justified.
-The ident for the paragraph is taken from the first line."
-  (interactive "P")
-  (if (not (or (wisi-in-comment-p)
-               (looking-at "[ \t]*--")))
-      (error "Not inside comment"))
-
-  ;; fill-region-as-paragraph leaves comment text exposed (without
-  ;; comment prefix) when inserting a newline; don't trigger a parse
-  ;; because of that (in particular, jit-lock requires a parse; other
-  ;; hooks may as well).
-  (let* ((wisi-inhibit-parse t)
-        indent from to
-        (opos (point-marker))
-        ;; we bind `fill-prefix' here rather than in ada-mode because
-        ;; setting it in ada-mode causes indent-region to use it for
-        ;; all indentation.
-        (fill-prefix ada-fill-comment-prefix)
-        (fill-column (if ada-fill-comment-adaptive
-                         (save-excursion
-                           (back-to-indentation)
-                           (+ (current-column) fill-column))
-                       (current-fill-column))))
-
-    ;;  Find end of comment paragraph
-    (back-to-indentation)
-    (while (and (not (eobp)) (looking-at ".*--[ \t]*[^ \t\n]"))
-      (forward-line 1)
-
-      ;;  If we were at the last line in the buffer, create a dummy empty
-      ;;  line at the end of the buffer.
-      (if (eobp)
-         (insert "\n")
-       (back-to-indentation)))
-    (beginning-of-line)
-    (setq to (point-marker))
-    (goto-char opos)
-
-    ;;  Find beginning of paragraph
-    (back-to-indentation)
-    (while (and (not (bobp)) (looking-at ".*--[ \t]*[^ \t\n]"))
-      (forward-line -1)
-      (back-to-indentation))
-
-    (unless (bobp)
-      (forward-line 1))
-    (beginning-of-line)
-    (setq from (point-marker))
-
-    ;;  Calculate the indentation we will need for the paragraph
-    (back-to-indentation)
-    (setq indent (current-column))
-    ;;  unindent the first line of the paragraph
-    (delete-region from (point))
-
-    ;;  Remove the old postfixes
-    (goto-char from)
-    (while (re-search-forward (concat "\\(" ada-fill-comment-postfix "\\)" 
"\n") to t)
-      (delete-region (match-beginning 1) (match-end 1)))
-
-    (goto-char (1- to))
-    (setq to (point-marker))
-
-    ;;  Indent and justify the paragraph
-    (set-left-margin from to indent)
-    (if postfix
-       (setq fill-column (- fill-column (length ada-fill-comment-postfix))))
-
-    (fill-region-as-paragraph from to justify)
-
-    ;;  Add the postfixes if required
-    (if postfix
-       (save-restriction
-         (goto-char from)
-         (narrow-to-region from to)
-         (while (not (eobp))
-           (end-of-line)
-           (insert-char ?  (- fill-column (current-column)))
-           (insert ada-fill-comment-postfix)
-           (forward-line))
-         ))
-
-    (goto-char opos)))
-
-;;;; support for font-lock.el
-
-(defconst ada-83-keywords
-  '("abort" "abs" "accept" "access" "all" "and" "array" "at" "begin"
-    "body" "case" "constant" "declare" "delay" "delta" "digits" "do"
-    "else" "elsif" "end" "entry" "exception" "exit" "for" "function"
-    "generic" "goto" "if" "in" "is" "limited" "loop" "mod" "new"
-    "not" "null" "of" "or" "others" "out" "package" "pragma" "private"
-    "procedure" "raise" "range" "record" "rem" "renames" "return"
-    "reverse" "select" "separate" "subtype" "task" "terminate" "then"
-    "type" "use" "when" "while" "with" "xor")
-  "List of Ada 83 keywords.")
-
-(defconst ada-95-keywords
-  '("abstract" "aliased" "protected" "requeue" "tagged" "until")
-  "List of keywords new in Ada 95.")
-
-(defconst ada-2005-keywords
-  '("interface" "overriding" "synchronized")
-  "List of keywords new in Ada 2005.")
-
-(defconst ada-2012-keywords
-  '("some")
-  "List of keywords new in Ada 2012.")
-
-(defvar ada-keywords nil
-  "List of Ada keywords for current `ada-language-version'.")
-
-(defun ada-font-lock-keywords ()
-  "Return Ada mode value for `font-lock-keywords', depending on 
`ada-language-version'."
-   ;; Grammar actions set `font-lock-face' property for all
-   ;; non-keyword tokens that need it.
-  (list
-   (list (concat "\\_<" (regexp-opt ada-keywords t) "\\_>") '(0 
font-lock-keyword-face))
-   ))
-
-;;;; auto-case
-
-(defcustom ada-auto-case t
-  "When non-nil, automatically change case of preceding word while
-typing.  Casing of Ada keywords is done according to `ada-case-keyword',
-identifiers according to `ada-case-identifier'."
-  :group 'ada
-  :type  '(choice (const nil)
-                 (const t))
-  :safe  (lambda (val) (memq val '(nil t))))
-(make-variable-buffer-local 'ada-auto-case)
-
-(defcustom ada-case-keyword 'lower-case
-  "Indicate how to adjust case for language keywords.
-Value is one of lower-case, upper-case."
-  :group 'ada
-  :type '(choice (const lower-case)
-                (const upper-case))
-  :safe #'symbolp)
-(make-variable-buffer-local 'ada-case-keyword)
-
-(defcustom ada-case-strict t
-  "If non-nil, force Mixed_Case for identifiers.
-Otherwise, allow UPPERCASE for identifiers."
-  :group 'ada
-  :type 'boolean
-  :safe  #'booleanp)
-(make-variable-buffer-local 'ada-case-strict)
-
-(defcustom ada-case-identifier 'mixed-case
-  "Indicates how to adjust the case of Ada keywords."
-  :group 'ada
-  :type '(choice (const mixed-case)
-                (const lower-case)
-                (const upper-case))
-  :safe (lambda (val) (memq val '(mixed-case lower-case upper-case))))
-(make-variable-buffer-local 'ada-case-identifier)
-
-(defun ada-in-based-numeric-literal-p ()
-  "Return t if point is after a prefix of a based numeric literal."
-  (looking-back "\\([0-9]+#[0-9a-fA-F_]+\\)" (line-beginning-position)))
-
-(defun ada-case-adjust-p (typed-char)
-  "For `wisi-case-adjust-p-function'."
-  (and
-   ;; hex digits
-   (not (ada-in-based-numeric-literal-p))
-
-   ;; character literal
-   (not (and (eq typed-char ?')
-            (eq (char-before (point)) ?')))
-  ))
-
-;;;; wisi integration
-
-(defconst ada-wisi-language-protocol-version "3"
-  "Defines language-specific parser parameters.
-Must match wisi-ada.ads Language_Protocol_Version.")
-
-(cl-defstruct (ada-wisi-parser (:include wisi-process--parser))
-  ;; no new slots
-  )
-
-(cl-defmethod wisi-parse-format-language-options ((_parser ada-wisi-parser))
-  (format "%d %d %d %d %d %d %d %d %d %d %d %d %d"
-         ada-indent
-         ada-indent-broken
-         (if ada-indent-comment-col-0 1 0)
-         (if ada-indent-comment-gnat 1 0)
-         ada-indent-label
-         ada-indent-record-rel-type
-         ada-indent-renames
-         ada-indent-return
-         ada-indent-use
-         ada-indent-when
-         ada-indent-with
-         (if ada-indent-hanging-rel-exp 1 0)
-         (if ada-end-name-optional 1 0)
-         ))
-
-(defconst ada-wisi-named-begin-regexp
-  "\\_<function\\_>\\|\\_<package\\_>\\|\\_<procedure\\_>\\|\\_<task\\_>"
-  )
-
-(defconst ada-wisi-partial-begin-regexp
-  (concat "\\_<begin\\_>\\|\\_<declare\\_>\\|"
-         ada-wisi-named-begin-regexp
-         "\\|\\_<end;\\|\\_<end " ada-name-regexp ";"))
-
-(defconst ada-wisi-partial-end-regexp
-  (concat ada-wisi-partial-begin-regexp
-         "\\|;"))
-
-(defun ada-wisi-find-begin ()
-  "Starting at current point, search backward for a parse start point."
-
-  ;; There is a trade-off in deciding where to start parsing for indent. If we 
have:
-  ;;
-  ;; procedure ...
-  ;; is
-  ;;
-  ;; and are inserting a new line after 'is', we need to include
-  ;; 'is' in the parse to see the indent. On the other hand, if we
-  ;; have:
-  ;;
-  ;;    ...
-  ;;    end;
-  ;; begin
-  ;;    Foo;
-  ;;
-  ;; Inserting new line after 'Foo;'; if we include 'begin' but not
-  ;; 'end;', there is no error (begin starts a statement), and the
-  ;; indent is computed incorrectly, because it is assumed that the
-  ;; line containing 'end;' is indented correctly.
-  ;;
-  ;; This is handled by the set of keywords in
-  ;; ada-wisi-partial-begin-regexp.
-  (cond
-   ((looking-at "[ \t]*\\_<begin\\_>")
-    ;; indenting 'begin'; best option is to assume it is indented properly
-    (point))
-
-   ((wisi-search-backward-skip
-     ada-wisi-partial-begin-regexp
-     (lambda () (or (wisi-in-string-or-comment-p)
-                   (looking-back "access " (line-beginning-position)))))
-     ;; "access" rejects subprobram access parameters; 
test/ada_mode-recover_partial_20.adb
-
-    (let ((found (match-string 0))
-         cache)
-      (cond
-       ((and (>= (length found) 3)
-            (string-equal "end" (substring found 0 3)))
-       (match-end 0))
-
-       (t
-       (setq cache (wisi-get-cache (point)))
-       (when cache
-         ;; This distinguishes 'begin' as a statement start from
-         ;; 'begin' following 'declare', 'procedure' etc.  We don't
-         ;; force a parse to get this; the user may choose to do so.
-         (wisi-goto-start cache))
-       (point))
-       )))
-
-   (t
-    (point-min))
-   ))
-
-(defun ada-wisi-find-end ()
-  "Starting at current point, search forward for a reasonable parse end point."
-  (forward-comment (point-max)) ;; get past any current comments
-  (forward-line 1) ;; contain at least some code (see 
ada_mode-partial_parse.adb 'blank line before "end"')
-
-  (let ((start (point))
-       match
-       (end-cand nil))
-
-    (while (not end-cand)
-      (if (search-forward-regexp ada-wisi-partial-end-regexp nil 1) ;; moves 
to eob if not found
-         (unless (or (wisi-in-string-or-comment-p)
-                     (wisi-in-paren-p))
-           (setq match t)
-           (setq end-cand (point)))
-
-       ;; No reasonable end point found (maybe a missing right
-       ;; paren); return line after start for minimal parse, compute
-       ;; indent for line containing start.
-       (setq match nil)
-       (goto-char start)
-       (setq end-cand (line-end-position 2)))
-      )
-
-    (when (and match
-              (not (string-equal ";" (match-string 0))))
-      (setq end-cand (match-beginning 0)))
-
-    end-cand))
-
-(defun ada-wisi-find-matching-end ()
-  "Starting at current point, search forward for a matching end.
-Point must have been set by `ada-wisi-find-begin'."
-  (let (end-regexp)
-    ;; Point is at bol
-    (back-to-indentation)
-    (when (looking-at ada-wisi-named-begin-regexp)
-      (skip-syntax-forward "ws")
-      (skip-syntax-forward " ")
-      (when (looking-at "body\\|type")
-       (goto-char (match-end 0))
-       (skip-syntax-forward " "))
-      (setq end-regexp
-           (concat "end +"
-                   (buffer-substring-no-properties
-                    (point)
-                    (progn
-                      (skip-syntax-forward "ws._")
-                      (point)))
-                   ";"))
-      (if (search-forward-regexp end-regexp nil t)
-         (progn
-           (while (and (wisi-in-string-or-comment-p)
-                       (search-forward-regexp end-regexp nil t)))
-           (point))
-
-       ;; matching end not found
-       nil)
-      )))
-
-(cl-defmethod wisi-parse-expand-region ((_parser ada-wisi-parser) begin end)
-  (let (begin-cand end-cand result)
-    (save-excursion
-      (goto-char begin)
-
-      (setq begin-cand (ada-wisi-find-begin))
-      (if (= begin-cand (point-min)) ;; No code between BEGIN and bob
-         (progn
-           (goto-char end)
-           (setq result (cons begin-cand (ada-wisi-find-end))))
-
-       (setq end-cand (ada-wisi-find-matching-end))
-       (if (and end-cand
-                (>= end-cand end))
-           (setq result (cons begin-cand end-cand))
-         (goto-char end)
-         (setq result (cons begin-cand (ada-wisi-find-end))))
-
-       ))
-    result))
-
-(cl-defmethod wisi-parse-adjust-indent ((_parser ada-wisi-parser) indent 
repair)
-  (cond
-   ((or (wisi-list-memq (wisi--parse-error-repair-inserted repair) '(BEGIN IF 
LOOP))
-       (wisi-list-memq (wisi--parse-error-repair-deleted repair) '(END)))
-    ;; Error token terminates the block containing the start token
-    (- indent ada-indent))
-
-   ((equal '(CASE IS) (wisi--parse-error-repair-inserted repair))
-        (- indent (+ ada-indent ada-indent-when)))
-
-   ((equal '(END CASE SEMICOLON) (wisi--parse-error-repair-inserted repair))
-        (+ indent (+ ada-indent ada-indent-when)))
-
-   (t indent)
-   ))
-
-(defun ada-wisi-comment-gnat (indent after)
-  "Modify INDENT to match gnat rules. Return new indent.
-INDENT must be indent computed by the normal indentation
-algorithm.  AFTER indicates what is on the previous line; one of:
-
-code:         blank line, or code with no trailing comment
-code-comment: code with trailing comment
-comment:      comment"
-  (let (prev-indent next-indent)
-    ;; the gnat comment indent style check; comments must
-    ;; be aligned to one of:
-    ;;
-    ;; - multiple of ada-indent
-    ;; - next non-blank line
-    ;; - previous non-blank line
-    ;;
-    ;; Note that we must indent the prev and next lines, in case
-    ;; they are not currently correct.
-    (cond
-     ((and (not (eq after 'comment))
-          (= 0 (% indent ada-indent)))
-      ;; this will handle comments at bob and eob, so we don't
-      ;; need to worry about those positions in the next checks.
-      indent)
-
-     ((and (setq prev-indent
-                (if (eq after 'comment)
-                    (progn (forward-comment -1) (current-column))
-                  (save-excursion (forward-line -1)(current-indentation))))
-          (= indent prev-indent))
-      indent)
-
-     ((and (setq next-indent
-                ;; we use forward-comment here, instead of
-                ;; forward-line, because consecutive comment
-                ;; lines are indented to the current one, which
-                ;; we don't know yet.
-                (save-excursion (forward-comment 
(point-max))(current-indentation)))
-          (= indent next-indent))
-      indent)
-
-     (t
-      (cl-ecase after
-       (code-comment
-        ;; After comment that follows code on the same line
-        ;; test/ada_mode-conditional_expressions.adb
-        ;;
-        ;; then 44     -- comment matching GNAT
-        ;;             -- second line
-        ;;
-        ;; else 45)); -- comment _not_ matching GNAT style check
-        ;;             -- comment matching GNAT
-        ;;
-        (+ indent (- ada-indent (% indent ada-indent))))
-
-       ((code comment)
-        ;; After code with no trailing comment, or after comment
-        ;; test/ada_mode-conditional_expressions.adb
-        ;; K2 : Integer := (if J > 42
-        ;;                  -- comment indent matching GNAT style check
-        ;;                  then
-        ;;
-        (max prev-indent next-indent))
-
-       ))
-     )))
-
-(defun ada-wisi-comment ()
-  "Modify indentation of a comment:
-For `wisi-indent-calculate-functions'.
-- align to previous comment after code.
-- respect `ada-indent-comment-gnat'."
-  ;; We know we are at the first token on a line.
-  ;;
-  ;; The normal indentation algorithm has already indented the
-  ;; comment.
-  (when (and (not (eobp))
-            (string= comment-start (buffer-substring-no-properties (point) 
(min (point-max) (+ 2 (point))))))
-
-    ;; We are looking at a comment; check for preceding comments, code
-    (let (after
-         (indent (current-column)))
-      (if (save-excursion (forward-line -1) (looking-at "\\s *$"))
-         ;; after blank line
-         (setq after 'code)
-
-       (save-excursion
-         (forward-comment -1)
-         (if (or (not ada-indent-after-trailing-comment) ;; ignore comment on 
previous line
-                 (looking-at "\\s *$"))                  ;; no comment on 
previous line
-             (setq after 'code)
-
-           (setq indent (current-column))
-           (if (not (= indent (progn (back-to-indentation) (current-column))))
-               ;; previous line has comment following code
-               (setq after 'code-comment)
-             ;; previous line has plain comment
-             (setq indent (current-column))
-             (setq after 'comment)
-             )))
-       )
-
-      (cl-ecase after
-       (code
-        (if ada-indent-comment-gnat
-            (ada-wisi-comment-gnat indent 'code)
-          indent))
-
-       (comment
-        indent)
-
-       (code-comment
-        (if ada-indent-comment-gnat
-            (ada-wisi-comment-gnat indent 'code-comment)
-
-          ;; After comment that follows code on the same line
-          ;; test/ada_mode-nominal.adb
-          ;;
-          ;; begin -- 2
-          ;;       --EMACSCMD:(progn 
(ada-goto-declarative-region-start)(looking-at "Bad_Thing"))
-          (save-excursion (forward-comment -1)(current-column)))
-        ))
-      )))
-
-(defun ada-wisi-post-parse-fail ()
-  "For `wisi-post-parse-fail-hook'."
-  ;; Parse indent succeeded, so we assume parse navigate will as well
-  (wisi-validate-cache (point-min) (line-end-position) nil 'navigate)
-  (save-excursion
-    (let ((start-cache (wisi-goto-start (or (wisi-get-cache (point)) 
(wisi-backward-cache)))))
-      (when start-cache
-       ;; nil when in a comment at point-min
-       (indent-region (point) (wisi-cache-end start-cache)))
-      ))
-  (back-to-indentation))
-
-(defun ada-find-file ()
-  "Find a file in the current project.
-Prompts with completion, defaults to filename at point."
-  (interactive)
-  ;; In emacs 27, we can just call 'project-find-file;
-  ;; project-read-file-name-function handles the uniquify-files alist
-  ;; completion table. In emacs 26, we must do that ourselves.
-  (cl-ecase emacs-major-version
-    (27
-     (project-find-file))
-
-    (26
-     (let* ((def (thing-at-point 'filename))
-           (project (project-current))
-           (all-files (project-files project nil))
-           (alist (uniq-file-uniquify all-files))
-           (table (apply-partially #'uniq-file-completion-table alist))
-            (file (project--completing-read-strict
-                   "Find file" table nil nil def)))
-       (if (string= file "")
-           (user-error "You didn't specify the file")
-        (find-file (cdr (assoc file alist))))))
-    ))
-
-;;;; compatibility with previous ada-mode versions
-
-;;;###autoload
-(defun ada-fix-compiler-error ()
-  (interactive)
-  (wisi-fix-compiler-error))
-(make-obsolete 'ada-fix-compiler-error 'wisi-fix-compiler-error "ada-mode 
7.0.0")
-
-(defun ada-select-prj-file-1 (prj-file)
-;; avoid byte compiler warning about obsolete ada-select-prj-file
-  (wisi-prj-select-cache
-   prj-file
-   (ada-prj-default
-    (file-name-sans-extension (file-name-nondirectory prj-file))
-    (file-name-directory prj-file)))
-
-  ;; We set project-find-functions, xref-backend-functions here for
-  ;; compatibility with ada-mode 6.x.
-  (unless (wisi-prj-find-function-set-p)
-    (add-hook 'project-find-functions #'wisi-prj-current-cached)
-    (add-hook 'xref-backend-functions #'wisi-prj-xref-backend)))
-
-;;;###autoload
-(defun ada-parse-prj-file (prj-file)
-  (ada-select-prj-file-1 prj-file))
-(make-obsolete 'ada-parse-prj-file 'wisi-prj-select-cache "ada-mode 7.0.0")
-
-;;;###autoload
-(defun ada-select-prj-file (prj-file)
-  (ada-select-prj-file-1 prj-file))
-(make-obsolete 'ada-select-prj-file #'wisi-prj-select-cache "ada-mode 7.0.0")
-
-;;;###autoload
-(defalias 'ada-project-current #'wisi-prj-current-cached)
-(make-obsolete 'ada-project-current #'wisi-prj-current-cached "ada-mode 7.0.0")
-
-;;;; ada-mode
-
-(defvar which-func-functions) ;; which-func.el
-(defvar which-func-non-auto-modes) ;; ""
-
-;;;###autoload
-(define-derived-mode ada-mode prog-mode "Ada"
-  "The major mode for editing Ada code."
-  :group 'ada
-
-  (set (make-local-variable 'syntax-propertize-function) 
'ada-syntax-propertize)
-  (syntax-ppss-flush-cache (point-min));; reparse with new function
-
-  (set (make-local-variable 'parse-sexp-ignore-comments) t)
-  (set (make-local-variable 'parse-sexp-lookup-properties) t)
-  (set 'case-fold-search t); Ada is case insensitive; the syntax parsing 
requires this setting
-  (set 'completion-ignore-case t)
-  (set (make-local-variable 'comment-start) "--")
-  (set (make-local-variable 'comment-end) "")
-  (set (make-local-variable 'comment-start-skip) "---*[ \t]*")
-  (set (make-local-variable 'comment-multi-line) nil)
-
-  ;; we _don't_ set `fill-prefix' here because that causes
-  ;; indent-region to use it for all indentation. See
-  ;; ada-fill-comment-paragraph.
-
-  ;; AdaCore standard style (enforced by -gnaty) requires two spaces
-  ;; after '--' in comments; this makes it easier to distinguish
-  ;; special comments that have something else after '--'
-  (set (make-local-variable 'comment-padding) "  ")
-
-  (set (make-local-variable 'require-final-newline) t)
-
-  (setq font-lock-defaults
-       '(ada-font-lock-keywords ;; keywords
-         nil ;; keywords only; comment, string faces not set by wisi parser
-         t ;; case-fold
-         ((?\_ . "w")))); treat underscore as a word component
-
-  (set (make-local-variable 'ff-other-file-alist)
-       'ada-other-file-alist)
-  (setq ff-post-load-hook    #'ada-set-point-accordingly
-       ff-file-created-hook #'ada-ff-create-body)
-  (add-hook 'ff-pre-load-hook #'push-mark)
-  (add-hook 'ff-pre-load-hook #'ada-which-function)
-  (setq ff-search-directories 'compilation-search-path)
-  (when (null (car compilation-search-path))
-    ;; find-file doesn't handle nil in search path
-    (setq compilation-search-path (list (if buffer-file-name
-                                            (file-name-directory 
(buffer-file-name))
-                                          "."))))
-  (ada-set-ff-special-constructs)
-
-  (set (make-local-variable 'add-log-current-defun-function)
-       #'ada-add-log-current-function)
-
-  ;; We set this even if which-func.el is not loaded, because if it is
-  ;; loaded later, it will use the add-log which-function, which
-  ;; forces a navigate parse.
-  (add-hook 'which-func-functions #'ada-which-function nil t)
-  (when (boundp 'which-func-non-auto-modes)
-    (add-to-list 'which-func-non-auto-modes 'ada-mode))
-
-  ;;  Support for align
-  (add-to-list 'align-dq-string-modes 'ada-mode)
-  (add-to-list 'align-open-comment-modes 'ada-mode)
-  (set (make-local-variable 'align-region-separate) ada-align-region-separate)
-  (set (make-local-variable 'align-indent-before-aligning) t)
-
-  (set (make-local-variable 'beginning-of-defun-function) 
#'ada-goto-declaration-start)
-  (set (make-local-variable 'end-of-defun-function) #'ada-goto-declaration-end)
-
-  ;; Exclude comments alone on line from alignment.
-  (add-to-list 'align-exclude-rules-list
-              '(ada-solo-comment
-                (regexp  . "^\\(\\s-*\\)--")
-                (modes   . '(ada-mode))))
-  (add-to-list 'align-exclude-rules-list
-              '(ada-solo-use
-                (regexp  . "^\\(\\s-*\\)\\_<use\\_>")
-                (modes   . '(ada-mode))))
-
-  (setq align-mode-rules-list ada-align-rules)
-
-  (easy-menu-add ada-mode-menu ada-mode-map)
-
-  (wisi-setup
-   :indent-calculate '(ada-wisi-comment)
-   :post-indent-fail 'ada-wisi-post-parse-fail
-   :parser
-   (wisi-process-parse-get
-    (make-ada-wisi-parser
-     :label "Ada"
-     :language-protocol-version ada-wisi-language-protocol-version
-     :exec-file ada-process-parse-exec
-     :exec-opts ada-process-parse-exec-opts
-     :face-table ada-process-face-table
-     :token-table ada-process-token-table
-     :repair-image ada-process-repair-image)))
-
-  (setq wisi-prj-parse-undefined-function #'ada-prj-parse-undefined)
-  (setq wisi-xref-full-path ada-xref-full-path)
-
-  (add-hook 'hack-local-variables-hook #'ada-mode-post-local-vars nil t)
-  )
-
-(defun ada-mode-post-local-vars ()
-  ;; These are run after ada-mode-hook and file local variables
-  ;; because users or *.ad? files might set the relevant
-  ;; variable inside the hook or file local variables.
-
-  ;; This means to fully set ada-mode interactively, user must
-  ;; do M-x ada-mode M-; (hack-local-variables)
-
-  (remove-hook 'hack-local-variables-hook #'ada-mode-post-local-vars)
-
-  ;; fill-region-as-paragraph in ada-fill-comment-paragraph does not
-  ;; call syntax-propertize, so set comment syntax on
-  ;; ada-fill-comment-prefix. In post-local because user may want to
-  ;; set it per-file.
-  (put-text-property 0 2 'syntax-table '(11 . nil) ada-fill-comment-prefix)
-
-  (cl-case ada-language-version
-   (ada83
-    (setq ada-keywords ada-83-keywords))
-
-   (ada95
-    (setq ada-keywords
-         (append ada-83-keywords
-                 ada-95-keywords)))
-
-   (ada2005
-    (setq ada-keywords
-         (append ada-83-keywords
-                 ada-95-keywords
-                 ada-2005-keywords)))
-   (ada2012
-    (setq ada-keywords
-         (append ada-83-keywords
-                 ada-95-keywords
-                 ada-2005-keywords
-                 ada-2012-keywords))))
-
-  (when global-font-lock-mode
-    ;; This calls ada-font-lock-keywords, which depends on
-    ;; ada-keywords
-    (font-lock-refresh-defaults))
-
-  (setq wisi-indent-comment-col-0 ada-indent-comment-col-0)
-
-  (setq wisi-auto-case ada-auto-case)
-  (setq wisi-case-identifier ada-case-identifier)
-  (setq wisi-case-strict ada-case-strict)
-  (setq wisi-language-keywords ada-keywords)
-  (setq wisi-case-keyword ada-case-keyword)
-  (setq wisi-case-adjust-p-function #'ada-case-adjust-p)
-  )
-
-(put 'ada-mode 'custom-mode-group 'ada)
-
-;;;;; Global initializations
-
-;;;###autoload
-(add-to-list 'auto-mode-alist '("\\.ad[abs]\\'" . ada-mode))
-
-(when (featurep 'imenu)
-  (require 'ada-imenu))
-
-(provide 'ada-mode)
-;;; ada-mode.el ends here
diff --git a/packages/ada-mode/ada-mode.info b/packages/ada-mode/ada-mode.info
deleted file mode 100644
index b5ecdfd..0000000
--- a/packages/ada-mode/ada-mode.info
+++ /dev/null
@@ -1,2604 +0,0 @@
-This is ada-mode.info, produced by makeinfo version 6.7 from
-ada-mode.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
-* Ada mode: (ada-mode).         Emacs mode for editing and navigating Ada code.
-END-INFO-DIR-ENTRY
-
-
-File: ada-mode.info,  Node: Top,  Next: Overview,  Prev: (dir),  Up: (dir)
-
-Top
-***
-
-Ada Mode Version 7.1.3
-
-* Menu:
-
-* Overview::
-* Installation::                Installing Ada mode on your system
-* Customization::               Setting up Ada mode to your taste
-* Compiling Executing::         Working with your application within Emacs
-* Project files::               Describing the organization of your project
-* Moving Through Ada Code::     Moving easily through Ada sources
-* Identifier completion::       Finishing words automatically
-* Indentation::                 Indenting your code automatically as you type
-* Statement skeletons::         Some code is written for you
-* Aligning code::               Making it pretty
-* Automatic casing::            Adjusting the case of words automatically
-* Comment Handling::            Reformatting comments easily
-* Key summary::
-* Developer overview::
-* GNU Free Documentation License::
-
- -- The Detailed Node Listing --
-
-Overview
-
-* Why not LSP?::
-
-Installation
-
-* Ada Reference Manual::
-* Ada executables::
-
-Ada executables
-
-* Building GNATCOLL::
-* Building the executables::
-
-Customizing Ada mode
-
-* Slow response::
-* Non-standard file names::
-* Other compiler::
-* Other cross-reference::
-* Other customization::
-
-Compiling Executing
-
-* Compile commands::
-* Compiling Examples::
-* Compiler errors::
-
-Compiling Examples
-
-* No project files::            Just menus
-* Set compiler options::        A basic Ada mode project file
-* Set source search path::      Source in multiple directories
-* Use wisi project file::
-* Use multiple GNAT project files::
-* Use a Makefile::
-
-Project files
-
-* Project file overview::
-* Project file variables::
-
-Developer overview
-
-* Directory structure::
-* ELPA::
-* Savannah::
-* ada-france::
-
-
-
-File: ada-mode.info,  Node: Overview,  Next: Installation,  Prev: Top,  Up: Top
-
-1 Overview
-**********
-
-The Emacs mode for programming in Ada helps the user in reading existing
-code and facilitates developing new code.
-
-   Cross-reference information output by the compiler is used to provide
-powerful code navigation (jump to definition, find all uses, etc).
-
-   When you open a file with a file extension of '.ads' or '.adb', Emacs
-will automatically load and activate Ada mode.
-
-   Ada mode works without any customization, if you are using the GNAT
-compiler (<https://libre.adacore.com/>) and the GNAT default naming
-convention.
-
-   You must customize a few things if you are using a different file
-naming convention or compiler; *Note Non-standard file names::, *Note
-Other compiler::.
-
-   In addition, you may want to customize the indentation,
-capitalization, and other things; *Note Other customization::.
-
-   Finally, for large Ada projects, you will want to set up an Emacs Ada
-mode project file for each project; *Note Project files::.  Note that
-these are different from the GNAT project files used by the GNAT tools.
-
-   *Note Debuggers: (emacs)Debuggers, for general information on
-debugging.
-
-* Menu:
-
-* Why not LSP?::
-
-
-File: ada-mode.info,  Node: Why not LSP?,  Up: Overview
-
-1.1 Why not LSP?
-================
-
-The Language Server Protocol (LSP, <https://langserver.org>) supports an
-external language parser, as Ada mode does, and it is supported by the
-GNU ELPA package eglot.  Ada mode does not use LSP mostly for historical
-reasons; the Ada mode parser was first developed before LSP was started.
-In addition, LSP does not support some of the navigation information
-provided by the Ada mode parser (although that could be provided as a
-custom command).
-
-   We may investigate supporting an LSP parser in the future.  In
-particular, the AdaCore Gnat Studio editor uses an LSP parser for
-several functions; Emacs Ada mode could use that as a backend if it
-supports LSP.
-
-
-File: ada-mode.info,  Node: Installation,  Next: Customization,  Prev: 
Overview,  Up: Top
-
-2 Installation
-**************
-
-Ada mode requires Emacs 25.0 or greater.  Compiling the Ada code for the
-external process parser requires GNAT GPL 2017 or later; tested with
-GNAT Community Edition 2019 and GNAT Pro 19.
-
-   Ada mode is distributed in the Gnu ELPA package archive; it can be
-installed via 'M-x list-packages' (*note (emacs)Packages::).  Note that
-it requires the 'wisi' and 'uniquify-files' packages as dependencies.
-
-   In Emacs < 27 you must first enable packages in your '~/.emacs',
-_after_ customizing 'Info-default-directory-list' (if you do that):
-
-     (package-initialize)
-
-   To see what version of Ada mode you have installed, invoke 'M-x
-ada-mode-version'.
-
-   You must also install the associated Ada executables (for the
-language parser).  You may want to install the Ada Reference Manual.
-
-* Menu:
-
-* Ada Reference Manual::
-* Ada executables::
-
-
-File: ada-mode.info,  Node: Ada Reference Manual,  Next: Ada executables,  Up: 
Installation
-
-2.1 Ada Reference Manual
-========================
-
-The ELPA package ada-ref-man includes the Ada Reference Manual and
-Annotated Ada Reference Manual in info format.
-
-
-File: ada-mode.info,  Node: Ada executables,  Prev: Ada Reference Manual,  Up: 
Installation
-
-2.2 Ada executables
-===================
-
-Ada mode requires the external parser, which must be compiled.
-
-   Ada mode has support for an external cross reference tool
-'gpr_query', which uses compiler-generated information.  In the case of
-Ada, the necessary '.ali' files are automatically generated by the
-standard compilation process.  For other languages, e.g.  C, C++, '.gli'
-files can be generated using the compiler switch '-fdump-xref'.
-'-fdump-xref' is an AdaCore extension, not available in FSF GCC.
-
-   'gpr_query' is an Ada program, which is distributed as source and
-must be built.  Its source code is in the 'ada-mode' Gnu ELPA package.
-
-   'gpr_query' is similar to the AdaCore utility 'gnatxref', but
-supports additional queries.
-
-   Both the parser and 'gpr_query' require the 'GNATCOLL' library
-provided by AdaCore, distributed with GNAT GPL 2017 or later, and also
-available at Github (<https://github.com/AdaCore/gnatcoll>).  The notes
-below assume that the compiler is installed at '$prefix', e.g.
-'/usr/local/gnat-2019', and that '$prefix/bin' is first on the 'PATH'.
-If you are running Windows, use mingw64 'bash' to run these commands.
-
-   On linux, some versions of the 'GNATCOLL.iconv' package (used by
-'gpr_query', but not the parser) explicitly require the 'libiconv.so'
-library.  GNAT provides the 'libiconv.so' library in
-'<gnat>/lib64/libiconv.so'.  On Debian, that directory is not in the
-standard load path, and iconv is provided by glibc, so 'libiconv.so' is
-not found on the standard load path.  So you must set LD_LIBRARY_PATH,
-but only when running 'gpr-query':
-
-     (setq gpr-query-env '("LD_LIBRARY_PATH=/Projects/gnat/pro_19.2/lib64")
-
-   In general, 'gpr_query' should be compiled with the compiler version
-that is used to generate the user project '.ali' files; the 'ali' file
-format can change with each compiler version.  'gpr_query' creates a
-database of cross reference information; that database must be deleted
-if the compiler version changes, to force a complete rebuild.
-
-   The default binary gnatcoll distributed with GNAT GPL 2019 does not
-include the xref package, which is required by 'gpr_query'.  So we must
-build gnatcoll xref from sources.
-
-* Menu:
-
-* Building GNATCOLL::
-* Building the executables::
-
-
-File: ada-mode.info,  Node: Building GNATCOLL,  Next: Building the 
executables,  Up: Ada executables
-
-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".
-
-   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-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
-     make -C sqlite install
-     make -C xref
-     make -C xref install
-
-
-File: ada-mode.info,  Node: Building the executables,  Prev: Building 
GNATCOLL,  Up: Ada executables
-
-2.2.2 Building the executables
-------------------------------
-
-'gpr_query' requires the 'pthread' library.  On Windows, this is
-available in Mingw64 as package
-'mingw64/mingw-w64-x86_64-winpthreads-git'.
-
-   To build and install 'gpr_query' and the parser, assuming the
-'ada-mode-6.0.xx' GNU ELPA package is installed:
-
-     cd ~/.emacs.d/elpa/ada-mode-6.0.xx
-     ./build.sh
-     ./install.sh
-
-   By default, 'install.sh' installs the executables in the same
-directory as the GNAT executable (using 'gprinstall').  If you don't
-have write privileges there, or if you want to install somewhere else,
-use 'install.sh --prefix=<dir>'.
-
-   'ada-mode' will use 'gpr_query' and the parser if they are found in
-'PATH'.
-
-
-File: ada-mode.info,  Node: Customization,  Next: Compiling Executing,  Prev: 
Installation,  Up: Top
-
-3 Customizing Ada mode
-**********************
-
-Here we assume you are familiar with setting variables in Emacs, either
-thru 'customize' or in elisp (in your '.emacs' file).  For a basic
-introduction to customize, elisp, and Emacs in general, see the tutorial
-('C-h t').
-
-* Menu:
-
-* Slow response::
-* Non-standard file names::
-* Other compiler::
-* Other cross-reference::
-* Other customization::
-
-
-File: ada-mode.info,  Node: Slow response,  Next: Non-standard file names,  
Up: Customization
-
-3.1 Slow response
-=================
-
-In large files, parsing takes a noticable amount of time, so it gets in
-the way of interactive typing due to immediate fontification triggering
-a parse.
-
-   There are three ways to deal with this:
-
-  1. Set 'wisi-partial-parse-threshold' In your '~./emacs':
-
-          (setq wisi-partial-parse-threshold 100001)
-
-     The default value (100001) may already be appropriate; it depends
-     on how fast your machine is, and what your tolerance for slow
-     response is.
-
-     Files larger than 'wisi-partial-parse-threshold' (in characters)
-     will be parsed partially; only the part of the buffer needed for
-     the current task will be parsed.  For fontification, that is the
-     visible part.  For indent, it is approximately the current
-     subprogram or package.  For navigation, it is always the entire
-     file, which will still be slow; that is the only way to ensure
-     useful results.
-
-     With this setting, indentation may not be correct; the Ada menu
-     entry "Edit | Indent containing statement" will indent correctly.
-
-  2. Delay fontification by setting 'jit-lock-defer-time' in your
-     '~./emacs':
-
-          (setq jit-lock-defer-time 1.5)
-
-     This is a global setting; it affects all buffers.  Fontification
-     will only be performed after you have stopped typing for the
-     indicated number of seconds.
-
-  3. Turn off parsing for fontification by setting 'wisi-disable-face'
-     in your '~./emacs'
-
-          (setq wisi-disable-face t)
-
-     This turns of fontification for type, package, and function names;
-     only Ada reserved words are fontified.
-
-
-File: ada-mode.info,  Node: Non-standard file names,  Next: Other compiler,  
Prev: Customization,  Up: Customization
-
-3.2 Non-standard file names
-===========================
-
-By default, Ada mode is configured to use the GNAT file naming
-convention, where file names are a simple modification of the Ada names,
-and the extension for specs and bodies are '.ads' and '.adb',
-respectively.
-
-   Emacs uses the file extension to enable Ada mode; Ada mode uses the
-file extentions to allow moving from a package body to the corresponding
-spec and back.
-
-   Emacs and Ada mode support ways to use alternative file extensions
-for specs and bodies.  Note that you must also tell the compiler about
-these extensions in a GNAT project file Naming package; doing that is
-beyond the scope of this manual.
-
-   For instance, if your spec and bodies files are called 'UNIT_s.ada'
-and 'UNIT_b.ada', respectively, you can add the following to your
-'.emacs' file:
-
-     ;; Tell Ada mode about spec and body extensions
-     (ada-add-extensions "_s.ada" "_b.ada")
-
-     ;; Tell Emacs to use Ada mode for those extensions
-     (add-to-list 'auto-mode-alist '("\\.ada\\'" . ada-mode))
-
-   You can define additional extensions:
-
-     (ada-add-extensions ".ads" "_b.ada")
-     (ada-add-extensions ".ads" ".body")
-
-   This means that whenever Ada mode looks for the body for a file whose
-extension is '.ads', it will take the first available file that ends
-with either '.adb', '_b.ada' or '.body'.
-
-   Simililarly, if Ada mode is looking for a spec, it will look for
-'.ads' or '_s.ada'.
-
-   If the filename excluding the extension is not derived from the Ada
-name following the GNAT convention, you need to provide an alternate
-function for 'ada-file-name-from-ada-name'.  Doing that is beyond the
-scope of this manual; see the current definitions in 'ada-mode.el' and
-'ada-gnat-xref.el' for examples.
-
-
-File: ada-mode.info,  Node: Other compiler,  Next: Other cross-reference,  
Prev: Non-standard file names,  Up: Customization
-
-3.3 Other compiler
-==================
-
-The wisi project variable 'ada_compoiler' (default elisp variable
-'ada-compiler') (default ''gnat') controls dispatching in
-compiler-specific functions for corresponding Ada mode operations.
-
-   To use a compiler other than GNAT, you must write Emacs lisp code
-that provides the interface to the compiler, and set 'ada-compiler' and
-the indirection variables.
-
-   See 'ada-compiler-gnat.el' for an example.
-
-
-File: ada-mode.info,  Node: Other cross-reference,  Next: Other customization, 
 Prev: Other compiler,  Up: Customization
-
-3.4 Other cross-reference
-=========================
-
-The wisi project variable 'xref_tool' (default elisp variable
-'ada-xref-tool') controls dispatching in the
-cross-reference-tool-specific functions for corresponding Ada mode
-operations.
-
-   If 'gpr_query' is found in 'PATH', the default cross-reference tool
-is 'gpr_query'; otherwise it is 'gnatxref'.
-
-   To use a cross reference tool other than the above, you must write
-Emacs lisp code that provides the interface to the tool, and set
-'ada-xref-tool' and the indirection variables.
-
-   See 'ada-gnat-xref.el' and 'gpr-query.el' for examples.
-
-
-File: ada-mode.info,  Node: Other customization,  Prev: Other cross-reference, 
 Up: Customization
-
-3.5 Other customization
-=======================
-
-All user-settable Ada mode variables can be set via the menu 'Ada |
-Customize'; some can also be set in wisi project files (*note Project
-files::).
-
-   To modify a specific variable, you can directly call the function
-'customize-variable'; just type 'M-x customize-variable <RET>
-VARIABLE-NAME <RET>'.
-
-   Alternately, you can specify variable settings in the Emacs
-configuration file, '~/.emacs'.  This file is coded in Emacs lisp, and
-the syntax to set a variable is the following:
-
-     (setq variable-name value)
-
-   Some general Emacs settings that are useful for Ada files:
-
-'context menu'
-     By default, the context menu is bound to <C-down-mouse-3>, i.e.
-     control-right-click.  <down-mouse-3> is already bound in the global
-     map; you can override that global binding in the 'ada-mode-hook'
-     (see below for code).
-'other-frame-window-mode'
-     Ada mode does not provide any 'other-frame' or 'other-window'
-     variants of user operations.  Instead, it is recommended to use the
-     Gnu ELPA package 'other-frame-window'.
-'delete-trailing-whitespace'
-     Deletes space, tab at end of line and blank lines at end of buffer.
-'xref configuration'
-     'xref-prompt-for-identifier'
-          Set to 'nil' to be prompted less when finding definitions or
-          references.
-     'xref-show-xrefs-function'
-          Determine placement of the window where references are shown.
-     'xref-show-definitions-function'
-          Determine placement of the window where definitions are shown.
-     'xref--transient-buffer-mode-map'
-          keymap used in some xref windows; you may want to disable the
-          <RET> binding there.
-'untabify'
-     Deletes tab characters that have crept into the file.
-'indent-tabs-mode'
-     Don't insert tab characters when indenting.
-'copyright-update'
-     Updates the copyright date in the file header comment, to the
-     current year.
-'electric-pair-mode'
-     Insert a matching right paren when you type a left paren.
-'hippie-expand'
-     Bind 'hippie-expand' to a key; it expands the word before point,
-     using words from current buffer, other buffers, file names, etc;
-     see 'hippie-expand-try-functions-list'.  You can also add
-     'wisi-skel-hippie-try' to that list.  Note that 'wisi-skel-expand'
-     is bound to <C-c C-e> (*note Statement skeletons::).
-'imenu'
-     Navigate to subprograms and types by name, from a minibuffer menu.
-'speedbar'
-     Navigate to subprograms and types by name, from a list in a
-     dedicated window.
-'which-func'
-     Display the current subprogram name in the mode bar.
-
-   The above can all be set by the following code in your '~/.emacs'.
-Note that some are functions are added to 'before-save-hook'; they run
-just before a buffer is written to disk.  Also, the order is important;
-ada-mode does not set up the Ada-specific features of imenu and speedbar
-unless imenu is loaded first.
-
-     (setq-default indent-tabs-mode nil)
-     (define-key xref--transient-buffer-mode-map (kbd "RET") 'xref-goto-xref)
-     (setq xref-prompt-for-identifier nil) ;; only prompt on C-u
-     (setq xref-show-xrefs-function #'xref--show-defs-buffer-at-bottom)
-     (setq xref-show-definitions-function #'xref--show-defs-buffer-at-bottom)
-
-     (electric-pair-mode 1)
-     (require 'imenu) ;; also enables speedbar
-     (require 'ada-mode)
-     (add-to-list 'hippie-expand-try-functions-list 'wisi-skel-hippie-try)
-     (define-key ada-mode-map "\C-e"     'hippie-expand)
-     (define-key ada-mode-map [down-mouse-3] 'ada-popup-menu)
-     (add-hook 'ada-mode-hook
-        (lambda ()
-         (add-hook 'before-save-hook 'delete-trailing-whitespace nil t)
-         (add-hook 'before-save-hook 'copyright-update nil t)
-         (add-hook 'before-save-hook
-                   (lambda () (untabify (point-min) (point-max)))
-                    nil t)))
-
-
-File: ada-mode.info,  Node: Compiling Executing,  Next: Project files,  Prev: 
Customization,  Up: Top
-
-4 Compiling Executing
-*********************
-
-Ada projects can be compiled, linked, and executed using commands on the
-Ada menu.  All of these commands can be customized via a project file
-(*note Project files::), but the defaults are sufficient for using the
-GNAT compiler for simple projects (single files, or several files in a
-single directory).
-
-   For complex projects, you will want to use 'make' or some other build
-tool; in that case, you may need a wisi project file to tell Emacs about
-the project directory tree and other settings.
-
-* Menu:
-
-* Compile commands::
-* Compiling Examples::
-* Compiler errors::
-
-
-File: ada-mode.info,  Node: Compile commands,  Next: Compiling Examples,  
Prev: Compiling Executing,  Up: Compiling Executing
-
-4.1 Compile commands
-====================
-
-Here are the commands for building an Ada project and running the main
-program; they are all on the 'Ada | Build' menu.
-
-   In multi-file projects, there must be one file that is the main
-program.  That is given by the 'main' project file variable; it defaults
-to the current file if not yet set, but is also set by the "set main and
-build" command.
-
-'Check file'
-     Compiles the current file in syntax check mode, by running
-     'check_cmd' defined in the current project file.  This typically
-     runs faster than full compile mode, speeding up finding and fixing
-     compilation errors.
-
-     This sets 'main' only if it has not been set yet.
-
-'Compile file'
-     Compiles the current file, by running 'comp_cmd' from the current
-     project file.
-
-     This does not set 'main'.
-
-'Set main and Build'
-     Sets 'main' to the current file, then executes the Build command.
-
-'Show main'
-     Displays 'main' in the message buffer.
-
-'Build'
-     Compiles all obsolete units of the current 'main', and links
-     'main', by running 'make_cmd' from the current project.
-
-     This sets 'main' only if it has not been set yet.
-
-'Run'
-     Executes the main program in a shell, displayed in a separate Emacs
-     buffer.  This runs 'run_cmd' from the current project.  The
-     execution buffer allows for interactive input/output.
-
-     To modify the run command, in particular to provide or change the
-     command line arguments, type 'C-u' before invoking the command.
-
-     This command is not available for a cross-compilation toolchain.
-
-   It is important when using these commands to understand how 'main' is
-used and changed.
-
-   Build runs 'gprbuild' on the main unit.  During a typical
-edit/compile session, this is the only command you need to invoke, which
-is why it is bound to 'C-c C-c'.  It will compile all files needed by
-the main unit, and display compilation errors in any of them.
-
-   Note that Build can be invoked from any Ada buffer; typically you
-will be fixing errors in files other than the main, but you don't have
-to switch back to the main to invoke the compiler again.
-
-   Novices and students typically work on single-file Ada projects.  In
-this case, 'C-c C-m' will normally be the only command needed; it will
-build the current file, rather than the last-built main.
-
-   There are two ways to change 'main':
-
-  1. Invoke 'Ada | Set main and Build', which sets 'main' to the current
-     file.
-
-  2. Invoke 'Ada | Project | Load', and load a project file that
-     specifies 'main'
-
-
-File: ada-mode.info,  Node: Compiling Examples,  Next: Compiler errors,  Prev: 
Compile commands,  Up: Compiling Executing
-
-4.2 Compiling Examples
-======================
-
-We present several small projects, and walk thru the process of
-compiling, linking, and running them.
-
-   The first example illustrates more Ada mode features than the others;
-you should work thru that example before doing the others.
-
-   All of these examples assume you are using GNAT.
-
-   The source for these examples is available on the Emacs Ada mode
-website mentioned in *Note Installation::.
-
-* Menu:
-
-* No project files::            Just menus
-* Set compiler options::        A basic Ada mode project file
-* Set source search path::      Source in multiple directories
-* Use wisi project file::
-* Use multiple GNAT project files::
-* Use a Makefile::
-
-
-File: ada-mode.info,  Node: No project files,  Next: Set compiler options,  
Prev: Compiling Examples,  Up: Compiling Examples
-
-4.2.1 No project files
-----------------------
-
-This example uses no project files.
-
-   First, create a directory 'Example_1', containing:
-
-   'hello.adb':
-
-     with Ada.Text_Io;
-     procedure Hello
-     is begin
-        Put_Line("Hello from hello.adb");
-     end Hello;
-
-   Yes, this is missing "use Ada.Text_Io;" - we want to demonstrate
-compiler error handling.
-
-   'hello_2.adb' has no errors:
-
-     with Hello_Pkg;
-     procedure Hello_2
-     is begin
-        Hello_Pkg.Say_Hello;
-     end Hello_2;
-
-   'hello_pkg.ads' has no errors:
-
-     package Hello_Pkg is
-        procedure Say_Hello;
-     end Hello_Pkg;
-
-   'hello_pkg.adb':
-
-     with Ada.Text_Io;
-     package Hello_Pkg is
-        procedure Say_Hello
-        is begin
-           Ada.Text_Io.Put_Line ("Hello from hello_pkg.adb");
-        end Say_Hello;
-     end Hello_Pkg;
-
-   Yes, this is missing the keyword 'body'; another compiler error
-example.  However, note that the indentation engine parser accepts this
-code, making it possible to indent illegal Ada code.
-
-   In buffer 'hello.adb', invoke the menu entry 'Ada | Build | Check
-syntax'.  You should get a '*compilation*' buffer containing something
-like (the directory paths will be different):
-
-     -*- mode: compilation; default-directory: 
"c:/Projects/org.emacs.ada-mode.stephe-1/test/Example_1/" -*-
-     Compilation started at Fri Oct 18 04:23:54
-
-     gprbuild  -u -c -gnatc  
c:/Projects/org.emacs.ada-mode/test/Example_1/hello.adb
-     using project file D:\Apps\GNAT-gpl_2019\share\gpr\_default.gpr
-     Compile
-        [Ada]          hello.adb
-     hello.adb:4:04: "Put_Line" is not visible
-     hello.adb:4:04: non-visible declaration at a-textio.ads:263
-     hello.adb:4:04: non-visible declaration at a-textio.ads:259
-     gprbuild: *** compilation phase failed
-
-     Compilation exited abnormally with code 4 at Fri Oct 18 04:23:54
-
-   The lines with actual errors (starting with 'hello.adb') are
-highlighted, with the file name in red.
-
-   Now invoke 'Ada | Build | Next compilation error'.  Or you can click
-the middle mouse button on the first error line, or use the key binding
-shown on the menu.  In the compilation buffer, a triangle is placed in
-the left fringe on the first error line, and point is put at the place
-of the error in the 'hello.adb' buffer.
-
-   To fix the error, invoke 'Ada | Build | Fix compilation error'; this
-adds "Ada.Text_Io."  to the line:
-
-         Ada.Text_Io.Put_Line ("hello from hello.adb");
-
-   Now invoke 'Ada | Build | Show main'; this displays 'Ada mode main:
-hello'.
-
-   Now (in buffer 'hello.adb'), invoke 'Ada | Build | Build'.  You are
-prompted to save the file (if you haven't already).  Then the
-compilation buffer is displayed again, containing:
-
-     -*- mode: compilation; default-directory: 
"c:/Projects/org.emacs.ada-mode.stephe-1/test/Example_1/" -*-
-     Compilation started at Fri Oct 18 20:39:33
-
-     gprbuild  hello
-     using project file D:\Apps\GNAT-gpl_2019\share\gpr\_default.gpr
-     Compile
-        [Ada]          hello.adb
-     Bind
-        [gprbind]      hello.bexch
-        [Ada]          hello.ali
-     Link
-        [link]         hello.adb
-
-     Compilation finished at Fri Oct 18 20:39:34
-
-   The compilation has succeeded without errors; 'hello.exe' now exists
-in the same directory as 'hello.adb'.
-
-   Now invoke 'Ada | Build | Run'.  The '*compilation*' buffer is
-displayed, containing
-
-     -*- mode: compilation; default-directory: 
"c:/Projects/org.emacs.ada-mode.stephe-1/test/Example_1/" -*-
-     Compilation started at Fri Oct 18 20:41:53
-
-     ./hello
-     Hello from hello.adb
-
-     Compilation finished at Fri Oct 18 20:41:53
-
-   That completes the first part of this example.
-
-   Now we will compile a multi-file project.  Open the file
-'hello_2.adb', invoke 'Ada | Build | Set main and Build'.  This finds an
-error in 'hello_pkg.adb':
-
-     hello_pkg.adb:2:08: keyword "body" expected here [see file name]
-
-   This demonstrates that gprbuild finds the files needed by the main
-program.  However, it cannot find files in a different directory, unless
-you use a GNAT project file to specify the other directories; *note Set
-source search path::.
-
-   Invoke 'Ada | Build | Show main'; this displays 'Ada mode main:
-hello_2'.
-
-   Move to the error with 'C-x `', and fix the error by adding 'body':
-
-     package body Hello_Pkg is
-
-   Now, while still in 'hello_pkg.adb', invoke 'Ada | Build | Build'.
-gprbuild successfully builds 'hello_2'.  This demonstrates that Emacs
-has remembered the main file, in the project variable 'main', and used
-it for the Build command.
-
-   Finally, again while in 'hello_pkg.adb', invoke 'Ada | Build | Run'.
-The '*compilation*' buffer displays 'Hello from hello_pkg.adb'.
-
-   One final point.  If you switch back to buffer 'hello.adb', and
-invoke 'Ada | Build | Run', 'hello_2.exe' will be run.  That is because
-'main' is still set to 'hello_2', as you can see when you invoke 'Ada |
-Build | Show main'.
-
-   There are two ways to change 'main':
-
-  1. Invoke 'Ada | Build | Set main and Build', which sets 'main' to the
-     current file.
-
-  2. Invoke 'Ada | Build | Set Project ...', and select a project file
-     that specifies 'main'.
-
-
-File: ada-mode.info,  Node: Set compiler options,  Next: Set source search 
path,  Prev: No project files,  Up: Compiling Examples
-
-4.2.2 Set compiler options
---------------------------
-
-This example illustrates using a gnat project file to set a compiler
-option.
-
-   If you have files from 'Example_1' open in Emacs, you should close
-them so you don't get confused.  Use menu 'File | Close (current
-buffer)'.
-
-   In directory 'Example_2', create these files:
-
-   'hello.adb':
-
-     with Ada.Text_Io;
-     procedure Hello
-     is begin
-        Put_Line("Hello from hello.adb");
-     end Hello;
-
-   This is the same as 'hello.adb' from 'Example_1'.  It has two errors;
-missing "use Ada.Text_Io;", and no space between 'Put_Line' and its
-argument list.
-
-   'hello.gpr':
-
-     project Hello is
-        package Compiler is
-           for Default_Switches ("Ada") use ("-gnatyt");
-        end Compiler;
-     end Hello;
-
-   This tells the GNAT compiler to check for token spacing; in
-particular, there must be a space preceding a parenthesis.
-
-   In buffer 'hello.adb', invoke 'Ada | Build | Set main and Build'.
-This finds the project file 'hello.gpr', uses it to set the compiler
-options, and builds the project.  You should get a '*compilation*'
-buffer containing something like (the directory paths will be
-different):
-
-     gprbuild -Phello.gpr hello
-     Compile
-        [Ada]          hello.adb
-     hello.adb:4:04: "Put_Line" is not visible
-     hello.adb:4:04: non-visible declaration at a-textio.ads:508
-     hello.adb:4:04: non-visible declaration at a-textio.ads:498
-     hello.adb:4:12: (style) space required
-     gprbuild: *** compilation phase failed
-
-   Compare this to the compiler output in *note No project files::; the
-compiler-provided default gpr file has been replaced by 'hello.gpr', and
-an additional error is reported in 'hello.adb' on line 4.  This shows
-that 'hello.gpr' is being used to set the compiler options.
-
-   Use 'C-x`', 'C-c M-`' to fix the errors, then 'Ada | Build | Build'
-and 'Ada | Build | Run' to build and run.
-
-
-File: ada-mode.info,  Node: Set source search path,  Next: Use wisi project 
file,  Prev: Set compiler options,  Up: Compiling Examples
-
-4.2.3 Set source search path
-----------------------------
-
-In this example, we show how to deal with files in more than one
-directory, setting the source search path in the gpr file.
-
-   Create the directory 'Example_3', containing:
-
-   'hello_pkg.ads':
-
-     package Hello_Pkg is
-        procedure Say_Hello;
-     end Hello_Pkg;
-
-   'hello_pkg.adb':
-
-     with Ada.Text_Io;
-     package Hello_Pkg is
-        procedure Say_Hello
-        is begin
-           Ada.Text_Io.Put_Line ("Hello from hello_pkg.adb");
-        end Say_Hello;
-     end Hello_Pkg;
-
-   These are the same files from example 1; 'hello_pkg.adb' has an error
-on line 2.
-
-   'other.gpr':
-
-     project Other is
-        for Source_Dirs use (".", "Other");
-     end Other;
-
-   In addition, create a directory 'Example_3/Other', containing this
-file:
-
-   'Other/hello_3.adb':
-
-     with Hello_Pkg;
-     with Ada.Text_Io; use Ada.Text_Io;
-     procedure Hello_3
-     is begin
-        Hello_Pkg.Say_Hello;
-        Put_Line ("From hello_3");
-     end Hello_3;
-
-   There are no errors in this file.
-
-   In buffer 'hello_3.adb', invoke 'Ada | Project files | Find and
-select project...', and select 'Example_3/other.gpr'.  This tells Emacs
-Ada mode to stop using the project file from 'Example_2', and use the
-one for 'Example_3'.  Also note that since this project file is not
-named 'hello_3.gpr', it would not be found by default.
-
-   Then, again in 'hello_3.adb', invoke 'Ada | Set main and Build'.  You
-should get a '*compilation*' buffer containing something like (the
-directory paths will be different):
-
-     gprbuild -Pother.gpr hello_3
-     Compile
-        [Ada]          hello_3.adb
-        [Ada]          hello_pkg.adb
-     hello_pkg.adb:2:08: keyword "body" expected here [see file name]
-     gprbuild: "C:\Examples\Example_3\hello_pkg.adb" compilation error
-
-   Move to the error with 'C-x `'.  Ada mode searches the list of
-directories given by 'Source_Dirs' for the file mentioned in the
-compiler error message.
-
-   Use 'C-x`', 'C-c M-`' to fix the errors, then 'Ada | Build | Build'
-and 'Ada | Build | Run' to build and run.
-
-
-File: ada-mode.info,  Node: Use wisi project file,  Next: Use multiple GNAT 
project files,  Prev: Set source search path,  Up: Compiling Examples
-
-4.2.4 Use wisi project file
----------------------------
-
-In this example, we show how to use a wisi project file to set some
-options that cannot be set in a gpr project file.  In addition, we
-change a setting so you are prompted for a project file, rather than
-using a default one.
-
-   Change the setting:
-
-     M-x set-variable ada-build-prompt-prj search-prompt
-
-   Create the directory 'Example_4', containing:
-
-   'hello_pkg.ads':
-
-     package Hello_Pkg is
-        procedure Say_Hello;
-     end Hello_Pkg;
-
-   'hello_pkg.adb':
-
-     with Ada.Text_Io;
-     package body Hello_Pkg is
-        procedure Say_Hello
-        is begin
-           Put_Line ("Hello from hello_pkg.adb");
-        end Say_Hello;
-     end Hello_Pkg;
-
-   These two files are the similar to files from example 1;
-'hello_pkg.adb' has an error on line 5 (missing "Ada.Text_IO.").
-
-   'example_4.prj':
-
-     -- Wisi project file
-
-     gpr_project_path=More
-
-     gpr_file=example_4.gpr
-
-     casing=example_4.casing
-
-   'example_4.prj' is a wisi project file; it specifies the
-'gpr_project_path', telling 'gprbuild' where to search for gpr files,
-and specifies the gpr file to use.  Finally it specifies a casing
-exception file:
-
-   'example_4.casing':
-
-     Text_IO
-
-   The default auto casing rules in ada-mode state that the Ada package
-"Ada.Text_IO" should be capitalized as "Ada.Text_Io", which does not
-match the Ada Reference Manual.  'example_4.casing' specifies that
-instead "Text_IO" should be capitalized as shown.
-
-   You can create a casing exception by editing the file directly, or
-via the 'Ada | Casing' menu.
-
-   'gpr_project_path' and 'casing' are list variables; each occurence in
-a wisi project file adds an entry to the list.
-
-   In addition, create a directory 'Example_4/More', containing these
-files:
-
-   'more/hello_4.adb':
-
-     with Hello_Pkg;
-     with Ada.Text_Io; use Ada.Text_Io;
-     procedure Hello_4
-     is begin
-        Hello_Pkg.Say_Hello;
-        Put_Line ("From hello_4");
-     end Hello_4;
-
-   There are no errors in this file, except for the casing in
-"Ada.Text_Io".
-
-   'More/example_4.gpr':
-
-     project Example_4 is
-        for Source_Dirs use (".", "..");
-
-        package Compiler is
-           for Default_Switches ("Ada") use ("-gnatyknpr");
-        end Compiler;
-     end Example_4;
-
-   The compiler switch checks all casing; we will get errors for
-"Ada.Text_Io".
-
-   Then, in 'hello_4.adb', invoke 'Ada | Set main and Build'.  ada-mode
-looks for a project file 'hello_4.prj' or 'hello_4.gpr'; since neither
-is found, you are prompted to find a project file.  Select
-'Example_4/example_4.prj'; that is parsed and selected, and the build
-continues.
-
-   You should get a '*compilation*' buffer containing something like
-(the directory paths will be different):
-
-     gprbuild -Pexample_4.gpr hello_4
-     Compile
-        [Ada]          hello_pkg.adb
-     hello_pkg.adb:1:16: (style) bad casing of "Text_IO" declared at 
a-textio.ads:57
-     hello_pkg.adb:5:07: "Put_Line" is not visible
-     hello_pkg.adb:5:07: non-visible declaration at a-textio.ads:508
-     hello_pkg.adb:5:07: non-visible declaration at a-textio.ads:498
-     gprbuild: *** compilation phase failed
-
-   When you fix the errors, note that 'C-c M-`' inserts the correct case
-for "Ada.Text_IO", and corrects the case where it is incorrect.  The
-case is also corrected as you type; you can type "ada.text_io."  and the
-case will be corrected when you type each "."  or "_".
-
-
-File: ada-mode.info,  Node: Use multiple GNAT project files,  Next: Use a 
Makefile,  Prev: Use wisi project file,  Up: Compiling Examples
-
-4.2.5 Use multiple GNAT project files
--------------------------------------
-
-In this example, we show how to use multiple GNAT project files,
-specifying the GNAT project search path in an Ada mode project file.
-This also requires explicitly setting 'project-find-functions'.
-
-   If you haven't already, create the directory 'Example_4' as specified
-in *note Use wisi project file::.  If you've already created it and run
-the tutorial, restore the compilation error in hello_pkg.adb; delete
-'Ada.Text_IO.' in front of 'Put_Line'.
-
-   Create the directory 'Example_5', containing:
-
-   'hello_5.adb':
-
-     with Hello_Pkg;
-     with Ada.Text_IO; use Ada.Text_IO;
-     procedure Hello_5
-     is begin
-        Hello_Pkg.Say_Hello;
-        Put_Line ("From hello_5");
-     end Hello_5;
-
-   There are no errors in this file.
-
-   'hello_5.prj':
-
-     gpr_project_path=../Example_4/More
-     gpr_file=hello_5.gpr
-
-     casing=../Example_4/example_4.casing
-
-   'hello_5.gpr':
-
-     with "example_4";
-     project Hello_5 is
-        for Source_Dirs use (".");
-        package Compiler is
-           for Default_Switches ("Ada") use ("-g", "-gnatyknprt");
-        end Compiler;
-     end Hello_5;
-
-   In buffer 'hello_5.adb', invoke 'Ada | Project | Find and select
-project...', and select 'Example_5/hello_5.prj'.  This would also be
-found by default if no previous project file had been selected.  Note
-that if 'example_5.gpr' were named 'hello_5.gpr', the project file
-search would find more than one match, causing an error.
-
-   Then, again in 'hello_5.adb', invoke 'Ada | Build | Set main and
-Build'.  You should get a '*compilation*' buffer containing something
-like (the directory paths will be different):
-
-     -*- mode: compilation; default-directory: 
"c:/Projects/org.emacs.ada-mode/test/Example_5/" -*-
-     Compilation started at Mon Oct 21 11:32:05
-
-     gprbuild -Pexample_5.gpr hello_5
-     Compile
-        [Ada]          hello_5.adb
-        [Ada]          hello_pkg.adb
-     hello_pkg.adb:5:07: "Put_Line" is not visible
-     hello_pkg.adb:5:07: non-visible declaration at a-textio.ads:508
-     hello_pkg.adb:5:07: non-visible declaration at a-textio.ads:498
-     gprbuild: *** compilation phase failed
-
-   Now type 'C-x `'; 'Example_4/hello_pkg.adb' is shown, demonstrating
-that 'hello_5.gpr' and 'hello_4.gpr' are being used to set the
-compilation search path.
-
-   Now, in buffer 'hello_pkg.adb' invoke the menu 'Ada | Navigate | Find
-file in project' (which calls 'ada-find-file') to get back to the
-'hello_5.adb' buffer.  If you have not selected any project files
-previously in this emacs session, this gives an unexpected prompt for a
-"project directory".  Kill that with 'C-g'.  Otherwise, enter 'hel <tab>
-5 <tab>'; it will say "no match".
-
-   The problem here the way Emacs projects work.  To find the current
-project, the functions in 'project-find-functions' are run; one should
-return a project.  The ada-mode build functions add
-'wisi-prj-find-dominating-cached' to 'project-find-functions'; that
-looks in the current directory tree for a project file with the same
-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
-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,
-'wisi-prj-find-dominating-cached' finds that; since it does not contain
-'hello_5.adb', 'ada-find-file' cannot find it.
-
-   Any time you have a main project that depends on other projects that
-are not in the same directory tree, you will have this problem.
-
-   The fix is to use a different function in 'project-find-functions';
-'wisi-prj-current-cached'.  This uses a global variable to indicate what
-the current project is.  wisi provides four different functions for
-'project-find-functions'.  *Note Selecting projects: (wisi)Selecting
-projects.
-
-   To change 'project-find-functions', execute:
-
-     M-: (remove-hook 'project-find-functions 'wisi-prj-find-dominating-cached)
-     M-: (add-hook 'project-find-functions 'wisi-prj-current-cached)
-
-   Normally, you must set 'project-find-functions' in your '~/.emacs',
-using the 'add-hook' function.  The ada-mode Build menu functions set it
-for you to make things simpler for novices, but they do not change it if
-you have put one of the wisi functions on it.
-
-   Now set the current project; invoke 'Ada | Project | Find and select
-project...', and select 'Example_5/hello_5.prj'.  Then in
-'hello_pkg.adb', invoke 'Ada | Navigate | Find file in project'; now we
-can find 'hello_5.adb'.
-
-
-File: ada-mode.info,  Node: Use a Makefile,  Prev: Use multiple GNAT project 
files,  Up: Compiling Examples
-
-4.2.6 Use a Makefile
---------------------
-
-In this example, we show how to use a Makefile to build an Ada project
-with GNAT, run the result, and clean the build directories.
-
-   Create the directories 'Example_4, Example_5' as specified in *note
-Use wisi project file::, *note Use multiple GNAT project files::.
-
-   In 'Example_5', add the file:
-
-   'Makefile':
-
-     # build and run hello_5 project
-
-     all : build run
-
-     .PHONY : force
-
-     build : force
-             gprbuild -PExample_5.gpr hello_5
-
-     run :
-             ./hello_5
-
-     clean :
-             gnatclean -r -PExample_5
-
-     # Local Variables:
-     # eval:(unless (wisi-prj-find-function-set-p)(add-hook 
'project-find-functions 'wisi-prj-current-cached))
-     # eval:(wisi-prj-dtrt-parse-file "hello_5.prj" (ada-prj-default "hello_5 
# main") "Makefile")
-     # End:
-
-   Tell Emacs to allow 'eval' in 'Local Variables':
-     M-: (setq enable-local-eval t)
-
-   Close and re-open 'Makefile'; the 'Local Variables' section sets the
-project file to 'hello_5.prj' when the 'Makefile' is opened.
-
-   If you have set 'project-find-functions' in your '~/.emacs', you can
-leave out the first 'eval' line.  Note that 'wisi-prj-dtrt-parse-file'
-does the right thing depending on which wisi function is in
-'project-find-functions'.
-
-   In 'Makefile', invoke 'Tools | Compile...', and accept the default
-make command.  This runs the 'all' target, which builds 'hello_5' and
-runs it (you may have to fix source errors first, depending on how fresh
-the Example_4 directory is).
-
-
-File: ada-mode.info,  Node: Compiler errors,  Prev: Compiling Examples,  Up: 
Compiling Executing
-
-4.3 Compiler errors
-===================
-
-The 'Check syntax' and 'Build' commands, or running 'make', place
-compilation errors in a separate buffer named '*compilation*'.
-
-   Each line in this buffer will become active: you can simply click on
-it with the middle button of the mouse, or move point to it and press
-<RET>.  Emacs will then display the relevant source file and put point
-on the line and column where the error was found.
-
-   You can also press the 'C-x `' key ('next-error'), and Emacs will
-jump to the first error.  If you press that key again, it will move you
-to the second error, and so on.
-
-   Some error messages also include references to other files.  These
-references are accessed via 'C-c `'.
-
-
-File: ada-mode.info,  Node: Project files,  Next: Moving Through Ada Code,  
Prev: Compiling Executing,  Up: Top
-
-5 Project files
-***************
-
-Ada mode uses wisi project files; *note Project files: (wisi)wisi.
-
-   A wisi project file specifies what directories hold sources for your
-project, and allows you to customize the compilation commands and other
-things on a per-project basis.
-
-   The default file extension for wisi project files is '*.adp' or
-'*.prj'.  You can use a different extension by adding it to
-'ada-prj-file-extensions', and a different syntax by adding a parser
-function to 'ada-prj-parser-alist'.
-
-   Note that wisi project files are different than GNAT compiler project
-files ('*.gpr').  However, Emacs Ada mode can use a GNAT project file to
-specify the project directories.  If no other customization is needed, a
-GNAT project file can be used without a wisi project file.
-
-   If no wisi project file is specified, some Ada mode functions are not
-available.
-
-* Menu:
-
-* Project file overview::
-* Project file variables::
-
-
-File: ada-mode.info,  Node: Project file overview,  Next: Project file 
variables,  Prev: Project files,  Up: Project files
-
-5.1 Project file overview
-=========================
-
-The current project file is shown by the menu command <Ada | Project
-Files | Show project>.
-
-   To set the project file, use the menu command <Ada | Project Files |
-Find and select Project ...>, or one of the elisp functions described in
-*note Selecting Projects: (wisi)wisi.
-
-   The project file may also be a GNAT project file (with file extension
-is '.gpr').
-
-
-File: ada-mode.info,  Node: Project file variables,  Prev: Project file 
overview,  Up: Project files
-
-5.2 Project file variables
-==========================
-
-Some project variables have defaults that can be changed by setting
-elisp variables; the table below identifies the elisp variable for each
-project variable.  Elisp variables corresponding to project variables
-that are lists are elisp lists.
-
-   wisi defines some project variables, Ada mode defines some, others
-are defined by the compiler and the cross reference tool.
-
-   Here is the list of variables valid defined by wisi and Ada mode.  In
-the default values, the current directory '"."' is the directory
-containing the project file.
-
-'ada_compiler' [default: 'ada-compiler, gnat']
-     Ada compiler for this project.
-
-     Setting this in the project file reinitializes all options for the
-     xref tool, so it must occur before any compiler-specific project
-     variable.
-
-'casing'
-     List of files containing casing exceptions.  *Note Automatic
-     casing: Automatic casing.
-
-'gnat-stub-args'
-     List of strings passed to 'gnat stub' when it is run.
-
-'gnat-stub-cargs'
-     List of strings passed to 'gnat stub' after '-cargs'.
-
-'obj_dir'
-     A list of directories to search for object and cross-reference
-     files.  Only needed if you are not using GPR files.
-
-'src_dir'
-     A list of directories to search for source files.  Added to the
-     source directories from a gpr file (if any).
-
-'xref_tool' [default: 'ada-xref-tool']
-     Cross reference tool for this project.
-
-     Setting this in the project file reinitializes all options for the
-     xref tool, so it must occur in the project file before any other
-     settings that affect the xref tool.
-
-     If 'gpr_query' is found in 'PATH', 'ada-xref-tool' defaults to
-     ''gpr_query'.  Otherwise, it defaults to ''gnat', which uses 'gnat
-     find'.
-
-   The following project file variables are defined by the GNAT
-compiler:
-
-'ada_project_path' [default: ]
-     Same as 'gpr_project_path'; see below.
-
-'gpr_file' [default: ]
-     The GNAT project file for the project.
-
-     If set, the source and project directories specified in the GNAT
-     project file are appended to 'src_dir' and 'gpr_project_path'.
-     This allows specifying Ada source directories with a GNAT project
-     file, and other source directories with the Emacs project file.
-
-'gpr_project_path' [default: ]
-     A list of directories to search for GNAT project files.  The list
-     is passed to tools via the 'GPR_PROJECT_PATH' process environment
-     variable in the process used to run the 'gnat' and 'gpr_query'
-     tools.
-
-     If not set, 'GPR_PROJECT_PATH' in the child process is inherited
-     from the Emacs process.
-
-'runtime' [default: ]
-     If set, the name of the runtime, used as the value of the 'RTS'
-     command line option for tools.
-
-'target' [default: 'nil']
-     If set, the name of the cross-compilation target, prepended to the
-     'gnat' executable name.
-
-   The following project variables are used by the 'Ada | Build' menu
-commands:
-
-'check_cmd' [default: 'ada-build-check-cmd']
-     Compiler commannd to syntax check a single file.
-
-'main' [default: basename of current file name]
-     File name of executable to build.
-
-'make_cmd' [default: 'ada-build-make-cmd']
-     Command to compile and link the application.
-
-'run_cmd' [default: 'ada-build-run-cmd']
-     Command to run the application.
-
-
-File: ada-mode.info,  Node: Moving Through Ada Code,  Next: Identifier 
completion,  Prev: Project files,  Up: Top
-
-6 Moving Through Ada Code
-*************************
-
-There are several commands to navigate through Ada code.  All these
-functions are available through the Ada menu and keybindings.
-
-   Some of these commands rely on cross reference facilities provided by
-the compiler; the standard Emacs Ada mode only supports the GNAT
-compiler, but others can be added (*note Other cross-reference::).
-
-'C-c C-d'
-     Move from any use of an identifier to its declaration, for from a
-     declaration to its body (if there is one).
-
-     This runs 'xref-find-definitions', which has a default global
-     binding of <M-.>
-
-'C-c M-d'
-     Move from a child type declaration to the parent type declaration;
-     display a list of references if there is more than one parent.
-
-'C-c C-n'
-     Move to the next keyword in the current statement.
-
-     For example, if point is on 'if', move to 'then'.
-
-     This runs 'forward-sexp', which has a default global binding of
-     'C-M-f'.
-
-'C-c C-p'
-     Move to the previous keyword in the current statement.
-
-     For example, if point is on 'then', move to 'if'.
-
-     This runs 'backward-sexp', which has a default global binding of
-     'C-M-b'.
-
-'C-c C-o'
-     Switch between corresponding spec and body.  There are several
-     special cases:
-
-        * If the region is active, it is assumed to contain an Ada
-          package name; position point on the corresponding package
-          declaration.
-
-        * If point is in the start line of a top level child package
-          declaration (but not package body), or a child subprogram spec
-          or body, position point on the corresponding parent package
-          declaration.
-
-        * If point is in the start line of a top level separate body,
-          position point on the corresponding separate stub declaration.
-
-        * If point is in a subprogram declaration or body, position
-          point on the corresponding body or declaration in the other
-          file.
-
-        * If point is on a 'with' clause, position point on the
-          corresponding declaration.
-
-'C-c C-r'
-     Show all references to the identifier surrounding point.  Use 'C-x
-     `' ('next-error') to visit each reference (as for compilation
-     errors).
-
-'C-c C-x'
-     Show all declarations that override the primitive procedure at
-     point.  Use 'C-x `' ('next-error') to visit each reference (as for
-     compilation errors).
-
-'C-c M-x'
-     Show the declaration that the declaration at point overrides.
-
-'C-u SPACE'
-     Jump back to the previous location.
-
-'Ada | Misc | Refresh cross reference cache'
-     Cross reference information is loaded from the compiler output when
-     the first cross reference command is issued (or when the project
-     file is parsed, if useing cached project files).  If the code is
-     recompiled after that, the cross reference information is reloaded
-     by invoking this menu command.
-
-
-File: ada-mode.info,  Node: Identifier completion,  Next: Indentation,  Prev: 
Moving Through Ada Code,  Up: Top
-
-7 Identifier completion
-***********************
-
-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'.  For a procedure declared as:
-
-     package Package_Name is
-        procedure Procedure_Name (args);
-
-   the completion string looks like:
-
-     Procedure_Name(args)<Package_Name<line>>
-
-   so for example you can type "iterate<wisitok" to complete on
-WisiToken iterators, or "add(Data" to complete on all subprograms whose
-name starts with "add" and whose first argument starts with "Data".
-
-   If you have bound 'hippie-expand', that also uses 'dabbrev-expand'.
-
-   '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
-will have this scenario:
-
-     You type:  myM-/
-     Emacs inserts:  'my_identifier'
-     If you press M-/ once again, Emacs replaces 'my_identifier' with
-     'my_subprogram'.
-     Pressing M-/ once more will bring you back to '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
-'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
-
-8 Indentation
-*************
-
-Ada mode comes with a full set of rules for automatic indentation.  You
-can also configure the indentation, via the following variables:
-
-'ada-indent' (default value: 3)
-     Number of columns for default indentation.
-
-'ada-indent-after-trailing-comment' (default value t)
-     If t, align comment lines imediately following a comment on the
-     same line as code with the preceding comment.  Otherwise, ignore
-     the preceding comment.
-
-'ada-indent-broken' (default value: 2)
-     Number of columns to indent the continuation of a broken line.
-
-'ada-indent-comment-col-0' (default value: nil)
-     If non-nil, comments currently starting in column 0 are left in
-     column 0.  Otherwise, they are indented with previous comments or
-     code.
-
-'ada-indent-comment-gnat' (default value: nil)
-     If non-nil, comments are indented to meet the GNAT style check; one
-     of:
-        * multiple of 'ada-indent'
-        * next non-blank line
-        * previous non-blank line
-
-     Otherwise, they are indented with previous comments or code.
-
-'ada-indent-label' (default value: -3)
-     Number of columns to indent a label.
-
-'ada-indent-record-rel-type' (default value: 3)
-     Indentation for 'record' relative to 'type' or 'use'.
-
-'ada-indent-renames' (default value: 2)
-     Indentation for 'renames' relative to the matching subprogram
-     keyword.
-
-     If the subprogram has parameters then if 'ada-indent-renames' is
-     zero or less the indentation is abs 'ada-indent-renames' relative
-     to the open parenthesis; if 'ada-indent-renames' is one or more the
-     indentation is relative to the line containing the keyword.
-
-     If the subprogram has no parameters then 'ada-indent-broken' the
-     indentation is relative to the indentation of the line containing
-     the keyword.
-
-'ada-indent-return' (default value: 0)
-     Indentation for 'return' relative to the matching 'function'.
-
-     If the function has parameters, then if 'ada-indent-return' is zero
-     or less the indentation is abs 'ada-indent-return' relative to the
-     open parenthesis; if 'ada-indent-return' is one or more,
-     indentation is relative to line containing 'function'.
-
-     If the function has no parameters, 'ada-indent-broken' is used
-     relative to line containing 'function'.
-
-'ada-indent-use' (default value: ada-indent-broken)
-     Indentation for the lines in a 'use' statement.
-
-'ada-indent-when' (default value: 3)
-     Indentation for 'when' relative to 'exception', 'case', or 'or' in
-     'select'.
-
-'ada-indent-with' (default value: ada-indent-broken)
-     Indentation for the lines in a 'with' context clause.
-
-   The indentation variables are buffer local; the global value may be
-overridden in an elisp function on 'ada-mode-hook', or in a file local
-variable section.
-
-   The following keys indent portions of the text:
-
-'RET'
-     Insert and indent a new line.
-
-'TAB'
-     Indent the current line, or the current region.
-
-'C-c TAB'
-     Indent the current statement or declaration.
-
-'C-c S-TAB'
-     Indent the statement or declaration containing the current
-     statement or declaration.
-
-   The indentation algorithm relies on a grammar parser to identify the
-syntactic role for keywords and other words in the code.
-
-   In rare cases, the parser gets confused; it can be reset by invoking
-menu <Ada | Misc | Restart parser>.  Please report such cases as a bug.
-
-
-File: ada-mode.info,  Node: Statement skeletons,  Next: Aligning code,  Prev: 
Indentation,  Up: Top
-
-9 Statement skeletons
-*********************
-
-'C-c C-e' expands the previous one or two words into a statement
-skeleton.  For example, 'i f C-c C-e' expands to:
-
-     if  then
-     elsif  then
-     else
-     end if;
-
-   For named statements (packages, loops, etc), the name is taken from
-the word before point, and the name of the statement from the word
-before that.
-
-   Some expansions prompt for more information, such as whether a spec
-or body is desired.  For example, 'package A_Package C-c C-e' first
-prompts for "body" or "spec".  If "spec" is selected, the following code
-is inserted:
-
-     package A_Package is
-     private
-     end A_Package;
-
-   Named blocks work similarly: 'declare A_Block C-c C-e' expands
-(without prompting) to:
-
-     A_Block:
-        declare
-        begin
-        exception
-        end A_Block;
-
-   Note that the order of the keyword 'declare' and the name 'A_Block'
-are reversed in the expansion; this may take some getting used to.
-Alternately, if no name is present in the buffer, you are prompted for a
-name: 'declare C-c C-e' first prompts for a name, then expands to the
-above.
-
-   The variable 'ada-skel-initial-string' defines what to insert in a
-newly created empty buffer.  It defaults to '{header}', which is a
-placeholder defined by 'ada-skel-header', which inserts a typical header
-with a copyright license (choice of GPL or restricted).  Users will
-typically want to override the definition of 'ada-skel-initial-string'
-and/or 'ada-skel-header', or provide more choices of copyright license.
-
-
-File: ada-mode.info,  Node: Aligning code,  Next: Automatic casing,  Prev: 
Statement skeletons,  Up: Top
-
-10 Aligning code
-****************
-
-Aligning code adds space in each line so that similar parts of
-successive lines are aligned vertically.  For example, a sequence of
-declarations:
-
-     A : Integer;
-     Another : Float := 1.0;
-     More : Integer := 2;
-
-   changes to this when aligned:
-
-     A       : Integer;
-     Another : Float   := 1.0;
-     More    : Integer := 2;
-
-   Alignment is invoked by 'C-c C-a', which aligns the sequence of
-statements surrounding point, or within the selected region.
-
-   Parameter lists are also aligned:
-
-        procedure Foo
-          (A : in Integer;
-           Another : out Float := 1.0;
-           More : in out Integer := 2);
-
-   is aligned to:
-
-        procedure Foo
-          (A       : in     Integer;
-           Another :    out Float   := 1.0;
-           More    : in out Integer := 2);
-
-
-File: ada-mode.info,  Node: Automatic casing,  Next: Comment Handling,  Prev: 
Aligning code,  Up: Top
-
-11 Automatic casing
-*******************
-
-Casing of identifiers, attributes and keywords is automatically
-performed while typing when the variable 'ada-auto-case' is non-nil (the
-default).  Every time you type a word separator, the previous word is
-automatically cased.
-
-   You can customize the automatic casing with the following variables:
-
-'ada-case-keyword'
-     Value must be one of:
-     'downcase-word'
-          Ada keywords will be lowercase.
-
-     'upcase-word'
-          Ada keywords will be uppercase.
-
-'ada-case-strict'
-     If non-nil, all identifiers are forced to 'Mixed_Case'; first
-     letter, and letter following "_" are uppercase; rest are lowercase.
-
-     If nil, the mixed case characters in identifiers are forced to
-     upper case, but the other characters are not modified.  That allows
-     typing all uppercase identifiers without defining a casing
-     exception.
-
-   You can define exceptions to these rules, in files specified by the
-'casing' project variable; *note Casing exception files: (wisi)Casing
-exception files.
-
-   There are two ways to add new items to a casing exception file: you
-can simply edit it as you would edit any text file, or you can position
-point on the word you want to add, and select menu 'Ada | Casing |
-Create full exception' or 'Ada | Casing | Create partial exception'.
-The word will be added to the current list of exceptions and to the
-file.
-
-   It is sometimes useful to have multiple exception files.  For
-example, one could be the standard Ada acronyms, the second some company
-specific exceptions, and the last one some project specific exceptions.
-When you create a new exception, you are prompted for the file to save
-it in.
-
-   Other keys and menu entries are defined:
-
-'C-c C-w'
-     Adjust case of the word at point.  With prefix arg, adjust case
-     even if in a comment or string.  Normally, comments and strings are
-     not affected by case adjust.
-
-'Ada | Casing | Adjust case region'
-     Adjust case in the active region.
-
-'Ada | Casing | Adjust case buffer'
-     Adjust case in the active buffer.
-
-
-File: ada-mode.info,  Node: Comment Handling,  Next: Key summary,  Prev: 
Automatic casing,  Up: Top
-
-12 Comment Handling
-*******************
-
-By default, comment lines get indented like Ada code.  There are a few
-additional functions to handle comments:
-
-'M-;'
-     If the region is active, comment or uncomment it.
-
-     If the current line is empty, start a comment.
-
-     Otherwise, add a comment at the end of the line, in a column given
-     by 'comment-column'.
-
-'M-q'
-     Fill the current comment paragraph.
-
-
-File: ada-mode.info,  Node: Key summary,  Next: Developer overview,  Prev: 
Comment Handling,  Up: Top
-
-13 Key summary
-**************
-
-This table summarizes the keys described in this manual.  Other keys are
-bound by Ada mode; see <C-h b> for a complete list.  The Ada menu also
-displays keys bound to menu operations.
-
-'M-/'
-     *Note Identifier completion::.  Complete the word before point;
-     repeat to cycle thru possible completions.
-
-'M-;'
-     *Note Comment Handling::.  If the region is active, comment or
-     uncomment it.
-
-'M-q'
-     *Note Comment Handling::.  Fill the current comment paragraph.
-
-'RET'
-     *Note Indentation::.  Insert and indent a new line.
-
-'TAB'
-     *Note Indentation::.  Indent the current line, or the current
-     region.
-
-'C-c TAB'
-     *Note Indentation::.  Indent the current statement or declaration.
-
-'C-c S-TAB'
-     *Note Indentation::.  Indent the containing statement or
-     declaration.
-
-'C-c `'
-     *Note Compiler errors::.  Move to the location of the secondary
-     reference in the current compilation error.
-
-'C-c C-a'
-     *Note Aligning code::.  Align code.
-
-'C-c C-c'
-     *Note Compile commands::.  Build the current main program.
-
-'C-c C-d'
-     *Note Moving Through Ada Code::.  Move from any use of an
-     identifier to its declaration, for from a declaration to its body.
-
-'C-c M-d'
-     *Note Moving Through Ada Code::.  Move from a child type
-     declaration to the parent type declaration.
-
-'C-c C-e'
-     *Note Statement skeletons::.  Expand previous one or two words into
-     a statement or declaration skeleton.
-
-'C-c C-c'
-     *Note Compile commands::.  Build the current file.
-
-'C-c C-n'
-     *Note Moving Through Ada Code::.  Move to the next keyword in the
-     current statement.
-
-'C-c C-o'
-     *Note Moving Through Ada Code::.  Switch between corresponding spec
-     and body, or find other spec.
-
-'C-c C-p'
-     *Note Moving Through Ada Code::.  Move to the previous keyword in
-     the current statement.
-
-'C-c C-r'
-     *Note Moving Through Ada Code::.  Show all references to the
-     identifier surrounding point.
-
-'C-c C-w'
-     *Note Automatic casing::.  Adjust case of the word at point.  With
-     prefix arg, adjust case even if in comment or string.
-
-'C-c C-x'
-     *Note Moving Through Ada Code::.  Show all declarations that
-     override the primitive procedure at point.
-
-'C-c C-y'
-     *Note Automatic casing::.  Create case exception.
-
-'C-c `'
-     *Note Compiler errors::.  Move to the location of the next
-     secondary compilation error.
-
-'C-x `'
-     *Note Compiler errors::.  Move to the location of the next
-     compilation error or show result.
-
-'M-q'
-     *Note Comment Handling::.  Fill the current comment paragraph.
-
-
-File: ada-mode.info,  Node: Developer overview,  Next: GNU Free Documentation 
License,  Prev: Key summary,  Up: Top
-
-14 Developer overview
-*********************
-
-If you'd like to contribute to Ada mode, or just understand the sources,
-here's an overview.
-
-* Menu:
-
-* Directory structure::
-* ELPA::
-* Savannah::
-* ada-france::
-
-
-File: ada-mode.info,  Node: Directory structure,  Next: ELPA,  Up: Developer 
overview
-
-14.1 Directory structure
-========================
-
-'org.emacs.ada-mode'
-     Main source.
-
-     File extensions:
-     '*.el'
-          Elisp files; main code.
-
-     '*.elc'
-          Byte-compiled elisp files, not in the distribution.  Generated
-          by the Makefile target 'byte-compile', or by the Emacs package
-          installer.
-
-     '*.ad?'
-          Ada code for the external process parser, some generated by
-          the WisiToken tool 'wisitoken-bnf-generate.exe'.  The
-          generated code is in the tarball distribution and the monotone
-          repository so users and Elisp developers don't have to install
-          WisiToken.
-
-     '*.parse_table'
-          Diagnostic output from 'wisitoken-bnf-generate.exe', useful
-          for tracing parses while debugging a grammar issue.  Not in
-          the tarball distribution or the monotone repository.
-
-     '*.wy'
-          Grammar files, specifying the language to be parsed.  The
-          syntax for these grammar files is similar to that for bison
-          and wisent, but not the same; see the WisiToken documentation
-          for more info.
-
-     '*.texi'
-          Texinfo source for the user guides.
-
-     '*.html'
-          Generated user guide in HTML format.
-
-     '*.info'
-          Generated user guide in Emacs info format.
-
-'build'
-     Makefile for building the external process executable, gpr-query,
-     and the user guides; for running tests; and for publishing to the
-     web page or Gnu ELPA. The main targets are:
-
-     'elisp'
-          Builds ada-mode in place, runs all tests.
-
-     'update-elisp'
-          Builds ada-mode in place.
-
-     'install'
-          Installs executables in the GNAT executable directory.
-
-     'pub'
-          Builds the ELPA packages.
-
-'test'
-     All tests for Ada mode, gpr mode, parser.
-
-     Each test is run in a separate invocation of Emacs, so it is
-     completely independent of all other tests.
-
-     The tests are driven by the elisp code in
-     'wisi-run-indent-test.el'.
-
-     In general, the Ada mode tests open the file, execute test actions,
-     re-indent, and re-captialize the entire file.  The result is diffed
-     with the original, and must match.
-
-     The test actions are defined by comments with the prefix
-     '--EMACSCMD:'; they are elisp forms that invoke Ada mode functions.
-     This is used to test navigation features and other parser effects.
-
-'test/Example_*'
-     Starting files for the examples in this user guide.
-
-'test/gpr'
-     Tests for gpr mode.
-
-'test/subdir'
-     More tests; allows testing path search features.
-
-
-File: ada-mode.info,  Node: ELPA,  Next: Savannah,  Prev: Directory structure, 
 Up: Developer overview
-
-14.2 ELPA
-=========
-
-Ada mode is published via the Gnu ELPA archive.  To test a new version
-of Ada mode, we use a local Gnu ELPA archive.  That requires fetching
-Gnu ELPA via git:
-
-     cd /Projects
-     git clone git://git.savannah.gnu.org/emacs/elpa.git
-
-   If you have an Emacs Savannah developer account, you can use:
-
-     cd /Projects
-     git clone <login>@git.savannah.gnu.org/emacs/elpa.git
-
-   'build/Makefile' contains targets for copying Ada mode source to the
-elpa workspace, and for building the elpa archive there.
-
-
-File: ada-mode.info,  Node: Savannah,  Next: ada-france,  Prev: ELPA,  Up: 
Developer overview
-
-14.3 Savannah
-=============
-
-The ada-mode web page, mailing list, and tarball download are hosted on
-savannah.non-gnu.org, project Emacs Ada mode
-(<https://savannah.nongnu.org/projects/ada-mode/>).  See the project
-admin page there for more information.
-
-
-File: ada-mode.info,  Node: ada-france,  Prev: Savannah,  Up: Developer 
overview
-
-14.4 ada-france
-===============
-
-The source code for ada-mode is maintained in a monotone repository in
-the ada-france server <mtn://www.ada-france.org>.
-
-
-File: ada-mode.info,  Node: GNU Free Documentation License,  Prev: Developer 
overview,  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.
-
-
-
-Tag Table:
-Node: Top931
-Node: Overview2711
-Node: Why not LSP?3948
-Node: Installation4704
-Node: Ada Reference Manual5670
-Node: Ada executables5931
-Node: Building GNATCOLL8285
-Node: Building the executables9180
-Node: Customization9998
-Node: Slow response10498
-Node: Non-standard file names12224
-Node: Other compiler14103
-Node: Other cross-reference14678
-Node: Other customization15401
-Node: Compiling Executing19392
-Node: Compile commands20115
-Node: Compiling Examples22807
-Node: No project files23639
-Node: Set compiler options28955
-Node: Set source search path31008
-Node: Use wisi project file33245
-Node: Use multiple GNAT project files36852
-Node: Use a Makefile41697
-Node: Compiler errors43348
-Node: Project files44165
-Node: Project file overview45217
-Node: Project file variables45759
-Node: Moving Through Ada Code49199
-Node: Identifier completion52231
-Node: Indentation54420
-Node: Statement skeletons57949
-Node: Aligning code59592
-Node: Automatic casing60537
-Node: Comment Handling62724
-Node: Key summary63243
-Node: Developer overview65973
-Node: Directory structure66302
-Node: ELPA68989
-Node: Savannah69626
-Node: ada-france69978
-Node: GNU Free Documentation License70217
-
-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
deleted file mode 100644
index 5c39cb8..0000000
--- a/packages/ada-mode/ada-mode.texi
+++ /dev/null
@@ -1,2202 +0,0 @@
-\input texinfo  @c -*-texinfo-*-
-@settitle Ada Mode
-
-@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
-* Ada mode: (ada-mode).         Emacs mode for editing and navigating Ada code.
-@end direntry
-
-@titlepage
-@sp 10
-@title Ada Mode Version 7.1.3
-@page
-@vskip 0pt plus 1filll
-@insertcopying
-@end titlepage
-
-@contents
-
-@ifnottex
-@node Top, Overview, (dir), (dir)
-@top Top
-
-Ada Mode Version 7.1.3
-@end ifnottex
-
-@menu
-* Overview::
-* Installation::                Installing Ada mode on your system
-* Customization::               Setting up Ada mode to your taste
-* Compiling Executing::         Working with your application within Emacs
-* Project files::               Describing the organization of your project
-* Moving Through Ada Code::     Moving easily through Ada sources
-* Identifier completion::       Finishing words automatically
-* Indentation::                 Indenting your code automatically as you type
-* Statement skeletons::         Some code is written for you
-* Aligning code::               Making it pretty
-* Automatic casing::            Adjusting the case of words automatically
-* Comment Handling::            Reformatting comments easily
-* Key summary::
-* Developer overview::
-* GNU Free Documentation License::
-
-@detailmenu
- --- The Detailed Node Listing ---
-
-Overview
-
-* Why not LSP?::
-
-Installation
-
-* Ada Reference Manual::
-* Ada executables::
-
-Ada executables
-
-* Building GNATCOLL::
-* Building the executables::
-
-Customizing Ada mode
-
-* Slow response::
-* Non-standard file names::
-* Other compiler::
-* Other cross-reference::
-* Other customization::
-
-Compiling Executing
-
-* Compile commands::
-* Compiling Examples::
-* Compiler errors::
-
-Compiling Examples
-
-* No project files::            Just menus
-* Set compiler options::        A basic Ada mode project file
-* Set source search path::      Source in multiple directories
-* Use wisi project file::
-* Use multiple GNAT project files::
-* Use a Makefile::
-
-Project files
-
-* Project file overview::
-* Project file variables::
-
-Developer overview
-
-* Directory structure::
-* ELPA::
-* Savannah::
-* ada-france::
-
-@end detailmenu
-@end menu
-
-@node Overview, Installation, Top, Top
-@chapter Overview
-
-The Emacs mode for programming in Ada helps the user in reading
-existing code and facilitates developing new code.
-
-Cross-reference information output by the compiler is used to provide
-powerful code navigation (jump to definition, find all uses, etc).
-
-When you open a file with a file extension of @file{.ads} or
-@file{.adb}, Emacs will automatically load and activate Ada
-mode.
-
-Ada mode works without any customization, if you are using the GNAT
-compiler (@url{https://libre.adacore.com/}) and the GNAT default
-naming convention.
-
-You must customize a few things if you are using a different file
-naming convention or compiler; @xref{Non-standard file names},
-@xref{Other compiler}.
-
-In addition, you may want to customize the indentation,
-capitalization, and other things; @xref{Other customization}.
-
-Finally, for large Ada projects, you will want to set up an Emacs Ada
-mode project file for each project; @xref{Project files}. Note that
-these are different from the GNAT project files used by the GNAT
-tools.
-
-@xref{Debuggers,,Debuggers,emacs,Emacs User Guide}, for general
-information on debugging.
-
-@menu
-* Why not LSP?::
-@end menu
-
-@node Why not LSP?
-@section Why not LSP?
-The Language Server Protocol (LSP, @url{https://langserver.org})
-supports an external language parser, as Ada mode does, and it is
-supported by the GNU ELPA package eglot. Ada mode does not use LSP mostly for
-historical reasons; the Ada mode parser was first developed before LSP
-was started. In addition, LSP does not support some of the navigation
-information provided by the Ada mode parser (although that could be
-provided as a custom command).
-
-We may investigate supporting an LSP parser in the future. In
-particular, the AdaCore Gnat Studio editor uses an LSP parser for
-several functions; Emacs Ada mode could use that as a backend if it
-supports LSP.
-
-@node Installation, Customization, Overview, Top
-@chapter Installation
-
-Ada mode requires Emacs 25.0 or greater. Compiling the Ada code for
-the external process parser requires GNAT GPL 2017 or later; tested
-with GNAT Community Edition 2019 and GNAT Pro 19.
-
-Ada mode is distributed in the Gnu ELPA package archive; it can be
-installed via @code{M-x list-packages} (@pxref{Packages,,,emacs,Emacs
-User Guide}). Note that it requires the @code{wisi} and
-@code{uniquify-files} packages as dependencies.
-
-In Emacs < 27 you must first enable packages in your
-@file{~/.emacs}, @emph{after} customizing
-@code{Info-default-directory-list} (if you do that):
-
-@example
-(package-initialize)
-@end example
-
-To see what version of Ada mode you have installed, invoke @kbd{M-x
-ada-mode-version}.
-
-You must also install the associated Ada executables (for the language
-parser). You may want to install the Ada Reference Manual.
-
-@menu
-* Ada Reference Manual::
-* Ada executables::
-@end menu
-
-@node Ada Reference Manual
-@section Ada Reference Manual
-The ELPA package ada-ref-man includes the Ada Reference Manual and
-Annotated Ada Reference Manual in info format.
-
-@node Ada executables
-@section Ada executables
-
-Ada mode requires the external parser, which must be compiled.
-
-Ada mode has support for an external cross reference tool
-@file{gpr_query}, which uses compiler-generated information. In the
-case of Ada, the necessary @file{.ali} files are automatically
-generated by the standard compilation process. For other languages,
-e.g. C, C++, @file{.gli} files can be generated using the compiler
-switch @code{-fdump-xref}. @code{-fdump-xref} is an AdaCore extension,
-not available in FSF GCC.
-
-@file{gpr_query} is an Ada program, which is distributed as source and
-must be built. Its source code is in the @code{ada-mode} Gnu ELPA package.
-
-@file{gpr_query} is similar to the AdaCore utility @code{gnatxref},
-but supports additional queries.
-
-Both the parser and @file{gpr_query} require the @code{GNATCOLL}
-library provided by AdaCore, distributed with GNAT GPL 2017 or later,
-and also available at Github
-(@url{https://github.com/AdaCore/gnatcoll}). The notes below assume
-that the compiler is installed at @file{$prefix},
-e.g. @file{/usr/local/gnat-2019}, and that @file{$prefix/bin} is first
-on the @code{PATH}. If you are running Windows, use mingw64
-@code{bash} to run these commands.
-
-On linux, some versions of the @code{GNATCOLL.iconv} package (used by
-@code{gpr_query}, but not the parser) explicitly
-require the @file{libiconv.so} library. GNAT provides the
-@file{libiconv.so} library in @file{<gnat>/lib64/libiconv.so}. On
-Debian, that directory is not in the standard load path, and iconv is
-provided by glibc, so @file{libiconv.so} is not found on the standard
-load path. So you must set @var{LD_LIBRARY_PATH}, but only when
-running @code{gpr-query}:
-
-@example
-(setq gpr-query-env '("LD_LIBRARY_PATH=/Projects/gnat/pro_19.2/lib64")
-@end example
-
-In general, @file{gpr_query} should be compiled with the compiler
-version that is used to generate the user project @file{.ali} files;
-the @file{ali} file format can change with each compiler
-version. @file{gpr_query} creates a database of cross reference
-information; that database must be deleted if the compiler version
-changes, to force a complete rebuild.
-
-The default binary gnatcoll distributed with GNAT GPL 2019
-does not include the xref package, which is required by
-@file{gpr_query}. So we must build gnatcoll xref from sources.
-
-@menu
-* Building GNATCOLL::
-* Building the executables::
-@end menu
-
-@node Building GNATCOLL
-@subsection Building GNATCOLL
-
-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-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
-make -C sqlite install
-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
-
-@file{gpr_query} requires the @code{pthread} library. On Windows, this
-is available in Mingw64 as package
-@code{mingw64/mingw-w64-x86_64-winpthreads-git}.
-
-To build and install @file{gpr_query} and the parser, assuming the
-@code{ada-mode-6.0.xx} GNU ELPA package is installed:
-
-@example
-cd ~/.emacs.d/elpa/ada-mode-6.0.xx
-./build.sh
-./install.sh
-@end example
-
-By default, @file{install.sh} installs the executables in the same
-directory as the GNAT executable (using @file{gprinstall}). If you
-don't have write privileges there, or if you want to install somewhere
-else, use @code{install.sh --prefix=<dir>}.
-
-@code{ada-mode} will use @file{gpr_query} and the parser if they are
-found in @code{PATH}.
-
-@node Customization, Compiling Executing, Installation, Top
-@chapter Customizing Ada mode
-
-Here we assume you are familiar with setting variables in Emacs,
-either thru 'customize' or in elisp (in your @file{.emacs} file). For
-a basic introduction to customize, elisp, and Emacs in general, see
-the tutorial (@kbd{C-h t}).
-
-@menu
-* Slow response::
-* Non-standard file names::
-* Other compiler::
-* Other cross-reference::
-* Other customization::
-@end menu
-
-@node Slow response
-@section Slow response
-
-In large files, parsing takes a noticable amount of time, so it gets
-in the way of interactive typing due to immediate fontification
-triggering a parse.
-
-There are three ways to deal with this:
-
-@enumerate
-@item Set @code{wisi-partial-parse-threshold}
-In your @file{~./emacs}:
-
-@example
-(setq wisi-partial-parse-threshold 100001)
-@end example
-
-The default value (100001) may already be appropriate; it depends on
-how fast your machine is, and what your tolerance for slow response
-is.
-
-Files larger than @code{wisi-partial-parse-threshold} (in characters)
-will be parsed partially; only the part of the buffer needed for the
-current task will be parsed. For fontification, that is the visible
-part. For indent, it is approximately the current subprogram or
-package. For navigation, it is always the entire file, which will
-still be slow; that is the only way to ensure useful results.
-
-With this setting, indentation may not be correct; the Ada menu entry
-``Edit | Indent containing statement'' will indent correctly.
-
-@item Delay fontification by setting @code{jit-lock-defer-time} in your
-@file{~./emacs}:
-
-@example
-(setq jit-lock-defer-time 1.5)
-@end example
-
-This is a global setting; it affects all buffers. Fontification will
-only be performed after you have stopped typing for the indicated
-number of seconds.
-
-@item Turn off parsing for fontification by setting
-@code{wisi-disable-face} in your @file{~./emacs}
-
-@example
-(setq wisi-disable-face t)
-@end example
-
-This turns of fontification for type, package, and function names;
-only Ada reserved words are fontified.
-@end enumerate
-
-@node Non-standard file names, Other compiler, Customization, Customization
-@section Non-standard file names
-
-By default, Ada mode is configured to use the GNAT file naming
-convention, where file names are a simple modification of the Ada
-names, and the extension for specs and bodies are
-@samp{.ads} and @samp{.adb}, respectively.
-
-Emacs uses the file extension to enable Ada mode; Ada mode uses the
-file extentions to allow moving from a package body to the
-corresponding spec and back.
-
-Emacs and Ada mode support ways to use alternative file extensions for
-specs and bodies. Note that you must also tell the compiler about
-these extensions in a GNAT project file Naming package; doing that is
-beyond the scope of this manual.
-
-For instance, if your spec and bodies files are called
-@file{@var{unit}_s.ada} and @file{@var{unit}_b.ada}, respectively, you
-can add the following to your @file{.emacs} file:
-
-@example
-;; Tell Ada mode about spec and body extensions
-(ada-add-extensions "_s.ada" "_b.ada")
-
-;; Tell Emacs to use Ada mode for those extensions
-(add-to-list 'auto-mode-alist '("\\.ada\\'" . ada-mode))
-@end example
-
-You can define additional extensions:
-
-@example
-(ada-add-extensions ".ads" "_b.ada")
-(ada-add-extensions ".ads" ".body")
-@end example
-
-This means that whenever Ada mode looks for the body for a file
-whose extension is @file{.ads}, it will take the first available file
-that ends with either @file{.adb}, @file{_b.ada} or
-@file{.body}.
-
-Simililarly, if Ada mode is looking for a spec, it will look for
-@file{.ads} or @file{_s.ada}.
-
-If the filename excluding the extension is not derived from the Ada
-name following the GNAT convention, you need to provide an alternate
-function for @code{ada-file-name-from-ada-name}. Doing that is beyond
-the scope of this manual; see the current definitions in
-@file{ada-mode.el} and @file{ada-gnat-xref.el} for examples.
-
-@node Other compiler, Other cross-reference, Non-standard file names, 
Customization
-@section Other compiler
-The wisi project variable @code{ada_compoiler} (default elisp variable
-@code{ada-compiler}) (default @code{'gnat}) controls dispatching in
-compiler-specific functions for corresponding Ada mode operations.
-
-To use a compiler other than GNAT, you must write Emacs lisp code that
-provides the interface to the compiler, and set @code{ada-compiler} and
-the indirection variables.
-
-See @file{ada-compiler-gnat.el} for an example.
-
-@node Other cross-reference, Other customization, Other compiler, Customization
-@section Other cross-reference
-The wisi project variable @code{xref_tool} (default elisp variable
-@code{ada-xref-tool}) controls dispatching in
-the cross-reference-tool-specific functions for corresponding Ada mode
-operations.
-
-If @file{gpr_query} is found in @code{PATH}, the default
-cross-reference tool is @file{gpr_query}; otherwise it is
-@file{gnatxref}.
-
-To use a cross reference tool other than the above, you must write
-Emacs lisp code that provides the interface to the tool, and set
-@code{ada-xref-tool} and the indirection variables.
-
-See @file{ada-gnat-xref.el} and @file{gpr-query.el} for examples.
-
-@node Other customization,  , Other cross-reference, Customization
-@section Other customization
-
-All user-settable Ada mode variables can be set via the menu @samp{Ada
-| Customize}; some can also be set in wisi project files
-(@pxref{Project files}).
-
-To modify a specific variable, you can directly call the function
-@code{customize-variable}; just type @kbd{M-x customize-variable
-@key{RET} @var{variable-name} @key{RET}}.
-
-Alternately, you can specify variable settings in the Emacs
-configuration file, @file{~/.emacs}. This file is coded in Emacs lisp,
-and the syntax to set a variable is the following:
-
-@example
-(setq variable-name value)
-@end example
-
-Some general Emacs settings that are useful for Ada files:
-
-@table @code
-@item context menu
-By default, the context menu is bound to @key{C-down-mouse-3},
-i.e. control-right-click. @key{down-mouse-3} is already bound in the
-global map; you can override that global binding in the
-@code{ada-mode-hook} (see below for code).
-@item other-frame-window-mode
-Ada mode does not provide any @code{other-frame} or
-@code{other-window} variants of user operations. Instead, it is
-recommended to use the Gnu ELPA package @code{other-frame-window}.
-@item delete-trailing-whitespace
-Deletes space, tab at end of line and blank lines at end of buffer.
-@item xref configuration
-@table @code
-@item xref-prompt-for-identifier
-Set to @code{nil} to be prompted less when finding definitions or
-references.
-@item xref-show-xrefs-function
-Determine placement of the window where references are shown.
-@item xref-show-definitions-function
-Determine placement of the window where definitions are shown.
-@item xref--transient-buffer-mode-map
-keymap used in some xref windows; you may want to disable the
-@key{RET} binding there.
-@end table
-@item untabify
-Deletes tab characters that have crept into the file.
-@item indent-tabs-mode
-Don't insert tab characters when indenting.
-@item copyright-update
-Updates the copyright date in the file header comment, to the current
-year.
-@item electric-pair-mode
-Insert a matching right paren when you type a left paren.
-@item hippie-expand
-Bind @code{hippie-expand} to a key; it expands the word before point,
-using words from current buffer, other buffers, file names, etc; see
-@code{hippie-expand-try-functions-list}. You can also add
-@code{wisi-skel-hippie-try} to that list. Note that
-@code{wisi-skel-expand} is bound to @key{C-c C-e} (@pxref{Statement
-skeletons}).
-@item imenu
-Navigate to subprograms and types by name, from a minibuffer menu.
-@item speedbar
-Navigate to subprograms and types by name, from a list in a dedicated window.
-@item which-func
-Display the current subprogram name in the mode bar.
-@end table
-
-The above can all be set by the following code in your
-@file{~/.emacs}. Note that some are functions are added to
-@code{before-save-hook}; they run just before a buffer is written to
-disk. Also, the order is important; ada-mode does not set up the
-Ada-specific features of imenu and speedbar unless imenu is loaded
-first.
-
-@example
-(setq-default indent-tabs-mode nil)
-(define-key xref--transient-buffer-mode-map (kbd "RET") 'xref-goto-xref)
-(setq xref-prompt-for-identifier nil) ;; only prompt on C-u
-(setq xref-show-xrefs-function #'xref--show-defs-buffer-at-bottom)
-(setq xref-show-definitions-function #'xref--show-defs-buffer-at-bottom)
-
-(electric-pair-mode 1)
-(require 'imenu) ;; also enables speedbar
-(require 'ada-mode)
-(add-to-list 'hippie-expand-try-functions-list 'wisi-skel-hippie-try)
-(define-key ada-mode-map "\C-e"     'hippie-expand)
-(define-key ada-mode-map [down-mouse-3] 'ada-popup-menu)
-(add-hook 'ada-mode-hook
-   (lambda ()
-    (add-hook 'before-save-hook 'delete-trailing-whitespace nil t)
-    (add-hook 'before-save-hook 'copyright-update nil t)
-    (add-hook 'before-save-hook
-              (lambda () (untabify (point-min) (point-max)))
-               nil t)))
-@end example
-
-@node Compiling Executing, Project files, Customization, Top
-@chapter Compiling Executing
-
-Ada projects can be compiled, linked, and executed using commands on
-the Ada menu. All of these commands can be customized via a project
-file (@pxref{Project files}), but the defaults are sufficient for using
-the GNAT compiler for simple projects (single files, or several files
-in a single directory).
-
-For complex projects, you will want to use @code{make} or some other
-build tool; in that case, you may need a wisi project file to tell
-Emacs about the project directory tree and other settings.
-
-@menu
-* Compile commands::
-* Compiling Examples::
-* Compiler errors::
-@end menu
-
-@node Compile commands, Compiling Examples, Compiling Executing, Compiling 
Executing
-@section Compile commands
-
-Here are the commands for building an Ada project and running the main
-program; they are all on the @code{Ada | Build} menu.
-
-In multi-file projects, there must be one file that is the main
-program. That is given by the @code{main} project file variable;
-it defaults to the current file if not yet set, but is also set by the
-``set main and build'' command.
-
-@table @code
-
-@item Check file
-Compiles the current file in syntax check mode, by running
-@code{check_cmd} defined in the current project file. This typically
-runs faster than full compile mode, speeding up finding and fixing
-compilation errors.
-
-This sets @code{main} only if it has not been set yet.
-
-@item Compile file
-Compiles the current file, by running @code{comp_cmd} from the current
-project file.
-
-This does not set @code{main}.
-
-@item Set main and Build
-Sets @code{main} to the current file, then executes the Build
-command.
-
-@item Show main
-Displays @code{main} in the message buffer.
-
-@item Build
-Compiles all obsolete units of the current @code{main}, and links
-@code{main}, by running @code{make_cmd} from the current project.
-
-This sets @code{main} only if it has not been set yet.
-
-@item Run
-Executes the main program in a shell, displayed in a separate Emacs
-buffer. This runs @code{run_cmd} from the current project. The
-execution buffer allows for interactive input/output.
-
-To modify the run command, in particular to provide or change the
-command line arguments, type @kbd{C-u} before invoking the command.
-
-This command is not available for a cross-compilation toolchain.
-
-@end table
-It is important when using these commands to understand how
-@code{main} is used and changed.
-
-Build runs 'gprbuild' on the main unit. During a typical edit/compile
-session, this is the only command you need to invoke, which is why it
-is bound to @kbd{C-c C-c}. It will compile all files needed by the
-main unit, and display compilation errors in any of them.
-
-Note that Build can be invoked from any Ada buffer; typically you will
-be fixing errors in files other than the main, but you don't have to
-switch back to the main to invoke the compiler again.
-
-Novices and students typically work on single-file Ada projects. In
-this case, @kbd{C-c C-m} will normally be the only command needed; it
-will build the current file, rather than the last-built main.
-
-There are two ways to change @code{main}:
-
-@enumerate
-@item
-Invoke @samp{Ada | Set main and Build}, which sets @code{main} to
-the current file.
-
-@item
-Invoke @samp{Ada | Project | Load}, and load a project file that specifies 
@code{main}
-
-@end enumerate
-
-@node Compiling Examples, Compiler errors, Compile commands, Compiling 
Executing
-@section Compiling Examples
-
-We present several small projects, and walk thru the process of
-compiling, linking, and running them.
-
-The first example illustrates more Ada mode features than the others;
-you should work thru that example before doing the others.
-
-All of these examples assume you are using GNAT.
-
-The source for these examples is available on the Emacs Ada mode
-website mentioned in @xref{Installation}.
-
-@menu
-* No project files::            Just menus
-* Set compiler options::        A basic Ada mode project file
-* Set source search path::      Source in multiple directories
-* Use wisi project file::
-* Use multiple GNAT project files::
-* Use a Makefile::
-@end menu
-
-@node No project files, Set compiler options, Compiling Examples, Compiling 
Examples
-@subsection No project files
-This example uses no project files.
-
-First, create a directory @file{Example_1}, containing:
-
-@file{hello.adb}:
-
-@example
-with Ada.Text_Io;
-procedure Hello
-is begin
-   Put_Line("Hello from hello.adb");
-end Hello;
-@end example
-
-Yes, this is missing ``use Ada.Text_Io;'' - we want to demonstrate
-compiler error handling.
-
-@file{hello_2.adb} has no errors:
-
-@example
-with Hello_Pkg;
-procedure Hello_2
-is begin
-   Hello_Pkg.Say_Hello;
-end Hello_2;
-@end example
-
-@file{hello_pkg.ads} has no errors:
-
-@example
-package Hello_Pkg is
-   procedure Say_Hello;
-end Hello_Pkg;
-@end example
-
-@file{hello_pkg.adb}:
-
-@example
-with Ada.Text_Io;
-package Hello_Pkg is
-   procedure Say_Hello
-   is begin
-      Ada.Text_Io.Put_Line ("Hello from hello_pkg.adb");
-   end Say_Hello;
-end Hello_Pkg;
-@end example
-
-Yes, this is missing the keyword @code{body}; another compiler error
-example. However, note that the indentation engine parser accepts this
-code, making it possible to indent illegal Ada code.
-
-In buffer @file{hello.adb}, invoke the menu entry @samp{Ada | Build |
-Check syntax}. You should get a @code{*compilation*} buffer containing
-something like (the directory paths will be different):
-
-@example
--*- mode: compilation; default-directory: 
"c:/Projects/org.emacs.ada-mode.stephe-1/test/Example_1/" -*-
-Compilation started at Fri Oct 18 04:23:54
-
-gprbuild  -u -c -gnatc  c:/Projects/org.emacs.ada-mode/test/Example_1/hello.adb
-using project file D:\Apps\GNAT-gpl_2019\share\gpr\_default.gpr
-Compile
-   [Ada]          hello.adb
-hello.adb:4:04: "Put_Line" is not visible
-hello.adb:4:04: non-visible declaration at a-textio.ads:263
-hello.adb:4:04: non-visible declaration at a-textio.ads:259
-gprbuild: *** compilation phase failed
-
-Compilation exited abnormally with code 4 at Fri Oct 18 04:23:54
-@end example
-
-The lines with actual errors (starting with @file{hello.adb}) are
-highlighted, with the file name in red.
-
-Now invoke @samp{Ada | Build | Next compilation error}.  Or you can
-click the middle mouse button on the first error line, or use the key
-binding shown on the menu.  In the compilation buffer, a triangle is
-placed in the left fringe on the first error line, and point is put at
-the place of the error in the @file{hello.adb} buffer.
-
-To fix the error, invoke @samp{Ada | Build | Fix compilation error};
-this adds ``Ada.Text_Io.'' to the line:
-
-@example
-    Ada.Text_Io.Put_Line ("hello from hello.adb");
-@end example
-
-Now invoke @samp{Ada | Build | Show main}; this displays @samp{Ada mode main: 
hello}.
-
-Now (in buffer @file{hello.adb}), invoke @samp{Ada | Build | Build}. You are
-prompted to save the file (if you haven't already). Then the
-compilation buffer is displayed again, containing:
-
-@example
--*- mode: compilation; default-directory: 
"c:/Projects/org.emacs.ada-mode.stephe-1/test/Example_1/" -*-
-Compilation started at Fri Oct 18 20:39:33
-
-gprbuild  hello
-using project file D:\Apps\GNAT-gpl_2019\share\gpr\_default.gpr
-Compile
-   [Ada]          hello.adb
-Bind
-   [gprbind]      hello.bexch
-   [Ada]          hello.ali
-Link
-   [link]         hello.adb
-
-Compilation finished at Fri Oct 18 20:39:34
-@end example
-
-The compilation has succeeded without errors; @file{hello.exe} now
-exists in the same directory as @file{hello.adb}.
-
-Now invoke @samp{Ada | Build | Run}. The @file{*compilation*} buffer
-is displayed, containing
-
-@example
--*- mode: compilation; default-directory: 
"c:/Projects/org.emacs.ada-mode.stephe-1/test/Example_1/" -*-
-Compilation started at Fri Oct 18 20:41:53
-
-./hello
-Hello from hello.adb
-
-Compilation finished at Fri Oct 18 20:41:53
-@end example
-
-That completes the first part of this example.
-
-Now we will compile a multi-file project. Open the file
-@file{hello_2.adb}, invoke @samp{Ada | Build | Set main and
-Build}. This finds an error in @file{hello_pkg.adb}:
-
-@example
-hello_pkg.adb:2:08: keyword "body" expected here [see file name]
-@end example
-
-This demonstrates that gprbuild finds the files needed by the main
-program. However, it cannot find files in a different directory,
-unless you use a GNAT project file to specify the other directories;
-@ref{Set source search path}.
-
-Invoke @samp{Ada | Build | Show main}; this displays @file{Ada mode
-main: hello_2}.
-
-Move to the error with @kbd{C-x `}, and fix the error by adding @code{body}:
-
-@example
-package body Hello_Pkg is
-@end example
-
-Now, while still in @file{hello_pkg.adb}, invoke @samp{Ada | Build |
-Build}.  gprbuild successfully builds @file{hello_2}. This
-demonstrates that Emacs has remembered the main file, in the project
-variable @code{main}, and used it for the Build command.
-
-Finally, again while in @file{hello_pkg.adb}, invoke @samp{Ada | Build
-| Run}.  The @code{*compilation*} buffer displays @code{Hello from
-hello_pkg.adb}.
-
-One final point. If you switch back to buffer @file{hello.adb}, and
-invoke @samp{Ada | Build | Run}, @file{hello_2.exe} will be run. That
-is because @code{main} is still set to @code{hello_2}, as you can see
-when you invoke @samp{Ada | Build | Show main}.
-
-There are two ways to change @code{main}:
-
-@enumerate
-@item
-Invoke @samp{Ada | Build | Set main and Build}, which sets @code{main} to
-the current file.
-
-@item
-Invoke @samp{Ada | Build | Set Project ...}, and select a project file that
-specifies @code{main}.
-
-@end enumerate
-
-@node Set compiler options, Set source search path, No project files, 
Compiling Examples
-@subsection Set compiler options
-
-This example illustrates using a gnat project file to set a
-compiler option.
-
-If you have files from @file{Example_1} open in Emacs, you should
-close them so you don't get confused. Use menu @samp{File | Close
-(current buffer)}.
-
-In directory @file{Example_2}, create these files:
-
-@file{hello.adb}:
-
-@example
-with Ada.Text_Io;
-procedure Hello
-is begin
-   Put_Line("Hello from hello.adb");
-end Hello;
-@end example
-
-This is the same as @file{hello.adb} from @file{Example_1}. It has two
-errors; missing ``use Ada.Text_Io;'', and no space between
-@code{Put_Line} and its argument list.
-
-@file{hello.gpr}:
-
-@example
-project Hello is
-   package Compiler is
-      for Default_Switches ("Ada") use ("-gnatyt");
-   end Compiler;
-end Hello;
-@end example
-
-This tells the GNAT compiler to check for token spacing; in
-particular, there must be a space preceding a parenthesis.
-
-In buffer @file{hello.adb}, invoke @samp{Ada | Build | Set main and
-Build}. This finds the project file @file{hello.gpr}, uses it to set
-the compiler options, and builds the project. You should get a
-@code{*compilation*} buffer containing something like (the directory
-paths will be different):
-
-@example
-gprbuild -Phello.gpr hello
-Compile
-   [Ada]          hello.adb
-hello.adb:4:04: "Put_Line" is not visible
-hello.adb:4:04: non-visible declaration at a-textio.ads:508
-hello.adb:4:04: non-visible declaration at a-textio.ads:498
-hello.adb:4:12: (style) space required
-gprbuild: *** compilation phase failed
-@end example
-
-Compare this to the compiler output in @ref{No project files}; the
-compiler-provided default gpr file has been replaced by
-@code{hello.gpr}, and an additional error is reported in
-@file{hello.adb} on line 4. This shows that @file{hello.gpr} is being
-used to set the compiler options.
-
-Use @kbd{C-x`}, @kbd{C-c M-`} to fix the errors, then @samp{Ada |
-Build | Build} and @samp{Ada | Build | Run} to build and run.
-
-@node Set source search path
-@subsection Set source search path
-
-In this example, we show how to deal with files in more than one
-directory, setting the source search path in the gpr file.
-
-Create the directory @file{Example_3}, containing:
-
-@file{hello_pkg.ads}:
-
-@example
-package Hello_Pkg is
-   procedure Say_Hello;
-end Hello_Pkg;
-@end example
-
-@file{hello_pkg.adb}:
-
-@example
-with Ada.Text_Io;
-package Hello_Pkg is
-   procedure Say_Hello
-   is begin
-      Ada.Text_Io.Put_Line ("Hello from hello_pkg.adb");
-   end Say_Hello;
-end Hello_Pkg;
-@end example
-
-These are the same files from example 1; @file{hello_pkg.adb} has an
-error on line 2.
-
-@file{other.gpr}:
-
-@example
-project Other is
-   for Source_Dirs use (".", "Other");
-end Other;
-@end example
-
-In addition, create a directory @file{Example_3/Other}, containing this file:
-
-@file{Other/hello_3.adb}:
-
-@example
-with Hello_Pkg;
-with Ada.Text_Io; use Ada.Text_Io;
-procedure Hello_3
-is begin
-   Hello_Pkg.Say_Hello;
-   Put_Line ("From hello_3");
-end Hello_3;
-@end example
-
-There are no errors in this file.
-
-In buffer @file{hello_3.adb}, invoke @samp{Ada | Project files | Find and
-select project...}, and select @file{Example_3/other.gpr}. This
-tells Emacs Ada mode to stop using the project file from
-@file{Example_2}, and use the one for @file{Example_3}. Also note that
-since this project file is not named @file{hello_3.gpr}, it would not
-be found by default.
-
-Then, again in @file{hello_3.adb}, invoke @samp{Ada | Set main and
-Build}. You should get a @code{*compilation*} buffer containing
-something like (the directory paths will be different):
-
-@example
-gprbuild -Pother.gpr hello_3
-Compile
-   [Ada]          hello_3.adb
-   [Ada]          hello_pkg.adb
-hello_pkg.adb:2:08: keyword "body" expected here [see file name]
-gprbuild: "C:\Examples\Example_3\hello_pkg.adb" compilation error
-@end example
-
-Move to the error with @kbd{C-x `}. Ada mode searches the list of
-directories given by @code{Source_Dirs} for the file mentioned in the
-compiler error message.
-
-Use @kbd{C-x`}, @kbd{C-c M-`} to fix the errors, then @samp{Ada |
-Build | Build} and @samp{Ada | Build | Run} to build and run.
-
-@node Use wisi project file, Use multiple GNAT project files, Set source 
search path, Compiling Examples
-@subsection Use wisi project file
-
-In this example, we show how to use a wisi project file to set some
-options that cannot be set in a gpr project file. In addition, we
-change a setting so you are prompted for a project file, rather than
-using a default one.
-
-Change the setting:
-
-@example
-M-x set-variable ada-build-prompt-prj search-prompt
-@end example
-
-Create the directory @file{Example_4}, containing:
-
-@file{hello_pkg.ads}:
-
-@example
-package Hello_Pkg is
-   procedure Say_Hello;
-end Hello_Pkg;
-@end example
-
-@file{hello_pkg.adb}:
-
-@example
-with Ada.Text_Io;
-package body Hello_Pkg is
-   procedure Say_Hello
-   is begin
-      Put_Line ("Hello from hello_pkg.adb");
-   end Say_Hello;
-end Hello_Pkg;
-@end example
-
-These two files are the similar to files from example 1;
-@file{hello_pkg.adb} has an error on line 5 (missing
-``Ada.Text_IO.'').
-
-@file{example_4.prj}:
-
-@example
--- Wisi project file
-
-gpr_project_path=More
-
-gpr_file=example_4.gpr
-
-casing=example_4.casing
-@end example
-
-@file{example_4.prj} is a wisi project file; it specifies the
-@code{gpr_project_path}, telling @code{gprbuild} where to search for
-gpr files, and specifies the gpr file to use. Finally it specifies a
-casing exception file:
-
-@file{example_4.casing}:
-
-@example
-Text_IO
-@end example
-
-The default auto casing rules in ada-mode state that the Ada package
-``Ada.Text_IO'' should be capitalized as ``Ada.Text_Io'', which does
-not match the Ada Reference Manual.  @file{example_4.casing} specifies
-that instead ``Text_IO'' should be capitalized as shown.
-
-You can create a casing exception by editing the file directly, or via
-the @code{Ada | Casing} menu.
-
-@code{gpr_project_path} and @code{casing} are list variables; each
-occurence in a wisi project file adds an entry to the list.
-
-In addition, create a directory @file{Example_4/More},
-containing these files:
-
-@file{more/hello_4.adb}:
-
-@example
-with Hello_Pkg;
-with Ada.Text_Io; use Ada.Text_Io;
-procedure Hello_4
-is begin
-   Hello_Pkg.Say_Hello;
-   Put_Line ("From hello_4");
-end Hello_4;
-@end example
-
-There are no errors in this file, except for the casing in ``Ada.Text_Io''.
-
-@file{More/example_4.gpr}:
-
-@example
-project Example_4 is
-   for Source_Dirs use (".", "..");
-
-   package Compiler is
-      for Default_Switches ("Ada") use ("-gnatyknpr");
-   end Compiler;
-end Example_4;
-@end example
-
-The compiler switch checks all casing; we will get errors for ``Ada.Text_Io''.
-
-Then, in @file{hello_4.adb}, invoke @samp{Ada | Set main and
-Build}. ada-mode looks for a project file @file{hello_4.prj} or
-@file{hello_4.gpr}; since neither is found, you are prompted to find a
-project file.  Select @file{Example_4/example_4.prj}; that is parsed
-and selected, and the build continues.
-
-You should get a @code{*compilation*} buffer containing
-something like (the directory paths will be different):
-
-@example
-gprbuild -Pexample_4.gpr hello_4
-Compile
-   [Ada]          hello_pkg.adb
-hello_pkg.adb:1:16: (style) bad casing of "Text_IO" declared at a-textio.ads:57
-hello_pkg.adb:5:07: "Put_Line" is not visible
-hello_pkg.adb:5:07: non-visible declaration at a-textio.ads:508
-hello_pkg.adb:5:07: non-visible declaration at a-textio.ads:498
-gprbuild: *** compilation phase failed
-@end example
-
-When you fix the errors, note that @kbd{C-c M-`} inserts the correct
-case for ``Ada.Text_IO'', and corrects the case where it is
-incorrect. The case is also corrected as you type; you can type
-``ada.text_io.'' and the case will be corrected when you type each
-``.'' or ``_''.
-
-@node Use multiple GNAT project files
-@subsection Use multiple GNAT project files
-
-In this example, we show how to use multiple GNAT project files,
-specifying the GNAT project search path in an Ada mode project
-file. This also requires explicitly setting
-@code{project-find-functions}.
-
-If you haven't already, create the directory @file{Example_4} as
-specified in @ref{Use wisi project file}. If you've already created it
-and run the tutorial, restore the compilation error in hello_pkg.adb;
-delete @code{Ada.Text_IO.} in front of @code{Put_Line}.
-
-Create the directory @file{Example_5}, containing:
-
-@file{hello_5.adb}:
-
-@example
-with Hello_Pkg;
-with Ada.Text_IO; use Ada.Text_IO;
-procedure Hello_5
-is begin
-   Hello_Pkg.Say_Hello;
-   Put_Line ("From hello_5");
-end Hello_5;
-@end example
-
-There are no errors in this file.
-
-@file{hello_5.prj}:
-
-@example
-gpr_project_path=../Example_4/More
-gpr_file=hello_5.gpr
-
-casing=../Example_4/example_4.casing
-@end example
-
-@file{hello_5.gpr}:
-
-@example
-with "example_4";
-project Hello_5 is
-   for Source_Dirs use (".");
-   package Compiler is
-      for Default_Switches ("Ada") use ("-g", "-gnatyknprt");
-   end Compiler;
-end Hello_5;
-@end example
-
-In buffer @file{hello_5.adb}, invoke @samp{Ada | Project | Find and
-select project...}, and select @file{Example_5/hello_5.prj}. This
-would also be found by default if no previous project file had been
-selected. Note that if @file{example_5.gpr} were named
-@file{hello_5.gpr}, the project file search would find more than one
-match, causing an error.
-
-Then, again in @file{hello_5.adb}, invoke @samp{Ada | Build | Set main
-and Build}. You should get a @code{*compilation*} buffer containing
-something like (the directory paths will be different):
-
-@example
--*- mode: compilation; default-directory: 
"c:/Projects/org.emacs.ada-mode/test/Example_5/" -*-
-Compilation started at Mon Oct 21 11:32:05
-
-gprbuild -Pexample_5.gpr hello_5
-Compile
-   [Ada]          hello_5.adb
-   [Ada]          hello_pkg.adb
-hello_pkg.adb:5:07: "Put_Line" is not visible
-hello_pkg.adb:5:07: non-visible declaration at a-textio.ads:508
-hello_pkg.adb:5:07: non-visible declaration at a-textio.ads:498
-gprbuild: *** compilation phase failed
-@end example
-
-Now type @kbd{C-x `}; @file{Example_4/hello_pkg.adb} is shown,
-demonstrating that @file{hello_5.gpr} and @file{hello_4.gpr} are being
-used to set the compilation search path.
-
-Now, in buffer @file{hello_pkg.adb} invoke the menu @code{Ada |
-Navigate | Find file in project} (which calls
-@code{ada-find-file}) to get back to the @file{hello_5.adb}
-buffer. If you have not selected any project files previously in this
-emacs session, this gives an unexpected prompt for a ``project
-directory''. Kill that with @kbd{C-g}. Otherwise, enter @kbd{hel <tab>
-5 <tab>}; it will say ``no match''.
-
-The problem here the way Emacs projects work. To find the current
-project, the functions in @code{project-find-functions} are run; one
-should return a project. The ada-mode build functions add
-@code{wisi-prj-find-dominating-cached} to
-@code{project-find-functions}; that looks in the current directory
-tree for a project file with the same name as one that was previously
-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
-default strategy of ``ask the user'' is used, giving the prompt for a
-directory.
-
-If @file{Example_4} is also a project in the current emacs session,
-@code{wisi-prj-find-dominating-cached} finds that; since it does not
-contain @file{hello_5.adb}, @code{ada-find-file} cannot find it.
-
-Any time you have a main project that depends on other projects that
-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}.
-
-To change @code{project-find-functions}, execute:
-
-@example
-M-: (remove-hook 'project-find-functions 'wisi-prj-find-dominating-cached)
-M-: (add-hook 'project-find-functions 'wisi-prj-current-cached)
-@end example
-
-Normally, you must set @code{project-find-functions} in your
-@file{~/.emacs}, using the @code{add-hook} function. The ada-mode
-Build menu functions set it for you to make things simpler for
-novices, but they do not change it if you have put one of the wisi
-functions on it.
-
-Now set the current project; invoke @samp{Ada | Project | Find and
-select project...}, and select @file{Example_5/hello_5.prj}. Then in
-@file{hello_pkg.adb}, invoke @code{Ada |
-Navigate | Find file in project}; now we can find @file{hello_5.adb}.
-
-@node Use a Makefile,  , Use multiple GNAT project files, Compiling Examples
-@subsection Use a Makefile
-
-In this example, we show how to use a Makefile to build an Ada project
-with GNAT, run the result, and clean the build directories.
-
-Create the directories @file{Example_4, Example_5} as specified in
-@ref{Use wisi project file}, @ref{Use multiple GNAT project files}.
-
-In @file{Example_5}, add the file:
-
-@file{Makefile}:
-
-@example
-# build and run hello_5 project
-
-all : build run
-
-.PHONY : force
-
-build : force
-        gprbuild -PExample_5.gpr hello_5
-
-run :
-        ./hello_5
-
-clean :
-        gnatclean -r -PExample_5
-
-# Local Variables:
-# eval:(unless (wisi-prj-find-function-set-p)(add-hook 'project-find-functions 
'wisi-prj-current-cached))
-# eval:(wisi-prj-dtrt-parse-file "hello_5.prj" (ada-prj-default "hello_5 # 
main") "Makefile")
-# End:
-@end example
-
-Tell Emacs to allow @code{eval} in @code{Local Variables}:
-@example
-M-: (setq enable-local-eval t)
-@end example
-
-Close and re-open @file{Makefile}; the @samp{Local Variables} section
-sets the project file to @file{hello_5.prj} when the @file{Makefile}
-is opened.
-
-If you have set @code{project-find-functions} in your @file{~/.emacs},
-you can leave out the first @code{eval} line. Note that
-@code{wisi-prj-dtrt-parse-file} does the right thing depending on
-which wisi function is in @code{project-find-functions}.
-
-In @file{Makefile}, invoke @samp{Tools | Compile...}, and accept the
-default make command. This runs the @samp{all} target, which builds
-@file{hello_5} and runs it (you may have to fix source errors first,
-depending on how fresh the Example_4 directory is).
-
-@node Compiler errors,  , Compiling Examples, Compiling Executing
-@section Compiler errors
-
-The @code{Check syntax} and @code{Build} commands, or running
-@code{make}, place compilation errors in a separate buffer named
-@code{*compilation*}.
-
-Each line in this buffer will become active: you can simply click on
-it with the middle button of the mouse, or move point to it and press
-@key{RET}. Emacs will then display the relevant source file and put
-point on the line and column where the error was found.
-
-You can also press the @kbd{C-x `} key (@code{next-error}), and Emacs
-will jump to the first error. If you press that key again, it will
-move you to the second error, and so on.
-
-Some error messages also include references to other files. These
-references are accessed via @kbd{C-c `}.
-
-@node Project files, Moving Through Ada Code, Compiling Executing, Top
-@chapter Project files
-
-Ada mode uses wisi project files; @ref{wisi, Project files, Project files, 
wisi}.
-
-A wisi project file specifies what directories hold sources for your
-project, and allows you to customize the compilation commands and
-other things on a per-project basis.
-
-The default file extension for wisi project files is @file{*.adp}
-or @file{*.prj}. You can use a different extension by adding it to
-@code{ada-prj-file-extensions}, and a different syntax by adding a
-parser function to @code{ada-prj-parser-alist}.
-
-Note that wisi project files are different than GNAT
-compiler project files (@samp{*.gpr}). However, Emacs Ada mode can use a
-GNAT project file to specify the project directories. If no
-other customization is needed, a GNAT project file can be used without
-a wisi project file.
-
-If no wisi project file is specified, some Ada mode functions are not
-available.
-
-@menu
-* Project file overview::
-* Project file variables::
-@end menu
-
-@node Project file overview, Project file variables, Project files, Project 
files
-@section Project file overview
-
-The current project file is shown by the menu command
-@key{Ada | Project Files | Show project}.
-
-To set the project file, use the menu command @key{Ada | Project Files | Find 
and
-select Project ...}, or one of the elisp functions described in
-@ref{wisi, Selecting Projects, Selecting Projects, wisi}.
-
-The project file may also be a GNAT project file (with file extension
-is @code{.gpr}).
-
-@node Project file variables,  , Project file overview, Project files
-@section Project file variables
-
-Some project variables have defaults that can be changed by setting
-elisp variables; the table below identifies the elisp variable for each
-project variable. Elisp variables corresponding to project variables
-that are lists are elisp lists.
-
-wisi defines some project variables, Ada mode defines some, others are
-defined by the compiler and the cross reference tool.
-
-Here is the list of variables valid defined by wisi and Ada mode. In
-the default values, the current directory @code{"."} is the directory
-containing the project file.
-
-@table @asis
-@c These are the names that appear in the .prj file.
-@c
-@c defined in wisi-prj.el and ada-mode.el wisi-prj-parse-one.
-@c defaults defined in ada-mode.el ada-prj-default
-
-@item @code{ada_compiler}   [default: @code{ada-compiler, gnat}]
-Ada compiler for this project.
-
-Setting this in the project file reinitializes all options for the
-xref tool, so it must occur before any compiler-specific project
-variable.
-
-@item @code{casing}
-List of files containing casing exceptions. @xref{Automatic casing,
-Automatic casing, wisi.info}.
-
-@item @code{gnat-stub-args}
-List of strings passed to @code{gnat stub} when it is run.
-
-@item @code{gnat-stub-cargs}
-List of strings passed to @code{gnat stub} after @code{-cargs}.
-
-@item @code{obj_dir}
-A list of directories to search for object and cross-reference
-files. Only needed if you are not using GPR files.
-
-@item @code{src_dir}
-A list of directories to search for source files. Added to the source
-directories from a gpr file (if any).
-
-@item @code{xref_tool}      [default: @code{ada-xref-tool}]
-Cross reference tool for this project.
-
-Setting this in the project file reinitializes all options for the
-xref tool, so it must occur in the project file before any other
-settings that affect the xref tool.
-
-If @file{gpr_query} is found in @code{PATH}, @code{ada-xref-tool}
-defaults to @code{'gpr_query}. Otherwise, it defaults to @code{'gnat},
-which uses @code{gnat find}.
-
-@end table
-
-The following project file variables are defined by the GNAT compiler:
-
-@table @asis
-@c defined in gnat-core.el wisi-compiler-parse-one.
-@item @code{ada_project_path}   [default: ]
-Same as @code{gpr_project_path}; see below.
-
-@item @code{gpr_file}   [default: ]
-The GNAT project file for the project.
-
-If set, the source and project directories specified in the GNAT
-project file are appended to @code{src_dir} and
-@code{gpr_project_path}. This allows specifying Ada source directories
-with a GNAT project file, and other source directories with the Emacs
-project file.
-
-@item @code{gpr_project_path}   [default: ]
-A list of directories to
-search for GNAT project files. The list is passed to tools via the
-@code{GPR_PROJECT_PATH} process environment variable in the process
-used to run the @code{gnat} and @code{gpr_query} tools.
-
-If not set, @code{GPR_PROJECT_PATH} in the child process is inherited
-from the Emacs process.
-
-@item @code{runtime} [default: ]
-@c slot gnat-compiler-runtime
-If set, the name of the runtime, used as the value of the @code{RTS}
-command line option for tools.
-
-@item @code{target} [default: @code{nil}]
-@c slot gnat-compiler-target
-If set, the name of the cross-compilation target, prepended to the
-@code{gnat} executable name.
-
-@end table
-
-The following project variables are used by the @code{Ada | Build}
-menu commands:
-
-@table @asis
-@item @code{check_cmd} [default: @code{ada-build-check-cmd}]
-Compiler commannd to syntax check a single file.
-
-@item @code{main} [default: basename of current file name]
-File name of executable to build.
-
-@item @code{make_cmd} [default: @code{ada-build-make-cmd}]
-Command to compile and link the application.
-
-@item @code{run_cmd} [default: @code{ada-build-run-cmd}]
-Command to run the application.
-
-@end table
-
-@node Moving Through Ada Code, Identifier completion, Project files, Top
-@chapter Moving Through Ada Code
-
-There are several commands to navigate through Ada code. All
-these functions are available through the Ada menu and keybindings.
-
-Some of these commands rely on cross reference facilities provided by
-the compiler; the standard Emacs Ada mode only supports the GNAT
-compiler, but others can be added (@pxref{Other cross-reference}).
-
-@table @kbd
-@item C-c C-d
-Move from any use of an identifier to its declaration, for from a declaration 
to
-its body (if there is one).
-
-This runs @code{xref-find-definitions}, which has a default global
-binding of @key{M-.}
-
-@item C-c M-d
-Move from a child type declaration to the parent type declaration;
-display a list of references if there is more than one parent.
-
-@item C-c C-n
-Move to the next keyword in the current statement.
-
-For example, if point is on @samp{if}, move to @samp{then}.
-
-This runs @code{forward-sexp}, which has a default global binding of
-@kbd{C-M-f}.
-
-@item C-c C-p
-Move to the previous keyword in the current statement.
-
-For example, if point is on @samp{then}, move to @samp{if}.
-
-This runs @code{backward-sexp}, which has a default global binding of
-@kbd{C-M-b}.
-
-@item C-c C-o
-Switch between corresponding spec and body. There are several special
-cases:
-
-@itemize @bullet
-@item
-If the region is active, it is assumed to contain an Ada package
-name; position point on the corresponding package declaration.
-
-@item
-If point is in the start line of a top level child package
-declaration (but not package body), or a child subprogram spec or
-body, position point on the corresponding parent package
-declaration.
-
-@item
-If point is in the start line of a top level separate body,
-position point on the corresponding separate stub declaration.
-
-@item
-If point is in a subprogram declaration or body, position point on the
-corresponding body or declaration in the other file.
-
-@item
-If point is on a @code{with} clause, position point on the
-corresponding declaration.
-
-@end itemize
-
-@item C-c C-r
-Show all references to the identifier surrounding point. Use
-@kbd{C-x `} (@code{next-error}) to visit each reference (as for
-compilation errors).
-
-@item C-c C-x
-Show all declarations that override the primitive procedure at
-point. Use @kbd{C-x `} (@code{next-error}) to visit each reference (as
-for compilation errors).
-
-@item C-c M-x
-Show the declaration that the declaration at point overrides.
-
-@item C-u SPACE
-Jump back to the previous location.
-
-@item Ada | Misc | Refresh cross reference cache
-Cross reference information is loaded from the compiler output when
-the first cross reference command is issued (or when the project file
-is parsed, if useing cached project files). If the code is recompiled
-after that, the cross reference information is reloaded by invoking
-this menu command.
-
-@end table
-
-@node Identifier completion, Indentation, Moving Through Ada Code, Top
-@chapter Identifier completion
-
-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}. For a
-procedure declared as:
-
-@example
-package Package_Name is
-   procedure Procedure_Name (args);
-@end example
-
-the completion string looks like:
-
-@example
-Procedure_Name(args)<Package_Name<line>>
-@end example
-
-so for example you can type "iterate<wisitok" to complete on WisiToken
-iterators, or "add(Data" to complete on all subprograms whose name
-starts with "add" and whose first argument starts with "Data".
-
-If you have bound @code{hippie-expand}, that also uses
-@code{dabbrev-expand}.
-
-@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,
-then you will have this scenario:
-
-@example
-You type:  my@kbd{M-/}
-Emacs inserts:  @samp{my_identifier}
-If you press @kbd{M-/} once again, Emacs replaces @samp{my_identifier} with
-@samp{my_subprogram}.
-Pressing @kbd{M-/} once more will bring you back to @samp{my_identifier}.
-@end example
-
-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
-
-Ada mode comes with a full set of rules for automatic indentation. You
-can also configure the indentation, via the following variables:
-
-@table @asis
-@item @code{ada-indent}                  (default value: 3)
-Number of columns for default indentation.
-
-@item @code{ada-indent-after-trailing-comment} (default value t)
-If t, align comment lines imediately following a comment on the
-same line as code with the preceding comment. Otherwise, ignore
-the preceding comment.
-
-@item @code{ada-indent-broken}           (default value: 2)
-Number of columns to indent the continuation of a broken line.
-
-@item @code{ada-indent-comment-col-0}  (default value: nil)
-If non-nil, comments currently starting in column 0 are left in column
-0.  Otherwise, they are indented with previous comments or code.
-
-@item @code{ada-indent-comment-gnat}  (default value: nil)
-If non-nil, comments are indented to meet the GNAT style check; one
-of:
-   @itemize
-   @item
-   multiple of @code{ada-indent}
-   @item
-   next non-blank line
-   @item
-   previous non-blank line
-   @end itemize
-
-Otherwise, they are indented with previous comments or code.
-
-@c @item @code{ada-indent-hanging-rel-exp} still experimental
-
-@item @code{ada-indent-label}            (default value: -3)
-Number of columns to indent a label.
-
-@item @code{ada-indent-record-rel-type}  (default value: 3)
-Indentation for @code{record} relative to @code{type} or @code{use}.
-
-@item @code{ada-indent-renames}           (default value: 2)
-Indentation for @code{renames} relative to the matching subprogram keyword.
-
-If the subprogram has parameters then if @code{ada-indent-renames} is
-zero or less the indentation is abs @code{ada-indent-renames} relative
-to the open parenthesis; if @code{ada-indent-renames} is one or more
-the indentation is relative to the line containing the keyword.
-
-If the subprogram has no parameters then @code{ada-indent-broken} the
-indentation is relative to the indentation of the line containing
-the keyword.
-
-@item @code{ada-indent-return}           (default value: 0)
-Indentation for @code{return} relative to the matching
- @code{function}.
-
-If the function has parameters, then if @code{ada-indent-return} is
-zero or less the indentation is abs @code{ada-indent-return} relative
-to the open parenthesis; if @code{ada-indent-return} is one or more,
-indentation is relative to line containing @code{function}.
-
-If the function has no parameters, @code{ada-indent-broken} is used
-relative to line containing @code{function}.
-
-@item @code{ada-indent-use}  (default value: ada-indent-broken)
-Indentation for the lines in a @code{use} statement.
-
-@item @code{ada-indent-when}             (default value: 3)
-Indentation for @code{when} relative to @code{exception}, @code{case},
-or @code{or} in @code{select}.
-
-@item @code{ada-indent-with}             (default value: ada-indent-broken)
-Indentation for the lines in a @code{with} context clause.
-
-@end table
-
-The indentation variables are buffer local; the global value may be
-overridden in an elisp function on @code{ada-mode-hook}, or in a file
-local variable section.
-
-The following keys indent portions of the text:
-@table @kbd
-
-@item RET
-Insert and indent a new line.
-
-@item TAB
-Indent the current line, or the current region.
-
-@item C-c TAB
-Indent the current statement or declaration.
-
-@item C-c S-TAB
-Indent the statement or declaration containing the current statement
-or declaration.
-
-@end table
-
-The indentation algorithm relies on a grammar parser to identify the
-syntactic role for keywords and other words in the code.
-
-In rare cases, the parser gets confused; it can be reset by invoking
-menu @key{Ada | Misc | Restart parser}. Please report such cases as a
-bug.
-
-@node Statement skeletons, Aligning code, Indentation, Top
-@chapter Statement skeletons
-
-@kbd{C-c C-e} expands the previous one or two words into a statement
-skeleton. For example, @kbd{i f C-c C-e} expands to:
-
-@example
-if  then
-elsif  then
-else
-end if;
-@end example
-
-For named statements (packages, loops, etc), the name is taken from
-the word before point, and the name of the statement from the word
-before that.
-
-Some expansions prompt for more information, such as
-whether a spec or body is desired. For example, @kbd{package A_Package
-C-c C-e} first prompts for ``body'' or ``spec''. If ``spec'' is
-selected, the following code is inserted:
-
-@example
-package A_Package is
-private
-end A_Package;
-@end example
-
-Named blocks work similarly: @kbd{declare A_Block C-c C-e} expands
-(without prompting) to:
-
-@example
-A_Block:
-   declare
-   begin
-   exception
-   end A_Block;
-@end example
-
-Note that the order of the keyword @code{declare} and the name
-@code{A_Block} are reversed in the expansion; this may take some
-getting used to. Alternately, if no name is present in the buffer, you
-are prompted for a name: @kbd{declare C-c C-e} first prompts for a
-name, then expands to the above.
-
-The variable @code{ada-skel-initial-string} defines what to insert in
-a newly created empty buffer. It defaults to @code{@{header@}}, which
-is a placeholder defined by @code{ada-skel-header}, which inserts a
-typical header with a copyright license (choice of GPL or
-restricted). Users will typically want to override the definition of
-@code{ada-skel-initial-string} and/or @code{ada-skel-header}, or
-provide more choices of copyright license.
-
-@node Aligning code, Automatic casing, Statement skeletons, Top
-@chapter Aligning code
-
-Aligning code adds space in each line so that similar parts of
-successive lines are aligned vertically. For example, a sequence of
-declarations:
-
-@example
-A : Integer;
-Another : Float := 1.0;
-More : Integer := 2;
-@end example
-
-changes to this when aligned:
-
-@example
-A       : Integer;
-Another : Float   := 1.0;
-More    : Integer := 2;
-@end example
-
-Alignment is invoked by @kbd{C-c C-a}, which aligns the sequence of
-statements surrounding point, or within the selected region.
-
-Parameter lists are also aligned:
-
-@example
-   procedure Foo
-     (A : in Integer;
-      Another : out Float := 1.0;
-      More : in out Integer := 2);
-@end example
-
-is aligned to:
-
-@example
-   procedure Foo
-     (A       : in     Integer;
-      Another :    out Float   := 1.0;
-      More    : in out Integer := 2);
-@end example
-
-@node Automatic casing, Comment Handling, Aligning code, Top
-@chapter Automatic casing
-
-Casing of identifiers, attributes and keywords is automatically
-performed while typing when the variable @code{ada-auto-case} is
-non-nil (the default). Every time you type a word separator, the
-previous word is automatically cased.
-
-You can customize the automatic casing with the following variables:
-
-@table @code
-@item ada-case-keyword
-Value must be one of:
-@table @code
-@item downcase-word
-Ada keywords will be lowercase.
-
-@item upcase-word
-Ada keywords will be uppercase.
-@end table
-
-@item ada-case-strict
-If non-nil, all identifiers are forced to @code{Mixed_Case}; first
-letter, and letter following ``_'' are uppercase; rest are
-lowercase.
-
-If nil, the mixed case characters in identifiers are forced to upper
-case, but the other characters are not modified. That allows typing
-all uppercase identifiers without defining a casing exception.
-@end table
-
-You can define exceptions to these rules, in files specified by the
-@code{casing} project variable; @ref{Casing exception files, Casing
-exception files, Casing exception files, wisi}.
-
-There are two ways to add new items to a casing exception file: you
-can simply edit it as you would edit any text file, or you can
-position point on the word you want to add, and select menu @samp{Ada
-| Casing | Create full exception} or @samp{Ada | Casing | Create
-partial exception}.  The word will be added to the current list of
-exceptions and to the file.
-
-It is sometimes useful to have multiple exception files. For
-example, one could be the standard Ada acronyms, the second some
-company specific exceptions, and the last one some project specific
-exceptions. When you create a new exception, you are prompted for the
-file to save it in.
-
-Other keys and menu entries are defined:
-
-@table @kbd
-@item C-c C-w
-Adjust case of the word at point. With prefix arg, adjust case even if
-in a comment or string. Normally, comments and strings are not
-affected by case adjust.
-
-@item Ada | Casing | Adjust case region
-Adjust case in the active region.
-
-@item Ada | Casing | Adjust case buffer
-Adjust case in the active buffer.
-
-@end table
-
-@node Comment Handling, Key summary, Automatic casing, Top
-@chapter Comment Handling
-
-By default, comment lines get indented like Ada code. There are a few
-additional functions to handle comments:
-
-@table @kbd
-@item M-;
-If the region is active, comment or uncomment it.
-
-If the current line is empty, start a comment.
-
-Otherwise, add a comment at the end of the line, in a column given by
-@code{comment-column}.
-
-@item M-q
-Fill the current comment paragraph.
-@end table
-
-@node Key summary, Developer overview, Comment Handling, Top
-@chapter Key summary
-@c search for @kbd and @key. Alphabetical by key sequence
-
-This table summarizes the keys described in this manual. Other keys
-are bound by Ada mode; see @key{C-h b} for a complete list. The
-Ada menu also displays keys bound to menu operations.
-
-@table @kbd
-@item M-/
-@xref{Identifier completion}.
-Complete the word before point; repeat to cycle thru possible
-completions.
-
-@item M-;
-@xref{Comment Handling}.
-If the region is active, comment or uncomment it.
-
-@item M-q
-@xref{Comment Handling}.
-Fill the current comment paragraph.
-
-@item RET
-@xref{Indentation}.
-Insert and indent a new line.
-
-@item TAB
-@xref{Indentation}.
-Indent the current line, or the current region.
-
-@item C-c TAB
-@xref{Indentation}.
-Indent the current statement or declaration.
-
-@item C-c S-TAB
-@xref{Indentation}.
-Indent the containing statement or declaration.
-
-@item C-c `
-@xref{Compiler errors}.
-Move to the location of the secondary reference in the current compilation 
error.
-
-@item C-c C-a
-@xref{Aligning code}.
-Align code.
-
-@item C-c C-c
-@xref{Compile commands}.
-Build the current main program.
-
-@item C-c C-d
-@xref{Moving Through Ada Code}.
-Move from any use of an identifier to its declaration, for from a declaration 
to its body.
-
-@item C-c M-d
-@xref{Moving Through Ada Code}.
-Move from a child type declaration to the parent type declaration.
-
-@item C-c C-e
-@xref{Statement skeletons}.
-Expand previous one or two words into a statement or declaration
-skeleton.
-
-@item C-c C-c
-@xref{Compile commands}.
-Build the current file.
-
-@item C-c C-n
-@xref{Moving Through Ada Code}.
-Move to the next keyword in the current statement.
-
-@item C-c C-o
-@xref{Moving Through Ada Code}.
-Switch between corresponding spec and body, or find other spec.
-
-@item C-c C-p
-@xref{Moving Through Ada Code}.
-Move to the previous keyword in the current statement.
-
-@item C-c C-r
-@xref{Moving Through Ada Code}.
-Show all references to the identifier surrounding point.
-
-@item C-c C-w
-@xref{Automatic casing}.
-Adjust case of the word at point. With prefix arg, adjust case even if
-in comment or string.
-
-@item C-c C-x
-@xref{Moving Through Ada Code}.
-Show all declarations that override the primitive procedure at
-point.
-
-@item C-c C-y
-@xref{Automatic casing}.
-Create case exception.
-
-@item C-c `
-@xref{Compiler errors}.
-Move to the location of the next secondary compilation error.
-
-@item C-x `
-@xref{Compiler errors}.
-Move to the location of the next compilation error or show result.
-
-@item M-q
-@xref{Comment Handling}.
-Fill the current comment paragraph.
-
-@end table
-
-@node Developer overview, GNU Free Documentation License, Key summary, Top
-@chapter Developer overview
-If you'd like to contribute to Ada mode, or just understand the
-sources, here's an overview.
-
-@menu
-* Directory structure::
-* ELPA::
-* Savannah::
-* ada-france::
-@end menu
-
-@node Directory structure
-@section Directory structure
-@table @file
-@item org.emacs.ada-mode
-Main source.
-
-File extensions:
-@table @file
-@item *.el
-Elisp files; main code.
-
-@item *.elc
-Byte-compiled elisp files, not in the distribution. Generated by the
-Makefile target @code{byte-compile}, or by the Emacs package installer.
-
-@item *.ad?
-Ada code for the external process parser, some generated by the
-WisiToken tool @file{wisitoken-bnf-generate.exe}. The generated code
-is in the tarball distribution and the monotone repository so users
-and Elisp developers don't have to install WisiToken.
-
-@item *.parse_table
-Diagnostic output from @file{wisitoken-bnf-generate.exe}, useful for tracing
-parses while debugging a grammar issue. Not in the tarball
-distribution or the monotone repository.
-
-@item *.wy
-Grammar files, specifying the language to be parsed. The syntax for
-these grammar files is similar to that for bison and wisent, but not
-the same; see the WisiToken documentation for more info.
-
-@item *.texi
-Texinfo source for the user guides.
-
-@item *.html
-Generated user guide in HTML format.
-
-@item *.info
-Generated user guide in Emacs info format.
-
-@end table
-
-@item build
-Makefile for building the external process executable, gpr-query, and
-the user guides; for running tests; and for publishing to the web page or
-Gnu ELPA. The main targets are:
-
-@table @code
-@item elisp
-Builds ada-mode in place, runs all tests.
-
-@item update-elisp
-Builds ada-mode in place.
-
-@item install
-Installs executables in the GNAT executable directory.
-
-@item pub
-Builds the ELPA packages.
-@end table
-
-@item test
-All tests for Ada mode, gpr mode, parser.
-
-Each test is run in a separate invocation of Emacs, so it is
-completely independent of all other tests.
-
-The tests are driven by the elisp code in @file{wisi-run-indent-test.el}.
-
-In general, the Ada mode tests open the file, execute test actions,
-re-indent, and re-captialize the entire file. The result is diffed
-with the original, and must match.
-
-The test actions are defined by comments with the prefix
-@code{--EMACSCMD:}; they are elisp forms that invoke Ada mode
-functions. This is used to test navigation features and other parser
-effects.
-
-@item test/Example_*
-Starting files for the examples in this user guide.
-
-@item test/gpr
-Tests for gpr mode.
-
-@item test/subdir
-More tests; allows testing path search features.
-
-@end table
-
-@node ELPA
-@section ELPA
-Ada mode is published via the Gnu ELPA archive. To test a new version
-of Ada mode, we use a local Gnu ELPA archive. That requires fetching
-Gnu ELPA via git:
-
-@example
-cd /Projects
-git clone git://git.savannah.gnu.org/emacs/elpa.git
-@end example
-
-If you have an Emacs Savannah developer account, you can use:
-
-@example
-cd /Projects
-git clone <login>@@git.savannah.gnu.org/emacs/elpa.git
-@end example
-
-@file{build/Makefile} contains targets for copying Ada mode source to
-the elpa workspace, and for building the elpa archive there.
-
-@node Savannah
-@section Savannah
-
-The ada-mode web page, mailing list, and tarball download are hosted
-on savannah.non-gnu.org, project Emacs Ada mode
-(@url{https://savannah.nongnu.org/projects/ada-mode/}). See the
-project admin page there for more information.
-
-@node ada-france
-@section ada-france
-
-The source code for ada-mode is maintained in a monotone repository in
-the ada-france server @url{mtn://www.ada-france.org}.
-
-@node GNU Free Documentation License
-@appendix GNU Free Documentation License
-@include doclicense.texi
-
-@bye
diff --git a/packages/ada-mode/ada-prj.el b/packages/ada-mode/ada-prj.el
deleted file mode 100644
index 141d25e..0000000
--- a/packages/ada-mode/ada-prj.el
+++ /dev/null
@@ -1,9 +0,0 @@
-;; dummy file to hide obsolete bundled version
-;;
-;; Copyright (C) 2020  Free Software Foundation, Inc.
-;;
-;; 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
deleted file mode 100644
index 8de15cd..0000000
--- a/packages/ada-mode/ada-process.el
+++ /dev/null
@@ -1,479 +0,0 @@
-;;; ada-process.el --- Generated parser support file  -*- lexical-binding:t -*-
-;;  command line: wisitoken-bnf-generate.exe  --generate LR1 Ada_Emacs re2c 
PROCESS text_rep ada.wy
-
-;;  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
-;;  published by the Free Software Foundation; either version 3, or (at
-;;  your option) any later version.
-;;
-;;  This software is distributed in the hope that it will be useful,
-;;  but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;;  General Public License for more details.
-;;
-;;  You should have received a copy of the GNU General Public License
-;;  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-(require 'wisi-process-parse)
-
-(defconst ada-process-token-table
-  [WHITESPACE
-   NEW_LINE
-   COMMENT
-   ABS
-   ACCEPT
-   ABORT
-   ABSTRACT
-   ACCESS
-   ALIASED
-   ALL
-   AND
-   ARRAY
-   AT
-   BEGIN
-   BODY
-   CASE
-   CONSTANT
-   DECLARE
-   DELAY
-   DELTA
-   DIGITS
-   DO
-   ELSE
-   ELSIF
-   END
-   ENTRY
-   EXCEPTION
-   EXIT
-   FOR
-   FUNCTION
-   GENERIC
-   GOTO
-   IF
-   IN
-   INTERFACE
-   IS
-   LIMITED
-   LOOP
-   MOD
-   NEW
-   NOT
-   NULL
-   OF
-   OR
-   OTHERS
-   OUT
-   OVERRIDING
-   PACKAGE
-   PRAGMA
-   PRIVATE
-   PROCEDURE
-   PROTECTED
-   RAISE
-   RANGE
-   RECORD
-   REM
-   RENAMES
-   REQUEUE
-   RETURN
-   REVERSE
-   SEPARATE
-   SELECT
-   SOME
-   SUBTYPE
-   SYNCHRONIZED
-   TAGGED
-   TASK
-   TERMINATE
-   THEN
-   TYPE
-   UNTIL
-   USE
-   WHEN
-   WHILE
-   WITH
-   XOR
-   LEFT_PAREN
-   LEFT_SQUARE_BRACKET
-   RIGHT_PAREN
-   RIGHT_SQUARE_BRACKET
-   AMPERSAND
-   AT_SIGN
-   BAR
-   BOX
-   COLON
-   COLON_EQUAL
-   COMMA
-   DOT
-   DOT_DOT
-   EQUAL
-   EQUAL_GREATER
-   GREATER
-   GREATER_EQUAL
-   GREATER_GREATER
-   LESS
-   LESS_EQUAL
-   LESS_LESS
-   MINUS
-   PLUS
-   SEMICOLON
-   SLASH
-   SLASH_EQUAL
-   STAR
-   STAR_STAR
-   TICK_1
-   TICK_2
-   NUMERIC_LITERAL
-   IDENTIFIER
-   STRING_LITERAL
-   CHARACTER_LITERAL
-   Wisi_EOI
-   wisitoken_accept
-   abstract_limited_synchronized_opt
-   abstract_limited_opt
-   abstract_tagged_limited_opt
-   abstract_subprogram_declaration
-   accept_statement
-   access_definition
-   actual_parameter_part
-   actual_parameter_part_opt
-   aggregate
-   aliased_opt
-   and_interface_list_opt
-   array_type_definition
-   aspect_clause
-   aspect_specification_opt
-   assignment_statement
-   association_opt
-   association_list
-   asynchronous_select
-   at_clause
-   attribute_reference
-   attribute_designator
-   binary_adding_operator
-   block_label
-   block_label_opt
-   block_statement
-   body_g
-   body_stub
-   case_expression
-   case_expression_alternative
-   case_expression_alternative_list
-   case_statement
-   case_statement_alternative
-   case_statement_alternative_list
-   compilation_unit
-   compilation
-   component_clause
-   component_clause_list
-   component_declaration
-   component_definition
-   component_item
-   component_list
-   component_list_opt
-   compound_statement
-   conditional_entry_call
-   conditional_quantified_expression
-   constant_opt
-   constraint
-   constraint_opt
-   declaration
-   declarations
-   declarative_part_opt
-   delay_alternative
-   delay_statement
-   derived_type_definition
-   direct_name
-   direct_name_opt
-   discrete_choice
-   discrete_choice_list
-   discrete_subtype_definition
-   discrete_subtype_definition_list
-   discriminant_part_opt
-   discriminant_specification_opt
-   discriminant_specification_list
-   elsif_expression_item
-   elsif_expression_list
-   elsif_statement_item
-   elsif_statement_list
-   entry_body
-   entry_body_formal_part
-   entry_call_alternative
-   entry_declaration
-   enumeration_literal
-   enumeration_literal_list
-   enumeration_representation_clause
-   enumeration_type_definition
-   exception_choice
-   exception_choice_list
-   exception_declaration
-   exception_handler
-   exception_handler_list
-   exception_handler_list_opt
-   exit_statement
-   expression
-   expression_opt
-   expression_function_declaration
-   extended_return_object_declaration
-   extended_return_object_declaration_opt
-   extended_return_statement
-   factor
-   formal_object_declaration
-   formal_part
-   formal_subprogram_declaration
-   formal_type_declaration
-   formal_type_definition
-   formal_derived_type_definition
-   formal_package_declaration
-   formal_package_actual_part
-   full_type_declaration
-   function_specification
-   general_access_modifier_opt
-   generic_declaration
-   generic_formal_part
-   generic_formal_parameter_declarations
-   generic_formal_parameter_declaration
-   generic_instantiation
-   generic_package_declaration
-   generic_renaming_declaration
-   generic_subprogram_declaration
-   goto_label
-   handled_sequence_of_statements
-   identifier_list
-   identifier_opt
-   if_expression
-   if_statement
-   incomplete_type_declaration
-   index_constraint
-   index_subtype_definition
-   index_subtype_definition_list
-   interface_list
-   interface_type_definition
-   iteration_scheme
-   iterator_specification
-   iterator_specification_opt
-   loop_statement
-   membership_choice_list
-   membership_choice
-   mod_clause_opt
-   mode_opt
-   multiplying_operator
-   name_list
-   name
-   name_opt
-   null_exclusion_opt
-   null_exclusion_opt_name_type
-   null_procedure_declaration
-   object_declaration
-   object_renaming_declaration
-   overriding_indicator_opt
-   package_body
-   package_body_stub
-   package_declaration
-   package_renaming_declaration
-   package_specification
-   parameter_and_result_profile
-   parameter_profile_opt
-   parameter_specification
-   parameter_specification_list
-   paren_expression
-   pragma_g
-   primary
-   private_extension_declaration
-   private_type_declaration
-   procedure_call_statement
-   procedure_specification
-   proper_body
-   protected_body
-   protected_body_stub
-   protected_definition
-   protected_operation_item
-   protected_operation_item_list
-   protected_operation_item_list_opt
-   protected_opt
-   protected_type_declaration
-   qualified_expression
-   quantified_expression
-   quantifier
-   raise_expression
-   raise_statement
-   range_g
-   range_list
-   real_range_specification_opt
-   record_definition
-   record_representation_clause
-   relation_and_list
-   relation_and_then_list
-   relation_or_list
-   relation_or_else_list
-   relation_xor_list
-   relation
-   relational_operator
-   renaming_declaration
-   requeue_statement
-   result_profile
-   return_subtype_indication
-   selected_component
-   selective_accept
-   select_alternative
-   select_alternative_list
-   select_alternative_list_opt
-   select_statement
-   sequence_of_statements
-   sequence_of_statements_opt
-   simple_expression
-   simple_return_statement
-   simple_statement
-   single_protected_declaration
-   single_task_declaration
-   statement
-   subprogram_body
-   subprogram_body_stub
-   subprogram_declaration
-   subprogram_default
-   subprogram_renaming_declaration
-   subprogram_specification
-   subtype_declaration
-   subtype_indication
-   subunit
-   task_body
-   task_body_stub
-   task_definition
-   task_type_declaration
-   term
-   term_list
-   tick
-   timed_entry_call
-   triggering_alternative
-   type_declaration
-   type_definition
-   variant_part
-   variant_list
-   variant
-   unary_adding_operator
-   use_clause
-   with_clause
-   ])
-
-(defconst ada-process-face-table
-  [
-   font-lock-constant-face
-   font-lock-function-name-face
-   font-lock-type-face
-   nil
-   ])
-
-(defconst ada-process-repair-image
-  '(
-   (ABS . "abs")
-   (ACCEPT . "accept")
-   (ABORT . "abort")
-   (ABSTRACT . "abstract")
-   (ACCESS . "access")
-   (ALIASED . "aliased")
-   (ALL . "all")
-   (AND . "and")
-   (ARRAY . "array")
-   (AT . "at")
-   (BEGIN . "begin")
-   (BODY . "body")
-   (CASE . "case")
-   (CONSTANT . "constant")
-   (DECLARE . "declare")
-   (DELAY . "delay")
-   (DELTA . "delta")
-   (DIGITS . "digits")
-   (DO . "do")
-   (ELSE . "else")
-   (ELSIF . "elsif")
-   (END . "end")
-   (ENTRY . "entry")
-   (EXCEPTION . "exception")
-   (EXIT . "exit")
-   (FOR . "for")
-   (FUNCTION . "function")
-   (GENERIC . "generic")
-   (GOTO . "goto")
-   (IF . "if")
-   (IN . "in")
-   (INTERFACE . "interface")
-   (IS . "is")
-   (LIMITED . "limited")
-   (LOOP . "loop")
-   (MOD . "mod")
-   (NEW . "new")
-   (NOT . "not")
-   (NULL . "null")
-   (OF . "of")
-   (OR . "or")
-   (OTHERS . "others")
-   (OUT . "out")
-   (OVERRIDING . "overriding")
-   (PACKAGE . "package")
-   (PRAGMA . "pragma")
-   (PRIVATE . "private")
-   (PROCEDURE . "procedure")
-   (PROTECTED . "protected")
-   (RAISE . "raise")
-   (RANGE . "range")
-   (RECORD . "record")
-   (REM . "rem")
-   (RENAMES . "renames")
-   (REQUEUE . "requeue")
-   (RETURN . "return")
-   (REVERSE . "reverse")
-   (SEPARATE . "separate")
-   (SELECT . "select")
-   (SOME . "some")
-   (SUBTYPE . "subtype")
-   (SYNCHRONIZED . "synchronized")
-   (TAGGED . "tagged")
-   (TASK . "task")
-   (TERMINATE . "terminate")
-   (THEN . "then")
-   (TYPE . "type")
-   (UNTIL . "until")
-   (USE . "use")
-   (WHEN . "when")
-   (WHILE . "while")
-   (WITH . "with")
-   (XOR . "xor")
-   (LEFT_PAREN . "(")
-   (LEFT_SQUARE_BRACKET . "[")
-   (RIGHT_PAREN . ")")
-   (RIGHT_SQUARE_BRACKET . "]")
-   (AMPERSAND . "&")
-   (AT_SIGN . "@")
-   (BAR . "|")
-   (BOX . "<>")
-   (COLON . ":")
-   (COLON_EQUAL . ":=")
-   (COMMA . ",")
-   (DOT . ".")
-   (DOT_DOT . "..")
-   (EQUAL . "=")
-   (EQUAL_GREATER . "=>")
-   (GREATER . ">")
-   (GREATER_EQUAL . ">=")
-   (GREATER_GREATER . ">>")
-   (LESS . "<")
-   (LESS_EQUAL . "<=")
-   (LESS_LESS . "<<")
-   (MINUS . "-")
-   (PLUS . "+")
-   (SEMICOLON . ";")
-   (SLASH . "/")
-   (SLASH_EQUAL . "/=")
-   (STAR . "*")
-   (STAR_STAR . "**")
-   (TICK_1 . "'")
-   (TICK_2 . "'")
-   (NUMERIC_LITERAL . "1234567890")
-   (IDENTIFIER . "A_Bogus_Identifier")
-   (STRING_LITERAL . "\"\"")
-   (CHARACTER_LITERAL . "' '")
-   ))
-
-(provide 'ada-process)
diff --git a/packages/ada-mode/ada-skel.el b/packages/ada-mode/ada-skel.el
deleted file mode 100644
index 537a159..0000000
--- a/packages/ada-mode/ada-skel.el
+++ /dev/null
@@ -1,364 +0,0 @@
-;;; ada-skel.el --- Extension to Ada mode for inserting statement skeletons  
-*- lexical-binding:t -*-
-
-;; Copyright (C) 1987, 1993, 1994, 1996-2020  Free Software Foundation, Inc.
-
-;; Authors: Stephen Leake <stephen_leake@stephe-leake.org>
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Design:
-;;
-;; The primary user command is `wisi-skel-expand', which inserts the
-;; skeleton associated with the previous word (possibly skipping a
-;; name).
-;;
-;; We don't define skeletons that prompt for most of the content; it
-;; is easier just to type in the buffer.
-;;
-;; These skeletons are not intended to teach a novice the language,
-;; just to make it easier to write code that the wisi parser
-;; handles without error, and handle repeated names nicely.
-
-;;; History:
-
-;; Created May 1987.
-;; Original version from V. Bowman as in ada.el of Emacs-18
-;; (borrowed heavily from Mick Jordan's Modula-2 package for GNU,
-;; as modified by Peter Robinson, Michael Schmidt, and Tom Perrine.)
-;;
-;; Sep 1993. Daniel Pfeiffer <pfeiffer@cict.fr> (DP)
-;; Introduced statement.el for smaller code and user configurability.
-;;
-;; Nov 1993. Rolf Ebert <ebert@enpc.fr> (RE) Moved the
-;; skeleton generation into this separate file. The code still is
-;; essentially written by DP
-;;
-;; Adapted Jun 1994. Markus Heritsch
-;; <Markus.Heritsch@studbox.uni-stuttgart.de> (MH)
-;; added menu bar support for templates
-;;
-;; 1994/12/02  Christian Egli <cegli@hcsd.hac.com>
-;; General cleanup and bug fixes.
-;;
-;; 1995/12/20  John Hutchison <hutchiso@epi.syr.ge.com>
-;; made it work with skeleton.el from Emacs-19.30. Several
-;; enhancements and bug fixes.
-;;
-;; Sep 2013 Stephen Leake renamed to ada-skel (to match skeleton.el),
-;; complete re-write: added ada-skel-alist (to get some of the
-;; functionality of the sadly missed Else package). Simplified
-;; skeletons; just make it easier to work with the ada-wisi parser,
-;; don't try to teach syntax.
-
-(require 'skeleton)
-(require 'wisi-skel)
-
-;;;;; user variables, example skeletons intended to be overwritten
-
-(defcustom ada-skel-initial-string
-  "{header}
---  Emacs note: Type C-c C-e with point after the above placeholder
---
---  This text was inserted by ada-skel-initial-string;
---  M-x customize-variable <RET> ada-skel-initial-string <RET>
---  (info \"(ada-mode)Statement skeletons\")"
-  "String to insert in empty buffer.
-This could end in a token recognized by `ada-skel-expand'."
-  :type 'string
-  :group 'ada
-  :safe #'stringp)
-
-(define-skeleton ada-skel-user-restricted
-  "Example copyright/license skeleton, with automatic year and owner."
-  ()
-  "--  Copyright (C) " (format-time-string "%Y ") user-full-name " All Rights 
Reserved.\n"
-  "\n"
-  "pragma License (Restricted);\n"
-)
-
-(define-skeleton ada-skel-gpl
-  "Example copyright/license skeleton, with automatic year and owner, GPLv3."
-  ()
-  "--  Copyright (C) " (format-time-string "%Y ") user-full-name " All Rights 
Reserved.\n"
-  "--\n"
-  "--  This library is free software;  you can redistribute it and/or modify 
it\n"
-  "--  under terms of the  GNU General Public License  as published by the 
Free\n"
-  "--  Software  Foundation;  either version 3,  or (at your  option) any 
later\n"
-  "--  version. This library is distributed in the hope that it will be 
useful,\n"
-  "--  but WITHOUT ANY WARRANTY;  without even the implied warranty of 
MERCHAN-\n"
-  "--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
-  "\n"
-  "pragma License (GPL);\n"
-  )
-
-(define-skeleton ada-skel-modified-gpl
-  "Modified GPLv3 copyright/license skeleton, with automatic year and owner."
-  ()
-  "--  Copyright (C) " (format-time-string "%Y ") user-full-name " All Rights 
Reserved.\n"
-  "--\n"
-  "--  This library is free software;  you can redistribute it and/or modify 
it\n"
-  "--  under terms of the  GNU General Public License  as published by the 
Free\n"
-  "--  Software  Foundation;  either version 3,  or (at your  option) any 
later\n"
-  "--  version. This library is distributed in the hope that it will be 
useful,\n"
-  "--  but WITHOUT ANY WARRANTY;  without even the implied warranty of 
MERCHAN-\n"
-  "--  TABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
-  "\n"
-  "--  As a special exception under Section 7 of GPL version 3, you are 
granted\n"
-  "--  additional permissions described in the GCC Runtime Library 
Exception,\n"
-  "--  version 3.1, as published by the Free Software Foundation.\n"
-  "\n"
-  "pragma License (Modified_GPL);\n"
-)
-
-;;;;; Ada skeletons (alphabetical)
-
-(define-skeleton ada-skel-accept
-  "Insert accept statement with name from `str'."
-  ()
-  "accept " str " do\n"
-  "end " str ";\n")
-
-(define-skeleton ada-skel-case
-  "Insert case statement."
-  ()
-  "case " str " is\n"
-  "when " _ "=>\n"
-  "end case;\n")
-
-(define-skeleton ada-skel-declare
-  "Insert a block statement with an optional name (from `str')."
-  ()
-  str & ":\n"
-  "declare\n"
-  _
-  "begin\n"
-  "exception\n"
-  "end " str | -1 ";\n")
-
-(define-skeleton ada-skel-entry
-  "Insert entry statement with name from `str'."
-  ()
-  "entry " str " when " _ "\n"
-  "is\n"
-  "begin\n"
-  "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 ";\n")
-
-(define-skeleton ada-skel-function-body
-  "Insert a function body with name from `str'."
-  ()
-  "function " str " return \n"
-  "is\n"
-  "begin\n"
-  _
-  "end " str ";\n")
-
-(define-skeleton ada-skel-function-spec
-  "Insert a function type specification with name from `str'."
-  ()
-  "function " str " return ;\n")
-
-(define-skeleton ada-skel-header
-  "Insert a file header comment, with automatic copyright year and prompt for 
copyright owner/license.
-Each user will probably want to override this."
-  ()
-  "--  Abstract :\n"
-  "--\n"
-  "--  " _ "\n"
-  "--\n"
-  "{copyright_license}\n"
-  )
-
-(define-skeleton ada-skel-if
-  "Insert an if statement."
-  ()
-  "if " _ " then\n"
-  "elsif  then\n"
-  "else\n"
-  "end if;\n")
-
-(define-skeleton ada-skel-loop
-  "Insert a loop statement with an optional name (from `str')."
-  ()
-  str & " :\n"
-  "loop\n"
-  "exit " str | -1 " when " _ ";\n"
-  "end loop " str | -1 ";\n")
-
-(define-skeleton ada-skel-package-body
-  "Insert a package body with name from `str'."
-  ()
-  "package body " str " is\n"
-  _
-  "begin\n"
-  "end " str ";\n")
-
-(define-skeleton ada-skel-package-spec
-  "Insert a package specification with name from `str'.
-See `ada-find-other-file' to create library level package body from spec."
-  ()
-  "package " str " is\n"
-  _
-  "private\n"
-  "end " str ";\n")
-
-(define-skeleton ada-skel-procedure-body
-  "Insert a procedure body with name from `str'."
-  ()
-  "procedure " str "\n"
-  "is\n"
-  "begin\n"
-  _
-  "end " str ";\n")
-
-(define-skeleton ada-skel-procedure-spec
-  "Insert a procedure type specification with name from `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 ";\n")
-
-(define-skeleton ada-skel-protected-spec
-  "Insert a protected type specification with name from `str'."
-  ()
-  "protected type " str " is\n"
-  _
-  "private\n"
-  "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;\n")
-
-(define-skeleton ada-skel-return
-  "Insert an extended return statement."
-  ()
-  "return " _ " do\n"
-  "end return;\n")
-
-(define-skeleton ada-skel-select
-  "Insert a select statement."
-  ()
-  "select\n"
-  _
-  "else\n"
-  "end select;\n")
-
-(define-skeleton ada-skel-separate
-  "Insert a subunit body."
-  ()
-  "separate (" _ ")\n"
-  "{proper_body}\n")
-
-(define-skeleton ada-skel-task-body
-  "Insert a task body with name from `str'."
-  ()
-  "task body " str "\n"
-  "is\n"
-  _
-  "begin\n"
-  "end " str ";\n")
-
-(define-skeleton ada-skel-task-spec
-  "Insert a task specification with name from `str'."
-  ()
-  "task type " str " is\n"
-  _
-  "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 ";\n")
-
-(define-skeleton ada-skel-with-use
-  "Insert with and use context clauses with name from `str'."
-  ()
-  "with " str "; use " str ";\n")
-
-;;;;; token alist
-
-(defconst ada-skel-token-alist
-  '(("accept" . ada-skel-accept)
-    ("begin" . ada-skel-declare) ;; easy enough to delete the declare
-    ("case" . ada-skel-case)
-    ("copyright_license"
-     ("GPL" . ada-skel-gpl)
-     ("Modified GPL" . ada-skel-modified-gpl)
-     ("restricted" . ada-skel-user-restricted))
-    ("declare" . ada-skel-declare)
-    ("entry" . ada-skel-entry)
-    ("for" . ada-skel-for)
-    ("function"
-     ("body" . ada-skel-function-body)
-     ("spec" . ada-skel-function-spec))
-    ("header" . ada-skel-header)
-    ("if" . ada-skel-if)
-    ("loop" . ada-skel-loop)
-    ("package"
-     ("body" . ada-skel-package-body)
-     ("spec" . ada-skel-package-spec))
-    ("procedure"
-     ("body" . ada-skel-procedure-body)
-     ("spec" . ada-skel-procedure-spec))
-    ("proper_body"
-     ("function" . ada-skel-function-body)
-     ("procedure" . ada-skel-procedure-body)
-     ("task" . ada-skel-task-body)
-     ("protected" . ada-skel-protected-body))
-    ("protected"
-     ("body" . ada-skel-protected-body)
-     ("spec" . ada-skel-protected-spec))
-    ("record" . ada-skel-record)
-    ("return" . ada-skel-return)
-    ("select" . ada-skel-select)
-    ("separate" . ada-skel-separate)
-    ("task"
-     ("body" . ada-skel-task-body)
-     ("spec" . ada-skel-task-spec))
-    ("while" . ada-skel-while)
-    ("with" . ada-skel-with-use))
-  "Ada tokens for `wisi-skel-token-alist', used by `wisi-skel-expand'.")
-
-(defun ada-skel-setup ()
-  "Setup a buffer for ada-skel."
-  (setq wisi-skel-token-alist ada-skel-token-alist)
-  (add-hook 'skeleton-end-hook 'wisi-indent-statement nil t)
-  (when (and ada-skel-initial-string
-            (= (buffer-size) 0))
-    (insert ada-skel-initial-string))
-  )
-
-(add-hook 'ada-mode-hook #'ada-skel-setup)
-
-(provide 'ada-skel)
-;;; ada-skel.el ends here
diff --git a/packages/ada-mode/ada-stmt.el b/packages/ada-mode/ada-stmt.el
deleted file mode 100644
index 27e1b40..0000000
--- a/packages/ada-mode/ada-stmt.el
+++ /dev/null
@@ -1,9 +0,0 @@
-;; dummy file to hide obsolete bundled version
-;;
-;; Copyright (C) 2020  Free Software Foundation, Inc.
-;;
-;; 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
deleted file mode 100644
index 3f795f1..0000000
--- a/packages/ada-mode/ada-xref.el
+++ /dev/null
@@ -1,10 +0,0 @@
-;;; ada-xref.el --- Dummy file to hide obsolete bundled version  -*- 
lexical-binding:t -*-
-;;
-;; Copyright (C) 2020  Free Software Foundation, Inc.
-;; 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
deleted file mode 100644
index dce4b69..0000000
--- a/packages/ada-mode/ada.wy
+++ /dev/null
@@ -1,2652 +0,0 @@
-;;; WisiToken grammar for Ada
-;;
-;; Author: Stephen Leake <stephe-leake@stephe-leake.org>
-;; Maintainer: Stephen Leake <stephe-leake@stephe-leake.org>
-;; Created: Sept 2012
-;; Keywords: syntax
-;;
-;; Copied from Ada Language Reference Manual Annex P:
-;;
-;; (info "(aarm2012)Annex P" "*info Annex P*")
-;; 
file:///C:/Projects/arm_info/org.adaic.arm_form/build/html/aarm2012/AA-P.html
-;; https://www.adaic.org/ada-resources/standards/ Ada 2012 annex P
-;;
-;; but listed in alphabetical order. Repeating and optional constructs
-;; are implemented with extra productions. Most names are simplified
-;; to just "name", many productions are modified to reduce conflicts.
-;;
-;; The EBNF in LRM Annex P is not LALR(1), so we use a generalized
-;; LR parser.
-;;
-;; Annex P overloads several keywords as grammar elements; 'body',
-;; 'pragma', some others. That matters in the generated Ada code. We
-;; resolve this by appending _g to the grammar element name.
-;;
-;; To tolerate some invalid syntax during editing, we relax the
-;; grammar, mainly by allowing many items to be empty.
-
-%code copyright_license %{
-;;  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
-;;  published by the Free Software Foundation; either version 3, or (at
-;;  your option) any later version.
-;;
-;;  This software is distributed in the hope that it will be useful,
-;;  but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;;  General Public License for more details.
-;;
-;;  You should have received a copy of the GNU General Public License
-;;  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-}%
-
-%code actions spec post %{
-   Partial_Parse_Active    : Boolean := False;
-   Partial_Parse_Byte_Goal : WisiToken.Buffer_Pos := WisiToken.Buffer_Pos'Last;
-}%
-
-%generate LALR Ada_Emacs re2c Process
-%generate LR1 Ada_Emacs text_rep re2c Process
-
-%case_insensitive
-%start compilation
-
-%keyword ABS "abs"
-%keyword ACCEPT "accept"
-%keyword ABORT "abort"
-%keyword ABSTRACT "abstract"
-%keyword ACCESS "access"
-%keyword ALIASED "aliased"
-%keyword ALL "all"
-%keyword AND "and"
-%keyword ARRAY "array"
-%keyword AT "at"
-%keyword BEGIN "begin"
-%keyword BODY "body"
-%keyword CASE "case"
-%keyword CONSTANT "constant"
-%keyword DECLARE "declare"
-%keyword DELAY "delay"
-%keyword DELTA "delta"
-%keyword DIGITS "digits"
-%keyword DO "do"
-%keyword ELSE "else"
-%keyword ELSIF "elsif"
-%keyword END "end"
-%keyword ENTRY "entry"
-%keyword EXCEPTION "exception"
-%keyword EXIT "exit"
-%keyword FOR "for"
-%keyword FUNCTION "function"
-%keyword GENERIC "generic"
-%keyword GOTO "goto"
-%keyword IF "if"
-%keyword IN "in"
-%keyword INTERFACE "interface"
-%keyword IS "is"
-%keyword LIMITED "limited"
-%keyword LOOP "loop"
-%keyword MOD "mod"
-%keyword NEW "new"
-%keyword NOT "not"
-%keyword NULL "null"
-%keyword OF "of"
-%keyword OR "or"
-%keyword OTHERS "others"
-%keyword OUT "out"
-%keyword OVERRIDING "overriding"
-%keyword PACKAGE "package"
-%keyword PRAGMA "pragma"
-%keyword PRIVATE "private"
-%keyword PROCEDURE "procedure"
-%keyword PROTECTED "protected"
-%keyword RAISE "raise"
-%keyword RANGE "range"
-%keyword RECORD "record"
-%keyword REM "rem"
-%keyword RENAMES "renames"
-%keyword REQUEUE "requeue"
-%keyword RETURN "return"
-%keyword REVERSE "reverse"
-%keyword SEPARATE "separate"
-%keyword SELECT "select"
-%keyword SOME "some"
-%keyword SUBTYPE "subtype"
-%keyword SYNCHRONIZED "synchronized"
-%keyword TAGGED "tagged"
-%keyword TASK "task"
-%keyword TERMINATE "terminate"
-%keyword THEN "then"
-%keyword TYPE "type"
-%keyword UNTIL "until"
-%keyword USE "use"
-%keyword WHEN "when"
-%keyword WHILE "while"
-%keyword WITH "with"
-%keyword XOR "xor"
-
-%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 "@"
-%token <punctuation> BAR "|"
-%token <punctuation> BOX "<>"
-%token <punctuation> COLON ":"
-%token <punctuation> COLON_EQUAL ":="
-%token <punctuation> COMMA ","
-%token <punctuation> DOT "."
-%token <punctuation> DOT_DOT ".."
-%token <punctuation> EQUAL "="
-%token <punctuation> EQUAL_GREATER "=>"
-%token <punctuation> GREATER ">"
-%token <punctuation> GREATER_EQUAL ">="
-%token <punctuation> GREATER_GREATER ">>"
-%token <punctuation> LESS "<"
-%token <punctuation> LESS_EQUAL "<="
-%token <punctuation> LESS_LESS "<<"
-%token <punctuation> MINUS "-"
-%token <punctuation> PLUS "+"
-%token <punctuation> SEMICOLON ";"
-%token <punctuation> SLASH "/"
-%token <punctuation> SLASH_EQUAL "/="
-%token <punctuation> STAR "*"
-%token <punctuation> STAR_STAR "**"
-
-;; Support GNAT character coding in names and character and string
-;; literals (see test/non_ascii.ads)
-%re2c_regexp GNAT_Char_Coding %[ ("[\""[0-9A-Fa-f]+"\"]") ]%
-
-;; re2c lookahead regular expression; this is not a character literal.
-;; re2c does not allow combining | with /, so we need three tokens for
-;; this (sigh).
-%token <punctuation> TICK_1 "'"
-
-%token <regexp> TICK_2
-    %[ "'" / "('"([\x20-\U0010FFFF]|GNAT_Char_Coding)"'" ]%
-  "'"
-
-;; This regexp allows a lot of things that are not Ada numeric
-;; literals, but it's faster than a strictly conforming regexp. For
-;; non-based literals, force a trailing integer so (1..Length) is
-;; parsed correctly.
-%token <regexp> NUMERIC_LITERAL
-    %[ ([0-9])|([0-9][0-9eE._-]*[0-9])|([0-9]+"#"[0-9a-fA-F._-]+"#") ]%
-  "1234567890"
-
-;; non_grammar are not seen by the elisp lexer, but are needed by the re2c 
lexer
-%non_grammar <non-reporting> WHITESPACE %[ [ \t]+ ]%
-
-;; handle DOS or Unix newline
-%non_grammar <new-line> NEW_LINE %[ [\x0a]|[\x0d][\x0a] ]%
-
-;; 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]*) ]%
-
-;; '$' for gnatprep symbols.
-%token <symbol> IDENTIFIER
-    %[ 
([$a-zA-Z\x80-\U0010FFFF]|GNAT_Char_Coding)([0-9a-zA-Z_\x80-\U0010FFFF]|GNAT_Char_Coding)*
 ]%
-  "A_Bogus_Identifier"
-
-%token <string-double> STRING_LITERAL
-    %[ (["]([\x20-\x21\x23-\U0010FFFF]|GNAT_Char_Coding)*["])+ ]%
-  '""'
-
-%token <string-single> CHARACTER_LITERAL
-    %[ "'"([\x20-\U0010FFFF]|GNAT_Char_Coding)"'" ]%
-  "' '"
-
-%elisp_face font-lock-constant-face
-%elisp_face font-lock-function-name-face
-%elisp_face font-lock-type-face
-%elisp_face nil
-
-%elisp_indent ada-indent-aggregate Ada_Indent_Aggregate
-%elisp_indent ada-indent-renames Ada_Indent_Renames_0
-%elisp_indent ada-indent-return Ada_Indent_Return_0
-%elisp_indent ada-indent-record Ada_Indent_Record_0
-%elisp_indent "ada-indent-record*" Ada_Indent_Record_1
-
-;; Set McKenzie error recovery costs.
-;;
-;; We assume the user is typing new code more often than deleting or
-;; changing old. Minimal_Complete reduces cost for insert, so the
-;; default cost for insert, delete is the same. Often insert requires
-;; push_back first, to get the parser in the right state, so push_back
-;; is cheaper.
-;;
-;; We need a balance between Minimal_Complete and other solutions; if
-;; Minimal_Complete is too cheap, it will complete the entire
-;; compilation_Unit before the error point, when doing something else
-;; at some point is better (see test/ada_mode-recover_29.adb, _15,
-;; _24). On the other hand, doing lots of Minimal_Complete is very
-;; common when writing new code (see test/ada_mode-recover_10.adb,
-;; _error_during_resume_01). So we reduce the cost of inserting 'end
-;; ;'.
-;;
-;; test/ada_mode-recover_change_name.adb needs 'ignore check fail' cost 2
-;;
-;; Default cost for insert, delete, push back/undo_reduce, ignore check fail.
-%mckenzie_cost_default 4 4 2 2
-%mckenzie_minimal_complete_cost_delta -3
-
-;; END is cheaper, because it always requires at least one other
-;; keyword to follow.
-%mckenzie_cost_insert END 3
-
-;; This cost is applied once, independent of token count.
-%mckenzie_cost_matching_begin 3
-
-;; Prefer doing more work at the current error point over moving
-;; forward to a new one; there is normally only one real error point.
-;; But not too much; test/ada_mode-recover_partial_02_lr1.adb requires
-;; cost 2.
-%mckenzie_cost_fast_forward 2
-
-;; Handle converting 'if' to 'case' (and vice-versa), since that is a
-;; common operation. See test/ada_mode-recover_29.adb. This also makes
-;; inserting 'end if;' free; that's used a lot. But this defeats
-;; Forbid_Minimal_Complete; see
-;; test/ada_mode-recover_constant_as_statement_1.adb.
-%mckenzie_cost_insert CASE 2
-%mckenzie_cost_insert IF 2
-
-;; Prefer undo_reduce over push_back; consider the code:
-;;
-;; loop
-;;    if then
-;;       statement;
-;;    -- missing 'end if;'
-;; end loop;
-;; -- ^ error here
-;;
-;; Error recovery will insert 'end if;', after push_back or
-;; undo_reduce of the handled_sequence_of_statements including
-;; 'statement'. If it uses push_back, then 'end if;' is before
-;; 'statement'; if undo_reduce, after, which is the desired result.
-%mckenzie_cost_undo_reduce handled_sequence_of_statements 0
-%mckenzie_cost_undo_reduce sequence_of_statements 0
-%mckenzie_cost_undo_reduce sequence_of_statements_opt 0
-%mckenzie_cost_undo_reduce declarative_part_opt 0
-
-;; Missing or extra closing paren are common; missing handled by
-;; Minimal_Complete.
-%mckenzie_cost_delete RIGHT_PAREN 1
-
-;; test/ada_mode-recover_partial_02_lr1.adb requires 45_000; wisitoken got 30% 
faster
-%mckenzie_enqueue_limit 58_000
-
-;; 4 required for test/ada_mode-recover_match_names.adb.
-%mckenzie_check_limit 4
-
-;; After finding 1 solution, only check 100 more before giving up.
-;; Reduces solution time on complex errors.
-%mckenzie_check_delta_limit 100
-
-%end_names_optional_option End_Names_Optional
-
-;; known conflicts that are resolved by generalized LALR parser
-%conflict REDUCE/REDUCE in state abstract_limited_opt, 
abstract_limited_synchronized_opt on token NEW
-%conflict REDUCE/REDUCE in state actual_parameter_part, actual_parameter_part  
on token RIGHT_PAREN
-%conflict REDUCE/REDUCE in state aggregate, aggregate on token RIGHT_PAREN
-%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
-%conflict SHIFT/REDUCE in state abstract_subprogram_declaration, 
abstract_subprogram_declaration  on token IS
-%conflict SHIFT/REDUCE in state accept_statement, accept_statement  on token 
LEFT_PAREN
-%conflict SHIFT/REDUCE in state aggregate, expression_opt on token WITH
-%conflict SHIFT/REDUCE in state aspect_clause, name on token USE
-%conflict SHIFT/REDUCE in state association_opt, name on token EQUAL_GREATER
-%conflict SHIFT/REDUCE in state attribute_designator, attribute_designator  on 
token LEFT_PAREN
-%conflict SHIFT/REDUCE in state block_label, identifier_list  on token COLON
-%conflict SHIFT/REDUCE in state compilation, compilation  on token FOR
-%conflict SHIFT/REDUCE in state declaration, declaration  on token CONSTANT
-%conflict SHIFT/REDUCE in state expression_function_declaration, 
subprogram_specification on token IS
-%conflict SHIFT/REDUCE in state formal_derived_type_definition, 
formal_derived_type_definition on token WITH
-%conflict SHIFT/REDUCE in state generic_instantiation, generic_instantiation  
on token IS
-%conflict SHIFT/REDUCE in state generic_renaming_declaration, 
generic_formal_part  on token FUNCTION
-%conflict SHIFT/REDUCE in state generic_renaming_declaration, 
generic_formal_part  on token PACKAGE
-%conflict SHIFT/REDUCE in state generic_renaming_declaration, 
generic_formal_part  on token PROCEDURE
-%conflict SHIFT/REDUCE in state membership_choice_list, relation  on token BAR
-%conflict SHIFT/REDUCE in state null_procedure_declaration, 
subprogram_specification on token IS
-%conflict SHIFT/REDUCE in state object_renaming_declaration, identifier_list  
on token COLON
-%conflict SHIFT/REDUCE in state package_body, package_body  on token IS
-%conflict SHIFT/REDUCE in state parameter_specification, 
parameter_specification  on token NOT
-%conflict SHIFT/REDUCE in state protected_body, protected_body  on token IS
-%conflict SHIFT/REDUCE in state raise_expression, raise_expression on token 
WITH
-%conflict SHIFT/REDUCE in state relation_and_list, expression  on token AND
-%conflict SHIFT/REDUCE in state relation_and_then_list, expression  on token 
AND
-%conflict SHIFT/REDUCE in state relation_or_else_list, expression  on token OR
-%conflict SHIFT/REDUCE in state relation_or_list, expression  on token OR
-%conflict SHIFT/REDUCE in state relation_xor_list, expression  on token XOR
-%conflict SHIFT/REDUCE in state task_body, task_body  on token IS
-%conflict SHIFT/REDUCE in state wisitoken_accept, wisitoken_accept  on token 
FOR
-
-;;; grammar rules
-
-abstract_limited_synchronized_opt
-  : ABSTRACT LIMITED
-  | ABSTRACT SYNCHRONIZED
-  | ABSTRACT
-  | LIMITED
-  | SYNCHRONIZED
-  | ;; empty
-  ;
-
-abstract_limited_opt
-  : ABSTRACT LIMITED
-  | LIMITED
-  | ABSTRACT
-  | ;; empty
-  ;
-
-abstract_tagged_limited_opt
-  : ABSTRACT TAGGED LIMITED
-  | ABSTRACT TAGGED
-  | TAGGED LIMITED
-  | TAGGED
-  | LIMITED
-  | ;; empty
-  ;
-
-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 
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
-    %((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 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 ada-indent-broken]))%
-  ;
-
-;; same as access_type_definition for our purposes
-access_definition
-  : null_exclusion_opt ACCESS protected_opt PROCEDURE parameter_profile_opt
- ;; test/ada_mode-nomina.ads
- ;; 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)]))%
-
-  | null_exclusion_opt ACCESS protected_opt FUNCTION 
parameter_and_result_profile
- ;; test/ada_mode-nominal.ads
- ;; type Function_Access_Type_10 is access
- ;;   protected function
- ;;     (A_Param : in Float)
- ;;     return Standard.Float;
-    %((wisi-indent-action [nil nil nil nil (wisi-anchored%- 4 
ada-indent-broken)]))%
-
-  | null_exclusion_opt ACCESS general_access_modifier_opt name
-    %((wisi-face-apply-action [4 font-lock-function-name-face 
font-lock-type-face]))%
-  ;
-
-actual_parameter_part
-  : LEFT_PAREN association_list RIGHT_PAREN
- ;; see note in test/ada_mode-parens.adb Local_10 about right paren indent.
-    %((wisi-indent-action [nil [(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)]))%
-  ;
-
-actual_parameter_part_opt
-  : actual_parameter_part
-  | ;; empty
-  ;
-
-;; All LEFT_PAREN in aggregate are indented 0 here. Special cases for
-;; -1 are handled in 'primary'.
-aggregate
-  : 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 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)]))%
-  ;
-
-aliased_opt
-  : ALIASED
-  | ;; empty
-  ;
-
-and_interface_list_opt
-  : AND interface_list
-  | ;; empty
-  ;
-
-array_type_definition
-  : ARRAY LEFT_PAREN index_subtype_definition_list RIGHT_PAREN OF 
component_definition
- ;; unconstrained_array_definition
-    %((wisi-indent-action [nil nil (wisi-anchored 2 1) (wisi-anchored 2 0) nil 
nil]))%
-
-  | ARRAY LEFT_PAREN discrete_subtype_definition_list RIGHT_PAREN OF 
component_definition
- ;; constrained_array_definition
-    %((wisi-indent-action [nil nil (wisi-anchored 2 1) (wisi-anchored 2 0) nil 
nil]))%
-  ;
-
-aspect_clause
-  : FOR attribute_reference USE expression_opt SEMICOLON ;; 
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 ada-indent-broken]))%
-  | enumeration_representation_clause
-  | record_representation_clause
-  | at_clause
-  ;
-
-;; aspect_mark ::= aspect_identifier[Class]
-
-;; aspect_specification ::=
-;;   with aspect_mark [=> aspect_definition] {,
-;;        aspect_mark [=> aspect_definition] }
-aspect_specification_opt
-  : WITH association_list ;; overkill, but simpler.
-    %((wisi-indent-action [nil ada-indent-broken]))%
-  | ;; empty
-  ;
-
-assignment_statement
-  : name COLON_EQUAL expression_opt SEMICOLON
-    %((wisi-statement-action [1 statement-start 4 statement-end])
-      (wisi-indent-action [nil
-                           ada-indent-broken
-                           (wisi-hanging
-                            (wisi-anchored% 2 ada-indent-broken)
-                            (wisi-anchored% 3 ada-indent-broken))
-                           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-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.
- ;; test/aspects.ads
- ;; with Pre => X > 10 and
- ;;             X < 50 and
- ;;             F (X),
- ;;   Post =>
- ;;     Y >= X and
- ;;     Some_Very_Verbose_Predicate (X, Y);
- ;;
- ;; test/indent.ads
- ;;   1 => --  Used to be aligned on "CSCL_Type'"
- ;;        --  aligned with previous comment.
- ;;     IO_CPU_Control_State_S_Pkg.CPU2_Fault_Status_Type'
- ;;       (Unused2  => 10,  -- Used to be aligned on "1 =>"
- ;;   requires '-' on wisi-hanging%-
-    %((wisi-indent-action [(wisi-hanging nil ada-indent-broken)
-                           ada-indent-broken
-                           [(wisi-hanging%- (wisi-anchored% 2 
ada-indent-broken)
-                                            (wisi-anchored% 2 (* 2 
ada-indent-broken)))
-                            (wisi-hanging%- (wisi-anchored% 2 
ada-indent-broken)
-                                            (wisi-anchored% 2 (* 2 
ada-indent-broken)))]]))%
-  | discrete_choice_list EQUAL_GREATER BOX
-    %((wisi-indent-action [(wisi-hanging nil ada-indent-broken) 
ada-indent-broken nil]))%
-  | expression
- ;; 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
-  : association_list COMMA association_opt
-  | association_opt
-  ;
-
-asynchronous_select
-  : SELECT triggering_alternative THEN ABORT sequence_of_statements_opt END 
SELECT SEMICOLON
-    %((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 ada-indent-broken 
ada-indent-broken]))%
-  ;
-
-at_clause
-  : FOR direct_name USE AT expression_opt SEMICOLON
-    %((wisi-statement-action [1 statement-start 6 statement-end]))%
-  ;
-
-attribute_reference : name tick attribute_designator ;
-
-attribute_designator
-  : IDENTIFIER LEFT_PAREN expression RIGHT_PAREN
-  | IDENTIFIER
-  | ACCESS
-  | DELTA
-  | DIGITS
-  | MOD
-  ;
-
-;; basic_declarative_item merged into declaration
-;; basic_declaration merged into declaration
-
-binary_adding_operator : PLUS | MINUS | AMPERSAND ; ;; + | - | &
-
-block_label
-  : IDENTIFIER COLON
-    %((wisi-indent-action [ada-indent-label nil]))%
-    %((wisi-propagate-name 1))%
-  ;
-
-block_label_opt
-  : block_label
-    %()%
-    %((wisi-propagate-name 1))%
-  | ;; empty
-  ;
-
-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 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 
ada-indent-broken ada-indent-broken]))%
-    %((wisi-match-names 1 5))%
-  ;
-
-body_g : proper_body | body_stub ;
-
-body_stub
-  : subprogram_body_stub | package_body_stub | task_body_stub | 
protected_body_stub ;
-
-case_expression
-  : CASE expression_opt IS case_expression_alternative_list
-    %((wisi-statement-action [1 motion])
-      (wisi-motion-action [1 4])
-      (wisi-indent-action [nil ada-indent-broken nil ada-indent-when]))%
-  ;
-
-case_expression_alternative
-  : WHEN discrete_choice_list EQUAL_GREATER expression_opt
- ;; test/ada_mode-conditional_expressions.adb
- ;; when A =>
- ;;    J = 4
- ;;      or else M, --  test case from Piotr Trojanek
-    %((wisi-statement-action [1 motion])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken
-                           (wisi-hanging (wisi-anchored% 1 ada-indent)
-                                         (wisi-anchored% 1 (+ ada-indent 
ada-indent-broken)))]))%
-  ;
-
-case_expression_alternative_list
-  : case_expression_alternative_list COMMA case_expression_alternative
-    %((wisi-motion-action [1 3]))%
-  | case_expression_alternative
-  ;
-
-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 ada-indent-broken ada-indent-broken]))%
-  ;
-
-case_statement_alternative
-  : WHEN discrete_choice_list EQUAL_GREATER sequence_of_statements_opt
-    %((wisi-statement-action [1 motion])
-      ;; ada-indent-when added in case_statement
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken [ada-indent 
ada-indent]]))%
-  ;
-
-;; We don't allow an empty list here; that leads to parallel parser
-;; explosion in nested case statements. Note that ada-skel-case
-;; inserts an empty when =>
-case_statement_alternative_list
-  : case_statement_alternative_list case_statement_alternative
-    %((wisi-motion-action [1 2]))%
-  | case_statement_alternative
-  ;
-
-;; choice_expression use 'expression' to avoid conflicts
-
-;; choice_relation* - use 'relation*', to avoid conflicts
-
-;; Since we allow multiple compilation units in one parse, and don't
-;; require a library_item in order to be user friendly, we don't need
-;; a context_clause, since a list of context_items is just a
-;; compilation. Since context_item includes pragma, this
-;; also allows a pragma following a compilation_unit.
-;;
-;; We allow additional items here for partial syntax in mako-ada
-;; templates and grammar actions, and for partial parsing in large files.
-compilation_unit
-  : with_clause
-  | subunit
-  | PRIVATE declaration
-    %((wisi-indent-action [0 0]))%
-  | declaration
-  | statement
-  ;
-
-;; Compute indent for trailing comments.
-compilation
-  : compilation compilation_unit
-    %((wisi-indent-action [0 [0 0]]))%
-  | compilation_unit
-    %((wisi-indent-action [[0 0]]))%
-    %((wisi-terminate-partial-parse))%
-  ;
-
-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 ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
-                               ada-indent-broken ada-indent-broken 
ada-indent-broken]))%
-  ;
-
-component_clause_list
-  : component_clause_list component_clause
-  | component_clause
-  ;
-
-component_declaration
-  : identifier_list COLON component_definition COLON_EQUAL expression_opt 
aspect_specification_opt SEMICOLON
-    %((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 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 ada-indent-broken]))%
-  ;
-
-component_definition
-  : ALIASED subtype_indication
-  | subtype_indication
-  | ALIASED access_definition
-  | access_definition
-  ;
-
-component_item
-  : component_declaration
-  | aspect_clause
-  ;
-
-component_list
-  : component_list component_item
-  | component_list variant_part
-  | component_item
-  | variant_part
-  | NULL SEMICOLON
-    %((wisi-statement-action [1 statement-start 2 statement-end]))%
-  ;
-
-component_list_opt
-  : component_list
-  | ;; empty
-  ;
-
-compound_statement
-  : if_statement
-  | case_statement
-  | loop_statement
-  | block_statement
-  | extended_return_statement
-  | accept_statement
-  | select_statement
-  ;
-
-conditional_entry_call
-  : SELECT entry_call_alternative ELSE sequence_of_statements_opt END SELECT 
SEMICOLON
-    %((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 ada-indent-broken
-                                 ada-indent-broken]))%
-  ;
-
-conditional_quantified_expression
-  : if_expression
-  | case_expression
-  | quantified_expression
-  ;
-
-constant_opt
-  : CONSTANT
-  | ;; empty
-  ;
-
-constraint
-  : RANGE range_g ;; range_constraint
- ;; FIXME: | digits_constraint
- ;; FIXME: | delta_constraint
-  | index_constraint
- ;; | discriminant_constraint same as aspect_specification
-  ;
-
-constraint_opt
-  : constraint
-  | ;; empty
-  ;
-
-;; context_item not needed; see compilation_unit
-
-declaration
-  : abstract_subprogram_declaration
-  | aspect_clause
-  | body_g
-  | entry_declaration
-  | exception_declaration
-  | expression_function_declaration
-  | generic_declaration
-  | generic_instantiation
-  | null_procedure_declaration
-  | identifier_list COLON CONSTANT COLON_EQUAL expression_opt SEMICOLON ;; 
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) 
ada-indent-broken]))%
-  | object_declaration
-  | package_declaration
-  | renaming_declaration
-  | subprogram_declaration
-  | subtype_declaration
-  | type_declaration
-  | use_clause
-  ;
-
-;; pragma_g is not a 'declaration' in ARM, but it must be in the
-;; grammar. We don't include it in 'declaration', to avoid conflicts
-;; with 'pragma_g' in statements via compilation_unit.
-declarations
-  : declarations declaration
-  | declarations pragma_g
-  | declaration
-  | pragma_g
-  ;
-
-declarative_part_opt
-  : declarations
-  | ;; empty
-  ;
-
-;; declarative_item merged into declaration
-
-delay_alternative
-  : delay_statement sequence_of_statements_opt
-  ;
-
-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 
ada-indent-broken]))%
-  | DELAY expression_opt SEMICOLON
-    %((wisi-statement-action [1 statement-start 3 statement-end])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken]))%
-  ;
-
-derived_type_definition
-  : abstract_limited_opt NEW name and_interface_list_opt WITH record_definition
-    %((wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-type-face])
-      ;; comment after 'with' same as 'record'
-      (wisi-indent-action [nil nil nil nil [nil (ada-indent-record* 'TYPE 6 
0)] nil]))%
-  | abstract_limited_opt NEW name constraint_opt
-    %((wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-type-face]))%
-  ;
-
-direct_name
-  : IDENTIFIER
-  | STRING_LITERAL ;; operator_symbol
-  ;
-
-direct_name_opt
-  : direct_name
-  | ;; empty
-  ;
-
-discrete_choice
-  : expression ;; includes 'name'
-  | NOT NULL name ;; from subytpe_indication, excluding constructs covered by 
'name'
-  | range_g
-  | OTHERS
-  ;
-
-discrete_choice_list
-  : discrete_choice_list BAR discrete_choice
-  | discrete_choice
-  | ;; empty for skeleton indentation
-  ;
-
- ;; discrete_range is the same as discrete_subtype_definition
-
- ;; discrete_range_list is the same as discrete_subtype_definition_list
-
-discrete_subtype_definition : subtype_indication | range_g ;
-
-discrete_subtype_definition_list
-  : discrete_subtype_definition_list COMMA discrete_subtype_definition
-  | discrete_subtype_definition
-  ;
-
-discriminant_part_opt
-  : LEFT_PAREN BOX RIGHT_PAREN ;; (<>) unknown_discriminant_part
-  | LEFT_PAREN discriminant_specification_list RIGHT_PAREN;; 
known_discriminant_part
-    %((wisi-indent-action [nil (wisi-anchored 1 1) (wisi-anchored 1 0)]))%
-  | ;; empty
-  ;
-
-discriminant_specification_opt
-  : identifier_list COLON null_exclusion_opt_name_type COLON_EQUAL 
expression_opt
-  | identifier_list COLON access_definition COLON_EQUAL expression_opt
-  | identifier_list COLON null_exclusion_opt_name_type
-  | identifier_list COLON access_definition
-  | ;; empty
-  ;
-
-discriminant_specification_list
-  : discriminant_specification_list SEMICOLON discriminant_specification_opt
-  | discriminant_specification_opt
-  ;
-
-elsif_expression_item
-  : ELSIF expression_opt THEN expression_opt
-    %((wisi-statement-action [1 motion 3 motion])
-        (wisi-motion-action [1 3])
-        (wisi-indent-action [nil [ada-indent-broken ada-indent-broken] nil 
ada-indent]))%
-  ;
-
-elsif_expression_list
-  : elsif_expression_list elsif_expression_item
-    %((wisi-motion-action [1 2]))%
-  | elsif_expression_item
-  ;
-
-elsif_statement_item
-  : ELSIF expression_opt THEN sequence_of_statements_opt
-    %((wisi-statement-action [1 motion 3 motion])
-      (wisi-motion-action [1 3])
-      (wisi-indent-action [nil [ada-indent-broken ada-indent-broken] nil 
[ada-indent ada-indent]]))%
-  ;
-
-elsif_statement_list
-  : elsif_statement_list elsif_statement_item
-    %((wisi-motion-action [1 2]))%
-  | elsif_statement_item
-  ;
-
-entry_body
-  : ENTRY IDENTIFIER entry_body_formal_part WHEN expression_opt
-    IS declarative_part_opt BEGIN handled_sequence_of_statements END 
identifier_opt SEMICOLON
-    %((wisi-statement-action [1 statement-start 4 motion 6 motion 8 motion 12 
statement-end])
-        (wisi-name-action 2)
-        (wisi-motion-action [1 4 6 8 [9 WHEN] 12])
-        (wisi-face-apply-action [2 nil font-lock-function-name-face 11 nil 
font-lock-function-name-face])
-
-        ;; test/ada_mode-nominal.adb
-        ;; entry E2
-        ;;   (X : Integer)
-        ;;   when Local_1 = 0 and not
-        ;;     (Local_2 = 1)
-        ;;
-        ;; entry E3
-        ;;   (X : Integer) when Local_1 = 0 and not
-        ;;     (Local_2 = 1)
-        (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken
-                                 (wisi-anchored% 4 ada-indent-broken)
-                                 nil [ada-indent ada-indent] nil [ada-indent 
ada-indent] nil ada-indent-broken
-                                 ada-indent-broken]))%
-    %((wisi-match-names 2 11))%
-  ;
-
-entry_body_formal_part
-  : LEFT_PAREN FOR IDENTIFIER IN discrete_subtype_definition RIGHT_PAREN 
parameter_profile_opt
-    %((wisi-indent-action [nil (wisi-anchored 1 1) (wisi-anchored 1 1) 
(wisi-anchored 1 1) (wisi-anchored 1 1)
-                           (wisi-anchored 1 0) ada-indent-broken]))%
-  | parameter_profile_opt
-  ;
-
-entry_call_alternative
-  : procedure_call_statement sequence_of_statements_opt
-  | name sequence_of_statements_opt ;; entry_call_statement
-  ;
-
-entry_declaration
-  : overriding_indicator_opt ENTRY IDENTIFIER LEFT_PAREN 
discrete_subtype_definition RIGHT_PAREN
-    parameter_profile_opt 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 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 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 ada-indent-broken]))%
-  ;
-
-enumeration_literal ;; enumeration_literal_specification
-  : IDENTIFIER
-  | CHARACTER_LITERAL
-  ;
-
-enumeration_literal_list
-  : enumeration_literal_list COMMA enumeration_literal
-  | enumeration_literal
-  ;
-
-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
-                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
-                           ada-indent-broken ada-indent-broken 
ada-indent-broken]))%
-  ;
-
-enumeration_type_definition
-  : LEFT_PAREN enumeration_literal_list RIGHT_PAREN
-    %((wisi-indent-action [nil (wisi-anchored 1 1) (wisi-anchored 1 0)]))%
-  ;
-
-exception_choice : name | OTHERS ;
-
-exception_choice_list
-  : exception_choice_list BAR exception_choice
-  | exception_choice
-  ;
-
-;; FIXME: leaving out [renaming] [aspect_specification]
-exception_declaration
-  : identifier_list COLON EXCEPTION SEMICOLON
-    %((wisi-statement-action [1 statement-start 4 statement-end]))%
-  ;
-
-exception_handler
-  : WHEN IDENTIFIER COLON exception_choice_list EQUAL_GREATER
-    sequence_of_statements_opt
-    %((wisi-statement-action [1 motion])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
-                             [ada-indent ada-indent]]))%
-  | WHEN exception_choice_list EQUAL_GREATER sequence_of_statements_opt
-    %((wisi-statement-action [1 motion])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken [ada-indent 
ada-indent]]))%
-  ;
-
-exception_handler_list
-  : exception_handler_list exception_handler
-    %((wisi-motion-action [1 2]))%
-  | exception_handler
-  | pragma_g
-  ;
-
-exception_handler_list_opt
-  : exception_handler_list
-  | ;; empty for user friendly
-  ;
-
-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 ada-indent-broken]))%
-  | EXIT identifier_opt SEMICOLON
-    %((wisi-statement-action [1 statement-start 3 statement-end]))%
-  ;
-
-expression
-  : relation
-  | relation_and_list
-  | relation_and_then_list
-  | relation_or_list
-  | relation_or_else_list
-  | relation_xor_list
-  ;
-
-expression_opt
-  : expression
-  | ;; empty for user friendly
-  ;
-
-expression_function_declaration
-  : overriding_indicator_opt function_specification IS paren_expression 
aspect_specification_opt SEMICOLON
- ;; IS does not start a block, so it is not "motion".
- ;;
-    %((wisi-statement-action [1 statement-start 2 statement-override 6 
statement-end])
-      (wisi-indent-action [nil nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken]))%
-  ;
-
-extended_return_object_declaration
-  : IDENTIFIER COLON aliased_opt constant_opt return_subtype_indication 
COLON_EQUAL expression_opt
-    %((wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
-                           (wisi-anchored% 6 ada-indent-broken)]))%
-  | IDENTIFIER COLON aliased_opt constant_opt return_subtype_indication
-    %((wisi-indent-action [nil nil ada-indent-broken ada-indent-broken 
ada-indent-broken]))%
-  ;
-
-extended_return_object_declaration_opt
-  : extended_return_object_declaration
-  | ;; empty
-  ;
-
-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 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
-      ;; test/ada_mode-nominal.adb
-      ;; return B : Integer :=
-      ;;   (Local_Function);
-      ;; (wisi-indent-action [nil nil nil]))
-  ;
-
-;; designator is merged with name
-
-factor
-  : primary STAR_STAR primary
-  | primary
-  | ABS primary
-  | NOT primary
-  ;
-
-formal_object_declaration
-  : identifier_list COLON mode_opt null_exclusion_opt name COLON_EQUAL
-    expression_opt aspect_specification_opt SEMICOLON
-    %((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
-                           (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 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
-                           (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
-                               ada-indent-broken]))%
-  ;
-
-formal_part
-  : LEFT_PAREN parameter_specification_list RIGHT_PAREN
-    %((wisi-statement-action [1 misc]) ;; for ada-wisi-in-paramlist-p, 
ada-goto-declarative-region-start
-      (wisi-indent-action [nil (wisi-anchored 1 1) (wisi-anchored 1 0)]))%
-  ;
-
-formal_subprogram_declaration
-  : WITH subprogram_specification IS ABSTRACT subprogram_default 
aspect_specification_opt SEMICOLON
- ;; 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 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 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 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 ada-indent-broken]))%
-  ;
-
-formal_type_declaration
-  : TYPE IDENTIFIER discriminant_part_opt IS formal_type_definition 
aspect_specification_opt SEMICOLON
- ;; formal_complete_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 
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 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 ada-indent-broken]))%
-  ;
-
-formal_type_definition
-  : abstract_tagged_limited_opt PRIVATE ;; formal_private_type_definition
-  | formal_derived_type_definition
-  | LEFT_PAREN BOX RIGHT_PAREN ;; formal_discrete_type_definition
-  | RANGE BOX ;; formal_signed_integer_type_definition
-  | MOD BOX ;; formal_modular_type_definition
-  | DIGITS BOX ;; formal_floating_point_definition
-  | DELTA BOX DIGITS BOX ;; formal_decimal_fixed_point_definition
-  | DELTA BOX ;; formal_ordinary_fixed_point_definition
-  | array_type_definition ;; formal_array_type_definition
-  | access_definition ;; access_type_definition, formal_access_type_definition
-  | interface_type_definition ;; formal_interface_type_definition
-  ;
-
-;; formal_derived_type_definition ::=
-;;   [abstract] [limited | synchronized] new subtype_mark [[and 
interface_list]with private]
-formal_derived_type_definition
-  : abstract_limited_synchronized_opt NEW name and_interface_list_opt WITH 
PRIVATE
-    %((wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-type-face]))%
-  | abstract_limited_synchronized_opt NEW name and_interface_list_opt
-    %((wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-type-face]))%
-  ;
-
-formal_package_declaration
-  : WITH PACKAGE name IS NEW name formal_package_actual_part 
aspect_specification_opt SEMICOLON
-    %((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
-                           (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
-  : LEFT_PAREN BOX RIGHT_PAREN ;; (<>)
-  | ;; empty generic actual part
-
- ;; | LEFT_PAREN association_list RIGHT_PAREN
- ;; covered by name <empty formal_package_actual_part) in 
formal_package_declaration
- ;; covers others => <>
-  ;
-
-;; formal_package_association_list is merged into association_list to avoid 
reduce/reduce conflict
-
-full_type_declaration
-  : TYPE IDENTIFIER discriminant_part_opt IS type_definition 
aspect_specification_opt SEMICOLON
-    %((wisi-statement-action [1 statement-start 7 statement-end])
-        (wisi-name-action 2)
-        (wisi-face-apply-action [2 nil font-lock-type-face])
-
-        ;; Indentation of comment after 'is' is
-        ;; 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)]
-                                 (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
-                                 nil ada-indent-broken]))%
-  | task_type_declaration
-  | protected_type_declaration
-  ;
-
-function_specification
-  : FUNCTION name parameter_and_result_profile
-    %((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
-                             (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
-                             ada-indent-broken]))%
-    %((wisi-propagate-name 2))%
-  ;
-
-general_access_modifier_opt
-  : ALL
-  | CONSTANT
-  | ;; empty
-  ;
-
-;; generic_actual_part is not needed; see generic_instantiation
-
-;; generic_association is merged into association
-
-generic_declaration
-  : generic_subprogram_declaration
-  | generic_package_declaration
-  ;
-
-generic_formal_part
-  : GENERIC generic_formal_parameter_declarations
-    %((wisi-statement-action [1 statement-start])
-      (wisi-indent-action [nil ada-indent]))%
-  | GENERIC
-    %((wisi-statement-action [1 statement-start]))%
-  ;
-
-generic_formal_parameter_declarations
-  : generic_formal_parameter_declarations generic_formal_parameter_declaration
-  | generic_formal_parameter_declaration
-  ;
-
-generic_formal_parameter_declaration
-  : formal_object_declaration
-  | formal_type_declaration
-  | formal_subprogram_declaration
-  | formal_package_declaration
-  | pragma_g
-  | use_clause
-  ;
-
-generic_instantiation
- ;; name generic_actual_part is included in name as a function call
-  : PACKAGE name IS NEW name aspect_specification_opt SEMICOLON
-    %((wisi-statement-action [1 statement-start 7 statement-end])
-        (wisi-name-action 2)
-        (wisi-face-apply-action [2 font-lock-function-name-face 
font-lock-function-name-face
-                                   5 font-lock-function-name-face 
font-lock-function-name-face])
-        (wisi-indent-action [nil
-                             (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
-                             (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
-                             (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 ada-indent-broken]))%
-  ;
-
-generic_renaming_declaration
-  : GENERIC PACKAGE 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
-                             (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
-                             (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
-                             (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
-  : generic_formal_part subprogram_specification aspect_specification_opt 
SEMICOLON
-    %((wisi-statement-action [1 statement-start 2 statement-override 4 
statement-end])
-      (wisi-motion-action [1 2 4]))%
-  ;
-
-goto_label
-  : LESS_LESS IDENTIFIER GREATER_GREATER
-    %((wisi-face-apply-action [2 nil font-lock-constant-face])
-      (wisi-indent-action [ada-indent-label ada-indent-broken 
ada-indent-broken]))%
-  ;
-
-handled_sequence_of_statements
-  : sequence_of_statements_opt EXCEPTION exception_handler_list_opt
-    %((wisi-indent-action [[nil nil]
-                             (- ada-indent)
-                             [(- ada-indent-when ada-indent) (- 
ada-indent-when ada-indent)]]))%
-  | sequence_of_statements_opt
-  ;
-
-identifier_list
-  : identifier_list COMMA IDENTIFIER
-    %((wisi-name-action 3)
-        (wisi-indent-action [nil nil ada-indent-broken]))%
-  | IDENTIFIER
-    %((wisi-name-action 1))%
-  ;
-
-identifier_opt
-  : IDENTIFIER
-    %()%
-    %((wisi-propagate-name 1))%
-  | ;; empty
-  ;
-
-if_expression
-  : IF expression_opt THEN expression_opt elsif_expression_list ELSE 
expression_opt
-    %((wisi-statement-action [1 motion 3 motion 6 motion])
-      (wisi-motion-action [1 3 5 6])
-      (wisi-indent-action [nil [ada-indent-broken ada-indent-broken] nil 
ada-indent nil nil ada-indent]))%
-  | IF expression_opt THEN expression_opt ELSE expression_opt
-    %((wisi-statement-action [1 motion 3 motion 5 motion])
-      (wisi-motion-action [1 3 5])
-      (wisi-indent-action [nil [ada-indent-broken ada-indent-broken] nil 
ada-indent nil ada-indent]))%
-  | IF expression_opt THEN expression_opt elsif_expression_list
-    %((wisi-statement-action [1 motion 3 motion])
-      (wisi-motion-action [1 3 5])
-      (wisi-indent-action [nil [ada-indent-broken ada-indent-broken] nil 
ada-indent nil]))%
-  | IF expression_opt THEN expression_opt
-    %((wisi-statement-action [1 motion 3 motion])
-      (wisi-motion-action [1 3])
-      (wisi-indent-action [nil [ada-indent-broken ada-indent-broken] nil 
ada-indent]))%
-  ;
-
-if_statement
-  : IF expression_opt THEN sequence_of_statements_opt elsif_statement_list ELSE
-    sequence_of_statements_opt 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 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])
-      (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 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 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 ada-indent-broken 
ada-indent-broken]))%
-  ;
-
-incomplete_type_declaration
-  : TYPE IDENTIFIER discriminant_part_opt IS TAGGED SEMICOLON
-    %((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 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 
ada-indent-broken]))%
-  ;
-
-index_constraint
-  : LEFT_PAREN discrete_subtype_definition_list RIGHT_PAREN
-    %((wisi-indent-action [nil (wisi-anchored 1 1) (wisi-anchored 1 0)]))%
-  ;
-
-index_subtype_definition : name RANGE BOX ;
-
-index_subtype_definition_list
-  : index_subtype_definition_list COMMA index_subtype_definition
-  | index_subtype_definition
-  ;
-
-interface_list
-  : interface_list AND name
-    %((wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-type-face]))%
-  | name
-    %((wisi-face-apply-action [1 font-lock-function-name-face 
font-lock-type-face]))%
-  ;
-
-interface_type_definition
-  : LIMITED INTERFACE AND interface_list
-  | TASK INTERFACE AND interface_list
-  | PROTECTED INTERFACE AND interface_list
-  | SYNCHRONIZED INTERFACE AND interface_list
-  | LIMITED INTERFACE
-  | TASK INTERFACE
-  | PROTECTED INTERFACE
-  | SYNCHRONIZED INTERFACE
-  | INTERFACE
-;
-
-iteration_scheme
-  : WHILE expression_opt
-    %((wisi-indent-action [nil [ada-indent-broken ada-indent-broken]]))%
-  | FOR iterator_specification_opt
-    %((wisi-indent-action [nil [ada-indent-broken ada-indent-broken]]))%
-  ;
-
-iterator_specification
- ;; also loop_parameter_specification, to avoid redundancy bewteen
- ;; iterator_name and discrete_subtype_definition; both can be just
- ;; 'name'. For example, a name could be either
- ;; 'Package_Name.Type_Name' from a loop_parameter_specification, or
- ;; "Object_Name.Iterator' from iterator_specification.
- ;;
- ;; That means both get marked with the same face, when they should
- ;; not be. If we include the conflict to get different face actions,
- ;; it will be resolved by identical stacks, one will be terminated at
- ;; random, and the wrong face action might still be applied. This can
- ;; only be fixed with true name resolution, so we remove any faces
- ;; that have been applied.
- ;;
-  : IDENTIFIER COLON subtype_indication OF REVERSE name
-  | IDENTIFIER COLON subtype_indication OF name
-  | IDENTIFIER IN REVERSE discrete_subtype_definition
-    %((wisi-face-remove-action [4]))%
-
- ;; The following can only be iterator_specifications. The name could
- ;; include a package name, but we can't tell that without full name
- ;; resolution.
-  | IDENTIFIER OF REVERSE name
-  | IDENTIFIER OF name
-
-  | IDENTIFIER IN discrete_subtype_definition
-    %((wisi-face-remove-action [3]))%
-  ;
-
-iterator_specification_opt
-  : iterator_specification
-  | ;; empty
-  ;
-
-;; library_*  not needed; 'declaration' in compilation_unit
-
-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 
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 
ada-indent-broken ada-indent-broken ada-indent-broken]))%
-    %((wisi-match-names 1 6))%
-  ;
-
-membership_choice_list
-  : membership_choice_list BAR membership_choice
-  | membership_choice
-  ;
-
-membership_choice
-  : simple_expression
- ;; ARM has choice_expression here, but that leads to a shift/reduce conflict, 
because of the following productions:
- ;; membership_choice_list => membership_choice => choice_expression => 
choice_relation_and_list
- ;; relation => simple_expression IN choice_relation_and_list
- ;; thus 'choice_relation_and_list AND' could be followed by relation (=> 
reduce) or choice_relation (=> shift)
- ;; This only occurs in legal Ada in expressions such as 'True in 1 and 3'; 
not useful, so we leave it out.
-  | range_g
- ;;  | name ;; subtype_mark - also covered by simple_expression; avoid 
reduce/reduce conflict
-  ;
-
-mod_clause_opt
-  : AT MOD expression_opt SEMICOLON
-  | ;; empty
-  ;
-
-mode_opt
-  : IN
-  | IN OUT
-  | OUT
-  | ;; empty
-  ;
-
-multiplying_operator : STAR | SLASH | MOD | REM ; ;; * | / | mod | rem
-
-name_list
-  : name_list COMMA name
-  | name
-  ;
-
-name
- ;; ARM has name ( discrete_subtype_definition ) here, but that's
- ;; partly redundant with name actual_parameter_part, and partly with
- ;; subtype_indication; this is the part that is not redundant.
-  : name LEFT_PAREN range_list RIGHT_PAREN ;; slice or constraint
- ;; test/ada_mode_nominal.ads Access_Unconstrained_Array_Type_1
- ;; test/ada_mode-parens.adb
- ;; Slice_1
- ;;   (1,
- ;;    C
- ;;      (1 .. 2));
- ;;
- ;; tests/g-comlin.adb
- ;; return CL.Argument (The_Switch.Arg_Num)
- ;;   (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)]))%
-
-  | name actual_parameter_part
- ;; type_conversion, function_call, procedure call, generic
- ;; instantiation, indexed_component.
- ;;
- ;; test/ada_mode-parens.adb
- ;; No_Conditional_Set : constant Ada.Strings.Maps.Character_Set :=
- ;;   Ada.Strings.Maps."or"
- ;;     (Ada.Strings.Maps.To_Set (' '),
- ;;
- ;; Local_11 : Local_11_Type := Local_11_Type'
- ;;   (A => Integer
- ;;      (1.0),
- ;; indented by association
- ;;
- ;;test/hanging.adb; sets ada-indent-hanging-rel-exp: t
- ;; X_Long_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))]))%
-
-  | selected_component ;; starts with name
-    %()%
-    %((wisi-propagate-name 1))%
-
-  | attribute_reference ;; starts with name
-  | qualified_expression ;; starts with name
-
-  | IDENTIFIER ;; from direct_name
- ;; marking this for possible later face-apply, to prevent applying
- ;; face to the aggregate of an allocator, and other similar cases.
- ;; test/ada_mode-nominal.adb
- ;;    Object_3 : access Record_Type_3 := new Record_Type_3 (...)
-    %((wisi-face-mark-action [1 suffix]))%
-    %((wisi-propagate-name 1))%
-
-  | CHARACTER_LITERAL ;; only in an expression, so no type or function-name 
face
-
-  | STRING_LITERAL ;; operator_symbol, designator
-    %()%
-    %((wisi-propagate-name 1))%
-
-  | AT_SIGN ;; target_name
-  
-  ;; | explicit_dereference in selected_component
-  ;; | indexed_component same as 'name actual_parameter_part' above
-  ;; | generalized_reference same as 'name'
-  ;; | generalized_indexing same as 'indexed_component'
-  ;
-
-name_opt
-  : name
-    %()%
-    %((wisi-propagate-name 1))%
-  | ;; empty
-  ;
-
-null_exclusion_opt
-  : NOT NULL
-  | ;; empty
-  ;
-
-;; use _only_ to avoid a conflict between name and null_exclusion_opt; name 
must be a type
-null_exclusion_opt_name_type
-  : IDENTIFIER
-    %((wisi-face-apply-action [1 nil font-lock-type-face]))%
-  | selected_component
-    %((wisi-face-apply-action [1 font-lock-function-name-face 
font-lock-type-face]))%
-  | NOT NULL IDENTIFIER
-    %((wisi-face-apply-action [3 nil font-lock-type-face]))%
-  | NOT NULL selected_component
-    %((wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-type-face]))%
-  ;
-
-null_procedure_declaration
-  : overriding_indicator_opt procedure_specification IS NULL 
aspect_specification_opt SEMICOLON
-    %((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 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
-                               (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 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 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
-                               (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 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 ada-indent-broken]))%
-  | single_task_declaration
-  | single_protected_declaration
-  ;
-
-object_renaming_declaration
-  : IDENTIFIER COLON null_exclusion_opt name RENAMES name 
aspect_specification_opt SEMICOLON
-    %((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
-                           (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
-                           (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
-                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
-                           ada-indent-broken ada-indent-broken]))%
-  ;
-
-;; operator_symbol is STRING_LITERAL, in name
-
-overriding_indicator_opt
-  : NOT OVERRIDING
-    %((wisi-statement-action [1 statement-start 2 statement-override]))%
-  | OVERRIDING
-    %((wisi-statement-action [1 statement-start]))%
-  | ;; empty - following keyword is statement-start
-  ;
-
-package_body
-  : PACKAGE BODY name aspect_specification_opt IS declarative_part_opt
-    BEGIN handled_sequence_of_statements END name_opt SEMICOLON
-    %((wisi-statement-action [1 statement-start 5 motion 7 motion 11 
statement-end])
-      (wisi-name-action 3)
-      (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
-                           (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
-    %((wisi-statement-action [1 statement-start 5 motion 9 statement-end])
-      (wisi-name-action 3)
-      (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
-                           (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))%
-  ;
-
-package_body_stub
-  : PACKAGE BODY name IS SEPARATE 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])
-      (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
-  : package_specification SEMICOLON
-    %((wisi-statement-action [1 statement-start 2 statement-end])
-      (wisi-motion-action [1 2]))%
-  ;
-
-package_renaming_declaration
-  : PACKAGE name RENAMES name aspect_specification_opt SEMICOLON
-    %((wisi-statement-action [1 statement-start 6 statement-end])
-      (wisi-name-action 2)
-      (wisi-face-apply-action [2 font-lock-function-name-face 
font-lock-function-name-face
-                                 4 font-lock-function-name-face 
font-lock-function-name-face])
-      (wisi-indent-action [nil
-                           (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
-  : PACKAGE name aspect_specification_opt IS declarative_part_opt PRIVATE 
declarative_part_opt END name_opt
-    %((wisi-statement-action [1 statement-start 4 motion 6 motion])
-      (wisi-name-action 2)
-      (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
-                           (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])
-      (wisi-name-action 2)
-      (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
-                           (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))%
-  ;
-
-parameter_and_result_profile
-  : formal_part result_profile
-    %((wisi-indent-action [nil (ada-indent-return 1 0)]))%
-  | result_profile
-  ;
-
-;; parameter_association is merged into association
-;; parameter_association_list is merged into association_list
-
-parameter_profile_opt
-  : formal_part
-  | ;; empty
-  ;
-
-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
-                           (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
-                           (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)]))%
-  | identifier_list COLON aliased_opt access_definition
-    %((wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken]))%
-  | ;; empty
-  ;
-
-parameter_specification_list
-  : parameter_specification_list SEMICOLON parameter_specification
-  | parameter_specification
-  ;
-
-paren_expression
-  : LEFT_PAREN expression_opt RIGHT_PAREN
-    ;;test/ada_mode-parens.ads
-    ;; function Expression_Function_1 (V : Integer) return Boolean
-    ;;   is ((V = V and then True)
-    ;;         or else True);
-    %((wisi-indent-action [nil
-                           (wisi-hanging (wisi-anchored 1 1)
-                                         (wisi-anchored 1 (+ 1 
ada-indent-broken)))
-                           (wisi-anchored 1 0)]))%
-
-  ;; AI12-0157[1] aggregate instead of (aggregate)
-  | aggregate
-  ;
-
-pragma_g
-  : PRAGMA IDENTIFIER LEFT_PAREN association_list RIGHT_PAREN SEMICOLON
- ;; 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)
-                               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)
-                               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 ada-indent-broken]))%
-  ;
-
-;; prefix is name
-
-primary
-  : NUMERIC_LITERAL
-    %((wisi-face-apply-action [1 nil font-lock-constant-face]))%
-  | NULL
- ;; | STRING_LITERAL in name
-  | aggregate
-    %((wisi-indent-action [(ada-indent-aggregate)]))%
-  | name
-  | NEW name
- ;; allocator, FIXME: leaving out subpool_specification.
-    %((wisi-face-apply-action [2 font-lock-function-name-face 
font-lock-type-face]))%
- ;; | LEFT_PAREN expression RIGHT_PAREN ;; covered by aggregate
- ;; | LEFT_PAREN conditional_quantified_expression RIGHT_PAREN ; covered by 
aggregate
-  ;
-
-private_extension_declaration
-  : TYPE IDENTIFIER discriminant_part_opt IS abstract_limited_synchronized_opt 
NEW
-    subtype_indication and_interface_list_opt WITH PRIVATE 
aspect_specification_opt SEMICOLON
-    %((wisi-statement-action [1 statement-start 12 statement-end])
-      (wisi-name-action 2)
-      (wisi-face-apply-action [2 nil font-lock-type-face])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken ada-indent-broken
-                               ada-indent-broken ada-indent-broken 
ada-indent-broken ada-indent-broken
-                               nil ada-indent-broken]))%
-  ;
-
-private_type_declaration
-  : TYPE IDENTIFIER discriminant_part_opt IS abstract_tagged_limited_opt 
PRIVATE aspect_specification_opt SEMICOLON
-    %((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 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) 
ada-indent-broken]))%
-  ;
-
-procedure_specification
-  : PROCEDURE name parameter_profile_opt
-    %((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
-                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
-                           ada-indent-broken]))%
-    %((wisi-propagate-name 2))%
-  ;
-
-proper_body
-  : subprogram_body
-  | package_body
-  | task_body
-  | protected_body
-  ;
-
-protected_body
-  : PROTECTED BODY IDENTIFIER aspect_specification_opt IS 
protected_operation_item_list_opt END identifier_opt SEMICOLON
-    %((wisi-statement-action [1 statement-start 5 motion 9 statement-end])
-      (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 ada-indent-broken
-                               ada-indent-broken]))%
-    %((wisi-match-names 3 8))%
-  ;
-
-protected_body_stub
-  : PROTECTED BODY IDENTIFIER IS SEPARATE aspect_specification_opt SEMICOLON
-    %((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 ada-indent-broken]))%
-  ;
-
-protected_definition
-  : declarative_part_opt PRIVATE declarative_part_opt END identifier_opt
-    %((wisi-statement-action [2 motion])
-      (wisi-face-apply-action [5 nil font-lock-type-face])
-      (wisi-indent-action [[ada-indent ada-indent] nil [ada-indent ada-indent] 
nil nil]))%
-    %((wisi-propagate-name 5))%
-
-  | declarative_part_opt END identifier_opt
-    %((wisi-face-apply-action [3 nil font-lock-type-face])
-      (wisi-indent-action [[ada-indent ada-indent] nil nil]))%
-    %((wisi-propagate-name 3))%
-  ;
-
-protected_operation_item
-  : subprogram_declaration
-  | subprogram_body
-  | entry_body
-  | expression_function_declaration
-  | null_procedure_declaration
-  | aspect_clause
-  ;
-
-protected_operation_item_list
-  : protected_operation_item_list protected_operation_item
-  | protected_operation_item
-  ;
-
-protected_operation_item_list_opt
-  : protected_operation_item_list
-  | ;; empty
-  ;
-
-protected_opt
-  : PROTECTED
-  | ;; empty
-  ;
-
-protected_type_declaration
-  : PROTECTED TYPE IDENTIFIER discriminant_part_opt aspect_specification_opt IS
-    NEW interface_list WITH protected_definition SEMICOLON
-    %((wisi-statement-action [1 statement-start 6 motion 11 statement-end])
-      (wisi-name-action 3)
-      (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 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
-                               ada-indent-broken]))%
-    %((wisi-match-names 3 7))%
-  ;
-
-;; protected_operation_declaration merged into declaration
-
-qualified_expression
-  : name tick aggregate
-    %((wisi-face-apply-action [1 font-lock-function-name-face 
font-lock-type-face])
-      (wisi-indent-action [nil nil (if ada-indent-hanging-rel-exp
-                                       (wisi-anchored 1 ada-indent-broken)
-                                     (wisi-anchored% 1 ada-indent-broken))]))%
-    ;
-
-quantified_expression
-  : FOR quantifier iterator_specification EQUAL_GREATER expression_opt
-    %((wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent-broken (wisi-anchored% 4 ada-indent-broken)]))%
-  ;
-
-quantifier : ALL | SOME ;
-
-raise_expression
-  : RAISE name WITH expression_opt
-    %((wisi-indent-action [nil ada-indent-broken ada-indent-broken 
(wisi-anchored% 3 ada-indent-broken)]))%
-  | RAISE name
-  ;
-
-raise_statement
-  : RAISE name WITH expression_opt SEMICOLON
-    %((wisi-statement-action [1 statement-start 5 statement-end])
-      ;; test/ada_mode-nominal.adb
-      ;; raise Constraint_Error with
-      ;;   "help " &
-      ;;   "me!";
-      ;;
-      ;; raise Constraint_Error
-      ;;   with Integer'Image (1) &
-      ;;   "help!";
-      (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
-                           (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)]))%
-  | name tick RANGE ;; range_attribute_reference
-  | simple_expression DOT_DOT simple_expression
-  ;
-
-range_list
-  : range_list COMMA range_g
-  | range_g
-  ;
-
-real_range_specification_opt
-  : RANGE simple_expression DOT_DOT simple_expression
-  | ;; empty
-  ;
-
-record_definition
-  : RECORD component_list_opt END RECORD
-    %((wisi-indent-action [[(ada-indent-record* 'TYPE 1 0) (ada-indent-record* 
'TYPE 1 ada-indent)]
-                           [(ada-indent-record* 'TYPE 1 ada-indent) 
(ada-indent-record* 'TYPE 1 ada-indent)]
-                           (ada-indent-record* 'TYPE 1 0)
-                           nil]))%
- ;; ' terminate quote
-  | NULL RECORD
-  ;
-
-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
-                           (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
-  : relation_and_list AND relation
-  | relation AND relation
-  ;
-
-relation_and_then_list
-  : relation_and_then_list AND THEN relation
-  | relation AND THEN relation
-  ;
-
-relation_or_list
-  : relation_or_list OR relation
-  | relation OR relation
-  ;
-
-relation_or_else_list
-  : relation_or_else_list OR ELSE relation
-  | relation OR ELSE relation
-  ;
-
-relation_xor_list
-  : relation_xor_list XOR relation
-  | relation XOR relation
-  ;
-
-;; http://www.ada-auth.org/cgi-bin/cvsweb.cgi/ai12s/ai12-0022-1.txt?rev=1.13
-;; adds raise_expression
-relation
-  : simple_expression NOT IN membership_choice_list
-  | simple_expression IN membership_choice_list
-  | simple_expression relational_operator simple_expression
-  | simple_expression
-  | raise_expression
-  ;
-
-relational_operator
-  : EQUAL | SLASH_EQUAL | LESS | LESS_EQUAL | GREATER | GREATER_EQUAL ;
-  ;;  =   | /=          | <    |  <=        | >       | >=
-
-renaming_declaration
-  : object_renaming_declaration ;; includes exception_renaming_declaration
-  | package_renaming_declaration
-  | subprogram_renaming_declaration
-  | generic_renaming_declaration
-  ;
-
-requeue_statement
-  : REQUEUE name WITH ABORT SEMICOLON
-    %((wisi-statement-action [1 statement-start 5 statement-end]))%
-  | REQUEUE name SEMICOLON
-    %((wisi-statement-action [1 statement-start 3 statement-end]))%
-  ;
-
-;; not in LRM; used to implement consistent indentation
-result_profile
-  : RETURN null_exclusion_opt name_opt
-    %((wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-type-face])
-      (wisi-indent-action* 1
-                           [nil
-                            (wisi-anchored* 1 ada-indent-broken)
-                            (wisi-anchored*- 1 ada-indent-broken)]))%
-  | RETURN access_definition
- ;; test/ada_mode-nominal.adb
- ;; function Function_Access_1
- ;;   (A_Param : in Float)
- ;;   return access
- ;;     Standard.Float
-    %((wisi-indent-action* 1 [nil (wisi-anchored*- 1 ada-indent-broken)]))%
-  ;
-
-return_subtype_indication
-  : subtype_indication
-  | access_definition
-  ;
-
-selected_component
-  : name DOT IDENTIFIER
-    %((wisi-face-mark-action [1 prefix 3 suffix])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken]))%
-    %((wisi-merge-names 1 3))%
-
-  | name DOT CHARACTER_LITERAL
-    %((wisi-face-mark-action [1 prefix]))%
-
-  | name DOT STRING_LITERAL
-    %((wisi-face-mark-action [1 prefix]))%
-    %((wisi-merge-names 1 3))%
-
-  | name DOT ALL
-    %((wisi-face-mark-action [1 prefix]))%
-  ;
-
-;; selector_name - IDENTIFIER, STRING_LITERAL overlap name; CHARACTER_LITERAL 
used separately
-;;  : IDENTIFIER | CHARACTER_LITERAL | STRING_LITERAL ; ;; operator_symbol
-
-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 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 
ada-indent-broken ada-indent-broken]))%
-  ;
-
-select_alternative
- ;; we can't use guard_opt here because when present a guard is a
- ;; block-start, but when absent there is no block-start
-  : WHEN expression_opt EQUAL_GREATER accept_statement 
sequence_of_statements_opt ;; guard accept_alternative
-    %((wisi-statement-action [1 motion])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken ada-indent 
ada-indent]))%
-  | WHEN expression_opt EQUAL_GREATER TERMINATE SEMICOLON ;; 
terminate_alternative
-    %((wisi-statement-action [1 motion 4 statement-start 5 statement-end])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken ada-indent 
nil]))%
-  | WHEN expression_opt EQUAL_GREATER delay_alternative
-    %((wisi-statement-action [1 motion])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken 
ada-indent]))%
-  | accept_statement sequence_of_statements_opt ;; accept_alternative
-  | TERMINATE SEMICOLON ;; terminate_alternative
-    %((wisi-statement-action [1 statement-start 2 statement-end]))%
-  | delay_alternative
-  ;
-
-select_alternative_list
-  : select_alternative_list OR select_alternative
-    %((wisi-statement-action [2 motion])
-        (wisi-motion-action [[1 OR] 2])
-        (wisi-indent-action [nil nil ada-indent]))%
-  | select_alternative
-    %((wisi-indent-action [ada-indent]))%
-  ;
-
-select_alternative_list_opt
-  : select_alternative_list
-  | ;; empty
-  ;
-
-select_statement
-  : selective_accept
-  | timed_entry_call
-  | conditional_entry_call
-  | asynchronous_select
-  ;
-
-sequence_of_statements
-  : sequence_of_statements statement
-  | statement
-  ;
-
-;; Wherever the ARM requires a sequence_of_statements, we allow
-;; nothing; this simplifies indenting skeletons (see ada-skel), and is
-;; more user-friendly for indenting while editing.
-sequence_of_statements_opt
-  : sequence_of_statements
-  | ;; empty
-  ;
-
-simple_expression
-  : unary_adding_operator term_list
-  | term_list
-  ;
-
-simple_return_statement
-  : RETURN expression_opt SEMICOLON
- ;; test/ada_mode-parens.adb Function_3
- ;; return
- ;;   1.0 +
- ;;   2.0;
-    %((wisi-statement-action [1 statement-start 3 statement-end])
-      (wisi-indent-action [nil ada-indent-broken ada-indent-broken]))%
-  ;
-
-simple_statement
-  : NULL SEMICOLON;; null_statement
-    %((wisi-statement-action [1 statement-start 2 statement-end]))%
-  | assignment_statement
-  | exit_statement
-  | GOTO IDENTIFIER SEMICOLON ;; goto_statement
-    %((wisi-statement-action [1 statement-start 3 statement-end])
-      (wisi-face-apply-action [2 nil font-lock-constant-face]))%
-  | procedure_call_statement
-  | simple_return_statement
- ;; | entry_call_statement ; covered by procedure_call_statement
-  | requeue_statement
-  | delay_statement
-  | ABORT name SEMICOLON ;; abort_statement; ignoring list of tasks
-    %((wisi-statement-action [1 statement-start 3 statement-end]))%
-  | raise_statement
-  ;; | code_statement
-  | pragma_g
-  ;
-
-single_protected_declaration
-  : PROTECTED IDENTIFIER aspect_specification_opt IS NEW interface_list WITH 
protected_definition SEMICOLON
-    %((wisi-statement-action [1 statement-start 4 motion 7 motion 9 
statement-end])
-      (wisi-name-action 2)
-      (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
-                                 ada-indent-broken]))%
-    %((wisi-match-names 2 8))%
-
-  | PROTECTED IDENTIFIER aspect_specification_opt IS protected_definition 
SEMICOLON
-    %((wisi-statement-action [1 statement-start 4 motion 6 statement-end])
-      (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 
ada-indent-broken]))%
-    %((wisi-match-names 2 5))%
-  ;
-
-single_task_declaration
-  : TASK IDENTIFIER aspect_specification_opt IS NEW interface_list WITH 
task_definition END identifier_opt SEMICOLON
-    %((wisi-statement-action [1 statement-start 4 motion 11 statement-end])
-      (wisi-name-action 2)
-      (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 ada-indent-broken ada-indent-broken]))%
-    %((wisi-match-names 2 10))%
-
-  | TASK IDENTIFIER aspect_specification_opt IS task_definition END 
identifier_opt SEMICOLON
-    %((wisi-statement-action [1 statement-start 4 motion 8 statement-end])
-      (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 
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 ada-indent-broken 
ada-indent-broken]))%
-  ;
-
-statement
-  : goto_label
-  | simple_statement
-  | compound_statement
-  ;
-
-subprogram_body
-  : overriding_indicator_opt subprogram_specification aspect_specification_opt 
IS declarative_part_opt
-    BEGIN handled_sequence_of_statements END name_opt SEMICOLON
-    %((wisi-statement-action [1 statement-start 2 statement-override 4 motion 
6 motion 10 statement-end])
-      (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 
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 
ada-indent-broken]))%
-  ;
-
-subprogram_declaration
-  : overriding_indicator_opt subprogram_specification aspect_specification_opt 
SEMICOLON
-    %((wisi-statement-action [1 statement-start 2 statement-override 4 
statement-end]))%
-  ;
-
-subprogram_default
-  : name
-    %((wisi-face-apply-action [1 font-lock-function-name-face 
font-lock-function-name-face]))%
-  | BOX
-  | NULL ;
-
-subprogram_renaming_declaration
-  : overriding_indicator_opt subprogram_specification RENAMES name 
aspect_specification_opt SEMICOLON
-    %((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)
-                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
-                           ada-indent-broken ada-indent-broken]))%
-  ;
-
-subprogram_specification
-  : procedure_specification
-    %()%
-    %((wisi-propagate-name 1))%
-  | function_specification
-    %()%
-    %((wisi-propagate-name 1))%
-  ;
-
-subtype_declaration
-  : SUBTYPE IDENTIFIER IS subtype_indication aspect_specification_opt SEMICOLON
-    %((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
-                               ada-indent-broken]))%
-  ;
-
-subtype_indication
-  : NOT NULL name constraint
- ;; The last component of a selected_component could be an iterator
- ;; function in a loop iteration_scheme, not a type. See the comment
- ;; in iterator_specification.
-    %((wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-type-face]))%
-  | NOT NULL name
-    %((wisi-face-apply-action [3 font-lock-function-name-face 
font-lock-type-face]))%
-  | name constraint
-    %((wisi-face-apply-action [1 font-lock-function-name-face 
font-lock-type-face]))%
-  | name
-    %((wisi-face-apply-action [1 font-lock-function-name-face 
font-lock-type-face]))%
-  ;
-
-;; subtype_mark replaced by name
-
-subunit
-  : SEPARATE LEFT_PAREN name RIGHT_PAREN proper_body
-    %((wisi-statement-action [1 statement-start 5 statement-override])
-      (wisi-indent-action [nil
-                           (wisi-hanging%- ada-indent-broken (* 2 
ada-indent-broken))
-                           (wisi-anchored 2 1) (wisi-anchored 2 0) nil]))%
-  ;
-
-task_body
-  : TASK BODY IDENTIFIER aspect_specification_opt IS declarative_part_opt
-    BEGIN handled_sequence_of_statements END identifier_opt SEMICOLON
-    %((wisi-statement-action [1 statement-start 5 motion 7 motion 11 
statement-end])
-      (wisi-name-action 3)
-      (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 
ada-indent-broken ada-indent-broken]))%
-    %((wisi-match-names 3 10))%
-  ;
-
-task_body_stub
-  : TASK BODY IDENTIFIER IS SEPARATE aspect_specification_opt SEMICOLON
-    %((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 ada-indent-broken]))%
-  ;
-
-;; LRM includes 'end identifier' here; we put that in
-;; task_type_declaration, single_task_declaration to simplify motion
-;; actions.
-task_definition
-  : declarative_part_opt PRIVATE declarative_part_opt
-    %((wisi-statement-action [2 motion])
-      (wisi-indent-action [[ada-indent ada-indent] nil [ada-indent 
ada-indent]]))%
-  | declarative_part_opt
-    %((wisi-indent-action [[ada-indent ada-indent]]))%
-  ;
-
-;; task_item replaced by declaration
-
-task_type_declaration
-  : TASK TYPE IDENTIFIER discriminant_part_opt aspect_specification_opt IS
-    NEW interface_list WITH task_definition END identifier_opt SEMICOLON
-    %((wisi-statement-action [1 statement-start 6 motion 9 motion 13 
statement-end])
-      (wisi-name-action 3)
-      (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 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
-                               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 ada-indent-broken
-                               ada-indent-broken]))%
-  ;
-
-term
-  : term multiplying_operator factor
-  | factor
-  ;
-
-term_list
-  : term_list binary_adding_operator term
-  | term
-  ;
-
-tick
-  : TICK_1
-  | TICK_2
-  ;
-
-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 ada-indent-broken
-                               ada-indent-broken]))%
-  ;
-
-triggering_alternative
-  : procedure_call_statement sequence_of_statements_opt
-  | name sequence_of_statements_opt ;; entry_call_statement
-  | delay_statement sequence_of_statements_opt
-  ;
-
-type_declaration
-  : full_type_declaration
-  | incomplete_type_declaration
-  | private_type_declaration
-  | private_extension_declaration
-  ;
-
-type_definition
-  : enumeration_type_definition
-  | RANGE simple_expression DOT_DOT simple_expression ;; 
integer_type_definition
-  | MOD expression_opt
-  | DIGITS expression_opt real_range_specification_opt ;; 
real_type_definition, floating_point_type_definition
-  | DELTA expression_opt DIGITS expression_opt real_range_specification_opt ;; 
decimal_fixed_point_definition
-  | DELTA expression_opt real_range_specification_opt ;; 
ordinary_fixed_point_definition
-  | array_type_definition
-  | abstract_tagged_limited_opt record_definition ;;record_type_definition
-  | access_definition ;; access_type_definition
-  | derived_type_definition
-  | interface_type_definition
-  ;
-
-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 
ada-indent-broken ada-indent-broken]))%
-  ;
-
-variant_list
-  : variant_list variant
-    %((wisi-motion-action [1 2]))%
-  | variant
-  ;
-
-variant
-  : WHEN discrete_choice_list EQUAL_GREATER component_list_opt
-    %((wisi-statement-action [1 motion])
-      ;; ada-indent-when applied in variant_part
-      (wisi-indent-action [nil (wisi-hanging nil ada-indent-broken) ada-indent 
[ada-indent ada-indent]]))%
-  ;
-
-unary_adding_operator : PLUS | MINUS ; ;; + | -
-
-use_clause
-  : USE ALL TYPE name_list SEMICOLON
-    %((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 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 
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 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 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 
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 
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 ada-indent-broken]))%
-  ;
-
-;;; end of file
diff --git a/packages/ada-mode/ada_license.text 
b/packages/ada-mode/ada_license.text
deleted file mode 100644
index 995a753..0000000
--- a/packages/ada-mode/ada_license.text
+++ /dev/null
@@ -1,127 +0,0 @@
-Copyright © 1992, 1993, 1994, 1995  Intermetrics, Inc.
-
-Copyright © 2000  The MITRE Corporation, Inc.
-
-Copyright © 2004, 2005, 2006  AXE Consultants
-
-Copyright © 2004, 2005, 2006  Ada-Europe
-
-Copyright © 2008, 2009, 2010, 2011, 2012  AXE Consultants
-
-
-Ada Reference Manual - Language and Standard Libraries
-
-Copyright © 1992, 1993, 1994, 1995, Intermetrics, Inc.
-
-This copyright is assigned to the U.S. Government.  All rights reserved.
-
-This document may be copied, in whole or in part, in any form or by any
-means, as is or with alterations, provided that (1) alterations are
-clearly marked as alterations and (2) this copyright notice is included
-unmodified in any copy. Compiled copies of standard library units and
-examples need not contain this copyright notice so long as the notice
-is included in all copies of source code and documentation.
-
----------
-
-Technical Corrigendum 1
-
-Copyright © 2000, The MITRE Corporation.  All Rights Reserved.
-
-This document may be copied, in whole or in part, in any form or by any
-means, as is, or with alterations, provided that (1) alterations are
-clearly marked as alterations and (2) this copyright notice is included
-unmodified in any copy. Any other use or distribution of this document
-is prohibited without the prior express permission of MITRE.
-
-You use this document on the condition that you indemnify and hold
-harmless MITRE, its Board of Trustees, officers, agents, and employees,
-from any and all liability or damages to yourself or your hardware or
-software, or third parties, including attorneys' fees, court costs, and
-other related costs and expenses, arising out of your use of this
-document irrespective of the cause of said liability.
-
-MITRE MAKES THIS DOCUMENT AVAILABLE ON AN "AS IS" BASIS AND MAKES NO
-WARRANTY, EXPRESS OR IMPLIED, AS TO THE ACCURACY, CAPABILITY,
-EFFICIENCY MERCHANTABILITY, OR FUNCTIONING OF THIS DOCUMENT.  IN NO
-EVENT WILL MITRE BE LIABLE FOR ANY GENERAL, CONSEQUENTIAL, INDIRECT,
-INCIDENTAL, EXEMPLARY, OR SPECIAL DAMAGES, EVEN IF MITRE HAS BEEN
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-
-
-Amendment 1
-
-Copyright © 2004, 2005, 2006, 2007, AXE Consultants.  All Rights
-Reserved.
-
-This document may be copied, in whole or in part, in any form or by any
-means, as is, or with alterations, provided that (1) alterations are
-clearly marked as alterations and (2) this copyright notice is included
-unmodified in any copy. Any other use or distribution of this document
-is prohibited without the prior express permission of AXE.
-
-You use this document on the condition that you indemnify and hold
-harmless AXE, its board, officers, agents, and employees, from any and
-all liability or damages to yourself or your hardware or software, or
-third parties, including attorneys' fees, court costs, and other
-related costs and expenses, arising out of your use of this document
-irrespective of the cause of said liability.
-
-AXE MAKES THIS DOCUMENT AVAILABLE ON AN "AS IS" BASIS AND MAKES NO
-WARRANTY, EXPRESS OR IMPLIED, AS TO THE ACCURACY, CAPABILITY,
-EFFICIENCY MERCHANTABILITY, OR FUNCTIONING OF THIS DOCUMENT. IN NO
-EVENT WILL AXE BE LIABLE FOR ANY GENERAL, CONSEQUENTIAL, INDIRECT,
-INCIDENTAL, EXEMPLARY, OR SPECIAL DAMAGES, EVEN IF AXE HAS BEEN ADVISED
-OF THE POSSIBILITY OF SUCH DAMAGES.
-
-Third Edition
-
-Copyright © 2008, 2009, 2010, 2011, 2012 AXE Consultants.  All Rights
-Reserved.
-
-This document may be copied, in whole or in part, in any form or by any
-means, as is, or with alterations, provided that (1) alterations are
-clearly marked as alterations and (2) this copyright notice is included
-unmodified in any copy. Any other use or distribution of this document
-is prohibited without the prior express permission of AXE.
-
-You use this document on the condition that you indemnify and hold
-harmless AXE, its board, officers, agents, and employees, from any and
-all liability or damages to yourself or your hardware or software, or
-third parties, including attorneys' fees, court costs, and other
-related costs and expenses, arising out of your use of this document
-irrespective of the cause of said liability.
-
-AXE MAKES THIS DOCUMENT AVAILABLE ON AN "AS IS" BASIS AND MAKES NO
-WARRANTY, EXPRESS OR IMPLIED, AS TO THE ACCURACY, CAPABILITY,
-EFFICIENCY MERCHANTABILITY, OR FUNCTIONING OF THIS DOCUMENT. IN NO
-EVENT WILL AXE BE LIABLE FOR ANY GENERAL, CONSEQUENTIAL, INDIRECT,
-INCIDENTAL, EXEMPLARY, OR SPECIAL DAMAGES, EVEN IF AXE HAS BEEN ADVISED
-OF THE POSSIBILITY OF SUCH DAMAGES.
-
-
-
-Ada 2005 Consolidated Standard
-
-Copyright © 2004, 2005, 2006, Ada-Europe.
-
-This document may be copied, in whole or in part, in any form or by any
-means, as is, or with alterations, provided that (1) alterations are
-clearly marked as alterations and (2) this copyright notice is included
-unmodified in any copy. Any other use or distribution of this document
-is prohibited without the prior express permission of Ada-Europe.
-
-You use this document on the condition that you indemnify and hold
-harmless Ada-Europe and its Board from any and all liability or damages
-to yourself or your hardware or software, or third parties, including
-attorneys' fees, court costs, and other related costs and expenses,
-arising out of your use of this document irrespective of the cause of
-said liability.
-
-ADA-EUROPE MAKES THIS DOCUMENT AVAILABLE ON AN "AS IS" BASIS AND MAKES
-NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE ACCURACY, CAPABILITY,
-EFFICIENCY MERCHANTABILITY, OR FUNCTIONING OF THIS DOCUMENT. IN NO
-EVENT WILL ADA-EUROPE BE LIABLE FOR ANY GENERAL, CONSEQUENTIAL,
-INDIRECT, INCIDENTAL, EXEMPLARY, OR SPECIAL DAMAGES, EVEN IF ADA-EUROPE
-HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
diff --git a/packages/ada-mode/ada_lr1_parse_table.txt.gz 
b/packages/ada-mode/ada_lr1_parse_table.txt.gz
deleted file mode 100644
index a5c7877..0000000
Binary files a/packages/ada-mode/ada_lr1_parse_table.txt.gz and /dev/null differ
diff --git a/packages/ada-mode/ada_mode_wisi_lalr_parse.ads 
b/packages/ada-mode/ada_mode_wisi_lalr_parse.ads
deleted file mode 100644
index fb83eaf..0000000
--- a/packages/ada-mode/ada_mode_wisi_lalr_parse.ads
+++ /dev/null
@@ -1,35 +0,0 @@
---  Abstract :
---
---  External process parser for Ada mode
---
---  Copyright (C) 2017 - 2019 Free Software Foundation, Inc.
---
---  This program is free software; you can redistribute it and/or
---  modify it under terms of the GNU General Public License as
---  published by the Free Software Foundation; either version 3, or (at
---  your option) any later version. This program is distributed in the
---  hope that it will be useful, but WITHOUT ANY WARRANTY; without even
---  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
---  PURPOSE. See the GNU General Public License for more details. You
---  should have received a copy of the GNU General Public License
---  distributed with this program; see file COPYING. If not, write to
---  the Free Software Foundation, 51 Franklin Street, Suite 500, Boston,
---  MA 02110-1335, USA.
-
-pragma License (GPL);
-
-with Ada_Process_Actions;
-with Ada_Process_LALR_Main;
-with Gen_Emacs_Wisi_LR_Parse;
-with WisiToken.Parse.LR.McKenzie_Recover.Ada;
-with Wisi.Ada;
-procedure Ada_Mode_Wisi_LALR_Parse is new Gen_Emacs_Wisi_LR_Parse
-  (Parse_Data_Type                => Wisi.Ada.Parse_Data_Type,
-   Language_Protocol_Version      => Wisi.Ada.Language_Protocol_Version,
-   Name                           => "Ada_mode_wisi_lalr_parse",
-   Descriptor                     => Ada_Process_Actions.Descriptor,
-   Partial_Parse_Active           => Ada_Process_Actions.Partial_Parse_Active,
-   Language_Fixes                 => 
WisiToken.Parse.LR.McKenzie_Recover.Ada.Language_Fixes'Access,
-   Language_Matching_Begin_Tokens => 
WisiToken.Parse.LR.McKenzie_Recover.Ada.Matching_Begin_Tokens'Access,
-   Language_String_ID_Set         => 
WisiToken.Parse.LR.McKenzie_Recover.Ada.String_ID_Set'Access,
-   Create_Parser                  => Ada_Process_LALR_Main.Create_Parser);
diff --git a/packages/ada-mode/ada_mode_wisi_lr1_parse.ads 
b/packages/ada-mode/ada_mode_wisi_lr1_parse.ads
deleted file mode 100644
index e86387d..0000000
--- a/packages/ada-mode/ada_mode_wisi_lr1_parse.ads
+++ /dev/null
@@ -1,36 +0,0 @@
---  Abstract :
---
---  External process parser for Ada mode
---
---  Copyright (C) 2017 - 2019 Free Software Foundation, Inc.
---
---  This program is free software; you can redistribute it and/or
---  modify it under terms of the GNU General Public License as
---  published by the Free Software Foundation; either version 3, or (at
---  your option) any later version. This program is distributed in the
---  hope that it will be useful, but WITHOUT ANY WARRANTY; without even
---  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
---  PURPOSE. See the GNU General Public License for more details. You
---  should have received a copy of the GNU General Public License
---  distributed with this program; see file COPYING. If not, write to
---  the Free Software Foundation, 51 Franklin Street, Suite 500, Boston,
---  MA 02110-1335, USA.
-
-pragma License (GPL);
-
-with Ada_Process_Actions;
-with Ada_Process_LR1_Main;
-with Gen_Emacs_Wisi_LR_Text_Rep_Parse;
-with WisiToken.Parse.LR.McKenzie_Recover.Ada;
-with Wisi.Ada;
-procedure Ada_Mode_Wisi_LR1_Parse is new Gen_Emacs_Wisi_LR_Text_Rep_Parse
-  (Parse_Data_Type                => Wisi.Ada.Parse_Data_Type,
-   Language_Protocol_Version      => Wisi.Ada.Language_Protocol_Version,
-   Name                           => "Ada_mode_wisi_lr1_parse",
-   Descriptor                     => Ada_Process_Actions.Descriptor,
-   Partial_Parse_Active           => Ada_Process_Actions.Partial_Parse_Active,
-   Language_Fixes                 => 
WisiToken.Parse.LR.McKenzie_Recover.Ada.Language_Fixes'Access,
-   Language_Matching_Begin_Tokens => 
WisiToken.Parse.LR.McKenzie_Recover.Ada.Matching_Begin_Tokens'Access,
-   Language_String_ID_Set         => 
WisiToken.Parse.LR.McKenzie_Recover.Ada.String_ID_Set'Access,
-   Text_Rep_File_Name             => "ada_lr1_parse_table.txt",
-   Create_Parser                  => Ada_Process_LR1_Main.Create_Parser);
diff --git a/packages/ada-mode/ada_mode_wisi_parse.gpr.gp 
b/packages/ada-mode/ada_mode_wisi_parse.gpr.gp
deleted file mode 100644
index b39f513..0000000
--- a/packages/ada-mode/ada_mode_wisi_parse.gpr.gp
+++ /dev/null
@@ -1,146 +0,0 @@
---  Abstract :
---
---  build ada_mode_wisi_parse and other executables
---
---  Copyright (C) 2014, 2018, 2019 Free Software Foundation, Inc.
---
---  This program is free software; you can redistribute it and/or
---  modify it under terms of the GNU General Public License as
---  published by the Free Software Foundation; either version 3, or (at
---  your option) any later version. This program is distributed in the
---  hope that it will be useful, but WITHOUT ANY WARRANTY; without even
---  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
---  PURPOSE. See the GNU General Public License for more details. You
---  should have received a copy of the GNU General Public License
---  distributed with this program; see file COPYING. If not, write to
---  the Free Software Foundation, 51 Franklin Street, Suite 500, Boston,
---  MA 02110-1335, USA.
-
-#if ELPA="yes"
-with "wisi";
-#else
-with "wisitoken";
-#end if;
-with "standard_common";
-with "gnatcoll";
-with "gnatcoll_sqlite";
-with "gnatcoll_xref";
-#if HAVE_GNAT_UTIL="yes"
-with "gnat_util";
-#end if;
-#if HAVE_LIBADALANG="yes"
-with "libadalang";
-#end if;
-project Ada_Mode_Wisi_Parse is
-
-   for Main use
-     ("ada_mode_wisi_lalr_parse.ads",
-      "ada_mode_wisi_lr1_parse.ads",
-      "run_ada_lalr_parse.ads",
-      "run_ada_lr1_parse.ads",
-#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"
-     );
-
-   for Source_Dirs use (".");
-
-   case Standard_Common.Profile is
-   when "On" =>
-      for Object_Dir use "obj_pro";
-      for Exec_Dir use "exec_pro";
-
-   when "Off" =>
-      for Object_Dir use "obj";
-      for Exec_Dir use ".";
-   end case;
-
-   for Languages use ("Ada", "C");
-
-   package Compiler is
-
-      case Standard_Common.Build is
-      when "Debug" =>
-         for Default_Switches ("Ada") use
-           Standard_Common.Compiler.Common_Switches &
-           Standard_Common.Compiler.Style_Checks &
-           Standard_Common.Compiler.Debug_Switches & "-gnat2020";
-
-         --  Generated files; lines too long, don't need debug
-         for Switches ("ada_process_actions.adb") use
-           Standard_Common.Compiler.Common_Switches &
-           Standard_Common.Compiler.Base_Style_Checks &
-           Standard_Common.Compiler.Base_Release_Switches & ("-O1");
-
-         for Switches ("ada_process_main.adb") use
-           Standard_Common.Compiler.Common_Switches &
-           Standard_Common.Compiler.Base_Style_Checks &
-           Standard_Common.Compiler.Base_Release_Switches & ("-O1");
-
-         for Switches ("gpr_process_actions.adb") use
-           Standard_Common.Compiler.Common_Switches &
-           Standard_Common.Compiler.Base_Style_Checks &
-           Standard_Common.Compiler.Base_Release_Switches & ("-O1");
-
-         for Switches ("gpr_process_main.adb") use
-           Standard_Common.Compiler.Common_Switches &
-           Standard_Common.Compiler.Base_Style_Checks &
-           Standard_Common.Compiler.Base_Release_Switches & ("-O1");
-
-         for Default_Switches ("C") use 
Standard_Common.Compiler.Debug_Switches_C;
-
-      when "Normal" =>
-         for Default_Switches ("Ada") use
-           Standard_Common.Compiler.Common_Switches &
-           Standard_Common.Compiler.Style_Checks &
-           Standard_Common.Compiler.Release_Switches & "-gnat2020";
-
-         for Switches ("ada_process_actions.adb") use
-           Standard_Common.Compiler.Common_Switches &
-           Standard_Common.Compiler.Base_Style_Checks &
-           Standard_Common.Compiler.Base_Release_Switches & ("-O1");
-
-         for Switches ("ada_process_main.adb") use
-           Standard_Common.Compiler.Common_Switches &
-           Standard_Common.Compiler.Base_Style_Checks &
-           Standard_Common.Compiler.Base_Release_Switches & ("-O1");
-
-         for Switches ("gpr_process.adb") use
-           Standard_Common.Compiler.Common_Switches &
-           Standard_Common.Compiler.Base_Style_Checks &
-           Standard_Common.Compiler.Base_Release_Switches & ("-O1");
-
-         for Default_Switches ("C") use 
Standard_Common.Compiler.Release_Switches_C;
-      end case;
-
-   end Compiler;
-
-   package Builder is
-      --  Specifying some configuration pragmas can reduce parse times
-      --  by 10% or so, on some systems. But doing so only here causes
-      --  recompiling of wisitoken. If we add Global_ or Local_
-      --  Configuration_Pragmas in wisitoken.gpr, we get compilation
-      --  errors there. So we leave it up to users to patch this if
-      --  they want it.
-      --  for Global_Configuration_Pragmas use "config.pragmas";
-
-      for Global_Compilation_Switches ("Ada") use 
Standard_Common.Builder'Global_Compilation_Switches ("Ada");
-
-   end Builder;
-
-   package Binder is
-      for default_switches ("Ada") use ("-E"); -- symbolic traceback
-   end Binder;
-
-   package Install is
-      for Required_Artifacts ("bin") use
-        ("ada_lr1_parse_table.txt");
-   end Install;
-
-end Ada_Mode_Wisi_Parse;
diff --git a/packages/ada-mode/ada_process_actions.adb 
b/packages/ada-mode/ada_process_actions.adb
deleted file mode 100644
index e3767c7..0000000
--- a/packages/ada-mode/ada_process_actions.adb
+++ /dev/null
@@ -1,5237 +0,0 @@
---  generated parser support file.
---  command line: wisitoken-bnf-generate.exe  --generate LR1 Ada_Emacs re2c 
PROCESS text_rep ada.wy
---
-
---  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
---  published by the Free Software Foundation; either version 3, or (at
---  your option) any later version.
---
---  This software is distributed in the hope that it will be useful,
---  but WITHOUT ANY WARRANTY; without even the implied warranty of
---  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
---  General Public License for more details.
---
---  You should have received a copy of the GNU General Public License
---  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-with Wisi; use Wisi;
-with Wisi.Ada; use Wisi.Ada;
-package body Ada_Process_Actions is
-
-   use WisiToken.Semantic_Checks;
-   use all type Motion_Param_Array;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (6,
-         Statement_End)));
-      when Face =>
-         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)))));
-      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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Motion), (9, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (5, Invalid_Token_ID) & (6, 72) &
-         (9, Invalid_Token_ID)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 3, 1), (8, 
3, 1)));
-      when Indent =>
-         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, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
-      end case;
-   end accept_statement_0;
-
-   function accept_statement_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 2, 8, End_Names_Optional);
-   end accept_statement_0_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Statement_End)));
-      when Face =>
-         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, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         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.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))), (False, (Simple,
-         (Label => None))), (False, (Simple, (Label => None))), (False, 
(Simple, (Label => None))), (False, (Simple,
-         (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.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))), (False, (Simple,
-         (Label => None))), (False, (Simple, (Label => None))), (False, 
(Simple, (Label => None))), (False, (Simple,
-         (Anchored_2, 4, Ada_Indent_Broken)))));
-      end case;
-   end access_definition_1;
-
-   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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (4, 1, 
2)));
-      when Indent =>
-         null;
-      end case;
-   end access_definition_2;
-
-   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.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 actual_parameter_part_0;
-
-   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.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 actual_parameter_part_1;
-
-   procedure aggregate_0
-    (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
-      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
-      case Parse_Data.Post_Parse_Action is
-      when Navigate =>
-         null;
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Anchored_0, 1, 1))), (False, (Simple, (Anchored_0, 1, 1))), (False, 
(Simple, (Label => None))), (False,
-         (Simple, (Label => None))), (False, (Simple, (Anchored_0, 1, 0)))));
-      end case;
-   end aggregate_2;
-
-   procedure aggregate_3
-    (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
-      case Parse_Data.Post_Parse_Action is
-      when Navigate =>
-         null;
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Anchored_0, 1, 1))), (False, (Simple, (Anchored_0, 1, 1))), (True, 
(Simple, (Anchored_0, 1, 1)), (Simple,
-         (Anchored_0, 1, 1))), (False, (Simple, (Anchored_0, 1, 0)))));
-      end case;
-   end 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.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))), (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;
-
-   procedure aggregate_5
-    (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
-      case Parse_Data.Post_Parse_Action is
-      when Navigate =>
-         null;
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Anchored_0, 1, 1))), (False, (Simple, (Anchored_0, 1, 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_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.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_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.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))), (False, (Simple,
-         (Label => None))), (False, (Simple, (Anchored_0, 2, 1))), (False, 
(Simple, (Anchored_0, 2, 0))), (False,
-         (Simple, (Label => None))), (False, (Simple, (Label => None)))));
-      end case;
-   end array_type_definition_0;
-
-   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.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))), (False, (Simple,
-         (Label => None))), (False, (Simple, (Anchored_0, 2, 1))), (False, 
(Simple, (Anchored_0, 2, 0))), (False,
-         (Simple, (Label => None))), (False, (Simple, (Label => None)))));
-      end case;
-   end array_type_definition_1;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Statement_End)));
-      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, (Int,
-         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.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))), (False, (Simple,
-         (Int, Ada_Indent_Broken)))));
-      end case;
-   end aspect_specification_opt_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Statement_End)));
-      when Face =>
-         null;
-      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, (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.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))), (False, (Simple,
-         (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;
-
-   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.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, 
(Hanging_0, (Label => None), (Int,
-         Ada_Indent_Broken))), (False, (Simple, (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_2;
-
-   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.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, 
(Hanging_0, (Label => None), (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(False, (Simple, (Label => None)))));
-      end case;
-   end association_opt_3;
-
-   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.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
-      case Parse_Data.Post_Parse_Action is
-      when Navigate =>
-         null;
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Label => None))), (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_6;
-
-   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.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))), (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_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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (8, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (8,
-         Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Statement_End)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end at_clause_0;
-
-   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.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, 
(Int, Ada_Indent_Label))), (False,
-         (Simple, (Label => None)))));
-      end case;
-   end block_label_0;
-
-   function block_label_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Lexer, Recover_Active);
-   begin
-      return Propagate_Name (Nonterm, Tokens, 1);
-   end block_label_0_check;
-
-   function block_label_opt_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Lexer, Recover_Active);
-   begin
-      return Propagate_Name (Nonterm, Tokens, 1);
-   end block_label_opt_0_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Motion), (4, Motion), (8,
-         Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (5, 72) &
-         (8, Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         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, (Int, Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken)))));
-      end case;
-   end block_statement_0;
-
-   function block_statement_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 1, 7, End_Names_Optional);
-   end block_statement_0_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Motion), (6, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 
Invalid_Token_ID) & (3, 72) & (6, Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         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, (Int, Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken)))));
-      end case;
-   end block_statement_1;
-
-   function block_statement_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 1, 5, End_Names_Optional);
-   end block_statement_1_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Motion)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         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)))));
-      end case;
-   end case_expression_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Motion)));
-      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, (Hanging_0, (Anchored_1, 1,
-         Ada_Indent), (Anchored_1, 1, Ada_Indent + Ada_Indent_Broken)))));
-      end case;
-   end case_expression_alternative_0;
-
-   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.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 =>
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end case_expression_alternative_list_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (7,
-         Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Motion)));
-      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))), (True, (Simple, (Int, Ada_Indent)),
-         (Simple, (Int, Ada_Indent)))));
-      end case;
-   end case_statement_alternative_0;
-
-   procedure case_statement_alternative_list_0
-    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
-     Tree      : in out WisiToken.Syntax_Trees.Tree;
-     Nonterm   : in     WisiToken.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 =>
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end case_statement_alternative_list_0;
-
-   procedure compilation_unit_2
-    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
-     Tree      : in out WisiToken.Syntax_Trees.Tree;
-     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, 
(Int, 0))), (False, (Simple, (Int,
-         0)))));
-      end case;
-   end compilation_unit_2;
-
-   procedure compilation_0
-    (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
-      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, 
(Int, 0))), (True, (Simple, (Int, 0)),
-         (Simple, (Int, 0)))));
-      end case;
-   end compilation_0;
-
-   procedure compilation_1
-    (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
-      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, 
(Simple, (Int, 0)), (Simple, (Int, 0)))));
-      end case;
-   end compilation_1;
-
-   function compilation_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Lexer, Tokens);
-   begin
-      return Terminate_Partial_Parse (Partial_Parse_Active, 
Partial_Parse_Byte_Goal, Recover_Active, Nonterm);
-   end compilation_1_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (8, Statement_End)));
-      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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-      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, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Anchored_1, 4, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Statement_End)));
-      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, (Int,
-         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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_End)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end component_list_4;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (7, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (7,
-         Invalid_Token_ID)));
-      when Face =>
-         null;
-      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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Statement_End)));
-      when Face =>
-         null;
-      when Indent =>
-         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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Statement_End)));
-      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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Statement_End)));
-      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)))));
-      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.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 =>
-         Face_Apply_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,
-         (Label => None))), (False, (Simple, (Label => None))), (False, 
(Simple, (Label => None))), (True, (Simple,
-         (Label => None)), (Simple, (Language, Ada_Indent_Record_1'Access, 69 
& 6 & 0))), (False, (Simple, (Label =>
-         None)))));
-      end case;
-   end derived_type_definition_0;
-
-   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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 1, 
2)));
-      when Indent =>
-         null;
-      end case;
-   end derived_type_definition_1;
-
-   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.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))), (False, (Simple,
-         (Anchored_0, 1, 1))), (False, (Simple, (Anchored_0, 1, 0)))));
-      end case;
-   end discriminant_part_opt_1;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Motion), 
(3, Motion)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (True, (Simple, (Int,
-         Ada_Indent_Broken)), (Simple, (Int, Ada_Indent_Broken))), (False, 
(Simple, (Label => None))), (False, (Simple,
-         (Int, Ada_Indent)))));
-      end case;
-   end elsif_expression_item_0;
-
-   procedure elsif_expression_list_0
-    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
-     Tree      : in out WisiToken.Syntax_Trees.Tree;
-     Nonterm   : in     WisiToken.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 =>
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end elsif_expression_list_0;
-
-   procedure elsif_statement_item_0
-    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
-     Tree      : in out WisiToken.Syntax_Trees.Tree;
-     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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Motion), 
(3, Motion)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (True, (Simple, (Int,
-         Ada_Indent_Broken)), (Simple, (Int, Ada_Indent_Broken))), (False, 
(Simple, (Label => None))), (True, (Simple,
-         (Int, Ada_Indent)), (Simple, (Int, Ada_Indent)))));
-      end case;
-   end elsif_statement_item_0;
-
-   procedure elsif_statement_list_0
-    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
-     Tree      : in out WisiToken.Syntax_Trees.Tree;
-     Nonterm   : in     WisiToken.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 =>
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end elsif_statement_list_0;
-
-   procedure entry_body_0
-    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
-     Tree      : in out WisiToken.Syntax_Trees.Tree;
-     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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Motion), (6, Motion), (8,
-         Motion), (12, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (6,
-         Invalid_Token_ID) & (8, Invalid_Token_ID) & (9, 72) & (12, 
Invalid_Token_ID)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 3, 1), 
(11, 3, 1)));
-      when Indent =>
-         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, (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, (Int, 
Ada_Indent_Broken)))));
-      end case;
-   end entry_body_0;
-
-   function entry_body_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 2, 11, 
End_Names_Optional);
-   end entry_body_0_check;
-
-   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.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))), (False, (Simple,
-         (Anchored_0, 1, 1))), (False, (Simple, (Anchored_0, 1, 1))), (False, 
(Simple, (Anchored_0, 1, 1))), (False,
-         (Simple, (Anchored_0, 1, 1))), (False, (Simple, (Anchored_0, 1, 0))), 
(False, (Simple, (Int,
-         Ada_Indent_Broken)))));
-      end case;
-   end entry_body_formal_part_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (8,
-         Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 3, 
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, (Anchored_0, 4, 1))), (False, (Simple, (Anchored_0, 
4, 0))), (False, (Simple, (Int,
-         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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (6,
-         Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 3, 
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)))));
-      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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Statement_End)));
-      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, (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.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))), (False, (Simple,
-         (Anchored_0, 1, 1))), (False, (Simple, (Anchored_0, 1, 0)))));
-      end case;
-   end enumeration_type_definition_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Statement_End)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end exception_declaration_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Motion)));
-      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, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken))), 
(True, (Simple, (Int, Ada_Indent)),
-         (Simple, (Int, Ada_Indent)))));
-      end case;
-   end exception_handler_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Motion)));
-      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))), (True, (Simple, (Int, Ada_Indent)),
-         (Simple, (Int, Ada_Indent)))));
-      end case;
-   end exception_handler_1;
-
-   procedure exception_handler_list_0
-    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
-     Tree      : in out WisiToken.Syntax_Trees.Tree;
-     Nonterm   : in     WisiToken.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 =>
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end exception_handler_list_0;
-
-   procedure exit_statement_0
-    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
-     Tree      : in out WisiToken.Syntax_Trees.Tree;
-     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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Statement_End)));
-      when Face =>
-         null;
-      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)))));
-      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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Statement_End)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end exit_statement_1;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (6,
-         Statement_End)));
-      when Face =>
-         null;
-      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, (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.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))), (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, 6, Ada_Indent_Broken)))));
-      end case;
-   end extended_return_object_declaration_0;
-
-   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.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))), (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 extended_return_object_declaration_1;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (7, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (4, 72) &
-         (7, Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Statement_End)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end extended_return_statement_1;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (9, Statement_End)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (5, 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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (8, Statement_End)));
-      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, (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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (5, 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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Statement_End)));
-      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, (Int,
-         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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Misc)));
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Anchored_0, 1, 1))), (False, (Simple, (Anchored_0, 1, 0)))));
-      end case;
-   end formal_part_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-      when Face =>
-         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)))));
-      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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Statement_End)));
-      when Face =>
-         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)))));
-      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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Statement_End)));
-      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, (Int,
-         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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Statement_End)));
-      when Face =>
-         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)))));
-      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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-      when Face =>
-         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, (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 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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-      when Face =>
-         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, (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 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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Statement_End)));
-      when Face =>
-         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, (Int,
-         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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 1, 
2)));
-      when Indent =>
-         null;
-      end case;
-   end formal_derived_type_definition_0;
-
-   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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 1, 
2)));
-      when Indent =>
-         null;
-      end case;
-   end formal_derived_type_definition_1;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (9, Statement_End)));
-      when Face =>
-         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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-      when Face =>
-         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))), (True, (Simple, (Int,
-         Ada_Indent_Broken)), (Simple, (Language, Ada_Indent_Record_1'Access, 
69 & 5 & 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)))));
-      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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Statement_Start)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-      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, (Hanging_3,
-         (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken)))));
-      end case;
-   end function_specification_0;
-
-   function function_specification_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Lexer, Recover_Active);
-   begin
-      return Propagate_Name (Nonterm, Tokens, 2);
-   end function_specification_0_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Statement_Start)));
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Int, Ada_Indent)))));
-      end case;
-   end generic_formal_part_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Statement_Start)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end generic_formal_part_1;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-      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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (8,
-         Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 1, 1), (6, 
1, 1)));
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (8,
-         Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 1, 1), (6, 
1, 1)));
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (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_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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, Invalid_Token_ID) & (3,
-         Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((True, (Simple, 
(Label => None)), (Simple, (Int,
-         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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-      when Face =>
-         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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-      when Face =>
-         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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-      when Face =>
-         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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (4,
-         Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, Invalid_Token_ID) & (4,
-         Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end generic_subprogram_declaration_0;
-
-   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.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 =>
-         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, (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.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, ((True, (Simple, 
(Label => None)), (Simple, (Label =>
-         None))), (False, (Simple, (Int, -Ada_Indent))), (True, (Simple, (Int, 
Ada_Indent_When - Ada_Indent)), (Simple,
-         (Int, Ada_Indent_When - Ada_Indent)))));
-      end case;
-   end handled_sequence_of_statements_0;
-
-   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.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 =>
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-      when Face =>
-         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)))));
-      end case;
-   end identifier_list_0;
-
-   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.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 =>
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 1);
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end identifier_list_1;
-
-   function identifier_opt_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Lexer, Recover_Active);
-   begin
-      return Propagate_Name (Nonterm, Tokens, 1);
-   end identifier_opt_0_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Motion), 
(3, Motion), (6, Motion)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (5,
-         Invalid_Token_ID) & (6, Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (True, (Simple, (Int,
-         Ada_Indent_Broken)), (Simple, (Int, Ada_Indent_Broken))), (False, 
(Simple, (Label => None))), (False, (Simple,
-         (Int, Ada_Indent))), (False, (Simple, (Label => None))), (False, 
(Simple, (Label => None))), (False, (Simple,
-         (Int, Ada_Indent)))));
-      end case;
-   end if_expression_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Motion), 
(3, Motion), (5, Motion)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (5,
-         Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (True, (Simple, (Int,
-         Ada_Indent_Broken)), (Simple, (Int, Ada_Indent_Broken))), (False, 
(Simple, (Label => None))), (False, (Simple,
-         (Int, Ada_Indent))), (False, (Simple, (Label => None))), (False, 
(Simple, (Int, Ada_Indent)))));
-      end case;
-   end if_expression_1;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Motion), 
(3, Motion)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (5,
-         Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (True, (Simple, (Int,
-         Ada_Indent_Broken)), (Simple, (Int, Ada_Indent_Broken))), (False, 
(Simple, (Label => None))), (False, (Simple,
-         (Int, Ada_Indent))), (False, (Simple, (Label => None)))));
-      end case;
-   end if_expression_2;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Motion), 
(3, Motion)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (True, (Simple, (Int,
-         Ada_Indent_Broken)), (Simple, (Int, Ada_Indent_Broken))), (False, 
(Simple, (Label => None))), (False, (Simple,
-         (Int, Ada_Indent)))));
-      end case;
-   end if_expression_3;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (6, Motion), (10,
-         Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (5,
-         Invalid_Token_ID) & (6, Invalid_Token_ID) & (10, Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         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))), (True, (Simple, (Int, 
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 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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (5, Motion), (9,
-         Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (5,
-         Invalid_Token_ID) & (9, Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         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))), (True, (Simple, (Int, 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 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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (8, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (5,
-         Invalid_Token_ID) & (8, Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         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, 
(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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (7, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (7,
-         Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-      when Face =>
-         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, (Int,
-         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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-      when Face =>
-         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, (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.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))), (False, (Simple,
-         (Anchored_0, 1, 1))), (False, (Simple, (Anchored_0, 1, 0)))));
-      end case;
-   end index_constraint_0;
-
-   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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 1, 
2)));
-      when Indent =>
-         null;
-      end case;
-   end interface_list_0;
-
-   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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 1, 
2)));
-      when Indent =>
-         null;
-      end case;
-   end interface_list_1;
-
-   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.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, (Int,
-         Ada_Indent_Broken)), (Simple, (Int, Ada_Indent_Broken)))));
-      end case;
-   end iteration_scheme_0;
-
-   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.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, (Int,
-         Ada_Indent_Broken)), (Simple, (Int, Ada_Indent_Broken)))));
-      end case;
-   end iteration_scheme_1;
-
-   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.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 =>
-         Face_Remove_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => 4));
-      when Indent =>
-         null;
-      end case;
-   end iterator_specification_2;
-
-   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.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 =>
-         Face_Remove_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => 3));
-      when Indent =>
-         null;
-      end case;
-   end iterator_specification_5;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (3,
-         Motion), (8, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (8,
-         Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         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, 
(Int, Ada_Indent_Broken))), (False,
-         (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
-      end case;
-   end loop_statement_0;
-
-   function loop_statement_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 1, 7, End_Names_Optional);
-   end loop_statement_0_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (4,
-         Motion), (7, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (7,
-         Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         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, (Int, Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken))), (False,
-         (Simple, (Int, Ada_Indent_Broken)))));
-      end case;
-   end loop_statement_1;
-
-   function loop_statement_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 1, 6, End_Names_Optional);
-   end loop_statement_1_check;
-
-   procedure name_0
-    (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
-      case Parse_Data.Post_Parse_Action is
-      when Navigate =>
-         null;
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Anchored_1, 1, Ada_Indent_Broken))), (False, (Hanging_0, 
(Anchored_0, 2, 1), (Anchored_0, 2, 1 +
-         Ada_Indent_Broken))), (False, (Simple, (Anchored_0, 2, 0)))));
-      end case;
-   end name_0;
-
-   procedure name_1
-    (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
-      case Parse_Data.Post_Parse_Action is
-      when Navigate =>
-         null;
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple, (if
-         Ada_Indent_Hanging_Rel_Exp then (Anchored_0, 1, Ada_Indent_Broken) 
else (Anchored_1, 1,
-         Ada_Indent_Broken))))));
-      end case;
-   end name_1;
-
-   function name_2_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Lexer, Recover_Active);
-   begin
-      return Propagate_Name (Nonterm, Tokens, 1);
-   end name_2_check;
-
-   procedure name_5
-    (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
-      case Parse_Data.Post_Parse_Action is
-      when Navigate =>
-         null;
-      when Face =>
-         Face_Mark_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Suffix)));
-      when Indent =>
-         null;
-      end case;
-   end name_5;
-
-   function name_5_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Lexer, Recover_Active);
-   begin
-      return Propagate_Name (Nonterm, Tokens, 1);
-   end name_5_check;
-
-   function name_7_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Lexer, Recover_Active);
-   begin
-      return Propagate_Name (Nonterm, Tokens, 1);
-   end name_7_check;
-
-   function name_opt_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Lexer, Recover_Active);
-   begin
-      return Propagate_Name (Nonterm, Tokens, 1);
-   end name_opt_0_check;
-
-   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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 3, 
2)));
-      when Indent =>
-         null;
-      end case;
-   end null_exclusion_opt_name_type_0;
-
-   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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 1, 
2)));
-      when Indent =>
-         null;
-      end case;
-   end null_exclusion_opt_name_type_1;
-
-   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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 3, 
2)));
-      when Indent =>
-         null;
-      end case;
-   end null_exclusion_opt_name_type_2;
-
-   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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 1, 
2)));
-      when Indent =>
-         null;
-      end case;
-   end null_exclusion_opt_name_type_3;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (6,
-         Statement_End)));
-      when Face =>
-         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)))));
-      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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (9, Statement_End)));
-      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, (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_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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (9, Statement_End)));
-      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, (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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (9, Statement_End)));
-      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, (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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-      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, (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_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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-      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, (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 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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-      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, (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 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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (8, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 1);
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (4, 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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 1);
-      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, (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_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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 1);
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (5, 1, 
3)));
-      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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end overriding_indicator_opt_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Statement_Start)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end overriding_indicator_opt_1;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Motion), (7, Motion), (11,
-         Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (5, Invalid_Token_ID) & (7,
-         Invalid_Token_ID) & (8, 72) & (11, Invalid_Token_ID)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 1, 1), 
(10, 1, 1)));
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (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;
-
-   function package_body_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 3, 10, 
End_Names_Optional);
-   end package_body_0_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Motion), (9, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (5, Invalid_Token_ID) & (9,
-         Invalid_Token_ID)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 1, 1), (8, 
1, 1)));
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((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, (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;
-
-   function package_body_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 3, 8, End_Names_Optional);
-   end package_body_1_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-      when Face =>
-         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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end package_declaration_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-      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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Motion), (6, Motion)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (6,
-         Invalid_Token_ID)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 1, 1), (9, 
1, 1)));
-      when Indent =>
-         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;
-
-   function package_specification_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 2, 9, End_Names_Optional);
-   end package_specification_0_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Motion)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 1, 1), (7, 
1, 1)));
-      when Indent =>
-         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;
-
-   function package_specification_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 2, 7, End_Names_Optional);
-   end package_specification_1_check;
-
-   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.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))), (False, (Simple,
-         (Language, Ada_Indent_Return_0'Access, 1 & 0)))));
-      end case;
-   end parameter_and_result_profile_0;
-
-   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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (6, 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, (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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (6, 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, (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.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))), (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)))));
-      end case;
-   end parameter_specification_2;
-
-   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.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))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken)))));
-      end case;
-   end parameter_specification_3;
-
-   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.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))), (False, (Hanging_0,
-         (Anchored_0, 1, 1), (Anchored_0, 1, 1 + Ada_Indent_Broken))), (False, 
(Simple, (Anchored_0, 1, 0)))));
-      end case;
-   end paren_expression_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Statement_End)));
-      when Face =>
-         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, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Anchored_0, 3,
-         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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Statement_End)));
-      when Face =>
-         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, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Anchored_0, 3,
-         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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Statement_End)));
-      when Face =>
-         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, (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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 3, 
0)));
-      when Indent =>
-         null;
-      end case;
-   end primary_0;
-
-   procedure primary_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
-      case Parse_Data.Post_Parse_Action is
-      when Navigate =>
-         null;
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, (1 => (False, 
(Simple, (Language,
-         Ada_Indent_Aggregate'Access, Null_Args)))));
-      end case;
-   end primary_2;
-
-   procedure primary_4
-    (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
-      case Parse_Data.Post_Parse_Action is
-      when Navigate =>
-         null;
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 1, 
2)));
-      when Indent =>
-         null;
-      end case;
-   end primary_4;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (12, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-      when Face =>
-         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, (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))), (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (8, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 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))),
-         (False, (Simple, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple,
-         (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_End)));
-      when Face =>
-         null;
-      when Indent =>
-         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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Statement_Start)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-      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, (Hanging_3,
-         (Int, Ada_Indent_Broken), (Int, 2 * Ada_Indent_Broken))), (False, 
(Simple, (Int, Ada_Indent_Broken)))));
-      end case;
-   end procedure_specification_0;
-
-   function procedure_specification_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Lexer, Recover_Active);
-   begin
-      return Propagate_Name (Nonterm, Tokens, 2);
-   end procedure_specification_0_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Motion), (9, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (5, Invalid_Token_ID) & (9,
-         Invalid_Token_ID)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 3, 2), (8, 
3, 2)));
-      when Indent =>
-         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, (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
-      end case;
-   end protected_body_0;
-
-   function protected_body_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 3, 8, End_Names_Optional);
-   end protected_body_0_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 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, (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 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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 
Motion)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (5, 3, 
2)));
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((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)))));
-      end case;
-   end protected_definition_0;
-
-   function protected_definition_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Lexer, Recover_Active);
-   begin
-      return Propagate_Name (Nonterm, Tokens, 5);
-   end protected_definition_0_check;
-
-   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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 3, 
2)));
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((True, (Simple, 
(Int, Ada_Indent)), (Simple, (Int,
-         Ada_Indent))), (False, (Simple, (Label => None))), (False, (Simple, 
(Label => None)))));
-      end case;
-   end protected_definition_1;
-
-   function protected_definition_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Lexer, Recover_Active);
-   begin
-      return Propagate_Name (Nonterm, Tokens, 3);
-   end protected_definition_1_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Motion), (11,
-         Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (6, Invalid_Token_ID) & (10, 49) &
-         (11, Invalid_Token_ID)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 3, 
2)));
-      when Indent =>
-         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))), (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)))));
-      end case;
-   end protected_type_declaration_0;
-
-   function protected_type_declaration_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 3, 10, 
End_Names_Optional);
-   end protected_type_declaration_0_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Motion), (8, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (6, Invalid_Token_ID) & (7, 49) &
-         (8, Invalid_Token_ID)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 3, 
2)));
-      when Indent =>
-         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, 
(Int, Ada_Indent_Broken)))));
-      end case;
-   end protected_type_declaration_1;
-
-   function protected_type_declaration_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 3, 7, End_Names_Optional);
-   end protected_type_declaration_1_check;
-
-   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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 1, 
2)));
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Label => None))), (False, (Simple, (if Ada_Indent_Hanging_Rel_Exp 
then (Anchored_0, 1, Ada_Indent_Broken)
-         else (Anchored_1, 1, Ada_Indent_Broken))))));
-      end case;
-   end qualified_expression_0;
-
-   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.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))), (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)))));
-      end case;
-   end quantified_expression_0;
-
-   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.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))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Anchored_1, 3,
-         Ada_Indent_Broken)))));
-      end case;
-   end raise_expression_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Statement_End)));
-      when Face =>
-         null;
-      when Indent =>
-         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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Statement_End)));
-      when Face =>
-         null;
-      when Indent =>
-         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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_End)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end raise_statement_2;
-
-   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.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))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Anchored_0, 4, 1))), (False, 
(Simple, (Anchored_0, 4, 0)))));
-      end case;
-   end range_g_0;
-
-   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.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, ((True, (Simple, 
(Language, Ada_Indent_Record_1'Access, 69
-         & 1 & 0)), (Simple, (Language, Ada_Indent_Record_1'Access, 69 & 1 & 
Ada_Indent))), (True, (Simple, (Language,
-         Ada_Indent_Record_1'Access, 69 & 1 & Ada_Indent)), (Simple, 
(Language, Ada_Indent_Record_1'Access, 69 & 1 &
-         Ada_Indent))), (False, (Simple, (Language, 
Ada_Indent_Record_1'Access, 69 & 1 & 0))), (False, (Simple, (Label
-         => None)))));
-      end case;
-   end record_definition_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Statement_End)));
-      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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Statement_End)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end requeue_statement_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Statement_End)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end requeue_statement_1;
-
-   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.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 =>
-         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_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.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_1 (Parse_Data, Tree, Nonterm, Tokens, 1, ((False, 
(Simple, (Label => None))), (False, (Simple,
-         (Anchored_4, 1, Ada_Indent_Broken)))));
-      end case;
-   end result_profile_1;
-
-   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.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 =>
-         Face_Mark_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Prefix), 
(3, Suffix)));
-      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)))));
-      end case;
-   end selected_component_0;
-
-   function selected_component_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Lexer, Recover_Active);
-   begin
-      return Merge_Names (Nonterm, Tokens, 1, 3);
-   end selected_component_0_check;
-
-   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.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 =>
-         Face_Mark_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Prefix)));
-      when Indent =>
-         null;
-      end case;
-   end selected_component_1;
-
-   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.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 =>
-         Face_Mark_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Prefix)));
-      when Indent =>
-         null;
-      end case;
-   end selected_component_2;
-
-   function selected_component_2_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Lexer, Recover_Active);
-   begin
-      return Merge_Names (Nonterm, Tokens, 1, 3);
-   end selected_component_2_check;
-
-   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.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 =>
-         Face_Mark_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Prefix)));
-      when Indent =>
-         null;
-      end case;
-   end selected_component_3;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (7, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, 43) & (3, Invalid_Token_ID) &
-         (7, Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, 43) & (5, Invalid_Token_ID)));
-      when Face =>
-         null;
-      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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Motion)));
-      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, (Int, Ada_Indent))),
-         (False, (Simple, (Int, Ada_Indent)))));
-      end case;
-   end select_alternative_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, Motion), 
(4, Statement_Start), (5, Statement_End)));
-      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, (Int, Ada_Indent))),
-         (False, (Simple, (Label => None)))));
-      end case;
-   end select_alternative_1;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Motion)));
-      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, (Int,
-         Ada_Indent)))));
-      end case;
-   end select_alternative_2;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_End)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end select_alternative_4;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 
Motion)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 43) & (2, 
Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (False, (Simple,
-         (Label => None))), (False, (Simple, (Int, Ada_Indent)))));
-      end case;
-   end select_alternative_list_0;
-
-   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.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 => (False, 
(Simple, (Int, Ada_Indent)))));
-      end case;
-   end select_alternative_list_1;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Statement_End)));
-      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)))));
-      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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_End)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end simple_statement_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Statement_End)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 3, 
0)));
-      when Indent =>
-         null;
-      end case;
-   end simple_statement_3;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Statement_End)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end simple_statement_8;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Motion), (7, Motion), (9,
-         Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (7,
-         Invalid_Token_ID) & (8, 49) & (9, Invalid_Token_ID)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 3, 
2)));
-      when Indent =>
-         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, (Int, Ada_Indent_Broken)))));
-      end case;
-   end single_protected_declaration_0;
-
-   function single_protected_declaration_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 2, 8, End_Names_Optional);
-   end single_protected_declaration_0_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Motion), (6, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (5, 49) &
-         (6, Invalid_Token_ID)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 3, 
2)));
-      when Indent =>
-         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, (Int, Ada_Indent_Broken)))));
-      end case;
-   end single_protected_declaration_1;
-
-   function single_protected_declaration_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 2, 5, End_Names_Optional);
-   end single_protected_declaration_1_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Motion), (11,
-         Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (8, 49) &
-         (11, Invalid_Token_ID)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 3, 2), (9, 
3, 2)));
-      when Indent =>
-         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))), (False, (Simple,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
-      end case;
-   end single_task_declaration_0;
-
-   function single_task_declaration_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 2, 10, 
End_Names_Optional);
-   end single_task_declaration_0_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Motion), (8, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (5, 49) &
-         (8, Invalid_Token_ID)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((2, 3, 2), (6, 
3, 2)));
-      when Indent =>
-         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,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
-      end case;
-   end single_task_declaration_1;
-
-   function single_task_declaration_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 2, 7, End_Names_Optional);
-   end single_task_declaration_1_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-      when Face =>
-         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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (4,
-         Motion), (6, Motion), (10, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, Invalid_Token_ID) & (4,
-         Invalid_Token_ID) & (6, Invalid_Token_ID) & (7, 72) & (10, 
Invalid_Token_ID)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (9, 1, 
1)));
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((False, (Simple, 
(Label => None))), (True, (Simple,
-         (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, (Int, 
Ada_Indent_Broken)))));
-      end case;
-   end subprogram_body_0;
-
-   function subprogram_body_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 2, 9, End_Names_Optional);
-   end subprogram_body_0_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (6,
-         Statement_End)));
-      when Face =>
-         null;
-      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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (4,
-         Statement_End)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end subprogram_declaration_0;
-
-   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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 1, 
1)));
-      when Indent =>
-         null;
-      end case;
-   end subprogram_default_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (2, Statement_Override), (6,
-         Statement_End)));
-      when Face =>
-         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, (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;
-
-   function subprogram_specification_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Lexer, Recover_Active);
-   begin
-      return Propagate_Name (Nonterm, Tokens, 1);
-   end subprogram_specification_0_check;
-
-   function subprogram_specification_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Lexer, Recover_Active);
-   begin
-      return Propagate_Name (Nonterm, Tokens, 1);
-   end subprogram_specification_1_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 2);
-      when Face =>
-         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, (Int,
-         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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 1, 
2)));
-      when Indent =>
-         null;
-      end case;
-   end subtype_indication_0;
-
-   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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 1, 
2)));
-      when Indent =>
-         null;
-      end case;
-   end subtype_indication_1;
-
-   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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 1, 
2)));
-      when Indent =>
-         null;
-      end case;
-   end subtype_indication_2;
-
-   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.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 =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 1, 
2)));
-      when Indent =>
-         null;
-      end case;
-   end subtype_indication_3;
-
-   procedure subunit_0
-    (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
-      case Parse_Data.Post_Parse_Action is
-      when Navigate =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Statement_Override)));
-      when Face =>
-         null;
-      when Indent =>
-         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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Motion), (7, Motion), (11,
-         Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (5, Invalid_Token_ID) & (7,
-         Invalid_Token_ID) & (8, 72) & (11, Invalid_Token_ID)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 3, 2), 
(10, 3, 2)));
-      when Indent =>
-         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, (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, (Int, Ada_Indent_Broken)))));
-      end case;
-   end task_body_0;
-
-   function task_body_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 3, 10, 
End_Names_Optional);
-   end task_body_0_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 3, 
2)));
-      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)))));
-      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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (2, 
Motion)));
-      when Face =>
-         null;
-      when Indent =>
-         Indent_Action_0 (Parse_Data, Tree, Nonterm, Tokens, ((True, (Simple, 
(Int, Ada_Indent)), (Simple, (Int,
-         Ada_Indent))), (False, (Simple, (Label => None))), (True, (Simple, 
(Int, Ada_Indent)), (Simple, (Int,
-         Ada_Indent)))));
-      end case;
-   end task_definition_0;
-
-   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.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, 
(Simple, (Int, Ada_Indent)), (Simple, (Int,
-         Ada_Indent)))));
-      end case;
-   end task_definition_1;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Motion), (9, Motion), (13,
-         Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (6, Invalid_Token_ID) & (9,
-         Invalid_Token_ID) & (10, 49) & (13, Invalid_Token_ID)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 3, 2), 
(12, 3, 2)));
-      when Indent =>
-         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))), (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,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken)))));
-      end case;
-   end task_type_declaration_0;
-
-   function task_type_declaration_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 3, 12, 
End_Names_Optional);
-   end task_type_declaration_0_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Motion), (10,
-         Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (6, Invalid_Token_ID) & (7, 49) &
-         (10, Invalid_Token_ID)));
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, ((3, 3, 2), (9, 
3, 2)));
-      when Indent =>
-         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, (Int,
-         Ada_Indent_Broken))), (False, (Simple, (Int, Ada_Indent_Broken)))));
-      end case;
-   end task_type_declaration_1;
-
-   function task_type_declaration_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status
-   is
-      pragma Unreferenced (Nonterm, Recover_Active);
-   begin
-      return Match_Names (Lexer, Descriptor, Tokens, 3, 9, End_Names_Optional);
-   end task_type_declaration_1_check;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (6, Statement_End)));
-         Name_Action (Parse_Data, Tree, Nonterm, Tokens, 3);
-      when Face =>
-         Face_Apply_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (3, 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, (Int,
-         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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Motion), (6, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (3, Invalid_Token_ID) & (6,
-         Invalid_Token_ID)));
-      when Face =>
-         null;
-      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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (7, Statement_End)));
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (4, Invalid_Token_ID) & (7,
-         Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         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, (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.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 =>
-         Motion_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Invalid_Token_ID) & (2, Invalid_Token_ID)));
-      when Face =>
-         null;
-      when Indent =>
-         null;
-      end case;
-   end variant_list_0;
-
-   procedure variant_0
-    (User_Data : in out WisiToken.Syntax_Trees.User_Data_Type'Class;
-     Tree      : in out WisiToken.Syntax_Trees.Tree;
-     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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (1, 
Motion)));
-      when Face =>
-         null;
-      when Indent =>
-         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))), (True, (Simple, (Int,
-         Ada_Indent)), (Simple, (Int, Ada_Indent)))));
-      end case;
-   end variant_0;
-
-   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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Statement_End)));
-      when Face =>
-         Face_Apply_List_Action (Parse_Data, Tree, Nonterm, Tokens, (1 => (4, 
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_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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Statement_End)));
-      when Face =>
-         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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Statement_End)));
-      when Face =>
-         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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (5, Statement_End)));
-      when Face =>
-         Face_Apply_List_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,
-         (Int, Ada_Indent_Broken))), (False, (Simple, (Int, 
Ada_Indent_Broken))), (False, (Simple, (Int,
-         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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Statement_End)));
-      when Face =>
-         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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (4, Statement_End)));
-      when Face =>
-         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, (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.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 =>
-         Statement_Action (Parse_Data, Tree, Nonterm, Tokens, ((1, 
Statement_Start), (3, Statement_End)));
-      when Face =>
-         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, (Int, 
Ada_Indent_Broken)))));
-      end case;
-   end with_clause_3;
-
-end Ada_Process_Actions;
diff --git a/packages/ada-mode/ada_process_actions.ads 
b/packages/ada-mode/ada_process_actions.ads
deleted file mode 100644
index 3266c0b..0000000
--- a/packages/ada-mode/ada_process_actions.ads
+++ /dev/null
@@ -1,2108 +0,0 @@
---  generated parser support file.
---  command line: wisitoken-bnf-generate.exe  --generate LR1 Ada_Emacs re2c 
PROCESS text_rep ada.wy
---
-
---  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
---  published by the Free Software Foundation; either version 3, or (at
---  your option) any later version.
---
---  This software is distributed in the hope that it will be useful,
---  but WITHOUT ANY WARRANTY; without even the implied warranty of
---  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
---  General Public License for more details.
---
---  You should have received a copy of the GNU General Public License
---  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-with WisiToken.Syntax_Trees;
-with WisiToken.Lexer;
-with WisiToken.Semantic_Checks;
-package Ada_Process_Actions is
-
-   Descriptor : aliased WisiToken.Descriptor :=
-     (First_Terminal    => 3,
-      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       => 109,
-      String_2_ID       => 108,
-      Image             =>
-        (new String'("WHITESPACE"),
-         new String'("NEW_LINE"),
-         new String'("COMMENT"),
-         new String'("ABS"),
-         new String'("ACCEPT"),
-         new String'("ABORT"),
-         new String'("ABSTRACT"),
-         new String'("ACCESS"),
-         new String'("ALIASED"),
-         new String'("ALL"),
-         new String'("AND"),
-         new String'("ARRAY"),
-         new String'("AT"),
-         new String'("BEGIN"),
-         new String'("BODY"),
-         new String'("CASE"),
-         new String'("CONSTANT"),
-         new String'("DECLARE"),
-         new String'("DELAY"),
-         new String'("DELTA"),
-         new String'("DIGITS"),
-         new String'("DO"),
-         new String'("ELSE"),
-         new String'("ELSIF"),
-         new String'("END"),
-         new String'("ENTRY"),
-         new String'("EXCEPTION"),
-         new String'("EXIT"),
-         new String'("FOR"),
-         new String'("FUNCTION"),
-         new String'("GENERIC"),
-         new String'("GOTO"),
-         new String'("IF"),
-         new String'("IN"),
-         new String'("INTERFACE"),
-         new String'("IS"),
-         new String'("LIMITED"),
-         new String'("LOOP"),
-         new String'("MOD"),
-         new String'("NEW"),
-         new String'("NOT"),
-         new String'("NULL"),
-         new String'("OF"),
-         new String'("OR"),
-         new String'("OTHERS"),
-         new String'("OUT"),
-         new String'("OVERRIDING"),
-         new String'("PACKAGE"),
-         new String'("PRAGMA"),
-         new String'("PRIVATE"),
-         new String'("PROCEDURE"),
-         new String'("PROTECTED"),
-         new String'("RAISE"),
-         new String'("RANGE"),
-         new String'("RECORD"),
-         new String'("REM"),
-         new String'("RENAMES"),
-         new String'("REQUEUE"),
-         new String'("RETURN"),
-         new String'("REVERSE"),
-         new String'("SEPARATE"),
-         new String'("SELECT"),
-         new String'("SOME"),
-         new String'("SUBTYPE"),
-         new String'("SYNCHRONIZED"),
-         new String'("TAGGED"),
-         new String'("TASK"),
-         new String'("TERMINATE"),
-         new String'("THEN"),
-         new String'("TYPE"),
-         new String'("UNTIL"),
-         new String'("USE"),
-         new String'("WHEN"),
-         new String'("WHILE"),
-         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"),
-         new String'("BOX"),
-         new String'("COLON"),
-         new String'("COLON_EQUAL"),
-         new String'("COMMA"),
-         new String'("DOT"),
-         new String'("DOT_DOT"),
-         new String'("EQUAL"),
-         new String'("EQUAL_GREATER"),
-         new String'("GREATER"),
-         new String'("GREATER_EQUAL"),
-         new String'("GREATER_GREATER"),
-         new String'("LESS"),
-         new String'("LESS_EQUAL"),
-         new String'("LESS_LESS"),
-         new String'("MINUS"),
-         new String'("PLUS"),
-         new String'("SEMICOLON"),
-         new String'("SLASH"),
-         new String'("SLASH_EQUAL"),
-         new String'("STAR"),
-         new String'("STAR_STAR"),
-         new String'("TICK_1"),
-         new String'("TICK_2"),
-         new String'("NUMERIC_LITERAL"),
-         new String'("IDENTIFIER"),
-         new String'("STRING_LITERAL"),
-         new String'("CHARACTER_LITERAL"),
-         new String'("Wisi_EOI"),
-         new String'("wisitoken_accept"),
-         new String'("abstract_limited_synchronized_opt"),
-         new String'("abstract_limited_opt"),
-         new String'("abstract_tagged_limited_opt"),
-         new String'("abstract_subprogram_declaration"),
-         new String'("accept_statement"),
-         new String'("access_definition"),
-         new String'("actual_parameter_part"),
-         new String'("actual_parameter_part_opt"),
-         new String'("aggregate"),
-         new String'("aliased_opt"),
-         new String'("and_interface_list_opt"),
-         new String'("array_type_definition"),
-         new String'("aspect_clause"),
-         new String'("aspect_specification_opt"),
-         new String'("assignment_statement"),
-         new String'("association_opt"),
-         new String'("association_list"),
-         new String'("asynchronous_select"),
-         new String'("at_clause"),
-         new String'("attribute_reference"),
-         new String'("attribute_designator"),
-         new String'("binary_adding_operator"),
-         new String'("block_label"),
-         new String'("block_label_opt"),
-         new String'("block_statement"),
-         new String'("body_g"),
-         new String'("body_stub"),
-         new String'("case_expression"),
-         new String'("case_expression_alternative"),
-         new String'("case_expression_alternative_list"),
-         new String'("case_statement"),
-         new String'("case_statement_alternative"),
-         new String'("case_statement_alternative_list"),
-         new String'("compilation_unit"),
-         new String'("compilation"),
-         new String'("component_clause"),
-         new String'("component_clause_list"),
-         new String'("component_declaration"),
-         new String'("component_definition"),
-         new String'("component_item"),
-         new String'("component_list"),
-         new String'("component_list_opt"),
-         new String'("compound_statement"),
-         new String'("conditional_entry_call"),
-         new String'("conditional_quantified_expression"),
-         new String'("constant_opt"),
-         new String'("constraint"),
-         new String'("constraint_opt"),
-         new String'("declaration"),
-         new String'("declarations"),
-         new String'("declarative_part_opt"),
-         new String'("delay_alternative"),
-         new String'("delay_statement"),
-         new String'("derived_type_definition"),
-         new String'("direct_name"),
-         new String'("direct_name_opt"),
-         new String'("discrete_choice"),
-         new String'("discrete_choice_list"),
-         new String'("discrete_subtype_definition"),
-         new String'("discrete_subtype_definition_list"),
-         new String'("discriminant_part_opt"),
-         new String'("discriminant_specification_opt"),
-         new String'("discriminant_specification_list"),
-         new String'("elsif_expression_item"),
-         new String'("elsif_expression_list"),
-         new String'("elsif_statement_item"),
-         new String'("elsif_statement_list"),
-         new String'("entry_body"),
-         new String'("entry_body_formal_part"),
-         new String'("entry_call_alternative"),
-         new String'("entry_declaration"),
-         new String'("enumeration_literal"),
-         new String'("enumeration_literal_list"),
-         new String'("enumeration_representation_clause"),
-         new String'("enumeration_type_definition"),
-         new String'("exception_choice"),
-         new String'("exception_choice_list"),
-         new String'("exception_declaration"),
-         new String'("exception_handler"),
-         new String'("exception_handler_list"),
-         new String'("exception_handler_list_opt"),
-         new String'("exit_statement"),
-         new String'("expression"),
-         new String'("expression_opt"),
-         new String'("expression_function_declaration"),
-         new String'("extended_return_object_declaration"),
-         new String'("extended_return_object_declaration_opt"),
-         new String'("extended_return_statement"),
-         new String'("factor"),
-         new String'("formal_object_declaration"),
-         new String'("formal_part"),
-         new String'("formal_subprogram_declaration"),
-         new String'("formal_type_declaration"),
-         new String'("formal_type_definition"),
-         new String'("formal_derived_type_definition"),
-         new String'("formal_package_declaration"),
-         new String'("formal_package_actual_part"),
-         new String'("full_type_declaration"),
-         new String'("function_specification"),
-         new String'("general_access_modifier_opt"),
-         new String'("generic_declaration"),
-         new String'("generic_formal_part"),
-         new String'("generic_formal_parameter_declarations"),
-         new String'("generic_formal_parameter_declaration"),
-         new String'("generic_instantiation"),
-         new String'("generic_package_declaration"),
-         new String'("generic_renaming_declaration"),
-         new String'("generic_subprogram_declaration"),
-         new String'("goto_label"),
-         new String'("handled_sequence_of_statements"),
-         new String'("identifier_list"),
-         new String'("identifier_opt"),
-         new String'("if_expression"),
-         new String'("if_statement"),
-         new String'("incomplete_type_declaration"),
-         new String'("index_constraint"),
-         new String'("index_subtype_definition"),
-         new String'("index_subtype_definition_list"),
-         new String'("interface_list"),
-         new String'("interface_type_definition"),
-         new String'("iteration_scheme"),
-         new String'("iterator_specification"),
-         new String'("iterator_specification_opt"),
-         new String'("loop_statement"),
-         new String'("membership_choice_list"),
-         new String'("membership_choice"),
-         new String'("mod_clause_opt"),
-         new String'("mode_opt"),
-         new String'("multiplying_operator"),
-         new String'("name_list"),
-         new String'("name"),
-         new String'("name_opt"),
-         new String'("null_exclusion_opt"),
-         new String'("null_exclusion_opt_name_type"),
-         new String'("null_procedure_declaration"),
-         new String'("object_declaration"),
-         new String'("object_renaming_declaration"),
-         new String'("overriding_indicator_opt"),
-         new String'("package_body"),
-         new String'("package_body_stub"),
-         new String'("package_declaration"),
-         new String'("package_renaming_declaration"),
-         new String'("package_specification"),
-         new String'("parameter_and_result_profile"),
-         new String'("parameter_profile_opt"),
-         new String'("parameter_specification"),
-         new String'("parameter_specification_list"),
-         new String'("paren_expression"),
-         new String'("pragma_g"),
-         new String'("primary"),
-         new String'("private_extension_declaration"),
-         new String'("private_type_declaration"),
-         new String'("procedure_call_statement"),
-         new String'("procedure_specification"),
-         new String'("proper_body"),
-         new String'("protected_body"),
-         new String'("protected_body_stub"),
-         new String'("protected_definition"),
-         new String'("protected_operation_item"),
-         new String'("protected_operation_item_list"),
-         new String'("protected_operation_item_list_opt"),
-         new String'("protected_opt"),
-         new String'("protected_type_declaration"),
-         new String'("qualified_expression"),
-         new String'("quantified_expression"),
-         new String'("quantifier"),
-         new String'("raise_expression"),
-         new String'("raise_statement"),
-         new String'("range_g"),
-         new String'("range_list"),
-         new String'("real_range_specification_opt"),
-         new String'("record_definition"),
-         new String'("record_representation_clause"),
-         new String'("relation_and_list"),
-         new String'("relation_and_then_list"),
-         new String'("relation_or_list"),
-         new String'("relation_or_else_list"),
-         new String'("relation_xor_list"),
-         new String'("relation"),
-         new String'("relational_operator"),
-         new String'("renaming_declaration"),
-         new String'("requeue_statement"),
-         new String'("result_profile"),
-         new String'("return_subtype_indication"),
-         new String'("selected_component"),
-         new String'("selective_accept"),
-         new String'("select_alternative"),
-         new String'("select_alternative_list"),
-         new String'("select_alternative_list_opt"),
-         new String'("select_statement"),
-         new String'("sequence_of_statements"),
-         new String'("sequence_of_statements_opt"),
-         new String'("simple_expression"),
-         new String'("simple_return_statement"),
-         new String'("simple_statement"),
-         new String'("single_protected_declaration"),
-         new String'("single_task_declaration"),
-         new String'("statement"),
-         new String'("subprogram_body"),
-         new String'("subprogram_body_stub"),
-         new String'("subprogram_declaration"),
-         new String'("subprogram_default"),
-         new String'("subprogram_renaming_declaration"),
-         new String'("subprogram_specification"),
-         new String'("subtype_declaration"),
-         new String'("subtype_indication"),
-         new String'("subunit"),
-         new String'("task_body"),
-         new String'("task_body_stub"),
-         new String'("task_definition"),
-         new String'("task_type_declaration"),
-         new String'("term"),
-         new String'("term_list"),
-         new String'("tick"),
-         new String'("timed_entry_call"),
-         new String'("triggering_alternative"),
-         new String'("type_declaration"),
-         new String'("type_definition"),
-         new String'("variant_part"),
-         new String'("variant_list"),
-         new String'("variant"),
-         new String'("unary_adding_operator"),
-         new String'("use_clause"),
-         new String'("with_clause")),
-      Terminal_Image_Width => 20,
-      Image_Width          => 38,
-      Last_Lookahead       => 110);
-
-   type Token_Enum_ID is
-     (WHITESPACE_ID,
-      NEW_LINE_ID,
-      COMMENT_ID,
-      ABS_ID,
-      ACCEPT_ID,
-      ABORT_ID,
-      ABSTRACT_ID,
-      ACCESS_ID,
-      ALIASED_ID,
-      ALL_ID,
-      AND_ID,
-      ARRAY_ID,
-      AT_ID,
-      BEGIN_ID,
-      BODY_ID,
-      CASE_ID,
-      CONSTANT_ID,
-      DECLARE_ID,
-      DELAY_ID,
-      DELTA_ID,
-      DIGITS_ID,
-      DO_ID,
-      ELSE_ID,
-      ELSIF_ID,
-      END_ID,
-      ENTRY_ID,
-      EXCEPTION_ID,
-      EXIT_ID,
-      FOR_ID,
-      FUNCTION_ID,
-      GENERIC_ID,
-      GOTO_ID,
-      IF_ID,
-      IN_ID,
-      INTERFACE_ID,
-      IS_ID,
-      LIMITED_ID,
-      LOOP_ID,
-      MOD_ID,
-      NEW_ID,
-      NOT_ID,
-      NULL_ID,
-      OF_ID,
-      OR_ID,
-      OTHERS_ID,
-      OUT_ID,
-      OVERRIDING_ID,
-      PACKAGE_ID,
-      PRAGMA_ID,
-      PRIVATE_ID,
-      PROCEDURE_ID,
-      PROTECTED_ID,
-      RAISE_ID,
-      RANGE_ID,
-      RECORD_ID,
-      REM_ID,
-      RENAMES_ID,
-      REQUEUE_ID,
-      RETURN_ID,
-      REVERSE_ID,
-      SEPARATE_ID,
-      SELECT_ID,
-      SOME_ID,
-      SUBTYPE_ID,
-      SYNCHRONIZED_ID,
-      TAGGED_ID,
-      TASK_ID,
-      TERMINATE_ID,
-      THEN_ID,
-      TYPE_ID,
-      UNTIL_ID,
-      USE_ID,
-      WHEN_ID,
-      WHILE_ID,
-      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,
-      BOX_ID,
-      COLON_ID,
-      COLON_EQUAL_ID,
-      COMMA_ID,
-      DOT_ID,
-      DOT_DOT_ID,
-      EQUAL_ID,
-      EQUAL_GREATER_ID,
-      GREATER_ID,
-      GREATER_EQUAL_ID,
-      GREATER_GREATER_ID,
-      LESS_ID,
-      LESS_EQUAL_ID,
-      LESS_LESS_ID,
-      MINUS_ID,
-      PLUS_ID,
-      SEMICOLON_ID,
-      SLASH_ID,
-      SLASH_EQUAL_ID,
-      STAR_ID,
-      STAR_STAR_ID,
-      TICK_1_ID,
-      TICK_2_ID,
-      NUMERIC_LITERAL_ID,
-      IDENTIFIER_ID,
-      STRING_LITERAL_ID,
-      CHARACTER_LITERAL_ID,
-      Wisi_EOI_ID,
-      wisitoken_accept_ID,
-      abstract_limited_synchronized_opt_ID,
-      abstract_limited_opt_ID,
-      abstract_tagged_limited_opt_ID,
-      abstract_subprogram_declaration_ID,
-      accept_statement_ID,
-      access_definition_ID,
-      actual_parameter_part_ID,
-      actual_parameter_part_opt_ID,
-      aggregate_ID,
-      aliased_opt_ID,
-      and_interface_list_opt_ID,
-      array_type_definition_ID,
-      aspect_clause_ID,
-      aspect_specification_opt_ID,
-      assignment_statement_ID,
-      association_opt_ID,
-      association_list_ID,
-      asynchronous_select_ID,
-      at_clause_ID,
-      attribute_reference_ID,
-      attribute_designator_ID,
-      binary_adding_operator_ID,
-      block_label_ID,
-      block_label_opt_ID,
-      block_statement_ID,
-      body_g_ID,
-      body_stub_ID,
-      case_expression_ID,
-      case_expression_alternative_ID,
-      case_expression_alternative_list_ID,
-      case_statement_ID,
-      case_statement_alternative_ID,
-      case_statement_alternative_list_ID,
-      compilation_unit_ID,
-      compilation_ID,
-      component_clause_ID,
-      component_clause_list_ID,
-      component_declaration_ID,
-      component_definition_ID,
-      component_item_ID,
-      component_list_ID,
-      component_list_opt_ID,
-      compound_statement_ID,
-      conditional_entry_call_ID,
-      conditional_quantified_expression_ID,
-      constant_opt_ID,
-      constraint_ID,
-      constraint_opt_ID,
-      declaration_ID,
-      declarations_ID,
-      declarative_part_opt_ID,
-      delay_alternative_ID,
-      delay_statement_ID,
-      derived_type_definition_ID,
-      direct_name_ID,
-      direct_name_opt_ID,
-      discrete_choice_ID,
-      discrete_choice_list_ID,
-      discrete_subtype_definition_ID,
-      discrete_subtype_definition_list_ID,
-      discriminant_part_opt_ID,
-      discriminant_specification_opt_ID,
-      discriminant_specification_list_ID,
-      elsif_expression_item_ID,
-      elsif_expression_list_ID,
-      elsif_statement_item_ID,
-      elsif_statement_list_ID,
-      entry_body_ID,
-      entry_body_formal_part_ID,
-      entry_call_alternative_ID,
-      entry_declaration_ID,
-      enumeration_literal_ID,
-      enumeration_literal_list_ID,
-      enumeration_representation_clause_ID,
-      enumeration_type_definition_ID,
-      exception_choice_ID,
-      exception_choice_list_ID,
-      exception_declaration_ID,
-      exception_handler_ID,
-      exception_handler_list_ID,
-      exception_handler_list_opt_ID,
-      exit_statement_ID,
-      expression_ID,
-      expression_opt_ID,
-      expression_function_declaration_ID,
-      extended_return_object_declaration_ID,
-      extended_return_object_declaration_opt_ID,
-      extended_return_statement_ID,
-      factor_ID,
-      formal_object_declaration_ID,
-      formal_part_ID,
-      formal_subprogram_declaration_ID,
-      formal_type_declaration_ID,
-      formal_type_definition_ID,
-      formal_derived_type_definition_ID,
-      formal_package_declaration_ID,
-      formal_package_actual_part_ID,
-      full_type_declaration_ID,
-      function_specification_ID,
-      general_access_modifier_opt_ID,
-      generic_declaration_ID,
-      generic_formal_part_ID,
-      generic_formal_parameter_declarations_ID,
-      generic_formal_parameter_declaration_ID,
-      generic_instantiation_ID,
-      generic_package_declaration_ID,
-      generic_renaming_declaration_ID,
-      generic_subprogram_declaration_ID,
-      goto_label_ID,
-      handled_sequence_of_statements_ID,
-      identifier_list_ID,
-      identifier_opt_ID,
-      if_expression_ID,
-      if_statement_ID,
-      incomplete_type_declaration_ID,
-      index_constraint_ID,
-      index_subtype_definition_ID,
-      index_subtype_definition_list_ID,
-      interface_list_ID,
-      interface_type_definition_ID,
-      iteration_scheme_ID,
-      iterator_specification_ID,
-      iterator_specification_opt_ID,
-      loop_statement_ID,
-      membership_choice_list_ID,
-      membership_choice_ID,
-      mod_clause_opt_ID,
-      mode_opt_ID,
-      multiplying_operator_ID,
-      name_list_ID,
-      name_ID,
-      name_opt_ID,
-      null_exclusion_opt_ID,
-      null_exclusion_opt_name_type_ID,
-      null_procedure_declaration_ID,
-      object_declaration_ID,
-      object_renaming_declaration_ID,
-      overriding_indicator_opt_ID,
-      package_body_ID,
-      package_body_stub_ID,
-      package_declaration_ID,
-      package_renaming_declaration_ID,
-      package_specification_ID,
-      parameter_and_result_profile_ID,
-      parameter_profile_opt_ID,
-      parameter_specification_ID,
-      parameter_specification_list_ID,
-      paren_expression_ID,
-      pragma_g_ID,
-      primary_ID,
-      private_extension_declaration_ID,
-      private_type_declaration_ID,
-      procedure_call_statement_ID,
-      procedure_specification_ID,
-      proper_body_ID,
-      protected_body_ID,
-      protected_body_stub_ID,
-      protected_definition_ID,
-      protected_operation_item_ID,
-      protected_operation_item_list_ID,
-      protected_operation_item_list_opt_ID,
-      protected_opt_ID,
-      protected_type_declaration_ID,
-      qualified_expression_ID,
-      quantified_expression_ID,
-      quantifier_ID,
-      raise_expression_ID,
-      raise_statement_ID,
-      range_g_ID,
-      range_list_ID,
-      real_range_specification_opt_ID,
-      record_definition_ID,
-      record_representation_clause_ID,
-      relation_and_list_ID,
-      relation_and_then_list_ID,
-      relation_or_list_ID,
-      relation_or_else_list_ID,
-      relation_xor_list_ID,
-      relation_ID,
-      relational_operator_ID,
-      renaming_declaration_ID,
-      requeue_statement_ID,
-      result_profile_ID,
-      return_subtype_indication_ID,
-      selected_component_ID,
-      selective_accept_ID,
-      select_alternative_ID,
-      select_alternative_list_ID,
-      select_alternative_list_opt_ID,
-      select_statement_ID,
-      sequence_of_statements_ID,
-      sequence_of_statements_opt_ID,
-      simple_expression_ID,
-      simple_return_statement_ID,
-      simple_statement_ID,
-      single_protected_declaration_ID,
-      single_task_declaration_ID,
-      statement_ID,
-      subprogram_body_ID,
-      subprogram_body_stub_ID,
-      subprogram_declaration_ID,
-      subprogram_default_ID,
-      subprogram_renaming_declaration_ID,
-      subprogram_specification_ID,
-      subtype_declaration_ID,
-      subtype_indication_ID,
-      subunit_ID,
-      task_body_ID,
-      task_body_stub_ID,
-      task_definition_ID,
-      task_type_declaration_ID,
-      term_ID,
-      term_list_ID,
-      tick_ID,
-      timed_entry_call_ID,
-      triggering_alternative_ID,
-      type_declaration_ID,
-      type_definition_ID,
-      variant_part_ID,
-      variant_list_ID,
-      variant_ID,
-      unary_adding_operator_ID,
-      use_clause_ID,
-      with_clause_ID);
-
-   type Token_Enum_ID_Array is array (Positive range <>) of Token_Enum_ID;
-   use all type WisiToken.Token_ID;
-   function "+" (Item : in Token_Enum_ID) return WisiToken.Token_ID
-     is (WisiToken.Token_ID'First + Token_Enum_ID'Pos (Item));
-   function To_Token_Enum (Item : in WisiToken.Token_ID) return Token_Enum_ID
-     is (Token_Enum_ID'Val (Item - WisiToken.Token_ID'First));
-   function "-" (Item : in WisiToken.Token_ID) return Token_Enum_ID renames 
To_Token_Enum;
-
-   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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.Valid_Node_Index;
-     Tokens    : in     WisiToken.Valid_Node_Index_Array);
-   procedure compilation_0
-    (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 compilation_1
-    (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 component_clause_0
-    (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 component_declaration_0
-    (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 component_declaration_1
-    (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 component_list_4
-    (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 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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function block_label_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function block_label_opt_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function block_statement_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function block_statement_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function compilation_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function entry_body_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function function_specification_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function identifier_opt_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function loop_statement_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function loop_statement_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function name_2_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function name_5_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function name_7_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function name_opt_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function package_body_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function package_body_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function package_specification_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function package_specification_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function procedure_specification_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function protected_body_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function protected_definition_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function protected_definition_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function protected_type_declaration_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function protected_type_declaration_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function selected_component_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function selected_component_2_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function single_protected_declaration_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function single_protected_declaration_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function single_task_declaration_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function single_task_declaration_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function subprogram_body_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function subprogram_specification_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function subprogram_specification_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function task_body_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function task_type_declaration_0_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-   function task_type_declaration_1_check
-    (Lexer          : access constant WisiToken.Lexer.Instance'Class;
-     Nonterm        : in out WisiToken.Recover_Token;
-     Tokens         : in     WisiToken.Recover_Token_Array;
-     Recover_Active : in     Boolean)
-    return WisiToken.Semantic_Checks.Check_Status;
-
-   Partial_Parse_Active    : Boolean := False;
-   Partial_Parse_Byte_Goal : WisiToken.Buffer_Pos := WisiToken.Buffer_Pos'Last;
-end Ada_Process_Actions;
diff --git a/packages/ada-mode/ada_process_lalr_main.adb 
b/packages/ada-mode/ada_process_lalr_main.adb
deleted file mode 100644
index 6c39695..0000000
--- a/packages/ada-mode/ada_process_lalr_main.adb
+++ /dev/null
@@ -1,16487 +0,0 @@
---  generated parser support file.
---  command line: wisitoken-bnf-generate.exe  --generate LALR Ada_Emacs re2c 
PROCESS ada.wy
---
-
---  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
---  published by the Free Software Foundation; either version 3, or (at
---  your option) any later version.
---
---  This software is distributed in the hope that it will be useful,
---  but WITHOUT ANY WARRANTY; without even the implied warranty of
---  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
---  General Public License for more details.
---
---  You should have received a copy of the GNU General Public License
---  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-with Ada_Process_Actions; use Ada_Process_Actions;
-with WisiToken.Lexer.re2c;
-with ada_re2c_c;
-package body Ada_Process_LALR_Main is
-
-   package Lexer is new WisiToken.Lexer.re2c
-     (ada_re2c_c.New_Lexer,
-      ada_re2c_c.Free_Lexer,
-      ada_re2c_c.Reset_Lexer,
-      ada_re2c_c.Next_Token);
-
-   procedure Create_Parser
-     (Parser                         :    out WisiToken.Parse.LR.Parser.Parser;
-      Language_Fixes                 : in     
WisiToken.Parse.LR.Parser.Language_Fixes_Access;
-      Language_Matching_Begin_Tokens : in     
WisiToken.Parse.LR.Parser.Language_Matching_Begin_Tokens_Access;
-      Language_String_ID_Set       : in     
WisiToken.Parse.LR.Parser.Language_String_ID_Set_Access;
-      Trace                        : not null access WisiToken.Trace'Class;
-      User_Data                    : in     
WisiToken.Syntax_Trees.User_Data_Access)
-   is
-      use WisiToken.Parse.LR;
-      McKenzie_Param : constant McKenzie_Param_Type :=
-        (First_Terminal    => 3,
-         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),
-         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, 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,
-            2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-            2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-            2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-            2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-            2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-            2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-            2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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,
-            2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-            2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 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, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-            2, 2, 2, 2, 2, 2, 2, 2, 2),
-         Minimal_Complete_Cost_Delta => -3,
-         Fast_Forward =>  2,
-         Matching_Begin =>  3,
-         Ignore_Check_Fail  => 2,
-         Task_Count  => 0,
-         Check_Limit => 4,
-         Check_Delta_Limit => 100,
-         Enqueue_Limit => 58000);
-
-      Table : constant Parse_Table_Ptr := new Parse_Table
-        (State_First       => 0,
-         State_Last        => 1302,
-         First_Terminal    => 3,
-         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, (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), 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), 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), 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), 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), 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), 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, (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), 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), 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), 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), 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), 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, (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), 201, 167);
-            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), 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), 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, (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, (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), 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), (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, (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), 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), 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, (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), 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), 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), 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, (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), 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), 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), 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), 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), 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), 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, (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, (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), 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), 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, (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), 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, (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), 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), 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), 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), 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, 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), 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, (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, 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 => ((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, 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, 
81, 96, 107, 108, 109, 110), (160, 0),  1,
-            null, null);
-            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, 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, 
81, 96, 107, 108, 109, 110), (160, 1),  1,
-            null, null);
-            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, 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, 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, 81, 96, 107, 108, 109, 110), (124, 3),
-            1, null, null);
-            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, 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), (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, (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), 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, 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, 
81, 96, 107, 108, 109, 110), (160, 2),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (137, 1),  1,
-            null, null);
-            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, 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, 81, 
96, 107, 108, 109, 110), (146, 1),  1,
-            compilation_1'Access, compilation_1_check'Access);
-            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, (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), 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, 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, 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, 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, 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, 
81, 96, 107, 108, 109, 110), (160, 3),  1,
-            null, null);
-            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, 81, 96, 107, 108, 109, 110), (124, 1),
-            1, null, null);
-            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, 
81, 96, 107, 108, 109, 110), (160, 4),  1,
-            null, null);
-            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, 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, 
81, 96, 107, 108, 109, 110), (160, 5),  1,
-            null, null);
-            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, 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, 
81, 96, 107, 108, 109, 110), (328, 0),  1,
-            null, null);
-            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, 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, 
81, 96, 107, 108, 109, 110), (160, 6),  1,
-            null, null);
-            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, (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), 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, 
81, 96, 107, 108, 109, 110), (160, 7),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (212, 1),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (292, 3),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (212, 0),  1,
-            null, null);
-            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, 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), 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, 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, 
81, 96, 107, 108, 109, 110), (328, 1),  1,
-            null, null);
-            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, 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, (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), 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, 
81, 96, 107, 108, 109, 110), (160, 8),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (160, 10),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (292, 0),  1,
-            null, null);
-            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, (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), 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, 
81, 96, 107, 108, 109, 110), (266, 1),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (138, 1),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (160, 11),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (292, 1),  1,
-            null, null);
-            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), 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, 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, 
81, 96, 107, 108, 109, 110), (328, 3),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (328, 2),  1,
-            null, null);
-            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, 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, 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, 
81, 96, 107, 108, 109, 110), (137, 0),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (266, 3),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (138, 3),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (209, 2),  1,
-            null, null);
-            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, 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, 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, 81, 96, 107, 108, 109, 110), (124, 2),
-            1, null, null);
-            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, 
81, 96, 107, 108, 109, 110), (160, 12),  1,
-            null, null);
-            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, 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, 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 => ((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, 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, 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, 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, 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, 
81, 96, 107, 108, 109, 110), (247, 7),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (247, 6),  1,
-            null, null);
-            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, 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, 
81, 96, 107, 108, 109, 110), (266, 0),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (138, 0),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (160, 13),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (292, 2),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (160, 14),  1,
-            null, null);
-            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, 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, 
81, 96, 107, 108, 109, 110), (266, 2),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (138, 2),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (209, 1),  1,
-            null, null);
-            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, 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, 
81, 96, 107, 108, 109, 110), (160, 15),  1,
-            null, null);
-            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, 
81, 96, 107, 108, 109, 110), (160, 16),  1,
-            null, null);
-            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, 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, (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), 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, 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, (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), 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), 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), 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), 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), 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), 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), 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), 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 (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), 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), 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, 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, 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), 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), (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), 71, (185, 0), 319);
-            Add_Action (Table.States