Use (and Abuse) of Ada 2022 Features in Designing a JSON-Like Data Structure

Ada 2022 introduces new features that enable more natural-looking initializations. On the one hand, it is now possible to use universal numbers and strings to initialize any private type; on the other hand, containers can be initialized directly without the explicit use of converting functions. Both features are enabled through new aspects that associate user-defined subprograms with the necessary initialization calls. In this work, the possibility of using these new features is explored to define a container type that allows initializations using heterogeneous types, as is usual in textual formats for structured data such as JSON, TOML and YAML, and still without the need to resort to explicit conversion calls or "crutch" functions like the often-seen trick of overloading the "+" operator. Although this has proven ultimately avoidable, there is still the need to use qualifications in certain circumstances.