diff --git a/cpp/downgrades/25e365d1e8147df0f759b604f96eb4bffea48271/old.dbscheme b/cpp/downgrades/25e365d1e8147df0f759b604f96eb4bffea48271/old.dbscheme
new file mode 100644
index 0000000000000..25e365d1e8147
--- /dev/null
+++ b/cpp/downgrades/25e365d1e8147df0f759b604f96eb4bffea48271/old.dbscheme
@@ -0,0 +1,2296 @@
+
+/**
+ * An invocation of the compiler. Note that more than one file may be
+ * compiled per invocation. For example, this command compiles three
+ * source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * The `id` simply identifies the invocation, while `cwd` is the working
+ * directory from which the compiler was invoked.
+ */
+compilations(
+ /**
+ * An invocation of the compiler. Note that more than one file may
+ * be compiled per invocation. For example, this command compiles
+ * three source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ */
+ unique int id : @compilation,
+ string cwd : string ref
+);
+
+/**
+ * The arguments that were passed to the extractor for a compiler
+ * invocation. If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then typically there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | *path to extractor*
+ * 1 | `--mimic`
+ * 2 | `/usr/bin/gcc`
+ * 3 | `-c`
+ * 4 | f1.c
+ * 5 | f2.c
+ * 6 | f3.c
+ */
+#keyset[id, num]
+compilation_args(
+ int id : @compilation ref,
+ int num : int ref,
+ string arg : string ref
+);
+
+/**
+ * The source files that are compiled by a compiler invocation.
+ * If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | f1.c
+ * 1 | f2.c
+ * 2 | f3.c
+ *
+ * Note that even if those files `#include` headers, those headers
+ * do not appear as rows.
+ */
+#keyset[id, num]
+compilation_compiling_files(
+ int id : @compilation ref,
+ int num : int ref,
+ int file : @file ref
+);
+
+/**
+ * The time taken by the extractor for a compiler invocation.
+ *
+ * For each file `num`, there will be rows for
+ *
+ * kind | seconds
+ * ---- | ---
+ * 1 | CPU seconds used by the extractor frontend
+ * 2 | Elapsed seconds during the extractor frontend
+ * 3 | CPU seconds used by the extractor backend
+ * 4 | Elapsed seconds during the extractor backend
+ */
+#keyset[id, num, kind]
+compilation_time(
+ int id : @compilation ref,
+ int num : int ref,
+ /* kind:
+ 1 = frontend_cpu_seconds
+ 2 = frontend_elapsed_seconds
+ 3 = extractor_cpu_seconds
+ 4 = extractor_elapsed_seconds
+ */
+ int kind : int ref,
+ float seconds : float ref
+);
+
+/**
+ * An error or warning generated by the extractor.
+ * The diagnostic message `diagnostic` was generated during compiler
+ * invocation `compilation`, and is the `file_number_diagnostic_number`th
+ * message generated while extracting the `file_number`th file of that
+ * invocation.
+ */
+#keyset[compilation, file_number, file_number_diagnostic_number]
+diagnostic_for(
+ int diagnostic : @diagnostic ref,
+ int compilation : @compilation ref,
+ int file_number : int ref,
+ int file_number_diagnostic_number : int ref
+);
+
+/**
+ * If extraction was successful, then `cpu_seconds` and
+ * `elapsed_seconds` are the CPU time and elapsed time (respectively)
+ * that extraction took for compiler invocation `id`.
+ */
+compilation_finished(
+ unique int id : @compilation ref,
+ float cpu_seconds : float ref,
+ float elapsed_seconds : float ref
+);
+
+
+/**
+ * External data, loaded from CSV files during snapshot creation. See
+ * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data)
+ * for more information.
+ */
+externalData(
+ int id : @externalDataElement,
+ string path : string ref,
+ int column: int ref,
+ string value : string ref
+);
+
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(string prefix : string ref);
+
+/**
+ * Information about packages that provide code used during compilation.
+ * The `id` is just a unique identifier.
+ * The `namespace` is typically the name of the package manager that
+ * provided the package (e.g. "dpkg" or "yum").
+ * The `package_name` is the name of the package, and `version` is its
+ * version (as a string).
+ */
+external_packages(
+ unique int id: @external_package,
+ string namespace : string ref,
+ string package_name : string ref,
+ string version : string ref
+);
+
+/**
+ * Holds if File `fileid` was provided by package `package`.
+ */
+header_to_external_package(
+ int fileid : @file ref,
+ int package : @external_package ref
+);
+
+/*
+ * Version history
+ */
+
+svnentries(
+ unique int id : @svnentry,
+ string revision : string ref,
+ string author : string ref,
+ date revisionDate : date ref,
+ int changeSize : int ref
+)
+
+svnaffectedfiles(
+ int id : @svnentry ref,
+ int file : @file ref,
+ string action : string ref
+)
+
+svnentrymsg(
+ unique int id : @svnentry ref,
+ string message : string ref
+)
+
+svnchurn(
+ int commit : @svnentry ref,
+ int file : @file ref,
+ int addedLines : int ref,
+ int deletedLines : int ref
+)
+
+/*
+ * C++ dbscheme
+ */
+
+extractor_version(
+ string codeql_version: string ref,
+ string frontend_version: string ref
+)
+
+@location = @location_stmt | @location_expr | @location_default ;
+
+/**
+ * The location of an element that is not an expression or a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_default(
+ /** The location of an element that is not an expression or a statement. */
+ unique int id: @location_default,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_stmt(
+ /** The location of a statement. */
+ unique int id: @location_stmt,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of an expression.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_expr(
+ /** The location of an expression. */
+ unique int id: @location_expr,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/** An element for which line-count information is available. */
+@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable;
+
+numlines(
+ int element_id: @sourceline ref,
+ int num_lines: int ref,
+ int num_code: int ref,
+ int num_comment: int ref
+);
+
+diagnostics(
+ unique int id: @diagnostic,
+ int severity: int ref,
+ string error_tag: string ref,
+ string error_message: string ref,
+ string full_error_message: string ref,
+ int location: @location_default ref
+);
+
+files(
+ unique int id: @file,
+ string name: string ref
+);
+
+folders(
+ unique int id: @folder,
+ string name: string ref
+);
+
+@container = @folder | @file
+
+containerparent(
+ int parent: @container ref,
+ unique int child: @container ref
+);
+
+fileannotations(
+ int id: @file ref,
+ int kind: int ref,
+ string name: string ref,
+ string value: string ref
+);
+
+inmacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+affectedbymacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+case @macroinvocation.kind of
+ 1 = @macro_expansion
+| 2 = @other_macro_reference
+;
+
+macroinvocations(
+ unique int id: @macroinvocation,
+ int macro_id: @ppd_define ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+macroparent(
+ unique int id: @macroinvocation ref,
+ int parent_id: @macroinvocation ref
+);
+
+// a macroinvocation may be part of another location
+// the way to find a constant expression that uses a macro
+// is thus to find a constant expression that has a location
+// to which a macro invocation is bound
+macrolocationbind(
+ int id: @macroinvocation ref,
+ int location: @location ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_unexpanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_expanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+/*
+case @function.kind of
+ 1 = @normal_function
+| 2 = @constructor
+| 3 = @destructor
+| 4 = @conversion_function
+| 5 = @operator
+| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk
+| 7 = @user_defined_literal
+| 8 = @deduction_guide
+;
+*/
+
+functions(
+ unique int id: @function,
+ string name: string ref,
+ int kind: int ref
+);
+
+function_entry_point(
+ int id: @function ref,
+ unique int entry_point: @stmt ref
+);
+
+function_return_type(
+ int id: @function ref,
+ int return_type: @type ref
+);
+
+/**
+ * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits`
+ * instance associated with it, and the variables representing the `handle` and `promise`
+ * for it.
+ */
+coroutine(
+ unique int function: @function ref,
+ int traits: @type ref,
+ int handle: @variable ref,
+ int promise: @variable ref
+);
+
+/** The `new` function used for allocating the coroutine state, if any. */
+coroutine_new(
+ unique int function: @function ref,
+ int new: @function ref
+);
+
+/** The `delete` function used for deallocating the coroutine state, if any. */
+coroutine_delete(
+ unique int function: @function ref,
+ int delete: @function ref
+);
+
+purefunctions(unique int id: @function ref);
+
+function_deleted(unique int id: @function ref);
+
+function_defaulted(unique int id: @function ref);
+
+function_prototyped(unique int id: @function ref)
+
+member_function_this_type(
+ unique int id: @function ref,
+ int this_type: @type ref
+);
+
+#keyset[id, type_id]
+fun_decls(
+ int id: @fun_decl,
+ int function: @function ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+fun_def(unique int id: @fun_decl ref);
+fun_specialized(unique int id: @fun_decl ref);
+fun_implicit(unique int id: @fun_decl ref);
+fun_decl_specifiers(
+ int id: @fun_decl ref,
+ string name: string ref
+)
+#keyset[fun_decl, index]
+fun_decl_throws(
+ int fun_decl: @fun_decl ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+/* an empty throw specification is different from none */
+fun_decl_empty_throws(unique int fun_decl: @fun_decl ref);
+fun_decl_noexcept(
+ int fun_decl: @fun_decl ref,
+ int constant: @expr ref
+);
+fun_decl_empty_noexcept(int fun_decl: @fun_decl ref);
+fun_decl_typedef_type(
+ unique int fun_decl: @fun_decl ref,
+ int typedeftype_id: @usertype ref
+);
+
+param_decl_bind(
+ unique int id: @var_decl ref,
+ int index: int ref,
+ int fun_decl: @fun_decl ref
+);
+
+#keyset[id, type_id]
+var_decls(
+ int id: @var_decl,
+ int variable: @variable ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+var_def(unique int id: @var_decl ref);
+var_decl_specifiers(
+ int id: @var_decl ref,
+ string name: string ref
+)
+is_structured_binding(unique int id: @variable ref);
+
+type_decls(
+ unique int id: @type_decl,
+ int type_id: @type ref,
+ int location: @location_default ref
+);
+type_def(unique int id: @type_decl ref);
+type_decl_top(
+ unique int type_decl: @type_decl ref
+);
+
+namespace_decls(
+ unique int id: @namespace_decl,
+ int namespace_id: @namespace ref,
+ int location: @location_default ref,
+ int bodylocation: @location_default ref
+);
+
+case @using.kind of
+ 1 = @using_declaration
+| 2 = @using_directive
+| 3 = @using_enum_declaration
+;
+
+usings(
+ unique int id: @using,
+ int element_id: @element ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+/** The element which contains the `using` declaration. */
+using_container(
+ int parent: @element ref,
+ int child: @using ref
+);
+
+static_asserts(
+ unique int id: @static_assert,
+ int condition : @expr ref,
+ string message : string ref,
+ int location: @location_default ref,
+ int enclosing : @element ref
+);
+
+// each function has an ordered list of parameters
+#keyset[id, type_id]
+#keyset[function, index, type_id]
+params(
+ int id: @parameter,
+ int function: @functionorblock ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+overrides(
+ int new: @function ref,
+ int old: @function ref
+);
+
+#keyset[id, type_id]
+membervariables(
+ int id: @membervariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+globalvariables(
+ int id: @globalvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+localvariables(
+ int id: @localvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+autoderivation(
+ unique int var: @variable ref,
+ int derivation_type: @type ref
+);
+
+orphaned_variables(
+ int var: @localvariable ref,
+ int function: @function ref
+)
+
+enumconstants(
+ unique int id: @enumconstant,
+ int parent: @usertype ref,
+ int index: int ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+
+@variable = @localscopevariable | @globalvariable | @membervariable;
+
+@localscopevariable = @localvariable | @parameter;
+
+/**
+ * Built-in types are the fundamental types, e.g., integral, floating, and void.
+ */
+case @builtintype.kind of
+ 1 = @errortype
+| 2 = @unknowntype
+| 3 = @void
+| 4 = @boolean
+| 5 = @char
+| 6 = @unsigned_char
+| 7 = @signed_char
+| 8 = @short
+| 9 = @unsigned_short
+| 10 = @signed_short
+| 11 = @int
+| 12 = @unsigned_int
+| 13 = @signed_int
+| 14 = @long
+| 15 = @unsigned_long
+| 16 = @signed_long
+| 17 = @long_long
+| 18 = @unsigned_long_long
+| 19 = @signed_long_long
+// ... 20 Microsoft-specific __int8
+// ... 21 Microsoft-specific __int16
+// ... 22 Microsoft-specific __int32
+// ... 23 Microsoft-specific __int64
+| 24 = @float
+| 25 = @double
+| 26 = @long_double
+| 27 = @complex_float // C99-specific _Complex float
+| 28 = @complex_double // C99-specific _Complex double
+| 29 = @complex_long_double // C99-specific _Complex long double
+| 30 = @imaginary_float // C99-specific _Imaginary float
+| 31 = @imaginary_double // C99-specific _Imaginary double
+| 32 = @imaginary_long_double // C99-specific _Imaginary long double
+| 33 = @wchar_t // Microsoft-specific
+| 34 = @decltype_nullptr // C++11
+| 35 = @int128 // __int128
+| 36 = @unsigned_int128 // unsigned __int128
+| 37 = @signed_int128 // signed __int128
+| 38 = @float128 // __float128
+| 39 = @complex_float128 // _Complex __float128
+| 40 = @decimal32 // _Decimal32
+| 41 = @decimal64 // _Decimal64
+| 42 = @decimal128 // _Decimal128
+| 43 = @char16_t
+| 44 = @char32_t
+| 45 = @std_float32 // _Float32
+| 46 = @float32x // _Float32x
+| 47 = @std_float64 // _Float64
+| 48 = @float64x // _Float64x
+| 49 = @std_float128 // _Float128
+// ... 50 _Float128x
+| 51 = @char8_t
+| 52 = @float16 // _Float16
+| 53 = @complex_float16 // _Complex _Float16
+| 54 = @fp16 // __fp16
+| 55 = @std_bfloat16 // __bf16
+| 56 = @std_float16 // std::float16_t
+| 57 = @complex_std_float32 // _Complex _Float32
+| 58 = @complex_float32x // _Complex _Float32x
+| 59 = @complex_std_float64 // _Complex _Float64
+| 60 = @complex_float64x // _Complex _Float64x
+| 61 = @complex_std_float128 // _Complex _Float128
+;
+
+builtintypes(
+ unique int id: @builtintype,
+ string name: string ref,
+ int kind: int ref,
+ int size: int ref,
+ int sign: int ref,
+ int alignment: int ref
+);
+
+/**
+ * Derived types are types that are directly derived from existing types and
+ * point to, refer to, transform type data to return a new type.
+ */
+case @derivedtype.kind of
+ 1 = @pointer
+| 2 = @reference
+| 3 = @type_with_specifiers
+| 4 = @array
+| 5 = @gnu_vector
+| 6 = @routineptr
+| 7 = @routinereference
+| 8 = @rvalue_reference // C++11
+// ... 9 type_conforming_to_protocols deprecated
+| 10 = @block
+;
+
+derivedtypes(
+ unique int id: @derivedtype,
+ string name: string ref,
+ int kind: int ref,
+ int type_id: @type ref
+);
+
+pointerishsize(unique int id: @derivedtype ref,
+ int size: int ref,
+ int alignment: int ref);
+
+arraysizes(
+ unique int id: @derivedtype ref,
+ int num_elements: int ref,
+ int bytesize: int ref,
+ int alignment: int ref
+);
+
+typedefbase(
+ unique int id: @usertype ref,
+ int type_id: @type ref
+);
+
+/**
+ * An instance of the C++11 `decltype` operator. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * would change the semantics of this decltype, e.g.
+ * ```
+ * struct A { double x; };
+ * const A* a = new A();
+ * decltype( a->x ); // type is double
+ * decltype((a->x)); // type is const double&
+ * ```
+ * (Please consult the C++11 standard for more details).
+ * `parentheses_would_change_meaning` is `true` iff that is the case.
+ */
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @usertype.kind of
+ 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+| 5 = @typedef // classic C: typedef typedef type name
+| 6 = @template
+| 7 = @template_parameter
+| 8 = @template_template_parameter
+| 9 = @proxy_class // a proxy class associated with a template parameter
+// ... 10 objc_class deprecated
+// ... 11 objc_protocol deprecated
+// ... 12 objc_category deprecated
+| 13 = @scoped_enum
+| 14 = @using_alias // a using name = type style typedef
+;
+*/
+
+usertypes(
+ unique int id: @usertype,
+ string name: string ref,
+ int kind: int ref
+);
+
+usertypesize(
+ unique int id: @usertype ref,
+ int size: int ref,
+ int alignment: int ref
+);
+
+usertype_final(unique int id: @usertype ref);
+
+usertype_uuid(
+ unique int id: @usertype ref,
+ string uuid: string ref
+);
+
+mangled_name(
+ unique int id: @declaration ref,
+ int mangled_name : @mangledname,
+ boolean is_complete: boolean ref
+);
+
+is_pod_class(unique int id: @usertype ref);
+is_standard_layout_class(unique int id: @usertype ref);
+
+is_complete(unique int id: @usertype ref);
+
+is_class_template(unique int id: @usertype ref);
+class_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+class_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+class_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ unique int templ_param_id: @usertype ref
+);
+
+type_mentions(
+ unique int id: @type_mention,
+ int type_id: @type ref,
+ int location: @location ref,
+ // a_symbol_reference_kind from the frontend.
+ int kind: int ref
+);
+
+is_function_template(unique int id: @function ref);
+function_instantiation(
+ unique int to: @function ref,
+ int from: @function ref
+);
+function_template_argument(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+function_template_argument_value(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_variable_template(unique int id: @variable ref);
+variable_instantiation(
+ unique int to: @variable ref,
+ int from: @variable ref
+);
+variable_template_argument(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+variable_template_argument_value(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+/*
+ Fixed point types
+ precision(1) = short, precision(2) = default, precision(3) = long
+ is_unsigned(1) = unsigned is_unsigned(2) = signed
+ is_fract_type(1) = declared with _Fract
+ saturating(1) = declared with _Sat
+*/
+/* TODO
+fixedpointtypes(
+ unique int id: @fixedpointtype,
+ int precision: int ref,
+ int is_unsigned: int ref,
+ int is_fract_type: int ref,
+ int saturating: int ref);
+*/
+
+routinetypes(
+ unique int id: @routinetype,
+ int return_type: @type ref
+);
+
+routinetypeargs(
+ int routine: @routinetype ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+ptrtomembers(
+ unique int id: @ptrtomember,
+ int type_id: @type ref,
+ int class_id: @type ref
+);
+
+/*
+ specifiers for types, functions, and variables
+
+ "public",
+ "protected",
+ "private",
+
+ "const",
+ "volatile",
+ "static",
+
+ "pure",
+ "virtual",
+ "sealed", // Microsoft
+ "__interface", // Microsoft
+ "inline",
+ "explicit",
+
+ "near", // near far extension
+ "far", // near far extension
+ "__ptr32", // Microsoft
+ "__ptr64", // Microsoft
+ "__sptr", // Microsoft
+ "__uptr", // Microsoft
+ "dllimport", // Microsoft
+ "dllexport", // Microsoft
+ "thread", // Microsoft
+ "naked", // Microsoft
+ "microsoft_inline", // Microsoft
+ "forceinline", // Microsoft
+ "selectany", // Microsoft
+ "nothrow", // Microsoft
+ "novtable", // Microsoft
+ "noreturn", // Microsoft
+ "noinline", // Microsoft
+ "noalias", // Microsoft
+ "restrict", // Microsoft
+*/
+
+specifiers(
+ unique int id: @specifier,
+ unique string str: string ref
+);
+
+typespecifiers(
+ int type_id: @type ref,
+ int spec_id: @specifier ref
+);
+
+funspecifiers(
+ int func_id: @function ref,
+ int spec_id: @specifier ref
+);
+
+varspecifiers(
+ int var_id: @accessible ref,
+ int spec_id: @specifier ref
+);
+
+attributes(
+ unique int id: @attribute,
+ int kind: int ref,
+ string name: string ref,
+ string name_space: string ref,
+ int location: @location_default ref
+);
+
+case @attribute.kind of
+ 0 = @gnuattribute
+| 1 = @stdattribute
+| 2 = @declspec
+| 3 = @msattribute
+| 4 = @alignas
+// ... 5 @objc_propertyattribute deprecated
+;
+
+attribute_args(
+ unique int id: @attribute_arg,
+ int kind: int ref,
+ int attribute: @attribute ref,
+ int index: int ref,
+ int location: @location_default ref
+);
+
+case @attribute_arg.kind of
+ 0 = @attribute_arg_empty
+| 1 = @attribute_arg_token
+| 2 = @attribute_arg_constant
+| 3 = @attribute_arg_type
+| 4 = @attribute_arg_constant_expr
+| 5 = @attribute_arg_expr
+;
+
+attribute_arg_value(
+ unique int arg: @attribute_arg ref,
+ string value: string ref
+);
+attribute_arg_type(
+ unique int arg: @attribute_arg ref,
+ int type_id: @type ref
+);
+attribute_arg_constant(
+ unique int arg: @attribute_arg ref,
+ int constant: @expr ref
+)
+attribute_arg_expr(
+ unique int arg: @attribute_arg ref,
+ int expr: @expr ref
+)
+attribute_arg_name(
+ unique int arg: @attribute_arg ref,
+ string name: string ref
+);
+
+typeattributes(
+ int type_id: @type ref,
+ int spec_id: @attribute ref
+);
+
+funcattributes(
+ int func_id: @function ref,
+ int spec_id: @attribute ref
+);
+
+varattributes(
+ int var_id: @accessible ref,
+ int spec_id: @attribute ref
+);
+
+stmtattributes(
+ int stmt_id: @stmt ref,
+ int spec_id: @attribute ref
+);
+
+@type = @builtintype
+ | @derivedtype
+ | @usertype
+ /* TODO | @fixedpointtype */
+ | @routinetype
+ | @ptrtomember
+ | @decltype;
+
+unspecifiedtype(
+ unique int type_id: @type ref,
+ int unspecified_type_id: @type ref
+);
+
+member(
+ int parent: @type ref,
+ int index: int ref,
+ int child: @member ref
+);
+
+@enclosingfunction_child = @usertype | @variable | @namespace
+
+enclosingfunction(
+ unique int child: @enclosingfunction_child ref,
+ int parent: @function ref
+);
+
+derivations(
+ unique int derivation: @derivation,
+ int sub: @type ref,
+ int index: int ref,
+ int super: @type ref,
+ int location: @location_default ref
+);
+
+derspecifiers(
+ int der_id: @derivation ref,
+ int spec_id: @specifier ref
+);
+
+/**
+ * Contains the byte offset of the base class subobject within the derived
+ * class. Only holds for non-virtual base classes, but see table
+ * `virtual_base_offsets` for offsets of virtual base class subobjects.
+ */
+direct_base_offsets(
+ unique int der_id: @derivation ref,
+ int offset: int ref
+);
+
+/**
+ * Contains the byte offset of the virtual base class subobject for class
+ * `super` within a most-derived object of class `sub`. `super` can be either a
+ * direct or indirect base class.
+ */
+#keyset[sub, super]
+virtual_base_offsets(
+ int sub: @usertype ref,
+ int super: @usertype ref,
+ int offset: int ref
+);
+
+frienddecls(
+ unique int id: @frienddecl,
+ int type_id: @type ref,
+ int decl_id: @declaration ref,
+ int location: @location_default ref
+);
+
+@declaredtype = @usertype ;
+
+@declaration = @function
+ | @declaredtype
+ | @variable
+ | @enumconstant
+ | @frienddecl;
+
+@member = @membervariable
+ | @function
+ | @declaredtype
+ | @enumconstant;
+
+@locatable = @diagnostic
+ | @declaration
+ | @ppd_include
+ | @ppd_define
+ | @macroinvocation
+ /*| @funcall*/
+ | @xmllocatable
+ | @attribute
+ | @attribute_arg;
+
+@namedscope = @namespace | @usertype;
+
+@element = @locatable
+ | @file
+ | @folder
+ | @specifier
+ | @type
+ | @expr
+ | @namespace
+ | @initialiser
+ | @stmt
+ | @derivation
+ | @comment
+ | @preprocdirect
+ | @fun_decl
+ | @var_decl
+ | @type_decl
+ | @namespace_decl
+ | @using
+ | @namequalifier
+ | @specialnamequalifyingelement
+ | @static_assert
+ | @type_mention
+ | @lambdacapture;
+
+@exprparent = @element;
+
+comments(
+ unique int id: @comment,
+ string contents: string ref,
+ int location: @location_default ref
+);
+
+commentbinding(
+ int id: @comment ref,
+ int element: @element ref
+);
+
+exprconv(
+ int converted: @expr ref,
+ unique int conversion: @expr ref
+);
+
+compgenerated(unique int id: @element ref);
+
+/**
+ * `destructor_call` destructs the `i`'th entity that should be
+ * destructed following `element`. Note that entities should be
+ * destructed in reverse construction order, so for a given `element`
+ * these should be called from highest to lowest `i`.
+ */
+#keyset[element, destructor_call]
+#keyset[element, i]
+synthetic_destructor_call(
+ int element: @element ref,
+ int i: int ref,
+ int destructor_call: @routineexpr ref
+);
+
+namespaces(
+ unique int id: @namespace,
+ string name: string ref
+);
+
+namespace_inline(
+ unique int id: @namespace ref
+);
+
+namespacembrs(
+ int parentid: @namespace ref,
+ unique int memberid: @namespacembr ref
+);
+
+@namespacembr = @declaration | @namespace;
+
+exprparents(
+ int expr_id: @expr ref,
+ int child_index: int ref,
+ int parent_id: @exprparent ref
+);
+
+expr_isload(unique int expr_id: @expr ref);
+
+@cast = @c_style_cast
+ | @const_cast
+ | @dynamic_cast
+ | @reinterpret_cast
+ | @static_cast
+ ;
+
+/*
+case @conversion.kind of
+ 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast
+| 1 = @bool_conversion // conversion to 'bool'
+| 2 = @base_class_conversion // a derived-to-base conversion
+| 3 = @derived_class_conversion // a base-to-derived conversion
+| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member
+| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member
+| 6 = @glvalue_adjust // an adjustment of the type of a glvalue
+| 7 = @prvalue_adjust // an adjustment of the type of a prvalue
+;
+*/
+/**
+ * Describes the semantics represented by a cast expression. This is largely
+ * independent of the source syntax of the cast, so it is separate from the
+ * regular expression kind.
+ */
+conversionkinds(
+ unique int expr_id: @cast ref,
+ int kind: int ref
+);
+
+@conversion = @cast
+ | @array_to_pointer
+ | @parexpr
+ | @reference_to
+ | @ref_indirect
+ | @temp_init
+ ;
+
+/*
+case @funbindexpr.kind of
+ 0 = @normal_call // a normal call
+| 1 = @virtual_call // a virtual call
+| 2 = @adl_call // a call whose target is only found by ADL
+;
+*/
+iscall(
+ unique int caller: @funbindexpr ref,
+ int kind: int ref
+);
+
+numtemplatearguments(
+ unique int expr_id: @expr ref,
+ int num: int ref
+);
+
+specialnamequalifyingelements(
+ unique int id: @specialnamequalifyingelement,
+ unique string name: string ref
+);
+
+@namequalifiableelement = @expr | @namequalifier;
+@namequalifyingelement = @namespace
+ | @specialnamequalifyingelement
+ | @usertype;
+
+namequalifiers(
+ unique int id: @namequalifier,
+ unique int qualifiableelement: @namequalifiableelement ref,
+ int qualifyingelement: @namequalifyingelement ref,
+ int location: @location_default ref
+);
+
+varbind(
+ int expr: @varbindexpr ref,
+ int var: @accessible ref
+);
+
+funbind(
+ int expr: @funbindexpr ref,
+ int fun: @function ref
+);
+
+@any_new_expr = @new_expr
+ | @new_array_expr;
+
+@new_or_delete_expr = @any_new_expr
+ | @delete_expr
+ | @delete_array_expr;
+
+@prefix_crement_expr = @preincrexpr | @predecrexpr;
+
+@postfix_crement_expr = @postincrexpr | @postdecrexpr;
+
+@increment_expr = @preincrexpr | @postincrexpr;
+
+@decrement_expr = @predecrexpr | @postdecrexpr;
+
+@crement_expr = @increment_expr | @decrement_expr;
+
+@un_arith_op_expr = @arithnegexpr
+ | @unaryplusexpr
+ | @conjugation
+ | @realpartexpr
+ | @imagpartexpr
+ | @crement_expr
+ ;
+
+@un_bitwise_op_expr = @complementexpr;
+
+@un_log_op_expr = @notexpr;
+
+@un_op_expr = @address_of
+ | @indirect
+ | @un_arith_op_expr
+ | @un_bitwise_op_expr
+ | @builtinaddressof
+ | @vec_fill
+ | @un_log_op_expr
+ | @co_await
+ | @co_yield
+ ;
+
+@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr;
+
+@cmp_op_expr = @eq_op_expr | @rel_op_expr;
+
+@eq_op_expr = @eqexpr | @neexpr;
+
+@rel_op_expr = @gtexpr
+ | @ltexpr
+ | @geexpr
+ | @leexpr
+ | @spaceshipexpr
+ ;
+
+@bin_bitwise_op_expr = @lshiftexpr
+ | @rshiftexpr
+ | @andexpr
+ | @orexpr
+ | @xorexpr
+ ;
+
+@p_arith_op_expr = @paddexpr
+ | @psubexpr
+ | @pdiffexpr
+ ;
+
+@bin_arith_op_expr = @addexpr
+ | @subexpr
+ | @mulexpr
+ | @divexpr
+ | @remexpr
+ | @jmulexpr
+ | @jdivexpr
+ | @fjaddexpr
+ | @jfaddexpr
+ | @fjsubexpr
+ | @jfsubexpr
+ | @minexpr
+ | @maxexpr
+ | @p_arith_op_expr
+ ;
+
+@bin_op_expr = @bin_arith_op_expr
+ | @bin_bitwise_op_expr
+ | @cmp_op_expr
+ | @bin_log_op_expr
+ ;
+
+@op_expr = @un_op_expr
+ | @bin_op_expr
+ | @assign_expr
+ | @conditionalexpr
+ ;
+
+@assign_arith_expr = @assignaddexpr
+ | @assignsubexpr
+ | @assignmulexpr
+ | @assigndivexpr
+ | @assignremexpr
+ ;
+
+@assign_bitwise_expr = @assignandexpr
+ | @assignorexpr
+ | @assignxorexpr
+ | @assignlshiftexpr
+ | @assignrshiftexpr
+ ;
+
+@assign_pointer_expr = @assignpaddexpr
+ | @assignpsubexpr
+ ;
+
+@assign_op_expr = @assign_arith_expr
+ | @assign_bitwise_expr
+ | @assign_pointer_expr
+ ;
+
+@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr
+
+/*
+ case @allocator.form of
+ 0 = plain
+ | 1 = alignment
+ ;
+*/
+
+/**
+ * The allocator function associated with a `new` or `new[]` expression.
+ * The `form` column specified whether the allocation call contains an alignment
+ * argument.
+ */
+expr_allocator(
+ unique int expr: @any_new_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/*
+ case @deallocator.form of
+ 0 = plain
+ | 1 = size
+ | 2 = alignment
+ | 3 = size_and_alignment
+ ;
+*/
+
+/**
+ * The deallocator function associated with a `delete`, `delete[]`, `new`, or
+ * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the
+ * one used to free memory if the initialization throws an exception.
+ * The `form` column specifies whether the deallocation call contains a size
+ * argument, and alignment argument, or both.
+ */
+expr_deallocator(
+ unique int expr: @new_or_delete_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/**
+ * Holds if the `@conditionalexpr` is of the two operand form
+ * `guard ? : false`.
+ */
+expr_cond_two_operand(
+ unique int cond: @conditionalexpr ref
+);
+
+/**
+ * The guard of `@conditionalexpr` `guard ? true : false`
+ */
+expr_cond_guard(
+ unique int cond: @conditionalexpr ref,
+ int guard: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` holds. For the two operand form
+ * `guard ?: false` consider using `expr_cond_guard` instead.
+ */
+expr_cond_true(
+ unique int cond: @conditionalexpr ref,
+ int true: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` does not hold.
+ */
+expr_cond_false(
+ unique int cond: @conditionalexpr ref,
+ int false: @expr ref
+);
+
+/** A string representation of the value. */
+values(
+ unique int id: @value,
+ string str: string ref
+);
+
+/** The actual text in the source code for the value, if any. */
+valuetext(
+ unique int id: @value ref,
+ string text: string ref
+);
+
+valuebind(
+ int val: @value ref,
+ unique int expr: @expr ref
+);
+
+fieldoffsets(
+ unique int id: @variable ref,
+ int byteoffset: int ref,
+ int bitoffset: int ref
+);
+
+bitfield(
+ unique int id: @variable ref,
+ int bits: int ref,
+ int declared_bits: int ref
+);
+
+/* TODO
+memberprefix(
+ int member: @expr ref,
+ int prefix: @expr ref
+);
+*/
+
+/*
+ kind(1) = mbrcallexpr
+ kind(2) = mbrptrcallexpr
+ kind(3) = mbrptrmbrcallexpr
+ kind(4) = ptrmbrptrmbrcallexpr
+ kind(5) = mbrreadexpr // x.y
+ kind(6) = mbrptrreadexpr // p->y
+ kind(7) = mbrptrmbrreadexpr // x.*pm
+ kind(8) = mbrptrmbrptrreadexpr // x->*pm
+ kind(9) = staticmbrreadexpr // static x.y
+ kind(10) = staticmbrptrreadexpr // static p->y
+*/
+/* TODO
+memberaccess(
+ int member: @expr ref,
+ int kind: int ref
+);
+*/
+
+initialisers(
+ unique int init: @initialiser,
+ int var: @accessible ref,
+ unique int expr: @expr ref,
+ int location: @location_expr ref
+);
+
+braced_initialisers(
+ int init: @initialiser ref
+);
+
+/**
+ * An ancestor for the expression, for cases in which we cannot
+ * otherwise find the expression's parent.
+ */
+expr_ancestor(
+ int exp: @expr ref,
+ int ancestor: @element ref
+);
+
+exprs(
+ unique int id: @expr,
+ int kind: int ref,
+ int location: @location_expr ref
+);
+
+expr_reuse(
+ int reuse: @expr ref,
+ int original: @expr ref,
+ int value_category: int ref
+)
+
+/*
+ case @value.category of
+ 1 = prval
+ | 2 = xval
+ | 3 = lval
+ ;
+*/
+expr_types(
+ int id: @expr ref,
+ int typeid: @type ref,
+ int value_category: int ref
+);
+
+case @expr.kind of
+ 1 = @errorexpr
+| 2 = @address_of // & AddressOfExpr
+| 3 = @reference_to // ReferenceToExpr (implicit?)
+| 4 = @indirect // * PointerDereferenceExpr
+| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?)
+// ...
+| 8 = @array_to_pointer // (???)
+| 9 = @vacuous_destructor_call // VacuousDestructorCall
+// ...
+| 11 = @assume // Microsoft
+| 12 = @parexpr
+| 13 = @arithnegexpr
+| 14 = @unaryplusexpr
+| 15 = @complementexpr
+| 16 = @notexpr
+| 17 = @conjugation // GNU ~ operator
+| 18 = @realpartexpr // GNU __real
+| 19 = @imagpartexpr // GNU __imag
+| 20 = @postincrexpr
+| 21 = @postdecrexpr
+| 22 = @preincrexpr
+| 23 = @predecrexpr
+| 24 = @conditionalexpr
+| 25 = @addexpr
+| 26 = @subexpr
+| 27 = @mulexpr
+| 28 = @divexpr
+| 29 = @remexpr
+| 30 = @jmulexpr // C99 mul imaginary
+| 31 = @jdivexpr // C99 div imaginary
+| 32 = @fjaddexpr // C99 add real + imaginary
+| 33 = @jfaddexpr // C99 add imaginary + real
+| 34 = @fjsubexpr // C99 sub real - imaginary
+| 35 = @jfsubexpr // C99 sub imaginary - real
+| 36 = @paddexpr // pointer add (pointer + int or int + pointer)
+| 37 = @psubexpr // pointer sub (pointer - integer)
+| 38 = @pdiffexpr // difference between two pointers
+| 39 = @lshiftexpr
+| 40 = @rshiftexpr
+| 41 = @andexpr
+| 42 = @orexpr
+| 43 = @xorexpr
+| 44 = @eqexpr
+| 45 = @neexpr
+| 46 = @gtexpr
+| 47 = @ltexpr
+| 48 = @geexpr
+| 49 = @leexpr
+| 50 = @minexpr // GNU minimum
+| 51 = @maxexpr // GNU maximum
+| 52 = @assignexpr
+| 53 = @assignaddexpr
+| 54 = @assignsubexpr
+| 55 = @assignmulexpr
+| 56 = @assigndivexpr
+| 57 = @assignremexpr
+| 58 = @assignlshiftexpr
+| 59 = @assignrshiftexpr
+| 60 = @assignandexpr
+| 61 = @assignorexpr
+| 62 = @assignxorexpr
+| 63 = @assignpaddexpr // assign pointer add
+| 64 = @assignpsubexpr // assign pointer sub
+| 65 = @andlogicalexpr
+| 66 = @orlogicalexpr
+| 67 = @commaexpr
+| 68 = @subscriptexpr // access to member of an array, e.g., a[5]
+// ... 69 @objc_subscriptexpr deprecated
+// ... 70 @cmdaccess deprecated
+// ...
+| 73 = @virtfunptrexpr
+| 74 = @callexpr
+// ... 75 @msgexpr_normal deprecated
+// ... 76 @msgexpr_super deprecated
+// ... 77 @atselectorexpr deprecated
+// ... 78 @atprotocolexpr deprecated
+| 79 = @vastartexpr
+| 80 = @vaargexpr
+| 81 = @vaendexpr
+| 82 = @vacopyexpr
+// ... 83 @atencodeexpr deprecated
+| 84 = @varaccess
+| 85 = @thisaccess
+// ... 86 @objc_box_expr deprecated
+| 87 = @new_expr
+| 88 = @delete_expr
+| 89 = @throw_expr
+| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2)
+| 91 = @braced_init_list
+| 92 = @type_id
+| 93 = @runtime_sizeof
+| 94 = @runtime_alignof
+| 95 = @sizeof_pack
+| 96 = @expr_stmt // GNU extension
+| 97 = @routineexpr
+| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....)
+| 99 = @offsetofexpr // offsetof ::= type and field
+| 100 = @hasassignexpr // __has_assign ::= type
+| 101 = @hascopyexpr // __has_copy ::= type
+| 102 = @hasnothrowassign // __has_nothrow_assign ::= type
+| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type
+| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type
+| 105 = @hastrivialassign // __has_trivial_assign ::= type
+| 106 = @hastrivialconstr // __has_trivial_constructor ::= type
+| 107 = @hastrivialcopy // __has_trivial_copy ::= type
+| 108 = @hasuserdestr // __has_user_destructor ::= type
+| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type
+| 110 = @isabstractexpr // __is_abstract ::= type
+| 111 = @isbaseofexpr // __is_base_of ::= type type
+| 112 = @isclassexpr // __is_class ::= type
+| 113 = @isconvtoexpr // __is_convertible_to ::= type type
+| 114 = @isemptyexpr // __is_empty ::= type
+| 115 = @isenumexpr // __is_enum ::= type
+| 116 = @ispodexpr // __is_pod ::= type
+| 117 = @ispolyexpr // __is_polymorphic ::= type
+| 118 = @isunionexpr // __is_union ::= type
+| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type
+| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof
+// ...
+| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type
+| 123 = @literal
+| 124 = @uuidof
+| 127 = @aggregateliteral
+| 128 = @delete_array_expr
+| 129 = @new_array_expr
+// ... 130 @objc_array_literal deprecated
+// ... 131 @objc_dictionary_literal deprecated
+| 132 = @foldexpr
+// ...
+| 200 = @ctordirectinit
+| 201 = @ctorvirtualinit
+| 202 = @ctorfieldinit
+| 203 = @ctordelegatinginit
+| 204 = @dtordirectdestruct
+| 205 = @dtorvirtualdestruct
+| 206 = @dtorfielddestruct
+// ...
+| 210 = @static_cast
+| 211 = @reinterpret_cast
+| 212 = @const_cast
+| 213 = @dynamic_cast
+| 214 = @c_style_cast
+| 215 = @lambdaexpr
+| 216 = @param_ref
+| 217 = @noopexpr
+// ...
+| 294 = @istriviallyconstructibleexpr
+| 295 = @isdestructibleexpr
+| 296 = @isnothrowdestructibleexpr
+| 297 = @istriviallydestructibleexpr
+| 298 = @istriviallyassignableexpr
+| 299 = @isnothrowassignableexpr
+| 300 = @istrivialexpr
+| 301 = @isstandardlayoutexpr
+| 302 = @istriviallycopyableexpr
+| 303 = @isliteraltypeexpr
+| 304 = @hastrivialmoveconstructorexpr
+| 305 = @hastrivialmoveassignexpr
+| 306 = @hasnothrowmoveassignexpr
+| 307 = @isconstructibleexpr
+| 308 = @isnothrowconstructibleexpr
+| 309 = @hasfinalizerexpr
+| 310 = @isdelegateexpr
+| 311 = @isinterfaceclassexpr
+| 312 = @isrefarrayexpr
+| 313 = @isrefclassexpr
+| 314 = @issealedexpr
+| 315 = @issimplevalueclassexpr
+| 316 = @isvalueclassexpr
+| 317 = @isfinalexpr
+| 319 = @noexceptexpr
+| 320 = @builtinshufflevector
+| 321 = @builtinchooseexpr
+| 322 = @builtinaddressof
+| 323 = @vec_fill
+| 324 = @builtinconvertvector
+| 325 = @builtincomplex
+| 326 = @spaceshipexpr
+| 327 = @co_await
+| 328 = @co_yield
+| 329 = @temp_init
+| 330 = @isassignable
+| 331 = @isaggregate
+| 332 = @hasuniqueobjectrepresentations
+| 333 = @builtinbitcast
+| 334 = @builtinshuffle
+| 335 = @blockassignexpr
+| 336 = @issame
+| 337 = @isfunction
+| 338 = @islayoutcompatible
+| 339 = @ispointerinterconvertiblebaseof
+| 340 = @isarray
+| 341 = @arrayrank
+| 342 = @arrayextent
+| 343 = @isarithmetic
+| 344 = @iscompletetype
+| 345 = @iscompound
+| 346 = @isconst
+| 347 = @isfloatingpoint
+| 348 = @isfundamental
+| 349 = @isintegral
+| 350 = @islvaluereference
+| 351 = @ismemberfunctionpointer
+| 352 = @ismemberobjectpointer
+| 353 = @ismemberpointer
+| 354 = @isobject
+| 355 = @ispointer
+| 356 = @isreference
+| 357 = @isrvaluereference
+| 358 = @isscalar
+| 359 = @issigned
+| 360 = @isunsigned
+| 361 = @isvoid
+| 362 = @isvolatile
+| 363 = @reuseexpr
+| 364 = @istriviallycopyassignable
+| 365 = @isassignablenopreconditioncheck
+| 366 = @referencebindstotemporary
+| 367 = @issameas
+| 368 = @builtinhasattribute
+| 369 = @ispointerinterconvertiblewithclass
+| 370 = @builtinispointerinterconvertiblewithclass
+| 371 = @iscorrespondingmember
+| 372 = @builtiniscorrespondingmember
+| 373 = @isboundedarray
+| 374 = @isunboundedarray
+| 375 = @isreferenceable
+| 378 = @isnothrowconvertible
+| 379 = @referenceconstructsfromtemporary
+| 380 = @referenceconvertsfromtemporary
+| 381 = @isconvertible
+| 382 = @isvalidwinrttype
+| 383 = @iswinclass
+| 384 = @iswininterface
+;
+
+@var_args_expr = @vastartexpr
+ | @vaendexpr
+ | @vaargexpr
+ | @vacopyexpr
+ ;
+
+@builtin_op = @var_args_expr
+ | @noopexpr
+ | @offsetofexpr
+ | @intaddrexpr
+ | @hasassignexpr
+ | @hascopyexpr
+ | @hasnothrowassign
+ | @hasnothrowconstr
+ | @hasnothrowcopy
+ | @hastrivialassign
+ | @hastrivialconstr
+ | @hastrivialcopy
+ | @hastrivialdestructor
+ | @hasuserdestr
+ | @hasvirtualdestr
+ | @isabstractexpr
+ | @isbaseofexpr
+ | @isclassexpr
+ | @isconvtoexpr
+ | @isemptyexpr
+ | @isenumexpr
+ | @ispodexpr
+ | @ispolyexpr
+ | @isunionexpr
+ | @typescompexpr
+ | @builtinshufflevector
+ | @builtinconvertvector
+ | @builtinaddressof
+ | @istriviallyconstructibleexpr
+ | @isdestructibleexpr
+ | @isnothrowdestructibleexpr
+ | @istriviallydestructibleexpr
+ | @istriviallyassignableexpr
+ | @isnothrowassignableexpr
+ | @istrivialexpr
+ | @isstandardlayoutexpr
+ | @istriviallycopyableexpr
+ | @isliteraltypeexpr
+ | @hastrivialmoveconstructorexpr
+ | @hastrivialmoveassignexpr
+ | @hasnothrowmoveassignexpr
+ | @isconstructibleexpr
+ | @isnothrowconstructibleexpr
+ | @hasfinalizerexpr
+ | @isdelegateexpr
+ | @isinterfaceclassexpr
+ | @isrefarrayexpr
+ | @isrefclassexpr
+ | @issealedexpr
+ | @issimplevalueclassexpr
+ | @isvalueclassexpr
+ | @isfinalexpr
+ | @builtinchooseexpr
+ | @builtincomplex
+ | @isassignable
+ | @isaggregate
+ | @hasuniqueobjectrepresentations
+ | @builtinbitcast
+ | @builtinshuffle
+ | @issame
+ | @isfunction
+ | @islayoutcompatible
+ | @ispointerinterconvertiblebaseof
+ | @isarray
+ | @arrayrank
+ | @arrayextent
+ | @isarithmetic
+ | @iscompletetype
+ | @iscompound
+ | @isconst
+ | @isfloatingpoint
+ | @isfundamental
+ | @isintegral
+ | @islvaluereference
+ | @ismemberfunctionpointer
+ | @ismemberobjectpointer
+ | @ismemberpointer
+ | @isobject
+ | @ispointer
+ | @isreference
+ | @isrvaluereference
+ | @isscalar
+ | @issigned
+ | @isunsigned
+ | @isvoid
+ | @isvolatile
+ | @istriviallycopyassignable
+ | @isassignablenopreconditioncheck
+ | @referencebindstotemporary
+ | @issameas
+ | @builtinhasattribute
+ | @ispointerinterconvertiblewithclass
+ | @builtinispointerinterconvertiblewithclass
+ | @iscorrespondingmember
+ | @builtiniscorrespondingmember
+ | @isboundedarray
+ | @isunboundedarray
+ | @isreferenceable
+ | @isnothrowconvertible
+ | @referenceconstructsfromtemporary
+ | @referenceconvertsfromtemporary
+ | @isconvertible
+ | @isvalidwinrttype
+ | @iswinclass
+ | @iswininterface
+ ;
+
+new_allocated_type(
+ unique int expr: @new_expr ref,
+ int type_id: @type ref
+);
+
+new_array_allocated_type(
+ unique int expr: @new_array_expr ref,
+ int type_id: @type ref
+);
+
+/**
+ * The field being initialized by an initializer expression within an aggregate
+ * initializer for a class/struct/union. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_field_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int field: @membervariable ref,
+ int position: int ref
+);
+
+/**
+ * The index of the element being initialized by an initializer expression
+ * within an aggregate initializer for an array. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_array_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int element_index: int ref,
+ int position: int ref
+);
+
+@ctorinit = @ctordirectinit
+ | @ctorvirtualinit
+ | @ctorfieldinit
+ | @ctordelegatinginit;
+@dtordestruct = @dtordirectdestruct
+ | @dtorvirtualdestruct
+ | @dtorfielddestruct;
+
+
+condition_decl_bind(
+ unique int expr: @condition_decl ref,
+ unique int decl: @declaration ref
+);
+
+typeid_bind(
+ unique int expr: @type_id ref,
+ int type_id: @type ref
+);
+
+uuidof_bind(
+ unique int expr: @uuidof ref,
+ int type_id: @type ref
+);
+
+@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof;
+
+sizeof_bind(
+ unique int expr: @runtime_sizeof_or_alignof ref,
+ int type_id: @type ref
+);
+
+code_block(
+ unique int block: @literal ref,
+ unique int routine: @function ref
+);
+
+lambdas(
+ unique int expr: @lambdaexpr ref,
+ string default_capture: string ref,
+ boolean has_explicit_return_type: boolean ref
+);
+
+lambda_capture(
+ unique int id: @lambdacapture,
+ int lambda: @lambdaexpr ref,
+ int index: int ref,
+ int field: @membervariable ref,
+ boolean captured_by_reference: boolean ref,
+ boolean is_implicit: boolean ref,
+ int location: @location_default ref
+);
+
+@funbindexpr = @routineexpr
+ | @new_expr
+ | @delete_expr
+ | @delete_array_expr
+ | @ctordirectinit
+ | @ctorvirtualinit
+ | @ctordelegatinginit
+ | @dtordirectdestruct
+ | @dtorvirtualdestruct;
+
+@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct;
+@addressable = @function | @variable ;
+@accessible = @addressable | @enumconstant ;
+
+@access = @varaccess | @routineexpr ;
+
+fold(
+ int expr: @foldexpr ref,
+ string operator: string ref,
+ boolean is_left_fold: boolean ref
+);
+
+stmts(
+ unique int id: @stmt,
+ int kind: int ref,
+ int location: @location_stmt ref
+);
+
+case @stmt.kind of
+ 1 = @stmt_expr
+| 2 = @stmt_if
+| 3 = @stmt_while
+| 4 = @stmt_goto
+| 5 = @stmt_label
+| 6 = @stmt_return
+| 7 = @stmt_block
+| 8 = @stmt_end_test_while // do { ... } while ( ... )
+| 9 = @stmt_for
+| 10 = @stmt_switch_case
+| 11 = @stmt_switch
+| 13 = @stmt_asm // "asm" statement or the body of an asm function
+| 15 = @stmt_try_block
+| 16 = @stmt_microsoft_try // Microsoft
+| 17 = @stmt_decl
+| 18 = @stmt_set_vla_size // C99
+| 19 = @stmt_vla_decl // C99
+| 25 = @stmt_assigned_goto // GNU
+| 26 = @stmt_empty
+| 27 = @stmt_continue
+| 28 = @stmt_break
+| 29 = @stmt_range_based_for // C++11
+// ... 30 @stmt_at_autoreleasepool_block deprecated
+// ... 31 @stmt_objc_for_in deprecated
+// ... 32 @stmt_at_synchronized deprecated
+| 33 = @stmt_handler
+// ... 34 @stmt_finally_end deprecated
+| 35 = @stmt_constexpr_if
+| 37 = @stmt_co_return
+;
+
+type_vla(
+ int type_id: @type ref,
+ int decl: @stmt_vla_decl ref
+);
+
+variable_vla(
+ int var: @variable ref,
+ int decl: @stmt_vla_decl ref
+);
+
+if_initialization(
+ unique int if_stmt: @stmt_if ref,
+ int init_id: @stmt ref
+);
+
+if_then(
+ unique int if_stmt: @stmt_if ref,
+ int then_id: @stmt ref
+);
+
+if_else(
+ unique int if_stmt: @stmt_if ref,
+ int else_id: @stmt ref
+);
+
+constexpr_if_initialization(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int init_id: @stmt ref
+);
+
+constexpr_if_then(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int then_id: @stmt ref
+);
+
+constexpr_if_else(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int else_id: @stmt ref
+);
+
+while_body(
+ unique int while_stmt: @stmt_while ref,
+ int body_id: @stmt ref
+);
+
+do_body(
+ unique int do_stmt: @stmt_end_test_while ref,
+ int body_id: @stmt ref
+);
+
+switch_initialization(
+ unique int switch_stmt: @stmt_switch ref,
+ int init_id: @stmt ref
+);
+
+#keyset[switch_stmt, index]
+switch_case(
+ int switch_stmt: @stmt_switch ref,
+ int index: int ref,
+ int case_id: @stmt_switch_case ref
+);
+
+switch_body(
+ unique int switch_stmt: @stmt_switch ref,
+ int body_id: @stmt ref
+);
+
+@stmt_for_or_range_based_for = @stmt_for
+ | @stmt_range_based_for;
+
+for_initialization(
+ unique int for_stmt: @stmt_for_or_range_based_for ref,
+ int init_id: @stmt ref
+);
+
+for_condition(
+ unique int for_stmt: @stmt_for ref,
+ int condition_id: @expr ref
+);
+
+for_update(
+ unique int for_stmt: @stmt_for ref,
+ int update_id: @expr ref
+);
+
+for_body(
+ unique int for_stmt: @stmt_for ref,
+ int body_id: @stmt ref
+);
+
+@stmtparent = @stmt | @expr_stmt ;
+stmtparents(
+ unique int id: @stmt ref,
+ int index: int ref,
+ int parent: @stmtparent ref
+);
+
+ishandler(unique int block: @stmt_block ref);
+
+@cfgnode = @stmt | @expr | @function | @initialiser ;
+
+stmt_decl_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl: @declaration ref
+);
+
+stmt_decl_entry_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl_entry: @element ref
+);
+
+@functionorblock = @function | @stmt_block;
+
+blockscope(
+ unique int block: @stmt_block ref,
+ int enclosing: @functionorblock ref
+);
+
+@jump = @stmt_goto | @stmt_break | @stmt_continue;
+
+@jumporlabel = @jump | @stmt_label | @literal;
+
+jumpinfo(
+ unique int id: @jumporlabel ref,
+ string str: string ref,
+ int target: @stmt ref
+);
+
+preprocdirects(
+ unique int id: @preprocdirect,
+ int kind: int ref,
+ int location: @location_default ref
+);
+case @preprocdirect.kind of
+ 0 = @ppd_if
+| 1 = @ppd_ifdef
+| 2 = @ppd_ifndef
+| 3 = @ppd_elif
+| 4 = @ppd_else
+| 5 = @ppd_endif
+| 6 = @ppd_plain_include
+| 7 = @ppd_define
+| 8 = @ppd_undef
+| 9 = @ppd_line
+| 10 = @ppd_error
+| 11 = @ppd_pragma
+| 12 = @ppd_objc_import
+| 13 = @ppd_include_next
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif;
+
+preprocpair(
+ int begin : @ppd_branch ref,
+ int elseelifend : @preprocdirect ref
+);
+
+preproctrue(int branch : @ppd_branch ref);
+preprocfalse(int branch : @ppd_branch ref);
+
+preproctext(
+ unique int id: @preprocdirect ref,
+ string head: string ref,
+ string body: string ref
+);
+
+includes(
+ unique int id: @ppd_include ref,
+ int included: @file ref
+);
+
+link_targets(
+ int id: @link_target,
+ int binary: @file ref
+);
+
+link_parent(
+ int element : @element ref,
+ int link_target : @link_target ref
+);
+
+/* XML Files */
+
+xmlEncoding(unique int id: @file ref, string encoding: string ref);
+
+xmlDTDs(
+ unique int id: @xmldtd,
+ string root: string ref,
+ string publicId: string ref,
+ string systemId: string ref,
+ int fileid: @file ref
+);
+
+xmlElements(
+ unique int id: @xmlelement,
+ string name: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlAttrs(
+ unique int id: @xmlattribute,
+ int elementid: @xmlelement ref,
+ string name: string ref,
+ string value: string ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlNs(
+ int id: @xmlnamespace,
+ string prefixName: string ref,
+ string URI: string ref,
+ int fileid: @file ref
+);
+
+xmlHasNs(
+ int elementId: @xmlnamespaceable ref,
+ int nsId: @xmlnamespace ref,
+ int fileid: @file ref
+);
+
+xmlComments(
+ unique int id: @xmlcomment,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int fileid: @file ref
+);
+
+xmlChars(
+ unique int id: @xmlcharacters,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int isCDATA: int ref,
+ int fileid: @file ref
+);
+
+@xmlparent = @file | @xmlelement;
+@xmlnamespaceable = @xmlelement | @xmlattribute;
+
+xmllocations(
+ int xmlElement: @xmllocatable ref,
+ int location: @location_default ref
+);
+
+@xmllocatable = @xmlcharacters
+ | @xmlelement
+ | @xmlcomment
+ | @xmlattribute
+ | @xmldtd
+ | @file
+ | @xmlnamespace;
diff --git a/cpp/downgrades/25e365d1e8147df0f759b604f96eb4bffea48271/semmlecode.cpp.dbscheme b/cpp/downgrades/25e365d1e8147df0f759b604f96eb4bffea48271/semmlecode.cpp.dbscheme
new file mode 100644
index 0000000000000..3d35dd6b50edf
--- /dev/null
+++ b/cpp/downgrades/25e365d1e8147df0f759b604f96eb4bffea48271/semmlecode.cpp.dbscheme
@@ -0,0 +1,2289 @@
+
+/**
+ * An invocation of the compiler. Note that more than one file may be
+ * compiled per invocation. For example, this command compiles three
+ * source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * The `id` simply identifies the invocation, while `cwd` is the working
+ * directory from which the compiler was invoked.
+ */
+compilations(
+ /**
+ * An invocation of the compiler. Note that more than one file may
+ * be compiled per invocation. For example, this command compiles
+ * three source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ */
+ unique int id : @compilation,
+ string cwd : string ref
+);
+
+/**
+ * The arguments that were passed to the extractor for a compiler
+ * invocation. If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then typically there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | *path to extractor*
+ * 1 | `--mimic`
+ * 2 | `/usr/bin/gcc`
+ * 3 | `-c`
+ * 4 | f1.c
+ * 5 | f2.c
+ * 6 | f3.c
+ */
+#keyset[id, num]
+compilation_args(
+ int id : @compilation ref,
+ int num : int ref,
+ string arg : string ref
+);
+
+/**
+ * The source files that are compiled by a compiler invocation.
+ * If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | f1.c
+ * 1 | f2.c
+ * 2 | f3.c
+ *
+ * Note that even if those files `#include` headers, those headers
+ * do not appear as rows.
+ */
+#keyset[id, num]
+compilation_compiling_files(
+ int id : @compilation ref,
+ int num : int ref,
+ int file : @file ref
+);
+
+/**
+ * The time taken by the extractor for a compiler invocation.
+ *
+ * For each file `num`, there will be rows for
+ *
+ * kind | seconds
+ * ---- | ---
+ * 1 | CPU seconds used by the extractor frontend
+ * 2 | Elapsed seconds during the extractor frontend
+ * 3 | CPU seconds used by the extractor backend
+ * 4 | Elapsed seconds during the extractor backend
+ */
+#keyset[id, num, kind]
+compilation_time(
+ int id : @compilation ref,
+ int num : int ref,
+ /* kind:
+ 1 = frontend_cpu_seconds
+ 2 = frontend_elapsed_seconds
+ 3 = extractor_cpu_seconds
+ 4 = extractor_elapsed_seconds
+ */
+ int kind : int ref,
+ float seconds : float ref
+);
+
+/**
+ * An error or warning generated by the extractor.
+ * The diagnostic message `diagnostic` was generated during compiler
+ * invocation `compilation`, and is the `file_number_diagnostic_number`th
+ * message generated while extracting the `file_number`th file of that
+ * invocation.
+ */
+#keyset[compilation, file_number, file_number_diagnostic_number]
+diagnostic_for(
+ int diagnostic : @diagnostic ref,
+ int compilation : @compilation ref,
+ int file_number : int ref,
+ int file_number_diagnostic_number : int ref
+);
+
+/**
+ * If extraction was successful, then `cpu_seconds` and
+ * `elapsed_seconds` are the CPU time and elapsed time (respectively)
+ * that extraction took for compiler invocation `id`.
+ */
+compilation_finished(
+ unique int id : @compilation ref,
+ float cpu_seconds : float ref,
+ float elapsed_seconds : float ref
+);
+
+
+/**
+ * External data, loaded from CSV files during snapshot creation. See
+ * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data)
+ * for more information.
+ */
+externalData(
+ int id : @externalDataElement,
+ string path : string ref,
+ int column: int ref,
+ string value : string ref
+);
+
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(string prefix : string ref);
+
+/**
+ * Information about packages that provide code used during compilation.
+ * The `id` is just a unique identifier.
+ * The `namespace` is typically the name of the package manager that
+ * provided the package (e.g. "dpkg" or "yum").
+ * The `package_name` is the name of the package, and `version` is its
+ * version (as a string).
+ */
+external_packages(
+ unique int id: @external_package,
+ string namespace : string ref,
+ string package_name : string ref,
+ string version : string ref
+);
+
+/**
+ * Holds if File `fileid` was provided by package `package`.
+ */
+header_to_external_package(
+ int fileid : @file ref,
+ int package : @external_package ref
+);
+
+/*
+ * Version history
+ */
+
+svnentries(
+ unique int id : @svnentry,
+ string revision : string ref,
+ string author : string ref,
+ date revisionDate : date ref,
+ int changeSize : int ref
+)
+
+svnaffectedfiles(
+ int id : @svnentry ref,
+ int file : @file ref,
+ string action : string ref
+)
+
+svnentrymsg(
+ unique int id : @svnentry ref,
+ string message : string ref
+)
+
+svnchurn(
+ int commit : @svnentry ref,
+ int file : @file ref,
+ int addedLines : int ref,
+ int deletedLines : int ref
+)
+
+/*
+ * C++ dbscheme
+ */
+
+extractor_version(
+ string codeql_version: string ref,
+ string frontend_version: string ref
+)
+
+@location = @location_stmt | @location_expr | @location_default ;
+
+/**
+ * The location of an element that is not an expression or a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_default(
+ /** The location of an element that is not an expression or a statement. */
+ unique int id: @location_default,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_stmt(
+ /** The location of a statement. */
+ unique int id: @location_stmt,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of an expression.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_expr(
+ /** The location of an expression. */
+ unique int id: @location_expr,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/** An element for which line-count information is available. */
+@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable;
+
+numlines(
+ int element_id: @sourceline ref,
+ int num_lines: int ref,
+ int num_code: int ref,
+ int num_comment: int ref
+);
+
+diagnostics(
+ unique int id: @diagnostic,
+ int severity: int ref,
+ string error_tag: string ref,
+ string error_message: string ref,
+ string full_error_message: string ref,
+ int location: @location_default ref
+);
+
+files(
+ unique int id: @file,
+ string name: string ref
+);
+
+folders(
+ unique int id: @folder,
+ string name: string ref
+);
+
+@container = @folder | @file
+
+containerparent(
+ int parent: @container ref,
+ unique int child: @container ref
+);
+
+fileannotations(
+ int id: @file ref,
+ int kind: int ref,
+ string name: string ref,
+ string value: string ref
+);
+
+inmacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+affectedbymacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+case @macroinvocation.kind of
+ 1 = @macro_expansion
+| 2 = @other_macro_reference
+;
+
+macroinvocations(
+ unique int id: @macroinvocation,
+ int macro_id: @ppd_define ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+macroparent(
+ unique int id: @macroinvocation ref,
+ int parent_id: @macroinvocation ref
+);
+
+// a macroinvocation may be part of another location
+// the way to find a constant expression that uses a macro
+// is thus to find a constant expression that has a location
+// to which a macro invocation is bound
+macrolocationbind(
+ int id: @macroinvocation ref,
+ int location: @location ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_unexpanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_expanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+/*
+case @function.kind of
+ 1 = @normal_function
+| 2 = @constructor
+| 3 = @destructor
+| 4 = @conversion_function
+| 5 = @operator
+| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk
+| 7 = @user_defined_literal
+| 8 = @deduction_guide
+;
+*/
+
+functions(
+ unique int id: @function,
+ string name: string ref,
+ int kind: int ref
+);
+
+function_entry_point(
+ int id: @function ref,
+ unique int entry_point: @stmt ref
+);
+
+function_return_type(
+ int id: @function ref,
+ int return_type: @type ref
+);
+
+/**
+ * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits`
+ * instance associated with it, and the variables representing the `handle` and `promise`
+ * for it.
+ */
+coroutine(
+ unique int function: @function ref,
+ int traits: @type ref,
+ int handle: @variable ref,
+ int promise: @variable ref
+);
+
+/** The `new` function used for allocating the coroutine state, if any. */
+coroutine_new(
+ unique int function: @function ref,
+ int new: @function ref
+);
+
+/** The `delete` function used for deallocating the coroutine state, if any. */
+coroutine_delete(
+ unique int function: @function ref,
+ int delete: @function ref
+);
+
+purefunctions(unique int id: @function ref);
+
+function_deleted(unique int id: @function ref);
+
+function_defaulted(unique int id: @function ref);
+
+function_prototyped(unique int id: @function ref)
+
+member_function_this_type(
+ unique int id: @function ref,
+ int this_type: @type ref
+);
+
+#keyset[id, type_id]
+fun_decls(
+ int id: @fun_decl,
+ int function: @function ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+fun_def(unique int id: @fun_decl ref);
+fun_specialized(unique int id: @fun_decl ref);
+fun_implicit(unique int id: @fun_decl ref);
+fun_decl_specifiers(
+ int id: @fun_decl ref,
+ string name: string ref
+)
+#keyset[fun_decl, index]
+fun_decl_throws(
+ int fun_decl: @fun_decl ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+/* an empty throw specification is different from none */
+fun_decl_empty_throws(unique int fun_decl: @fun_decl ref);
+fun_decl_noexcept(
+ int fun_decl: @fun_decl ref,
+ int constant: @expr ref
+);
+fun_decl_empty_noexcept(int fun_decl: @fun_decl ref);
+fun_decl_typedef_type(
+ unique int fun_decl: @fun_decl ref,
+ int typedeftype_id: @usertype ref
+);
+
+param_decl_bind(
+ unique int id: @var_decl ref,
+ int index: int ref,
+ int fun_decl: @fun_decl ref
+);
+
+#keyset[id, type_id]
+var_decls(
+ int id: @var_decl,
+ int variable: @variable ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+var_def(unique int id: @var_decl ref);
+var_decl_specifiers(
+ int id: @var_decl ref,
+ string name: string ref
+)
+is_structured_binding(unique int id: @variable ref);
+
+type_decls(
+ unique int id: @type_decl,
+ int type_id: @type ref,
+ int location: @location_default ref
+);
+type_def(unique int id: @type_decl ref);
+type_decl_top(
+ unique int type_decl: @type_decl ref
+);
+
+namespace_decls(
+ unique int id: @namespace_decl,
+ int namespace_id: @namespace ref,
+ int location: @location_default ref,
+ int bodylocation: @location_default ref
+);
+
+usings(
+ unique int id: @using,
+ int element_id: @element ref,
+ int location: @location_default ref
+);
+
+/** The element which contains the `using` declaration. */
+using_container(
+ int parent: @element ref,
+ int child: @using ref
+);
+
+static_asserts(
+ unique int id: @static_assert,
+ int condition : @expr ref,
+ string message : string ref,
+ int location: @location_default ref,
+ int enclosing : @element ref
+);
+
+// each function has an ordered list of parameters
+#keyset[id, type_id]
+#keyset[function, index, type_id]
+params(
+ int id: @parameter,
+ int function: @functionorblock ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+overrides(
+ int new: @function ref,
+ int old: @function ref
+);
+
+#keyset[id, type_id]
+membervariables(
+ int id: @membervariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+globalvariables(
+ int id: @globalvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+localvariables(
+ int id: @localvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+autoderivation(
+ unique int var: @variable ref,
+ int derivation_type: @type ref
+);
+
+orphaned_variables(
+ int var: @localvariable ref,
+ int function: @function ref
+)
+
+enumconstants(
+ unique int id: @enumconstant,
+ int parent: @usertype ref,
+ int index: int ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+
+@variable = @localscopevariable | @globalvariable | @membervariable;
+
+@localscopevariable = @localvariable | @parameter;
+
+/**
+ * Built-in types are the fundamental types, e.g., integral, floating, and void.
+ */
+case @builtintype.kind of
+ 1 = @errortype
+| 2 = @unknowntype
+| 3 = @void
+| 4 = @boolean
+| 5 = @char
+| 6 = @unsigned_char
+| 7 = @signed_char
+| 8 = @short
+| 9 = @unsigned_short
+| 10 = @signed_short
+| 11 = @int
+| 12 = @unsigned_int
+| 13 = @signed_int
+| 14 = @long
+| 15 = @unsigned_long
+| 16 = @signed_long
+| 17 = @long_long
+| 18 = @unsigned_long_long
+| 19 = @signed_long_long
+// ... 20 Microsoft-specific __int8
+// ... 21 Microsoft-specific __int16
+// ... 22 Microsoft-specific __int32
+// ... 23 Microsoft-specific __int64
+| 24 = @float
+| 25 = @double
+| 26 = @long_double
+| 27 = @complex_float // C99-specific _Complex float
+| 28 = @complex_double // C99-specific _Complex double
+| 29 = @complex_long_double // C99-specific _Complex long double
+| 30 = @imaginary_float // C99-specific _Imaginary float
+| 31 = @imaginary_double // C99-specific _Imaginary double
+| 32 = @imaginary_long_double // C99-specific _Imaginary long double
+| 33 = @wchar_t // Microsoft-specific
+| 34 = @decltype_nullptr // C++11
+| 35 = @int128 // __int128
+| 36 = @unsigned_int128 // unsigned __int128
+| 37 = @signed_int128 // signed __int128
+| 38 = @float128 // __float128
+| 39 = @complex_float128 // _Complex __float128
+| 40 = @decimal32 // _Decimal32
+| 41 = @decimal64 // _Decimal64
+| 42 = @decimal128 // _Decimal128
+| 43 = @char16_t
+| 44 = @char32_t
+| 45 = @std_float32 // _Float32
+| 46 = @float32x // _Float32x
+| 47 = @std_float64 // _Float64
+| 48 = @float64x // _Float64x
+| 49 = @std_float128 // _Float128
+// ... 50 _Float128x
+| 51 = @char8_t
+| 52 = @float16 // _Float16
+| 53 = @complex_float16 // _Complex _Float16
+| 54 = @fp16 // __fp16
+| 55 = @std_bfloat16 // __bf16
+| 56 = @std_float16 // std::float16_t
+| 57 = @complex_std_float32 // _Complex _Float32
+| 58 = @complex_float32x // _Complex _Float32x
+| 59 = @complex_std_float64 // _Complex _Float64
+| 60 = @complex_float64x // _Complex _Float64x
+| 61 = @complex_std_float128 // _Complex _Float128
+;
+
+builtintypes(
+ unique int id: @builtintype,
+ string name: string ref,
+ int kind: int ref,
+ int size: int ref,
+ int sign: int ref,
+ int alignment: int ref
+);
+
+/**
+ * Derived types are types that are directly derived from existing types and
+ * point to, refer to, transform type data to return a new type.
+ */
+case @derivedtype.kind of
+ 1 = @pointer
+| 2 = @reference
+| 3 = @type_with_specifiers
+| 4 = @array
+| 5 = @gnu_vector
+| 6 = @routineptr
+| 7 = @routinereference
+| 8 = @rvalue_reference // C++11
+// ... 9 type_conforming_to_protocols deprecated
+| 10 = @block
+;
+
+derivedtypes(
+ unique int id: @derivedtype,
+ string name: string ref,
+ int kind: int ref,
+ int type_id: @type ref
+);
+
+pointerishsize(unique int id: @derivedtype ref,
+ int size: int ref,
+ int alignment: int ref);
+
+arraysizes(
+ unique int id: @derivedtype ref,
+ int num_elements: int ref,
+ int bytesize: int ref,
+ int alignment: int ref
+);
+
+typedefbase(
+ unique int id: @usertype ref,
+ int type_id: @type ref
+);
+
+/**
+ * An instance of the C++11 `decltype` operator. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * would change the semantics of this decltype, e.g.
+ * ```
+ * struct A { double x; };
+ * const A* a = new A();
+ * decltype( a->x ); // type is double
+ * decltype((a->x)); // type is const double&
+ * ```
+ * (Please consult the C++11 standard for more details).
+ * `parentheses_would_change_meaning` is `true` iff that is the case.
+ */
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @usertype.kind of
+ 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+| 5 = @typedef // classic C: typedef typedef type name
+| 6 = @template
+| 7 = @template_parameter
+| 8 = @template_template_parameter
+| 9 = @proxy_class // a proxy class associated with a template parameter
+// ... 10 objc_class deprecated
+// ... 11 objc_protocol deprecated
+// ... 12 objc_category deprecated
+| 13 = @scoped_enum
+| 14 = @using_alias // a using name = type style typedef
+;
+*/
+
+usertypes(
+ unique int id: @usertype,
+ string name: string ref,
+ int kind: int ref
+);
+
+usertypesize(
+ unique int id: @usertype ref,
+ int size: int ref,
+ int alignment: int ref
+);
+
+usertype_final(unique int id: @usertype ref);
+
+usertype_uuid(
+ unique int id: @usertype ref,
+ string uuid: string ref
+);
+
+mangled_name(
+ unique int id: @declaration ref,
+ int mangled_name : @mangledname,
+ boolean is_complete: boolean ref
+);
+
+is_pod_class(unique int id: @usertype ref);
+is_standard_layout_class(unique int id: @usertype ref);
+
+is_complete(unique int id: @usertype ref);
+
+is_class_template(unique int id: @usertype ref);
+class_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+class_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+class_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ unique int templ_param_id: @usertype ref
+);
+
+type_mentions(
+ unique int id: @type_mention,
+ int type_id: @type ref,
+ int location: @location ref,
+ // a_symbol_reference_kind from the frontend.
+ int kind: int ref
+);
+
+is_function_template(unique int id: @function ref);
+function_instantiation(
+ unique int to: @function ref,
+ int from: @function ref
+);
+function_template_argument(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+function_template_argument_value(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_variable_template(unique int id: @variable ref);
+variable_instantiation(
+ unique int to: @variable ref,
+ int from: @variable ref
+);
+variable_template_argument(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+variable_template_argument_value(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+/*
+ Fixed point types
+ precision(1) = short, precision(2) = default, precision(3) = long
+ is_unsigned(1) = unsigned is_unsigned(2) = signed
+ is_fract_type(1) = declared with _Fract
+ saturating(1) = declared with _Sat
+*/
+/* TODO
+fixedpointtypes(
+ unique int id: @fixedpointtype,
+ int precision: int ref,
+ int is_unsigned: int ref,
+ int is_fract_type: int ref,
+ int saturating: int ref);
+*/
+
+routinetypes(
+ unique int id: @routinetype,
+ int return_type: @type ref
+);
+
+routinetypeargs(
+ int routine: @routinetype ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+ptrtomembers(
+ unique int id: @ptrtomember,
+ int type_id: @type ref,
+ int class_id: @type ref
+);
+
+/*
+ specifiers for types, functions, and variables
+
+ "public",
+ "protected",
+ "private",
+
+ "const",
+ "volatile",
+ "static",
+
+ "pure",
+ "virtual",
+ "sealed", // Microsoft
+ "__interface", // Microsoft
+ "inline",
+ "explicit",
+
+ "near", // near far extension
+ "far", // near far extension
+ "__ptr32", // Microsoft
+ "__ptr64", // Microsoft
+ "__sptr", // Microsoft
+ "__uptr", // Microsoft
+ "dllimport", // Microsoft
+ "dllexport", // Microsoft
+ "thread", // Microsoft
+ "naked", // Microsoft
+ "microsoft_inline", // Microsoft
+ "forceinline", // Microsoft
+ "selectany", // Microsoft
+ "nothrow", // Microsoft
+ "novtable", // Microsoft
+ "noreturn", // Microsoft
+ "noinline", // Microsoft
+ "noalias", // Microsoft
+ "restrict", // Microsoft
+*/
+
+specifiers(
+ unique int id: @specifier,
+ unique string str: string ref
+);
+
+typespecifiers(
+ int type_id: @type ref,
+ int spec_id: @specifier ref
+);
+
+funspecifiers(
+ int func_id: @function ref,
+ int spec_id: @specifier ref
+);
+
+varspecifiers(
+ int var_id: @accessible ref,
+ int spec_id: @specifier ref
+);
+
+attributes(
+ unique int id: @attribute,
+ int kind: int ref,
+ string name: string ref,
+ string name_space: string ref,
+ int location: @location_default ref
+);
+
+case @attribute.kind of
+ 0 = @gnuattribute
+| 1 = @stdattribute
+| 2 = @declspec
+| 3 = @msattribute
+| 4 = @alignas
+// ... 5 @objc_propertyattribute deprecated
+;
+
+attribute_args(
+ unique int id: @attribute_arg,
+ int kind: int ref,
+ int attribute: @attribute ref,
+ int index: int ref,
+ int location: @location_default ref
+);
+
+case @attribute_arg.kind of
+ 0 = @attribute_arg_empty
+| 1 = @attribute_arg_token
+| 2 = @attribute_arg_constant
+| 3 = @attribute_arg_type
+| 4 = @attribute_arg_constant_expr
+| 5 = @attribute_arg_expr
+;
+
+attribute_arg_value(
+ unique int arg: @attribute_arg ref,
+ string value: string ref
+);
+attribute_arg_type(
+ unique int arg: @attribute_arg ref,
+ int type_id: @type ref
+);
+attribute_arg_constant(
+ unique int arg: @attribute_arg ref,
+ int constant: @expr ref
+)
+attribute_arg_expr(
+ unique int arg: @attribute_arg ref,
+ int expr: @expr ref
+)
+attribute_arg_name(
+ unique int arg: @attribute_arg ref,
+ string name: string ref
+);
+
+typeattributes(
+ int type_id: @type ref,
+ int spec_id: @attribute ref
+);
+
+funcattributes(
+ int func_id: @function ref,
+ int spec_id: @attribute ref
+);
+
+varattributes(
+ int var_id: @accessible ref,
+ int spec_id: @attribute ref
+);
+
+stmtattributes(
+ int stmt_id: @stmt ref,
+ int spec_id: @attribute ref
+);
+
+@type = @builtintype
+ | @derivedtype
+ | @usertype
+ /* TODO | @fixedpointtype */
+ | @routinetype
+ | @ptrtomember
+ | @decltype;
+
+unspecifiedtype(
+ unique int type_id: @type ref,
+ int unspecified_type_id: @type ref
+);
+
+member(
+ int parent: @type ref,
+ int index: int ref,
+ int child: @member ref
+);
+
+@enclosingfunction_child = @usertype | @variable | @namespace
+
+enclosingfunction(
+ unique int child: @enclosingfunction_child ref,
+ int parent: @function ref
+);
+
+derivations(
+ unique int derivation: @derivation,
+ int sub: @type ref,
+ int index: int ref,
+ int super: @type ref,
+ int location: @location_default ref
+);
+
+derspecifiers(
+ int der_id: @derivation ref,
+ int spec_id: @specifier ref
+);
+
+/**
+ * Contains the byte offset of the base class subobject within the derived
+ * class. Only holds for non-virtual base classes, but see table
+ * `virtual_base_offsets` for offsets of virtual base class subobjects.
+ */
+direct_base_offsets(
+ unique int der_id: @derivation ref,
+ int offset: int ref
+);
+
+/**
+ * Contains the byte offset of the virtual base class subobject for class
+ * `super` within a most-derived object of class `sub`. `super` can be either a
+ * direct or indirect base class.
+ */
+#keyset[sub, super]
+virtual_base_offsets(
+ int sub: @usertype ref,
+ int super: @usertype ref,
+ int offset: int ref
+);
+
+frienddecls(
+ unique int id: @frienddecl,
+ int type_id: @type ref,
+ int decl_id: @declaration ref,
+ int location: @location_default ref
+);
+
+@declaredtype = @usertype ;
+
+@declaration = @function
+ | @declaredtype
+ | @variable
+ | @enumconstant
+ | @frienddecl;
+
+@member = @membervariable
+ | @function
+ | @declaredtype
+ | @enumconstant;
+
+@locatable = @diagnostic
+ | @declaration
+ | @ppd_include
+ | @ppd_define
+ | @macroinvocation
+ /*| @funcall*/
+ | @xmllocatable
+ | @attribute
+ | @attribute_arg;
+
+@namedscope = @namespace | @usertype;
+
+@element = @locatable
+ | @file
+ | @folder
+ | @specifier
+ | @type
+ | @expr
+ | @namespace
+ | @initialiser
+ | @stmt
+ | @derivation
+ | @comment
+ | @preprocdirect
+ | @fun_decl
+ | @var_decl
+ | @type_decl
+ | @namespace_decl
+ | @using
+ | @namequalifier
+ | @specialnamequalifyingelement
+ | @static_assert
+ | @type_mention
+ | @lambdacapture;
+
+@exprparent = @element;
+
+comments(
+ unique int id: @comment,
+ string contents: string ref,
+ int location: @location_default ref
+);
+
+commentbinding(
+ int id: @comment ref,
+ int element: @element ref
+);
+
+exprconv(
+ int converted: @expr ref,
+ unique int conversion: @expr ref
+);
+
+compgenerated(unique int id: @element ref);
+
+/**
+ * `destructor_call` destructs the `i`'th entity that should be
+ * destructed following `element`. Note that entities should be
+ * destructed in reverse construction order, so for a given `element`
+ * these should be called from highest to lowest `i`.
+ */
+#keyset[element, destructor_call]
+#keyset[element, i]
+synthetic_destructor_call(
+ int element: @element ref,
+ int i: int ref,
+ int destructor_call: @routineexpr ref
+);
+
+namespaces(
+ unique int id: @namespace,
+ string name: string ref
+);
+
+namespace_inline(
+ unique int id: @namespace ref
+);
+
+namespacembrs(
+ int parentid: @namespace ref,
+ unique int memberid: @namespacembr ref
+);
+
+@namespacembr = @declaration | @namespace;
+
+exprparents(
+ int expr_id: @expr ref,
+ int child_index: int ref,
+ int parent_id: @exprparent ref
+);
+
+expr_isload(unique int expr_id: @expr ref);
+
+@cast = @c_style_cast
+ | @const_cast
+ | @dynamic_cast
+ | @reinterpret_cast
+ | @static_cast
+ ;
+
+/*
+case @conversion.kind of
+ 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast
+| 1 = @bool_conversion // conversion to 'bool'
+| 2 = @base_class_conversion // a derived-to-base conversion
+| 3 = @derived_class_conversion // a base-to-derived conversion
+| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member
+| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member
+| 6 = @glvalue_adjust // an adjustment of the type of a glvalue
+| 7 = @prvalue_adjust // an adjustment of the type of a prvalue
+;
+*/
+/**
+ * Describes the semantics represented by a cast expression. This is largely
+ * independent of the source syntax of the cast, so it is separate from the
+ * regular expression kind.
+ */
+conversionkinds(
+ unique int expr_id: @cast ref,
+ int kind: int ref
+);
+
+@conversion = @cast
+ | @array_to_pointer
+ | @parexpr
+ | @reference_to
+ | @ref_indirect
+ | @temp_init
+ ;
+
+/*
+case @funbindexpr.kind of
+ 0 = @normal_call // a normal call
+| 1 = @virtual_call // a virtual call
+| 2 = @adl_call // a call whose target is only found by ADL
+;
+*/
+iscall(
+ unique int caller: @funbindexpr ref,
+ int kind: int ref
+);
+
+numtemplatearguments(
+ unique int expr_id: @expr ref,
+ int num: int ref
+);
+
+specialnamequalifyingelements(
+ unique int id: @specialnamequalifyingelement,
+ unique string name: string ref
+);
+
+@namequalifiableelement = @expr | @namequalifier;
+@namequalifyingelement = @namespace
+ | @specialnamequalifyingelement
+ | @usertype;
+
+namequalifiers(
+ unique int id: @namequalifier,
+ unique int qualifiableelement: @namequalifiableelement ref,
+ int qualifyingelement: @namequalifyingelement ref,
+ int location: @location_default ref
+);
+
+varbind(
+ int expr: @varbindexpr ref,
+ int var: @accessible ref
+);
+
+funbind(
+ int expr: @funbindexpr ref,
+ int fun: @function ref
+);
+
+@any_new_expr = @new_expr
+ | @new_array_expr;
+
+@new_or_delete_expr = @any_new_expr
+ | @delete_expr
+ | @delete_array_expr;
+
+@prefix_crement_expr = @preincrexpr | @predecrexpr;
+
+@postfix_crement_expr = @postincrexpr | @postdecrexpr;
+
+@increment_expr = @preincrexpr | @postincrexpr;
+
+@decrement_expr = @predecrexpr | @postdecrexpr;
+
+@crement_expr = @increment_expr | @decrement_expr;
+
+@un_arith_op_expr = @arithnegexpr
+ | @unaryplusexpr
+ | @conjugation
+ | @realpartexpr
+ | @imagpartexpr
+ | @crement_expr
+ ;
+
+@un_bitwise_op_expr = @complementexpr;
+
+@un_log_op_expr = @notexpr;
+
+@un_op_expr = @address_of
+ | @indirect
+ | @un_arith_op_expr
+ | @un_bitwise_op_expr
+ | @builtinaddressof
+ | @vec_fill
+ | @un_log_op_expr
+ | @co_await
+ | @co_yield
+ ;
+
+@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr;
+
+@cmp_op_expr = @eq_op_expr | @rel_op_expr;
+
+@eq_op_expr = @eqexpr | @neexpr;
+
+@rel_op_expr = @gtexpr
+ | @ltexpr
+ | @geexpr
+ | @leexpr
+ | @spaceshipexpr
+ ;
+
+@bin_bitwise_op_expr = @lshiftexpr
+ | @rshiftexpr
+ | @andexpr
+ | @orexpr
+ | @xorexpr
+ ;
+
+@p_arith_op_expr = @paddexpr
+ | @psubexpr
+ | @pdiffexpr
+ ;
+
+@bin_arith_op_expr = @addexpr
+ | @subexpr
+ | @mulexpr
+ | @divexpr
+ | @remexpr
+ | @jmulexpr
+ | @jdivexpr
+ | @fjaddexpr
+ | @jfaddexpr
+ | @fjsubexpr
+ | @jfsubexpr
+ | @minexpr
+ | @maxexpr
+ | @p_arith_op_expr
+ ;
+
+@bin_op_expr = @bin_arith_op_expr
+ | @bin_bitwise_op_expr
+ | @cmp_op_expr
+ | @bin_log_op_expr
+ ;
+
+@op_expr = @un_op_expr
+ | @bin_op_expr
+ | @assign_expr
+ | @conditionalexpr
+ ;
+
+@assign_arith_expr = @assignaddexpr
+ | @assignsubexpr
+ | @assignmulexpr
+ | @assigndivexpr
+ | @assignremexpr
+ ;
+
+@assign_bitwise_expr = @assignandexpr
+ | @assignorexpr
+ | @assignxorexpr
+ | @assignlshiftexpr
+ | @assignrshiftexpr
+ ;
+
+@assign_pointer_expr = @assignpaddexpr
+ | @assignpsubexpr
+ ;
+
+@assign_op_expr = @assign_arith_expr
+ | @assign_bitwise_expr
+ | @assign_pointer_expr
+ ;
+
+@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr
+
+/*
+ case @allocator.form of
+ 0 = plain
+ | 1 = alignment
+ ;
+*/
+
+/**
+ * The allocator function associated with a `new` or `new[]` expression.
+ * The `form` column specified whether the allocation call contains an alignment
+ * argument.
+ */
+expr_allocator(
+ unique int expr: @any_new_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/*
+ case @deallocator.form of
+ 0 = plain
+ | 1 = size
+ | 2 = alignment
+ | 3 = size_and_alignment
+ ;
+*/
+
+/**
+ * The deallocator function associated with a `delete`, `delete[]`, `new`, or
+ * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the
+ * one used to free memory if the initialization throws an exception.
+ * The `form` column specifies whether the deallocation call contains a size
+ * argument, and alignment argument, or both.
+ */
+expr_deallocator(
+ unique int expr: @new_or_delete_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/**
+ * Holds if the `@conditionalexpr` is of the two operand form
+ * `guard ? : false`.
+ */
+expr_cond_two_operand(
+ unique int cond: @conditionalexpr ref
+);
+
+/**
+ * The guard of `@conditionalexpr` `guard ? true : false`
+ */
+expr_cond_guard(
+ unique int cond: @conditionalexpr ref,
+ int guard: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` holds. For the two operand form
+ * `guard ?: false` consider using `expr_cond_guard` instead.
+ */
+expr_cond_true(
+ unique int cond: @conditionalexpr ref,
+ int true: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` does not hold.
+ */
+expr_cond_false(
+ unique int cond: @conditionalexpr ref,
+ int false: @expr ref
+);
+
+/** A string representation of the value. */
+values(
+ unique int id: @value,
+ string str: string ref
+);
+
+/** The actual text in the source code for the value, if any. */
+valuetext(
+ unique int id: @value ref,
+ string text: string ref
+);
+
+valuebind(
+ int val: @value ref,
+ unique int expr: @expr ref
+);
+
+fieldoffsets(
+ unique int id: @variable ref,
+ int byteoffset: int ref,
+ int bitoffset: int ref
+);
+
+bitfield(
+ unique int id: @variable ref,
+ int bits: int ref,
+ int declared_bits: int ref
+);
+
+/* TODO
+memberprefix(
+ int member: @expr ref,
+ int prefix: @expr ref
+);
+*/
+
+/*
+ kind(1) = mbrcallexpr
+ kind(2) = mbrptrcallexpr
+ kind(3) = mbrptrmbrcallexpr
+ kind(4) = ptrmbrptrmbrcallexpr
+ kind(5) = mbrreadexpr // x.y
+ kind(6) = mbrptrreadexpr // p->y
+ kind(7) = mbrptrmbrreadexpr // x.*pm
+ kind(8) = mbrptrmbrptrreadexpr // x->*pm
+ kind(9) = staticmbrreadexpr // static x.y
+ kind(10) = staticmbrptrreadexpr // static p->y
+*/
+/* TODO
+memberaccess(
+ int member: @expr ref,
+ int kind: int ref
+);
+*/
+
+initialisers(
+ unique int init: @initialiser,
+ int var: @accessible ref,
+ unique int expr: @expr ref,
+ int location: @location_expr ref
+);
+
+braced_initialisers(
+ int init: @initialiser ref
+);
+
+/**
+ * An ancestor for the expression, for cases in which we cannot
+ * otherwise find the expression's parent.
+ */
+expr_ancestor(
+ int exp: @expr ref,
+ int ancestor: @element ref
+);
+
+exprs(
+ unique int id: @expr,
+ int kind: int ref,
+ int location: @location_expr ref
+);
+
+expr_reuse(
+ int reuse: @expr ref,
+ int original: @expr ref,
+ int value_category: int ref
+)
+
+/*
+ case @value.category of
+ 1 = prval
+ | 2 = xval
+ | 3 = lval
+ ;
+*/
+expr_types(
+ int id: @expr ref,
+ int typeid: @type ref,
+ int value_category: int ref
+);
+
+case @expr.kind of
+ 1 = @errorexpr
+| 2 = @address_of // & AddressOfExpr
+| 3 = @reference_to // ReferenceToExpr (implicit?)
+| 4 = @indirect // * PointerDereferenceExpr
+| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?)
+// ...
+| 8 = @array_to_pointer // (???)
+| 9 = @vacuous_destructor_call // VacuousDestructorCall
+// ...
+| 11 = @assume // Microsoft
+| 12 = @parexpr
+| 13 = @arithnegexpr
+| 14 = @unaryplusexpr
+| 15 = @complementexpr
+| 16 = @notexpr
+| 17 = @conjugation // GNU ~ operator
+| 18 = @realpartexpr // GNU __real
+| 19 = @imagpartexpr // GNU __imag
+| 20 = @postincrexpr
+| 21 = @postdecrexpr
+| 22 = @preincrexpr
+| 23 = @predecrexpr
+| 24 = @conditionalexpr
+| 25 = @addexpr
+| 26 = @subexpr
+| 27 = @mulexpr
+| 28 = @divexpr
+| 29 = @remexpr
+| 30 = @jmulexpr // C99 mul imaginary
+| 31 = @jdivexpr // C99 div imaginary
+| 32 = @fjaddexpr // C99 add real + imaginary
+| 33 = @jfaddexpr // C99 add imaginary + real
+| 34 = @fjsubexpr // C99 sub real - imaginary
+| 35 = @jfsubexpr // C99 sub imaginary - real
+| 36 = @paddexpr // pointer add (pointer + int or int + pointer)
+| 37 = @psubexpr // pointer sub (pointer - integer)
+| 38 = @pdiffexpr // difference between two pointers
+| 39 = @lshiftexpr
+| 40 = @rshiftexpr
+| 41 = @andexpr
+| 42 = @orexpr
+| 43 = @xorexpr
+| 44 = @eqexpr
+| 45 = @neexpr
+| 46 = @gtexpr
+| 47 = @ltexpr
+| 48 = @geexpr
+| 49 = @leexpr
+| 50 = @minexpr // GNU minimum
+| 51 = @maxexpr // GNU maximum
+| 52 = @assignexpr
+| 53 = @assignaddexpr
+| 54 = @assignsubexpr
+| 55 = @assignmulexpr
+| 56 = @assigndivexpr
+| 57 = @assignremexpr
+| 58 = @assignlshiftexpr
+| 59 = @assignrshiftexpr
+| 60 = @assignandexpr
+| 61 = @assignorexpr
+| 62 = @assignxorexpr
+| 63 = @assignpaddexpr // assign pointer add
+| 64 = @assignpsubexpr // assign pointer sub
+| 65 = @andlogicalexpr
+| 66 = @orlogicalexpr
+| 67 = @commaexpr
+| 68 = @subscriptexpr // access to member of an array, e.g., a[5]
+// ... 69 @objc_subscriptexpr deprecated
+// ... 70 @cmdaccess deprecated
+// ...
+| 73 = @virtfunptrexpr
+| 74 = @callexpr
+// ... 75 @msgexpr_normal deprecated
+// ... 76 @msgexpr_super deprecated
+// ... 77 @atselectorexpr deprecated
+// ... 78 @atprotocolexpr deprecated
+| 79 = @vastartexpr
+| 80 = @vaargexpr
+| 81 = @vaendexpr
+| 82 = @vacopyexpr
+// ... 83 @atencodeexpr deprecated
+| 84 = @varaccess
+| 85 = @thisaccess
+// ... 86 @objc_box_expr deprecated
+| 87 = @new_expr
+| 88 = @delete_expr
+| 89 = @throw_expr
+| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2)
+| 91 = @braced_init_list
+| 92 = @type_id
+| 93 = @runtime_sizeof
+| 94 = @runtime_alignof
+| 95 = @sizeof_pack
+| 96 = @expr_stmt // GNU extension
+| 97 = @routineexpr
+| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....)
+| 99 = @offsetofexpr // offsetof ::= type and field
+| 100 = @hasassignexpr // __has_assign ::= type
+| 101 = @hascopyexpr // __has_copy ::= type
+| 102 = @hasnothrowassign // __has_nothrow_assign ::= type
+| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type
+| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type
+| 105 = @hastrivialassign // __has_trivial_assign ::= type
+| 106 = @hastrivialconstr // __has_trivial_constructor ::= type
+| 107 = @hastrivialcopy // __has_trivial_copy ::= type
+| 108 = @hasuserdestr // __has_user_destructor ::= type
+| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type
+| 110 = @isabstractexpr // __is_abstract ::= type
+| 111 = @isbaseofexpr // __is_base_of ::= type type
+| 112 = @isclassexpr // __is_class ::= type
+| 113 = @isconvtoexpr // __is_convertible_to ::= type type
+| 114 = @isemptyexpr // __is_empty ::= type
+| 115 = @isenumexpr // __is_enum ::= type
+| 116 = @ispodexpr // __is_pod ::= type
+| 117 = @ispolyexpr // __is_polymorphic ::= type
+| 118 = @isunionexpr // __is_union ::= type
+| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type
+| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof
+// ...
+| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type
+| 123 = @literal
+| 124 = @uuidof
+| 127 = @aggregateliteral
+| 128 = @delete_array_expr
+| 129 = @new_array_expr
+// ... 130 @objc_array_literal deprecated
+// ... 131 @objc_dictionary_literal deprecated
+| 132 = @foldexpr
+// ...
+| 200 = @ctordirectinit
+| 201 = @ctorvirtualinit
+| 202 = @ctorfieldinit
+| 203 = @ctordelegatinginit
+| 204 = @dtordirectdestruct
+| 205 = @dtorvirtualdestruct
+| 206 = @dtorfielddestruct
+// ...
+| 210 = @static_cast
+| 211 = @reinterpret_cast
+| 212 = @const_cast
+| 213 = @dynamic_cast
+| 214 = @c_style_cast
+| 215 = @lambdaexpr
+| 216 = @param_ref
+| 217 = @noopexpr
+// ...
+| 294 = @istriviallyconstructibleexpr
+| 295 = @isdestructibleexpr
+| 296 = @isnothrowdestructibleexpr
+| 297 = @istriviallydestructibleexpr
+| 298 = @istriviallyassignableexpr
+| 299 = @isnothrowassignableexpr
+| 300 = @istrivialexpr
+| 301 = @isstandardlayoutexpr
+| 302 = @istriviallycopyableexpr
+| 303 = @isliteraltypeexpr
+| 304 = @hastrivialmoveconstructorexpr
+| 305 = @hastrivialmoveassignexpr
+| 306 = @hasnothrowmoveassignexpr
+| 307 = @isconstructibleexpr
+| 308 = @isnothrowconstructibleexpr
+| 309 = @hasfinalizerexpr
+| 310 = @isdelegateexpr
+| 311 = @isinterfaceclassexpr
+| 312 = @isrefarrayexpr
+| 313 = @isrefclassexpr
+| 314 = @issealedexpr
+| 315 = @issimplevalueclassexpr
+| 316 = @isvalueclassexpr
+| 317 = @isfinalexpr
+| 319 = @noexceptexpr
+| 320 = @builtinshufflevector
+| 321 = @builtinchooseexpr
+| 322 = @builtinaddressof
+| 323 = @vec_fill
+| 324 = @builtinconvertvector
+| 325 = @builtincomplex
+| 326 = @spaceshipexpr
+| 327 = @co_await
+| 328 = @co_yield
+| 329 = @temp_init
+| 330 = @isassignable
+| 331 = @isaggregate
+| 332 = @hasuniqueobjectrepresentations
+| 333 = @builtinbitcast
+| 334 = @builtinshuffle
+| 335 = @blockassignexpr
+| 336 = @issame
+| 337 = @isfunction
+| 338 = @islayoutcompatible
+| 339 = @ispointerinterconvertiblebaseof
+| 340 = @isarray
+| 341 = @arrayrank
+| 342 = @arrayextent
+| 343 = @isarithmetic
+| 344 = @iscompletetype
+| 345 = @iscompound
+| 346 = @isconst
+| 347 = @isfloatingpoint
+| 348 = @isfundamental
+| 349 = @isintegral
+| 350 = @islvaluereference
+| 351 = @ismemberfunctionpointer
+| 352 = @ismemberobjectpointer
+| 353 = @ismemberpointer
+| 354 = @isobject
+| 355 = @ispointer
+| 356 = @isreference
+| 357 = @isrvaluereference
+| 358 = @isscalar
+| 359 = @issigned
+| 360 = @isunsigned
+| 361 = @isvoid
+| 362 = @isvolatile
+| 363 = @reuseexpr
+| 364 = @istriviallycopyassignable
+| 365 = @isassignablenopreconditioncheck
+| 366 = @referencebindstotemporary
+| 367 = @issameas
+| 368 = @builtinhasattribute
+| 369 = @ispointerinterconvertiblewithclass
+| 370 = @builtinispointerinterconvertiblewithclass
+| 371 = @iscorrespondingmember
+| 372 = @builtiniscorrespondingmember
+| 373 = @isboundedarray
+| 374 = @isunboundedarray
+| 375 = @isreferenceable
+| 378 = @isnothrowconvertible
+| 379 = @referenceconstructsfromtemporary
+| 380 = @referenceconvertsfromtemporary
+| 381 = @isconvertible
+| 382 = @isvalidwinrttype
+| 383 = @iswinclass
+| 384 = @iswininterface
+;
+
+@var_args_expr = @vastartexpr
+ | @vaendexpr
+ | @vaargexpr
+ | @vacopyexpr
+ ;
+
+@builtin_op = @var_args_expr
+ | @noopexpr
+ | @offsetofexpr
+ | @intaddrexpr
+ | @hasassignexpr
+ | @hascopyexpr
+ | @hasnothrowassign
+ | @hasnothrowconstr
+ | @hasnothrowcopy
+ | @hastrivialassign
+ | @hastrivialconstr
+ | @hastrivialcopy
+ | @hastrivialdestructor
+ | @hasuserdestr
+ | @hasvirtualdestr
+ | @isabstractexpr
+ | @isbaseofexpr
+ | @isclassexpr
+ | @isconvtoexpr
+ | @isemptyexpr
+ | @isenumexpr
+ | @ispodexpr
+ | @ispolyexpr
+ | @isunionexpr
+ | @typescompexpr
+ | @builtinshufflevector
+ | @builtinconvertvector
+ | @builtinaddressof
+ | @istriviallyconstructibleexpr
+ | @isdestructibleexpr
+ | @isnothrowdestructibleexpr
+ | @istriviallydestructibleexpr
+ | @istriviallyassignableexpr
+ | @isnothrowassignableexpr
+ | @istrivialexpr
+ | @isstandardlayoutexpr
+ | @istriviallycopyableexpr
+ | @isliteraltypeexpr
+ | @hastrivialmoveconstructorexpr
+ | @hastrivialmoveassignexpr
+ | @hasnothrowmoveassignexpr
+ | @isconstructibleexpr
+ | @isnothrowconstructibleexpr
+ | @hasfinalizerexpr
+ | @isdelegateexpr
+ | @isinterfaceclassexpr
+ | @isrefarrayexpr
+ | @isrefclassexpr
+ | @issealedexpr
+ | @issimplevalueclassexpr
+ | @isvalueclassexpr
+ | @isfinalexpr
+ | @builtinchooseexpr
+ | @builtincomplex
+ | @isassignable
+ | @isaggregate
+ | @hasuniqueobjectrepresentations
+ | @builtinbitcast
+ | @builtinshuffle
+ | @issame
+ | @isfunction
+ | @islayoutcompatible
+ | @ispointerinterconvertiblebaseof
+ | @isarray
+ | @arrayrank
+ | @arrayextent
+ | @isarithmetic
+ | @iscompletetype
+ | @iscompound
+ | @isconst
+ | @isfloatingpoint
+ | @isfundamental
+ | @isintegral
+ | @islvaluereference
+ | @ismemberfunctionpointer
+ | @ismemberobjectpointer
+ | @ismemberpointer
+ | @isobject
+ | @ispointer
+ | @isreference
+ | @isrvaluereference
+ | @isscalar
+ | @issigned
+ | @isunsigned
+ | @isvoid
+ | @isvolatile
+ | @istriviallycopyassignable
+ | @isassignablenopreconditioncheck
+ | @referencebindstotemporary
+ | @issameas
+ | @builtinhasattribute
+ | @ispointerinterconvertiblewithclass
+ | @builtinispointerinterconvertiblewithclass
+ | @iscorrespondingmember
+ | @builtiniscorrespondingmember
+ | @isboundedarray
+ | @isunboundedarray
+ | @isreferenceable
+ | @isnothrowconvertible
+ | @referenceconstructsfromtemporary
+ | @referenceconvertsfromtemporary
+ | @isconvertible
+ | @isvalidwinrttype
+ | @iswinclass
+ | @iswininterface
+ ;
+
+new_allocated_type(
+ unique int expr: @new_expr ref,
+ int type_id: @type ref
+);
+
+new_array_allocated_type(
+ unique int expr: @new_array_expr ref,
+ int type_id: @type ref
+);
+
+/**
+ * The field being initialized by an initializer expression within an aggregate
+ * initializer for a class/struct/union. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_field_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int field: @membervariable ref,
+ int position: int ref
+);
+
+/**
+ * The index of the element being initialized by an initializer expression
+ * within an aggregate initializer for an array. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_array_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int element_index: int ref,
+ int position: int ref
+);
+
+@ctorinit = @ctordirectinit
+ | @ctorvirtualinit
+ | @ctorfieldinit
+ | @ctordelegatinginit;
+@dtordestruct = @dtordirectdestruct
+ | @dtorvirtualdestruct
+ | @dtorfielddestruct;
+
+
+condition_decl_bind(
+ unique int expr: @condition_decl ref,
+ unique int decl: @declaration ref
+);
+
+typeid_bind(
+ unique int expr: @type_id ref,
+ int type_id: @type ref
+);
+
+uuidof_bind(
+ unique int expr: @uuidof ref,
+ int type_id: @type ref
+);
+
+@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof;
+
+sizeof_bind(
+ unique int expr: @runtime_sizeof_or_alignof ref,
+ int type_id: @type ref
+);
+
+code_block(
+ unique int block: @literal ref,
+ unique int routine: @function ref
+);
+
+lambdas(
+ unique int expr: @lambdaexpr ref,
+ string default_capture: string ref,
+ boolean has_explicit_return_type: boolean ref
+);
+
+lambda_capture(
+ unique int id: @lambdacapture,
+ int lambda: @lambdaexpr ref,
+ int index: int ref,
+ int field: @membervariable ref,
+ boolean captured_by_reference: boolean ref,
+ boolean is_implicit: boolean ref,
+ int location: @location_default ref
+);
+
+@funbindexpr = @routineexpr
+ | @new_expr
+ | @delete_expr
+ | @delete_array_expr
+ | @ctordirectinit
+ | @ctorvirtualinit
+ | @ctordelegatinginit
+ | @dtordirectdestruct
+ | @dtorvirtualdestruct;
+
+@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct;
+@addressable = @function | @variable ;
+@accessible = @addressable | @enumconstant ;
+
+@access = @varaccess | @routineexpr ;
+
+fold(
+ int expr: @foldexpr ref,
+ string operator: string ref,
+ boolean is_left_fold: boolean ref
+);
+
+stmts(
+ unique int id: @stmt,
+ int kind: int ref,
+ int location: @location_stmt ref
+);
+
+case @stmt.kind of
+ 1 = @stmt_expr
+| 2 = @stmt_if
+| 3 = @stmt_while
+| 4 = @stmt_goto
+| 5 = @stmt_label
+| 6 = @stmt_return
+| 7 = @stmt_block
+| 8 = @stmt_end_test_while // do { ... } while ( ... )
+| 9 = @stmt_for
+| 10 = @stmt_switch_case
+| 11 = @stmt_switch
+| 13 = @stmt_asm // "asm" statement or the body of an asm function
+| 15 = @stmt_try_block
+| 16 = @stmt_microsoft_try // Microsoft
+| 17 = @stmt_decl
+| 18 = @stmt_set_vla_size // C99
+| 19 = @stmt_vla_decl // C99
+| 25 = @stmt_assigned_goto // GNU
+| 26 = @stmt_empty
+| 27 = @stmt_continue
+| 28 = @stmt_break
+| 29 = @stmt_range_based_for // C++11
+// ... 30 @stmt_at_autoreleasepool_block deprecated
+// ... 31 @stmt_objc_for_in deprecated
+// ... 32 @stmt_at_synchronized deprecated
+| 33 = @stmt_handler
+// ... 34 @stmt_finally_end deprecated
+| 35 = @stmt_constexpr_if
+| 37 = @stmt_co_return
+;
+
+type_vla(
+ int type_id: @type ref,
+ int decl: @stmt_vla_decl ref
+);
+
+variable_vla(
+ int var: @variable ref,
+ int decl: @stmt_vla_decl ref
+);
+
+if_initialization(
+ unique int if_stmt: @stmt_if ref,
+ int init_id: @stmt ref
+);
+
+if_then(
+ unique int if_stmt: @stmt_if ref,
+ int then_id: @stmt ref
+);
+
+if_else(
+ unique int if_stmt: @stmt_if ref,
+ int else_id: @stmt ref
+);
+
+constexpr_if_initialization(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int init_id: @stmt ref
+);
+
+constexpr_if_then(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int then_id: @stmt ref
+);
+
+constexpr_if_else(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int else_id: @stmt ref
+);
+
+while_body(
+ unique int while_stmt: @stmt_while ref,
+ int body_id: @stmt ref
+);
+
+do_body(
+ unique int do_stmt: @stmt_end_test_while ref,
+ int body_id: @stmt ref
+);
+
+switch_initialization(
+ unique int switch_stmt: @stmt_switch ref,
+ int init_id: @stmt ref
+);
+
+#keyset[switch_stmt, index]
+switch_case(
+ int switch_stmt: @stmt_switch ref,
+ int index: int ref,
+ int case_id: @stmt_switch_case ref
+);
+
+switch_body(
+ unique int switch_stmt: @stmt_switch ref,
+ int body_id: @stmt ref
+);
+
+@stmt_for_or_range_based_for = @stmt_for
+ | @stmt_range_based_for;
+
+for_initialization(
+ unique int for_stmt: @stmt_for_or_range_based_for ref,
+ int init_id: @stmt ref
+);
+
+for_condition(
+ unique int for_stmt: @stmt_for ref,
+ int condition_id: @expr ref
+);
+
+for_update(
+ unique int for_stmt: @stmt_for ref,
+ int update_id: @expr ref
+);
+
+for_body(
+ unique int for_stmt: @stmt_for ref,
+ int body_id: @stmt ref
+);
+
+@stmtparent = @stmt | @expr_stmt ;
+stmtparents(
+ unique int id: @stmt ref,
+ int index: int ref,
+ int parent: @stmtparent ref
+);
+
+ishandler(unique int block: @stmt_block ref);
+
+@cfgnode = @stmt | @expr | @function | @initialiser ;
+
+stmt_decl_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl: @declaration ref
+);
+
+stmt_decl_entry_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl_entry: @element ref
+);
+
+@functionorblock = @function | @stmt_block;
+
+blockscope(
+ unique int block: @stmt_block ref,
+ int enclosing: @functionorblock ref
+);
+
+@jump = @stmt_goto | @stmt_break | @stmt_continue;
+
+@jumporlabel = @jump | @stmt_label | @literal;
+
+jumpinfo(
+ unique int id: @jumporlabel ref,
+ string str: string ref,
+ int target: @stmt ref
+);
+
+preprocdirects(
+ unique int id: @preprocdirect,
+ int kind: int ref,
+ int location: @location_default ref
+);
+case @preprocdirect.kind of
+ 0 = @ppd_if
+| 1 = @ppd_ifdef
+| 2 = @ppd_ifndef
+| 3 = @ppd_elif
+| 4 = @ppd_else
+| 5 = @ppd_endif
+| 6 = @ppd_plain_include
+| 7 = @ppd_define
+| 8 = @ppd_undef
+| 9 = @ppd_line
+| 10 = @ppd_error
+| 11 = @ppd_pragma
+| 12 = @ppd_objc_import
+| 13 = @ppd_include_next
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif;
+
+preprocpair(
+ int begin : @ppd_branch ref,
+ int elseelifend : @preprocdirect ref
+);
+
+preproctrue(int branch : @ppd_branch ref);
+preprocfalse(int branch : @ppd_branch ref);
+
+preproctext(
+ unique int id: @preprocdirect ref,
+ string head: string ref,
+ string body: string ref
+);
+
+includes(
+ unique int id: @ppd_include ref,
+ int included: @file ref
+);
+
+link_targets(
+ int id: @link_target,
+ int binary: @file ref
+);
+
+link_parent(
+ int element : @element ref,
+ int link_target : @link_target ref
+);
+
+/* XML Files */
+
+xmlEncoding(unique int id: @file ref, string encoding: string ref);
+
+xmlDTDs(
+ unique int id: @xmldtd,
+ string root: string ref,
+ string publicId: string ref,
+ string systemId: string ref,
+ int fileid: @file ref
+);
+
+xmlElements(
+ unique int id: @xmlelement,
+ string name: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlAttrs(
+ unique int id: @xmlattribute,
+ int elementid: @xmlelement ref,
+ string name: string ref,
+ string value: string ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlNs(
+ int id: @xmlnamespace,
+ string prefixName: string ref,
+ string URI: string ref,
+ int fileid: @file ref
+);
+
+xmlHasNs(
+ int elementId: @xmlnamespaceable ref,
+ int nsId: @xmlnamespace ref,
+ int fileid: @file ref
+);
+
+xmlComments(
+ unique int id: @xmlcomment,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int fileid: @file ref
+);
+
+xmlChars(
+ unique int id: @xmlcharacters,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int isCDATA: int ref,
+ int fileid: @file ref
+);
+
+@xmlparent = @file | @xmlelement;
+@xmlnamespaceable = @xmlelement | @xmlattribute;
+
+xmllocations(
+ int xmlElement: @xmllocatable ref,
+ int location: @location_default ref
+);
+
+@xmllocatable = @xmlcharacters
+ | @xmlelement
+ | @xmlcomment
+ | @xmlattribute
+ | @xmldtd
+ | @file
+ | @xmlnamespace;
diff --git a/cpp/downgrades/25e365d1e8147df0f759b604f96eb4bffea48271/upgrade.properties b/cpp/downgrades/25e365d1e8147df0f759b604f96eb4bffea48271/upgrade.properties
new file mode 100644
index 0000000000000..1b70354537119
--- /dev/null
+++ b/cpp/downgrades/25e365d1e8147df0f759b604f96eb4bffea48271/upgrade.properties
@@ -0,0 +1,4 @@
+description: Revert support for using-enum declarations.
+compatibility: partial
+usings.rel: run usings.qlo
+using_container.rel: run using_container.qlo
diff --git a/cpp/downgrades/25e365d1e8147df0f759b604f96eb4bffea48271/using_container.ql b/cpp/downgrades/25e365d1e8147df0f759b604f96eb4bffea48271/using_container.ql
new file mode 100644
index 0000000000000..333543414233a
--- /dev/null
+++ b/cpp/downgrades/25e365d1e8147df0f759b604f96eb4bffea48271/using_container.ql
@@ -0,0 +1,14 @@
+class UsingEntry extends @using {
+ string toString() { none() }
+}
+
+class Element extends @element {
+ string toString() { none() }
+}
+
+from UsingEntry u, Element parent, int kind
+where
+ usings(u, _, _, kind) and
+ using_container(parent, u) and
+ kind != 3
+select parent, u
diff --git a/cpp/downgrades/25e365d1e8147df0f759b604f96eb4bffea48271/usings.ql b/cpp/downgrades/25e365d1e8147df0f759b604f96eb4bffea48271/usings.ql
new file mode 100644
index 0000000000000..c7653bd9accb3
--- /dev/null
+++ b/cpp/downgrades/25e365d1e8147df0f759b604f96eb4bffea48271/usings.ql
@@ -0,0 +1,17 @@
+class UsingEntry extends @using {
+ string toString() { none() }
+}
+
+class Element extends @element {
+ string toString() { none() }
+}
+
+class Location extends @location_default {
+ string toString() { none() }
+}
+
+from UsingEntry u, Element target, Location loc, int kind
+where
+ usings(u, target, loc, kind) and
+ kind != 3
+select u, target, loc
diff --git a/cpp/downgrades/9629fc87dab7dbed0771bf5ce22bce4d7f943b52/old.dbscheme b/cpp/downgrades/9629fc87dab7dbed0771bf5ce22bce4d7f943b52/old.dbscheme
new file mode 100644
index 0000000000000..9629fc87dab7d
--- /dev/null
+++ b/cpp/downgrades/9629fc87dab7dbed0771bf5ce22bce4d7f943b52/old.dbscheme
@@ -0,0 +1,2300 @@
+
+/**
+ * An invocation of the compiler. Note that more than one file may be
+ * compiled per invocation. For example, this command compiles three
+ * source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * The `id` simply identifies the invocation, while `cwd` is the working
+ * directory from which the compiler was invoked.
+ */
+compilations(
+ /**
+ * An invocation of the compiler. Note that more than one file may
+ * be compiled per invocation. For example, this command compiles
+ * three source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ */
+ unique int id : @compilation,
+ string cwd : string ref
+);
+
+/**
+ * The arguments that were passed to the extractor for a compiler
+ * invocation. If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then typically there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | *path to extractor*
+ * 1 | `--mimic`
+ * 2 | `/usr/bin/gcc`
+ * 3 | `-c`
+ * 4 | f1.c
+ * 5 | f2.c
+ * 6 | f3.c
+ */
+#keyset[id, num]
+compilation_args(
+ int id : @compilation ref,
+ int num : int ref,
+ string arg : string ref
+);
+
+/**
+ * The source files that are compiled by a compiler invocation.
+ * If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | f1.c
+ * 1 | f2.c
+ * 2 | f3.c
+ *
+ * Note that even if those files `#include` headers, those headers
+ * do not appear as rows.
+ */
+#keyset[id, num]
+compilation_compiling_files(
+ int id : @compilation ref,
+ int num : int ref,
+ int file : @file ref
+);
+
+/**
+ * The time taken by the extractor for a compiler invocation.
+ *
+ * For each file `num`, there will be rows for
+ *
+ * kind | seconds
+ * ---- | ---
+ * 1 | CPU seconds used by the extractor frontend
+ * 2 | Elapsed seconds during the extractor frontend
+ * 3 | CPU seconds used by the extractor backend
+ * 4 | Elapsed seconds during the extractor backend
+ */
+#keyset[id, num, kind]
+compilation_time(
+ int id : @compilation ref,
+ int num : int ref,
+ /* kind:
+ 1 = frontend_cpu_seconds
+ 2 = frontend_elapsed_seconds
+ 3 = extractor_cpu_seconds
+ 4 = extractor_elapsed_seconds
+ */
+ int kind : int ref,
+ float seconds : float ref
+);
+
+/**
+ * An error or warning generated by the extractor.
+ * The diagnostic message `diagnostic` was generated during compiler
+ * invocation `compilation`, and is the `file_number_diagnostic_number`th
+ * message generated while extracting the `file_number`th file of that
+ * invocation.
+ */
+#keyset[compilation, file_number, file_number_diagnostic_number]
+diagnostic_for(
+ int diagnostic : @diagnostic ref,
+ int compilation : @compilation ref,
+ int file_number : int ref,
+ int file_number_diagnostic_number : int ref
+);
+
+/**
+ * If extraction was successful, then `cpu_seconds` and
+ * `elapsed_seconds` are the CPU time and elapsed time (respectively)
+ * that extraction took for compiler invocation `id`.
+ */
+compilation_finished(
+ unique int id : @compilation ref,
+ float cpu_seconds : float ref,
+ float elapsed_seconds : float ref
+);
+
+
+/**
+ * External data, loaded from CSV files during snapshot creation. See
+ * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data)
+ * for more information.
+ */
+externalData(
+ int id : @externalDataElement,
+ string path : string ref,
+ int column: int ref,
+ string value : string ref
+);
+
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(string prefix : string ref);
+
+/**
+ * Information about packages that provide code used during compilation.
+ * The `id` is just a unique identifier.
+ * The `namespace` is typically the name of the package manager that
+ * provided the package (e.g. "dpkg" or "yum").
+ * The `package_name` is the name of the package, and `version` is its
+ * version (as a string).
+ */
+external_packages(
+ unique int id: @external_package,
+ string namespace : string ref,
+ string package_name : string ref,
+ string version : string ref
+);
+
+/**
+ * Holds if File `fileid` was provided by package `package`.
+ */
+header_to_external_package(
+ int fileid : @file ref,
+ int package : @external_package ref
+);
+
+/*
+ * Version history
+ */
+
+svnentries(
+ unique int id : @svnentry,
+ string revision : string ref,
+ string author : string ref,
+ date revisionDate : date ref,
+ int changeSize : int ref
+)
+
+svnaffectedfiles(
+ int id : @svnentry ref,
+ int file : @file ref,
+ string action : string ref
+)
+
+svnentrymsg(
+ unique int id : @svnentry ref,
+ string message : string ref
+)
+
+svnchurn(
+ int commit : @svnentry ref,
+ int file : @file ref,
+ int addedLines : int ref,
+ int deletedLines : int ref
+)
+
+/*
+ * C++ dbscheme
+ */
+
+extractor_version(
+ string codeql_version: string ref,
+ string frontend_version: string ref
+)
+
+@location = @location_stmt | @location_expr | @location_default ;
+
+/**
+ * The location of an element that is not an expression or a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_default(
+ /** The location of an element that is not an expression or a statement. */
+ unique int id: @location_default,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_stmt(
+ /** The location of a statement. */
+ unique int id: @location_stmt,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of an expression.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_expr(
+ /** The location of an expression. */
+ unique int id: @location_expr,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/** An element for which line-count information is available. */
+@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable;
+
+numlines(
+ int element_id: @sourceline ref,
+ int num_lines: int ref,
+ int num_code: int ref,
+ int num_comment: int ref
+);
+
+diagnostics(
+ unique int id: @diagnostic,
+ int severity: int ref,
+ string error_tag: string ref,
+ string error_message: string ref,
+ string full_error_message: string ref,
+ int location: @location_default ref
+);
+
+files(
+ unique int id: @file,
+ string name: string ref
+);
+
+folders(
+ unique int id: @folder,
+ string name: string ref
+);
+
+@container = @folder | @file
+
+containerparent(
+ int parent: @container ref,
+ unique int child: @container ref
+);
+
+fileannotations(
+ int id: @file ref,
+ int kind: int ref,
+ string name: string ref,
+ string value: string ref
+);
+
+inmacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+affectedbymacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+case @macroinvocation.kind of
+ 1 = @macro_expansion
+| 2 = @other_macro_reference
+;
+
+macroinvocations(
+ unique int id: @macroinvocation,
+ int macro_id: @ppd_define ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+macroparent(
+ unique int id: @macroinvocation ref,
+ int parent_id: @macroinvocation ref
+);
+
+// a macroinvocation may be part of another location
+// the way to find a constant expression that uses a macro
+// is thus to find a constant expression that has a location
+// to which a macro invocation is bound
+macrolocationbind(
+ int id: @macroinvocation ref,
+ int location: @location ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_unexpanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_expanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+/*
+case @function.kind of
+ 1 = @normal_function
+| 2 = @constructor
+| 3 = @destructor
+| 4 = @conversion_function
+| 5 = @operator
+| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk
+| 7 = @user_defined_literal
+| 8 = @deduction_guide
+;
+*/
+
+functions(
+ unique int id: @function,
+ string name: string ref,
+ int kind: int ref
+);
+
+function_entry_point(
+ int id: @function ref,
+ unique int entry_point: @stmt ref
+);
+
+function_return_type(
+ int id: @function ref,
+ int return_type: @type ref
+);
+
+/**
+ * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits`
+ * instance associated with it, and the variables representing the `handle` and `promise`
+ * for it.
+ */
+coroutine(
+ unique int function: @function ref,
+ int traits: @type ref,
+ int handle: @variable ref,
+ int promise: @variable ref
+);
+
+/** The `new` function used for allocating the coroutine state, if any. */
+coroutine_new(
+ unique int function: @function ref,
+ int new: @function ref
+);
+
+/** The `delete` function used for deallocating the coroutine state, if any. */
+coroutine_delete(
+ unique int function: @function ref,
+ int delete: @function ref
+);
+
+purefunctions(unique int id: @function ref);
+
+function_deleted(unique int id: @function ref);
+
+function_defaulted(unique int id: @function ref);
+
+function_prototyped(unique int id: @function ref)
+
+member_function_this_type(
+ unique int id: @function ref,
+ int this_type: @type ref
+);
+
+#keyset[id, type_id]
+fun_decls(
+ int id: @fun_decl,
+ int function: @function ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+fun_def(unique int id: @fun_decl ref);
+fun_specialized(unique int id: @fun_decl ref);
+fun_implicit(unique int id: @fun_decl ref);
+fun_decl_specifiers(
+ int id: @fun_decl ref,
+ string name: string ref
+)
+#keyset[fun_decl, index]
+fun_decl_throws(
+ int fun_decl: @fun_decl ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+/* an empty throw specification is different from none */
+fun_decl_empty_throws(unique int fun_decl: @fun_decl ref);
+fun_decl_noexcept(
+ int fun_decl: @fun_decl ref,
+ int constant: @expr ref
+);
+fun_decl_empty_noexcept(int fun_decl: @fun_decl ref);
+fun_decl_typedef_type(
+ unique int fun_decl: @fun_decl ref,
+ int typedeftype_id: @usertype ref
+);
+
+param_decl_bind(
+ unique int id: @var_decl ref,
+ int index: int ref,
+ int fun_decl: @fun_decl ref
+);
+
+#keyset[id, type_id]
+var_decls(
+ int id: @var_decl,
+ int variable: @variable ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+var_def(unique int id: @var_decl ref);
+var_decl_specifiers(
+ int id: @var_decl ref,
+ string name: string ref
+)
+is_structured_binding(unique int id: @variable ref);
+
+type_decls(
+ unique int id: @type_decl,
+ int type_id: @type ref,
+ int location: @location_default ref
+);
+type_def(unique int id: @type_decl ref);
+type_decl_top(
+ unique int type_decl: @type_decl ref
+);
+
+namespace_decls(
+ unique int id: @namespace_decl,
+ int namespace_id: @namespace ref,
+ int location: @location_default ref,
+ int bodylocation: @location_default ref
+);
+
+case @using.kind of
+ 1 = @using_declaration
+| 2 = @using_directive
+| 3 = @using_enum_declaration
+;
+
+usings(
+ unique int id: @using,
+ int element_id: @element ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+/** The element which contains the `using` declaration. */
+using_container(
+ int parent: @element ref,
+ int child: @using ref
+);
+
+static_asserts(
+ unique int id: @static_assert,
+ int condition : @expr ref,
+ string message : string ref,
+ int location: @location_default ref,
+ int enclosing : @element ref
+);
+
+// each function has an ordered list of parameters
+#keyset[id, type_id]
+#keyset[function, index, type_id]
+params(
+ int id: @parameter,
+ int function: @functionorblock ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+overrides(
+ int new: @function ref,
+ int old: @function ref
+);
+
+#keyset[id, type_id]
+membervariables(
+ int id: @membervariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+globalvariables(
+ int id: @globalvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+localvariables(
+ int id: @localvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+autoderivation(
+ unique int var: @variable ref,
+ int derivation_type: @type ref
+);
+
+orphaned_variables(
+ int var: @localvariable ref,
+ int function: @function ref
+)
+
+enumconstants(
+ unique int id: @enumconstant,
+ int parent: @usertype ref,
+ int index: int ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+
+@variable = @localscopevariable | @globalvariable | @membervariable;
+
+@localscopevariable = @localvariable | @parameter;
+
+/**
+ * Built-in types are the fundamental types, e.g., integral, floating, and void.
+ */
+case @builtintype.kind of
+ 1 = @errortype
+| 2 = @unknowntype
+| 3 = @void
+| 4 = @boolean
+| 5 = @char
+| 6 = @unsigned_char
+| 7 = @signed_char
+| 8 = @short
+| 9 = @unsigned_short
+| 10 = @signed_short
+| 11 = @int
+| 12 = @unsigned_int
+| 13 = @signed_int
+| 14 = @long
+| 15 = @unsigned_long
+| 16 = @signed_long
+| 17 = @long_long
+| 18 = @unsigned_long_long
+| 19 = @signed_long_long
+// ... 20 Microsoft-specific __int8
+// ... 21 Microsoft-specific __int16
+// ... 22 Microsoft-specific __int32
+// ... 23 Microsoft-specific __int64
+| 24 = @float
+| 25 = @double
+| 26 = @long_double
+| 27 = @complex_float // C99-specific _Complex float
+| 28 = @complex_double // C99-specific _Complex double
+| 29 = @complex_long_double // C99-specific _Complex long double
+| 30 = @imaginary_float // C99-specific _Imaginary float
+| 31 = @imaginary_double // C99-specific _Imaginary double
+| 32 = @imaginary_long_double // C99-specific _Imaginary long double
+| 33 = @wchar_t // Microsoft-specific
+| 34 = @decltype_nullptr // C++11
+| 35 = @int128 // __int128
+| 36 = @unsigned_int128 // unsigned __int128
+| 37 = @signed_int128 // signed __int128
+| 38 = @float128 // __float128
+| 39 = @complex_float128 // _Complex __float128
+| 40 = @decimal32 // _Decimal32
+| 41 = @decimal64 // _Decimal64
+| 42 = @decimal128 // _Decimal128
+| 43 = @char16_t
+| 44 = @char32_t
+| 45 = @std_float32 // _Float32
+| 46 = @float32x // _Float32x
+| 47 = @std_float64 // _Float64
+| 48 = @float64x // _Float64x
+| 49 = @std_float128 // _Float128
+// ... 50 _Float128x
+| 51 = @char8_t
+| 52 = @float16 // _Float16
+| 53 = @complex_float16 // _Complex _Float16
+| 54 = @fp16 // __fp16
+| 55 = @std_bfloat16 // __bf16
+| 56 = @std_float16 // std::float16_t
+| 57 = @complex_std_float32 // _Complex _Float32
+| 58 = @complex_float32x // _Complex _Float32x
+| 59 = @complex_std_float64 // _Complex _Float64
+| 60 = @complex_float64x // _Complex _Float64x
+| 61 = @complex_std_float128 // _Complex _Float128
+;
+
+builtintypes(
+ unique int id: @builtintype,
+ string name: string ref,
+ int kind: int ref,
+ int size: int ref,
+ int sign: int ref,
+ int alignment: int ref
+);
+
+/**
+ * Derived types are types that are directly derived from existing types and
+ * point to, refer to, transform type data to return a new type.
+ */
+case @derivedtype.kind of
+ 1 = @pointer
+| 2 = @reference
+| 3 = @type_with_specifiers
+| 4 = @array
+| 5 = @gnu_vector
+| 6 = @routineptr
+| 7 = @routinereference
+| 8 = @rvalue_reference // C++11
+// ... 9 type_conforming_to_protocols deprecated
+| 10 = @block
+;
+
+derivedtypes(
+ unique int id: @derivedtype,
+ string name: string ref,
+ int kind: int ref,
+ int type_id: @type ref
+);
+
+pointerishsize(unique int id: @derivedtype ref,
+ int size: int ref,
+ int alignment: int ref);
+
+arraysizes(
+ unique int id: @derivedtype ref,
+ int num_elements: int ref,
+ int bytesize: int ref,
+ int alignment: int ref
+);
+
+typedefbase(
+ unique int id: @usertype ref,
+ int type_id: @type ref
+);
+
+/**
+ * An instance of the C++11 `decltype` operator. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * would change the semantics of this decltype, e.g.
+ * ```
+ * struct A { double x; };
+ * const A* a = new A();
+ * decltype( a->x ); // type is double
+ * decltype((a->x)); // type is const double&
+ * ```
+ * (Please consult the C++11 standard for more details).
+ * `parentheses_would_change_meaning` is `true` iff that is the case.
+ */
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @usertype.kind of
+ 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+| 5 = @typedef // classic C: typedef typedef type name
+| 6 = @template
+| 7 = @template_parameter
+| 8 = @template_template_parameter
+| 9 = @proxy_class // a proxy class associated with a template parameter
+// ... 10 objc_class deprecated
+// ... 11 objc_protocol deprecated
+// ... 12 objc_category deprecated
+| 13 = @scoped_enum
+| 14 = @using_alias // a using name = type style typedef
+;
+*/
+
+usertypes(
+ unique int id: @usertype,
+ string name: string ref,
+ int kind: int ref
+);
+
+usertypesize(
+ unique int id: @usertype ref,
+ int size: int ref,
+ int alignment: int ref
+);
+
+usertype_final(unique int id: @usertype ref);
+
+usertype_uuid(
+ unique int id: @usertype ref,
+ string uuid: string ref
+);
+
+mangled_name(
+ unique int id: @declaration ref,
+ int mangled_name : @mangledname,
+ boolean is_complete: boolean ref
+);
+
+is_pod_class(unique int id: @usertype ref);
+is_standard_layout_class(unique int id: @usertype ref);
+
+is_complete(unique int id: @usertype ref);
+
+is_class_template(unique int id: @usertype ref);
+class_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+class_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+class_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ unique int templ_param_id: @usertype ref
+);
+
+type_mentions(
+ unique int id: @type_mention,
+ int type_id: @type ref,
+ int location: @location ref,
+ // a_symbol_reference_kind from the frontend.
+ int kind: int ref
+);
+
+is_function_template(unique int id: @function ref);
+function_instantiation(
+ unique int to: @function ref,
+ int from: @function ref
+);
+function_template_argument(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+function_template_argument_value(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_variable_template(unique int id: @variable ref);
+variable_instantiation(
+ unique int to: @variable ref,
+ int from: @variable ref
+);
+variable_template_argument(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+variable_template_argument_value(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+/*
+ Fixed point types
+ precision(1) = short, precision(2) = default, precision(3) = long
+ is_unsigned(1) = unsigned is_unsigned(2) = signed
+ is_fract_type(1) = declared with _Fract
+ saturating(1) = declared with _Sat
+*/
+/* TODO
+fixedpointtypes(
+ unique int id: @fixedpointtype,
+ int precision: int ref,
+ int is_unsigned: int ref,
+ int is_fract_type: int ref,
+ int saturating: int ref);
+*/
+
+routinetypes(
+ unique int id: @routinetype,
+ int return_type: @type ref
+);
+
+routinetypeargs(
+ int routine: @routinetype ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+ptrtomembers(
+ unique int id: @ptrtomember,
+ int type_id: @type ref,
+ int class_id: @type ref
+);
+
+/*
+ specifiers for types, functions, and variables
+
+ "public",
+ "protected",
+ "private",
+
+ "const",
+ "volatile",
+ "static",
+
+ "pure",
+ "virtual",
+ "sealed", // Microsoft
+ "__interface", // Microsoft
+ "inline",
+ "explicit",
+
+ "near", // near far extension
+ "far", // near far extension
+ "__ptr32", // Microsoft
+ "__ptr64", // Microsoft
+ "__sptr", // Microsoft
+ "__uptr", // Microsoft
+ "dllimport", // Microsoft
+ "dllexport", // Microsoft
+ "thread", // Microsoft
+ "naked", // Microsoft
+ "microsoft_inline", // Microsoft
+ "forceinline", // Microsoft
+ "selectany", // Microsoft
+ "nothrow", // Microsoft
+ "novtable", // Microsoft
+ "noreturn", // Microsoft
+ "noinline", // Microsoft
+ "noalias", // Microsoft
+ "restrict", // Microsoft
+*/
+
+specifiers(
+ unique int id: @specifier,
+ unique string str: string ref
+);
+
+typespecifiers(
+ int type_id: @type ref,
+ int spec_id: @specifier ref
+);
+
+funspecifiers(
+ int func_id: @function ref,
+ int spec_id: @specifier ref
+);
+
+varspecifiers(
+ int var_id: @accessible ref,
+ int spec_id: @specifier ref
+);
+
+attributes(
+ unique int id: @attribute,
+ int kind: int ref,
+ string name: string ref,
+ string name_space: string ref,
+ int location: @location_default ref
+);
+
+case @attribute.kind of
+ 0 = @gnuattribute
+| 1 = @stdattribute
+| 2 = @declspec
+| 3 = @msattribute
+| 4 = @alignas
+// ... 5 @objc_propertyattribute deprecated
+;
+
+attribute_args(
+ unique int id: @attribute_arg,
+ int kind: int ref,
+ int attribute: @attribute ref,
+ int index: int ref,
+ int location: @location_default ref
+);
+
+case @attribute_arg.kind of
+ 0 = @attribute_arg_empty
+| 1 = @attribute_arg_token
+| 2 = @attribute_arg_constant
+| 3 = @attribute_arg_type
+| 4 = @attribute_arg_constant_expr
+| 5 = @attribute_arg_expr
+;
+
+attribute_arg_value(
+ unique int arg: @attribute_arg ref,
+ string value: string ref
+);
+attribute_arg_type(
+ unique int arg: @attribute_arg ref,
+ int type_id: @type ref
+);
+attribute_arg_constant(
+ unique int arg: @attribute_arg ref,
+ int constant: @expr ref
+)
+attribute_arg_expr(
+ unique int arg: @attribute_arg ref,
+ int expr: @expr ref
+)
+attribute_arg_name(
+ unique int arg: @attribute_arg ref,
+ string name: string ref
+);
+
+typeattributes(
+ int type_id: @type ref,
+ int spec_id: @attribute ref
+);
+
+funcattributes(
+ int func_id: @function ref,
+ int spec_id: @attribute ref
+);
+
+varattributes(
+ int var_id: @accessible ref,
+ int spec_id: @attribute ref
+);
+
+stmtattributes(
+ int stmt_id: @stmt ref,
+ int spec_id: @attribute ref
+);
+
+@type = @builtintype
+ | @derivedtype
+ | @usertype
+ /* TODO | @fixedpointtype */
+ | @routinetype
+ | @ptrtomember
+ | @decltype;
+
+unspecifiedtype(
+ unique int type_id: @type ref,
+ int unspecified_type_id: @type ref
+);
+
+member(
+ int parent: @type ref,
+ int index: int ref,
+ int child: @member ref
+);
+
+@enclosingfunction_child = @usertype | @variable | @namespace
+
+enclosingfunction(
+ unique int child: @enclosingfunction_child ref,
+ int parent: @function ref
+);
+
+derivations(
+ unique int derivation: @derivation,
+ int sub: @type ref,
+ int index: int ref,
+ int super: @type ref,
+ int location: @location_default ref
+);
+
+derspecifiers(
+ int der_id: @derivation ref,
+ int spec_id: @specifier ref
+);
+
+/**
+ * Contains the byte offset of the base class subobject within the derived
+ * class. Only holds for non-virtual base classes, but see table
+ * `virtual_base_offsets` for offsets of virtual base class subobjects.
+ */
+direct_base_offsets(
+ unique int der_id: @derivation ref,
+ int offset: int ref
+);
+
+/**
+ * Contains the byte offset of the virtual base class subobject for class
+ * `super` within a most-derived object of class `sub`. `super` can be either a
+ * direct or indirect base class.
+ */
+#keyset[sub, super]
+virtual_base_offsets(
+ int sub: @usertype ref,
+ int super: @usertype ref,
+ int offset: int ref
+);
+
+frienddecls(
+ unique int id: @frienddecl,
+ int type_id: @type ref,
+ int decl_id: @declaration ref,
+ int location: @location_default ref
+);
+
+@declaredtype = @usertype ;
+
+@declaration = @function
+ | @declaredtype
+ | @variable
+ | @enumconstant
+ | @frienddecl;
+
+@member = @membervariable
+ | @function
+ | @declaredtype
+ | @enumconstant;
+
+@locatable = @diagnostic
+ | @declaration
+ | @ppd_include
+ | @ppd_define
+ | @macroinvocation
+ /*| @funcall*/
+ | @xmllocatable
+ | @attribute
+ | @attribute_arg;
+
+@namedscope = @namespace | @usertype;
+
+@element = @locatable
+ | @file
+ | @folder
+ | @specifier
+ | @type
+ | @expr
+ | @namespace
+ | @initialiser
+ | @stmt
+ | @derivation
+ | @comment
+ | @preprocdirect
+ | @fun_decl
+ | @var_decl
+ | @type_decl
+ | @namespace_decl
+ | @using
+ | @namequalifier
+ | @specialnamequalifyingelement
+ | @static_assert
+ | @type_mention
+ | @lambdacapture;
+
+@exprparent = @element;
+
+comments(
+ unique int id: @comment,
+ string contents: string ref,
+ int location: @location_default ref
+);
+
+commentbinding(
+ int id: @comment ref,
+ int element: @element ref
+);
+
+exprconv(
+ int converted: @expr ref,
+ unique int conversion: @expr ref
+);
+
+compgenerated(unique int id: @element ref);
+
+/**
+ * `destructor_call` destructs the `i`'th entity that should be
+ * destructed following `element`. Note that entities should be
+ * destructed in reverse construction order, so for a given `element`
+ * these should be called from highest to lowest `i`.
+ */
+#keyset[element, destructor_call]
+#keyset[element, i]
+synthetic_destructor_call(
+ int element: @element ref,
+ int i: int ref,
+ int destructor_call: @routineexpr ref
+);
+
+namespaces(
+ unique int id: @namespace,
+ string name: string ref
+);
+
+namespace_inline(
+ unique int id: @namespace ref
+);
+
+namespacembrs(
+ int parentid: @namespace ref,
+ unique int memberid: @namespacembr ref
+);
+
+@namespacembr = @declaration | @namespace;
+
+exprparents(
+ int expr_id: @expr ref,
+ int child_index: int ref,
+ int parent_id: @exprparent ref
+);
+
+expr_isload(unique int expr_id: @expr ref);
+
+@cast = @c_style_cast
+ | @const_cast
+ | @dynamic_cast
+ | @reinterpret_cast
+ | @static_cast
+ ;
+
+/*
+case @conversion.kind of
+ 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast
+| 1 = @bool_conversion // conversion to 'bool'
+| 2 = @base_class_conversion // a derived-to-base conversion
+| 3 = @derived_class_conversion // a base-to-derived conversion
+| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member
+| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member
+| 6 = @glvalue_adjust // an adjustment of the type of a glvalue
+| 7 = @prvalue_adjust // an adjustment of the type of a prvalue
+;
+*/
+/**
+ * Describes the semantics represented by a cast expression. This is largely
+ * independent of the source syntax of the cast, so it is separate from the
+ * regular expression kind.
+ */
+conversionkinds(
+ unique int expr_id: @cast ref,
+ int kind: int ref
+);
+
+@conversion = @cast
+ | @array_to_pointer
+ | @parexpr
+ | @reference_to
+ | @ref_indirect
+ | @temp_init
+ ;
+
+/*
+case @funbindexpr.kind of
+ 0 = @normal_call // a normal call
+| 1 = @virtual_call // a virtual call
+| 2 = @adl_call // a call whose target is only found by ADL
+;
+*/
+iscall(
+ unique int caller: @funbindexpr ref,
+ int kind: int ref
+);
+
+numtemplatearguments(
+ unique int expr_id: @expr ref,
+ int num: int ref
+);
+
+specialnamequalifyingelements(
+ unique int id: @specialnamequalifyingelement,
+ unique string name: string ref
+);
+
+@namequalifiableelement = @expr | @namequalifier;
+@namequalifyingelement = @namespace
+ | @specialnamequalifyingelement
+ | @usertype;
+
+namequalifiers(
+ unique int id: @namequalifier,
+ unique int qualifiableelement: @namequalifiableelement ref,
+ int qualifyingelement: @namequalifyingelement ref,
+ int location: @location_default ref
+);
+
+varbind(
+ int expr: @varbindexpr ref,
+ int var: @accessible ref
+);
+
+funbind(
+ int expr: @funbindexpr ref,
+ int fun: @function ref
+);
+
+@any_new_expr = @new_expr
+ | @new_array_expr;
+
+@new_or_delete_expr = @any_new_expr
+ | @delete_expr
+ | @delete_array_expr;
+
+@prefix_crement_expr = @preincrexpr | @predecrexpr;
+
+@postfix_crement_expr = @postincrexpr | @postdecrexpr;
+
+@increment_expr = @preincrexpr | @postincrexpr;
+
+@decrement_expr = @predecrexpr | @postdecrexpr;
+
+@crement_expr = @increment_expr | @decrement_expr;
+
+@un_arith_op_expr = @arithnegexpr
+ | @unaryplusexpr
+ | @conjugation
+ | @realpartexpr
+ | @imagpartexpr
+ | @crement_expr
+ ;
+
+@un_bitwise_op_expr = @complementexpr;
+
+@un_log_op_expr = @notexpr;
+
+@un_op_expr = @address_of
+ | @indirect
+ | @un_arith_op_expr
+ | @un_bitwise_op_expr
+ | @builtinaddressof
+ | @vec_fill
+ | @un_log_op_expr
+ | @co_await
+ | @co_yield
+ ;
+
+@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr;
+
+@cmp_op_expr = @eq_op_expr | @rel_op_expr;
+
+@eq_op_expr = @eqexpr | @neexpr;
+
+@rel_op_expr = @gtexpr
+ | @ltexpr
+ | @geexpr
+ | @leexpr
+ | @spaceshipexpr
+ ;
+
+@bin_bitwise_op_expr = @lshiftexpr
+ | @rshiftexpr
+ | @andexpr
+ | @orexpr
+ | @xorexpr
+ ;
+
+@p_arith_op_expr = @paddexpr
+ | @psubexpr
+ | @pdiffexpr
+ ;
+
+@bin_arith_op_expr = @addexpr
+ | @subexpr
+ | @mulexpr
+ | @divexpr
+ | @remexpr
+ | @jmulexpr
+ | @jdivexpr
+ | @fjaddexpr
+ | @jfaddexpr
+ | @fjsubexpr
+ | @jfsubexpr
+ | @minexpr
+ | @maxexpr
+ | @p_arith_op_expr
+ ;
+
+@bin_op_expr = @bin_arith_op_expr
+ | @bin_bitwise_op_expr
+ | @cmp_op_expr
+ | @bin_log_op_expr
+ ;
+
+@op_expr = @un_op_expr
+ | @bin_op_expr
+ | @assign_expr
+ | @conditionalexpr
+ ;
+
+@assign_arith_expr = @assignaddexpr
+ | @assignsubexpr
+ | @assignmulexpr
+ | @assigndivexpr
+ | @assignremexpr
+ ;
+
+@assign_bitwise_expr = @assignandexpr
+ | @assignorexpr
+ | @assignxorexpr
+ | @assignlshiftexpr
+ | @assignrshiftexpr
+ ;
+
+@assign_pointer_expr = @assignpaddexpr
+ | @assignpsubexpr
+ ;
+
+@assign_op_expr = @assign_arith_expr
+ | @assign_bitwise_expr
+ | @assign_pointer_expr
+ ;
+
+@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr
+
+/*
+ Binary encoding of the allocator form.
+
+ case @allocator.form of
+ 0 = plain
+ | 1 = alignment
+ ;
+*/
+
+/**
+ * The allocator function associated with a `new` or `new[]` expression.
+ * The `form` column specified whether the allocation call contains an alignment
+ * argument.
+ */
+expr_allocator(
+ unique int expr: @any_new_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/*
+ Binary encoding of the deallocator form.
+
+ case @deallocator.form of
+ 0 = plain
+ | 1 = size
+ | 2 = alignment
+ | 4 = destroying_delete
+ ;
+*/
+
+/**
+ * The deallocator function associated with a `delete`, `delete[]`, `new`, or
+ * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the
+ * one used to free memory if the initialization throws an exception.
+ * The `form` column specifies whether the deallocation call contains a size
+ * argument, and alignment argument, or both.
+ */
+expr_deallocator(
+ unique int expr: @new_or_delete_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/**
+ * Holds if the `@conditionalexpr` is of the two operand form
+ * `guard ? : false`.
+ */
+expr_cond_two_operand(
+ unique int cond: @conditionalexpr ref
+);
+
+/**
+ * The guard of `@conditionalexpr` `guard ? true : false`
+ */
+expr_cond_guard(
+ unique int cond: @conditionalexpr ref,
+ int guard: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` holds. For the two operand form
+ * `guard ?: false` consider using `expr_cond_guard` instead.
+ */
+expr_cond_true(
+ unique int cond: @conditionalexpr ref,
+ int true: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` does not hold.
+ */
+expr_cond_false(
+ unique int cond: @conditionalexpr ref,
+ int false: @expr ref
+);
+
+/** A string representation of the value. */
+values(
+ unique int id: @value,
+ string str: string ref
+);
+
+/** The actual text in the source code for the value, if any. */
+valuetext(
+ unique int id: @value ref,
+ string text: string ref
+);
+
+valuebind(
+ int val: @value ref,
+ unique int expr: @expr ref
+);
+
+fieldoffsets(
+ unique int id: @variable ref,
+ int byteoffset: int ref,
+ int bitoffset: int ref
+);
+
+bitfield(
+ unique int id: @variable ref,
+ int bits: int ref,
+ int declared_bits: int ref
+);
+
+/* TODO
+memberprefix(
+ int member: @expr ref,
+ int prefix: @expr ref
+);
+*/
+
+/*
+ kind(1) = mbrcallexpr
+ kind(2) = mbrptrcallexpr
+ kind(3) = mbrptrmbrcallexpr
+ kind(4) = ptrmbrptrmbrcallexpr
+ kind(5) = mbrreadexpr // x.y
+ kind(6) = mbrptrreadexpr // p->y
+ kind(7) = mbrptrmbrreadexpr // x.*pm
+ kind(8) = mbrptrmbrptrreadexpr // x->*pm
+ kind(9) = staticmbrreadexpr // static x.y
+ kind(10) = staticmbrptrreadexpr // static p->y
+*/
+/* TODO
+memberaccess(
+ int member: @expr ref,
+ int kind: int ref
+);
+*/
+
+initialisers(
+ unique int init: @initialiser,
+ int var: @accessible ref,
+ unique int expr: @expr ref,
+ int location: @location_expr ref
+);
+
+braced_initialisers(
+ int init: @initialiser ref
+);
+
+/**
+ * An ancestor for the expression, for cases in which we cannot
+ * otherwise find the expression's parent.
+ */
+expr_ancestor(
+ int exp: @expr ref,
+ int ancestor: @element ref
+);
+
+exprs(
+ unique int id: @expr,
+ int kind: int ref,
+ int location: @location_expr ref
+);
+
+expr_reuse(
+ int reuse: @expr ref,
+ int original: @expr ref,
+ int value_category: int ref
+)
+
+/*
+ case @value.category of
+ 1 = prval
+ | 2 = xval
+ | 3 = lval
+ ;
+*/
+expr_types(
+ int id: @expr ref,
+ int typeid: @type ref,
+ int value_category: int ref
+);
+
+case @expr.kind of
+ 1 = @errorexpr
+| 2 = @address_of // & AddressOfExpr
+| 3 = @reference_to // ReferenceToExpr (implicit?)
+| 4 = @indirect // * PointerDereferenceExpr
+| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?)
+// ...
+| 8 = @array_to_pointer // (???)
+| 9 = @vacuous_destructor_call // VacuousDestructorCall
+// ...
+| 11 = @assume // Microsoft
+| 12 = @parexpr
+| 13 = @arithnegexpr
+| 14 = @unaryplusexpr
+| 15 = @complementexpr
+| 16 = @notexpr
+| 17 = @conjugation // GNU ~ operator
+| 18 = @realpartexpr // GNU __real
+| 19 = @imagpartexpr // GNU __imag
+| 20 = @postincrexpr
+| 21 = @postdecrexpr
+| 22 = @preincrexpr
+| 23 = @predecrexpr
+| 24 = @conditionalexpr
+| 25 = @addexpr
+| 26 = @subexpr
+| 27 = @mulexpr
+| 28 = @divexpr
+| 29 = @remexpr
+| 30 = @jmulexpr // C99 mul imaginary
+| 31 = @jdivexpr // C99 div imaginary
+| 32 = @fjaddexpr // C99 add real + imaginary
+| 33 = @jfaddexpr // C99 add imaginary + real
+| 34 = @fjsubexpr // C99 sub real - imaginary
+| 35 = @jfsubexpr // C99 sub imaginary - real
+| 36 = @paddexpr // pointer add (pointer + int or int + pointer)
+| 37 = @psubexpr // pointer sub (pointer - integer)
+| 38 = @pdiffexpr // difference between two pointers
+| 39 = @lshiftexpr
+| 40 = @rshiftexpr
+| 41 = @andexpr
+| 42 = @orexpr
+| 43 = @xorexpr
+| 44 = @eqexpr
+| 45 = @neexpr
+| 46 = @gtexpr
+| 47 = @ltexpr
+| 48 = @geexpr
+| 49 = @leexpr
+| 50 = @minexpr // GNU minimum
+| 51 = @maxexpr // GNU maximum
+| 52 = @assignexpr
+| 53 = @assignaddexpr
+| 54 = @assignsubexpr
+| 55 = @assignmulexpr
+| 56 = @assigndivexpr
+| 57 = @assignremexpr
+| 58 = @assignlshiftexpr
+| 59 = @assignrshiftexpr
+| 60 = @assignandexpr
+| 61 = @assignorexpr
+| 62 = @assignxorexpr
+| 63 = @assignpaddexpr // assign pointer add
+| 64 = @assignpsubexpr // assign pointer sub
+| 65 = @andlogicalexpr
+| 66 = @orlogicalexpr
+| 67 = @commaexpr
+| 68 = @subscriptexpr // access to member of an array, e.g., a[5]
+// ... 69 @objc_subscriptexpr deprecated
+// ... 70 @cmdaccess deprecated
+// ...
+| 73 = @virtfunptrexpr
+| 74 = @callexpr
+// ... 75 @msgexpr_normal deprecated
+// ... 76 @msgexpr_super deprecated
+// ... 77 @atselectorexpr deprecated
+// ... 78 @atprotocolexpr deprecated
+| 79 = @vastartexpr
+| 80 = @vaargexpr
+| 81 = @vaendexpr
+| 82 = @vacopyexpr
+// ... 83 @atencodeexpr deprecated
+| 84 = @varaccess
+| 85 = @thisaccess
+// ... 86 @objc_box_expr deprecated
+| 87 = @new_expr
+| 88 = @delete_expr
+| 89 = @throw_expr
+| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2)
+| 91 = @braced_init_list
+| 92 = @type_id
+| 93 = @runtime_sizeof
+| 94 = @runtime_alignof
+| 95 = @sizeof_pack
+| 96 = @expr_stmt // GNU extension
+| 97 = @routineexpr
+| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....)
+| 99 = @offsetofexpr // offsetof ::= type and field
+| 100 = @hasassignexpr // __has_assign ::= type
+| 101 = @hascopyexpr // __has_copy ::= type
+| 102 = @hasnothrowassign // __has_nothrow_assign ::= type
+| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type
+| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type
+| 105 = @hastrivialassign // __has_trivial_assign ::= type
+| 106 = @hastrivialconstr // __has_trivial_constructor ::= type
+| 107 = @hastrivialcopy // __has_trivial_copy ::= type
+| 108 = @hasuserdestr // __has_user_destructor ::= type
+| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type
+| 110 = @isabstractexpr // __is_abstract ::= type
+| 111 = @isbaseofexpr // __is_base_of ::= type type
+| 112 = @isclassexpr // __is_class ::= type
+| 113 = @isconvtoexpr // __is_convertible_to ::= type type
+| 114 = @isemptyexpr // __is_empty ::= type
+| 115 = @isenumexpr // __is_enum ::= type
+| 116 = @ispodexpr // __is_pod ::= type
+| 117 = @ispolyexpr // __is_polymorphic ::= type
+| 118 = @isunionexpr // __is_union ::= type
+| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type
+| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof
+// ...
+| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type
+| 123 = @literal
+| 124 = @uuidof
+| 127 = @aggregateliteral
+| 128 = @delete_array_expr
+| 129 = @new_array_expr
+// ... 130 @objc_array_literal deprecated
+// ... 131 @objc_dictionary_literal deprecated
+| 132 = @foldexpr
+// ...
+| 200 = @ctordirectinit
+| 201 = @ctorvirtualinit
+| 202 = @ctorfieldinit
+| 203 = @ctordelegatinginit
+| 204 = @dtordirectdestruct
+| 205 = @dtorvirtualdestruct
+| 206 = @dtorfielddestruct
+// ...
+| 210 = @static_cast
+| 211 = @reinterpret_cast
+| 212 = @const_cast
+| 213 = @dynamic_cast
+| 214 = @c_style_cast
+| 215 = @lambdaexpr
+| 216 = @param_ref
+| 217 = @noopexpr
+// ...
+| 294 = @istriviallyconstructibleexpr
+| 295 = @isdestructibleexpr
+| 296 = @isnothrowdestructibleexpr
+| 297 = @istriviallydestructibleexpr
+| 298 = @istriviallyassignableexpr
+| 299 = @isnothrowassignableexpr
+| 300 = @istrivialexpr
+| 301 = @isstandardlayoutexpr
+| 302 = @istriviallycopyableexpr
+| 303 = @isliteraltypeexpr
+| 304 = @hastrivialmoveconstructorexpr
+| 305 = @hastrivialmoveassignexpr
+| 306 = @hasnothrowmoveassignexpr
+| 307 = @isconstructibleexpr
+| 308 = @isnothrowconstructibleexpr
+| 309 = @hasfinalizerexpr
+| 310 = @isdelegateexpr
+| 311 = @isinterfaceclassexpr
+| 312 = @isrefarrayexpr
+| 313 = @isrefclassexpr
+| 314 = @issealedexpr
+| 315 = @issimplevalueclassexpr
+| 316 = @isvalueclassexpr
+| 317 = @isfinalexpr
+| 319 = @noexceptexpr
+| 320 = @builtinshufflevector
+| 321 = @builtinchooseexpr
+| 322 = @builtinaddressof
+| 323 = @vec_fill
+| 324 = @builtinconvertvector
+| 325 = @builtincomplex
+| 326 = @spaceshipexpr
+| 327 = @co_await
+| 328 = @co_yield
+| 329 = @temp_init
+| 330 = @isassignable
+| 331 = @isaggregate
+| 332 = @hasuniqueobjectrepresentations
+| 333 = @builtinbitcast
+| 334 = @builtinshuffle
+| 335 = @blockassignexpr
+| 336 = @issame
+| 337 = @isfunction
+| 338 = @islayoutcompatible
+| 339 = @ispointerinterconvertiblebaseof
+| 340 = @isarray
+| 341 = @arrayrank
+| 342 = @arrayextent
+| 343 = @isarithmetic
+| 344 = @iscompletetype
+| 345 = @iscompound
+| 346 = @isconst
+| 347 = @isfloatingpoint
+| 348 = @isfundamental
+| 349 = @isintegral
+| 350 = @islvaluereference
+| 351 = @ismemberfunctionpointer
+| 352 = @ismemberobjectpointer
+| 353 = @ismemberpointer
+| 354 = @isobject
+| 355 = @ispointer
+| 356 = @isreference
+| 357 = @isrvaluereference
+| 358 = @isscalar
+| 359 = @issigned
+| 360 = @isunsigned
+| 361 = @isvoid
+| 362 = @isvolatile
+| 363 = @reuseexpr
+| 364 = @istriviallycopyassignable
+| 365 = @isassignablenopreconditioncheck
+| 366 = @referencebindstotemporary
+| 367 = @issameas
+| 368 = @builtinhasattribute
+| 369 = @ispointerinterconvertiblewithclass
+| 370 = @builtinispointerinterconvertiblewithclass
+| 371 = @iscorrespondingmember
+| 372 = @builtiniscorrespondingmember
+| 373 = @isboundedarray
+| 374 = @isunboundedarray
+| 375 = @isreferenceable
+| 378 = @isnothrowconvertible
+| 379 = @referenceconstructsfromtemporary
+| 380 = @referenceconvertsfromtemporary
+| 381 = @isconvertible
+| 382 = @isvalidwinrttype
+| 383 = @iswinclass
+| 384 = @iswininterface
+;
+
+@var_args_expr = @vastartexpr
+ | @vaendexpr
+ | @vaargexpr
+ | @vacopyexpr
+ ;
+
+@builtin_op = @var_args_expr
+ | @noopexpr
+ | @offsetofexpr
+ | @intaddrexpr
+ | @hasassignexpr
+ | @hascopyexpr
+ | @hasnothrowassign
+ | @hasnothrowconstr
+ | @hasnothrowcopy
+ | @hastrivialassign
+ | @hastrivialconstr
+ | @hastrivialcopy
+ | @hastrivialdestructor
+ | @hasuserdestr
+ | @hasvirtualdestr
+ | @isabstractexpr
+ | @isbaseofexpr
+ | @isclassexpr
+ | @isconvtoexpr
+ | @isemptyexpr
+ | @isenumexpr
+ | @ispodexpr
+ | @ispolyexpr
+ | @isunionexpr
+ | @typescompexpr
+ | @builtinshufflevector
+ | @builtinconvertvector
+ | @builtinaddressof
+ | @istriviallyconstructibleexpr
+ | @isdestructibleexpr
+ | @isnothrowdestructibleexpr
+ | @istriviallydestructibleexpr
+ | @istriviallyassignableexpr
+ | @isnothrowassignableexpr
+ | @istrivialexpr
+ | @isstandardlayoutexpr
+ | @istriviallycopyableexpr
+ | @isliteraltypeexpr
+ | @hastrivialmoveconstructorexpr
+ | @hastrivialmoveassignexpr
+ | @hasnothrowmoveassignexpr
+ | @isconstructibleexpr
+ | @isnothrowconstructibleexpr
+ | @hasfinalizerexpr
+ | @isdelegateexpr
+ | @isinterfaceclassexpr
+ | @isrefarrayexpr
+ | @isrefclassexpr
+ | @issealedexpr
+ | @issimplevalueclassexpr
+ | @isvalueclassexpr
+ | @isfinalexpr
+ | @builtinchooseexpr
+ | @builtincomplex
+ | @isassignable
+ | @isaggregate
+ | @hasuniqueobjectrepresentations
+ | @builtinbitcast
+ | @builtinshuffle
+ | @issame
+ | @isfunction
+ | @islayoutcompatible
+ | @ispointerinterconvertiblebaseof
+ | @isarray
+ | @arrayrank
+ | @arrayextent
+ | @isarithmetic
+ | @iscompletetype
+ | @iscompound
+ | @isconst
+ | @isfloatingpoint
+ | @isfundamental
+ | @isintegral
+ | @islvaluereference
+ | @ismemberfunctionpointer
+ | @ismemberobjectpointer
+ | @ismemberpointer
+ | @isobject
+ | @ispointer
+ | @isreference
+ | @isrvaluereference
+ | @isscalar
+ | @issigned
+ | @isunsigned
+ | @isvoid
+ | @isvolatile
+ | @istriviallycopyassignable
+ | @isassignablenopreconditioncheck
+ | @referencebindstotemporary
+ | @issameas
+ | @builtinhasattribute
+ | @ispointerinterconvertiblewithclass
+ | @builtinispointerinterconvertiblewithclass
+ | @iscorrespondingmember
+ | @builtiniscorrespondingmember
+ | @isboundedarray
+ | @isunboundedarray
+ | @isreferenceable
+ | @isnothrowconvertible
+ | @referenceconstructsfromtemporary
+ | @referenceconvertsfromtemporary
+ | @isconvertible
+ | @isvalidwinrttype
+ | @iswinclass
+ | @iswininterface
+ ;
+
+new_allocated_type(
+ unique int expr: @new_expr ref,
+ int type_id: @type ref
+);
+
+new_array_allocated_type(
+ unique int expr: @new_array_expr ref,
+ int type_id: @type ref
+);
+
+/**
+ * The field being initialized by an initializer expression within an aggregate
+ * initializer for a class/struct/union. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_field_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int field: @membervariable ref,
+ int position: int ref
+);
+
+/**
+ * The index of the element being initialized by an initializer expression
+ * within an aggregate initializer for an array. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_array_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int element_index: int ref,
+ int position: int ref
+);
+
+@ctorinit = @ctordirectinit
+ | @ctorvirtualinit
+ | @ctorfieldinit
+ | @ctordelegatinginit;
+@dtordestruct = @dtordirectdestruct
+ | @dtorvirtualdestruct
+ | @dtorfielddestruct;
+
+
+condition_decl_bind(
+ unique int expr: @condition_decl ref,
+ unique int decl: @declaration ref
+);
+
+typeid_bind(
+ unique int expr: @type_id ref,
+ int type_id: @type ref
+);
+
+uuidof_bind(
+ unique int expr: @uuidof ref,
+ int type_id: @type ref
+);
+
+@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof;
+
+sizeof_bind(
+ unique int expr: @runtime_sizeof_or_alignof ref,
+ int type_id: @type ref
+);
+
+code_block(
+ unique int block: @literal ref,
+ unique int routine: @function ref
+);
+
+lambdas(
+ unique int expr: @lambdaexpr ref,
+ string default_capture: string ref,
+ boolean has_explicit_return_type: boolean ref
+);
+
+lambda_capture(
+ unique int id: @lambdacapture,
+ int lambda: @lambdaexpr ref,
+ int index: int ref,
+ int field: @membervariable ref,
+ boolean captured_by_reference: boolean ref,
+ boolean is_implicit: boolean ref,
+ int location: @location_default ref
+);
+
+@funbindexpr = @routineexpr
+ | @new_expr
+ | @delete_expr
+ | @delete_array_expr
+ | @ctordirectinit
+ | @ctorvirtualinit
+ | @ctordelegatinginit
+ | @dtordirectdestruct
+ | @dtorvirtualdestruct;
+
+@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct;
+@addressable = @function | @variable ;
+@accessible = @addressable | @enumconstant ;
+
+@access = @varaccess | @routineexpr ;
+
+fold(
+ int expr: @foldexpr ref,
+ string operator: string ref,
+ boolean is_left_fold: boolean ref
+);
+
+stmts(
+ unique int id: @stmt,
+ int kind: int ref,
+ int location: @location_stmt ref
+);
+
+case @stmt.kind of
+ 1 = @stmt_expr
+| 2 = @stmt_if
+| 3 = @stmt_while
+| 4 = @stmt_goto
+| 5 = @stmt_label
+| 6 = @stmt_return
+| 7 = @stmt_block
+| 8 = @stmt_end_test_while // do { ... } while ( ... )
+| 9 = @stmt_for
+| 10 = @stmt_switch_case
+| 11 = @stmt_switch
+| 13 = @stmt_asm // "asm" statement or the body of an asm function
+| 15 = @stmt_try_block
+| 16 = @stmt_microsoft_try // Microsoft
+| 17 = @stmt_decl
+| 18 = @stmt_set_vla_size // C99
+| 19 = @stmt_vla_decl // C99
+| 25 = @stmt_assigned_goto // GNU
+| 26 = @stmt_empty
+| 27 = @stmt_continue
+| 28 = @stmt_break
+| 29 = @stmt_range_based_for // C++11
+// ... 30 @stmt_at_autoreleasepool_block deprecated
+// ... 31 @stmt_objc_for_in deprecated
+// ... 32 @stmt_at_synchronized deprecated
+| 33 = @stmt_handler
+// ... 34 @stmt_finally_end deprecated
+| 35 = @stmt_constexpr_if
+| 37 = @stmt_co_return
+;
+
+type_vla(
+ int type_id: @type ref,
+ int decl: @stmt_vla_decl ref
+);
+
+variable_vla(
+ int var: @variable ref,
+ int decl: @stmt_vla_decl ref
+);
+
+if_initialization(
+ unique int if_stmt: @stmt_if ref,
+ int init_id: @stmt ref
+);
+
+if_then(
+ unique int if_stmt: @stmt_if ref,
+ int then_id: @stmt ref
+);
+
+if_else(
+ unique int if_stmt: @stmt_if ref,
+ int else_id: @stmt ref
+);
+
+constexpr_if_initialization(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int init_id: @stmt ref
+);
+
+constexpr_if_then(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int then_id: @stmt ref
+);
+
+constexpr_if_else(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int else_id: @stmt ref
+);
+
+while_body(
+ unique int while_stmt: @stmt_while ref,
+ int body_id: @stmt ref
+);
+
+do_body(
+ unique int do_stmt: @stmt_end_test_while ref,
+ int body_id: @stmt ref
+);
+
+switch_initialization(
+ unique int switch_stmt: @stmt_switch ref,
+ int init_id: @stmt ref
+);
+
+#keyset[switch_stmt, index]
+switch_case(
+ int switch_stmt: @stmt_switch ref,
+ int index: int ref,
+ int case_id: @stmt_switch_case ref
+);
+
+switch_body(
+ unique int switch_stmt: @stmt_switch ref,
+ int body_id: @stmt ref
+);
+
+@stmt_for_or_range_based_for = @stmt_for
+ | @stmt_range_based_for;
+
+for_initialization(
+ unique int for_stmt: @stmt_for_or_range_based_for ref,
+ int init_id: @stmt ref
+);
+
+for_condition(
+ unique int for_stmt: @stmt_for ref,
+ int condition_id: @expr ref
+);
+
+for_update(
+ unique int for_stmt: @stmt_for ref,
+ int update_id: @expr ref
+);
+
+for_body(
+ unique int for_stmt: @stmt_for ref,
+ int body_id: @stmt ref
+);
+
+@stmtparent = @stmt | @expr_stmt ;
+stmtparents(
+ unique int id: @stmt ref,
+ int index: int ref,
+ int parent: @stmtparent ref
+);
+
+ishandler(unique int block: @stmt_block ref);
+
+@cfgnode = @stmt | @expr | @function | @initialiser ;
+
+stmt_decl_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl: @declaration ref
+);
+
+stmt_decl_entry_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl_entry: @element ref
+);
+
+@functionorblock = @function | @stmt_block;
+
+blockscope(
+ unique int block: @stmt_block ref,
+ int enclosing: @functionorblock ref
+);
+
+@jump = @stmt_goto | @stmt_break | @stmt_continue;
+
+@jumporlabel = @jump | @stmt_label | @literal;
+
+jumpinfo(
+ unique int id: @jumporlabel ref,
+ string str: string ref,
+ int target: @stmt ref
+);
+
+preprocdirects(
+ unique int id: @preprocdirect,
+ int kind: int ref,
+ int location: @location_default ref
+);
+case @preprocdirect.kind of
+ 0 = @ppd_if
+| 1 = @ppd_ifdef
+| 2 = @ppd_ifndef
+| 3 = @ppd_elif
+| 4 = @ppd_else
+| 5 = @ppd_endif
+| 6 = @ppd_plain_include
+| 7 = @ppd_define
+| 8 = @ppd_undef
+| 9 = @ppd_line
+| 10 = @ppd_error
+| 11 = @ppd_pragma
+| 12 = @ppd_objc_import
+| 13 = @ppd_include_next
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif;
+
+preprocpair(
+ int begin : @ppd_branch ref,
+ int elseelifend : @preprocdirect ref
+);
+
+preproctrue(int branch : @ppd_branch ref);
+preprocfalse(int branch : @ppd_branch ref);
+
+preproctext(
+ unique int id: @preprocdirect ref,
+ string head: string ref,
+ string body: string ref
+);
+
+includes(
+ unique int id: @ppd_include ref,
+ int included: @file ref
+);
+
+link_targets(
+ int id: @link_target,
+ int binary: @file ref
+);
+
+link_parent(
+ int element : @element ref,
+ int link_target : @link_target ref
+);
+
+/* XML Files */
+
+xmlEncoding(unique int id: @file ref, string encoding: string ref);
+
+xmlDTDs(
+ unique int id: @xmldtd,
+ string root: string ref,
+ string publicId: string ref,
+ string systemId: string ref,
+ int fileid: @file ref
+);
+
+xmlElements(
+ unique int id: @xmlelement,
+ string name: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlAttrs(
+ unique int id: @xmlattribute,
+ int elementid: @xmlelement ref,
+ string name: string ref,
+ string value: string ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlNs(
+ int id: @xmlnamespace,
+ string prefixName: string ref,
+ string URI: string ref,
+ int fileid: @file ref
+);
+
+xmlHasNs(
+ int elementId: @xmlnamespaceable ref,
+ int nsId: @xmlnamespace ref,
+ int fileid: @file ref
+);
+
+xmlComments(
+ unique int id: @xmlcomment,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int fileid: @file ref
+);
+
+xmlChars(
+ unique int id: @xmlcharacters,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int isCDATA: int ref,
+ int fileid: @file ref
+);
+
+@xmlparent = @file | @xmlelement;
+@xmlnamespaceable = @xmlelement | @xmlattribute;
+
+xmllocations(
+ int xmlElement: @xmllocatable ref,
+ int location: @location_default ref
+);
+
+@xmllocatable = @xmlcharacters
+ | @xmlelement
+ | @xmlcomment
+ | @xmlattribute
+ | @xmldtd
+ | @file
+ | @xmlnamespace;
diff --git a/cpp/downgrades/9629fc87dab7dbed0771bf5ce22bce4d7f943b52/semmlecode.cpp.dbscheme b/cpp/downgrades/9629fc87dab7dbed0771bf5ce22bce4d7f943b52/semmlecode.cpp.dbscheme
new file mode 100644
index 0000000000000..25e365d1e8147
--- /dev/null
+++ b/cpp/downgrades/9629fc87dab7dbed0771bf5ce22bce4d7f943b52/semmlecode.cpp.dbscheme
@@ -0,0 +1,2296 @@
+
+/**
+ * An invocation of the compiler. Note that more than one file may be
+ * compiled per invocation. For example, this command compiles three
+ * source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * The `id` simply identifies the invocation, while `cwd` is the working
+ * directory from which the compiler was invoked.
+ */
+compilations(
+ /**
+ * An invocation of the compiler. Note that more than one file may
+ * be compiled per invocation. For example, this command compiles
+ * three source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ */
+ unique int id : @compilation,
+ string cwd : string ref
+);
+
+/**
+ * The arguments that were passed to the extractor for a compiler
+ * invocation. If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then typically there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | *path to extractor*
+ * 1 | `--mimic`
+ * 2 | `/usr/bin/gcc`
+ * 3 | `-c`
+ * 4 | f1.c
+ * 5 | f2.c
+ * 6 | f3.c
+ */
+#keyset[id, num]
+compilation_args(
+ int id : @compilation ref,
+ int num : int ref,
+ string arg : string ref
+);
+
+/**
+ * The source files that are compiled by a compiler invocation.
+ * If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | f1.c
+ * 1 | f2.c
+ * 2 | f3.c
+ *
+ * Note that even if those files `#include` headers, those headers
+ * do not appear as rows.
+ */
+#keyset[id, num]
+compilation_compiling_files(
+ int id : @compilation ref,
+ int num : int ref,
+ int file : @file ref
+);
+
+/**
+ * The time taken by the extractor for a compiler invocation.
+ *
+ * For each file `num`, there will be rows for
+ *
+ * kind | seconds
+ * ---- | ---
+ * 1 | CPU seconds used by the extractor frontend
+ * 2 | Elapsed seconds during the extractor frontend
+ * 3 | CPU seconds used by the extractor backend
+ * 4 | Elapsed seconds during the extractor backend
+ */
+#keyset[id, num, kind]
+compilation_time(
+ int id : @compilation ref,
+ int num : int ref,
+ /* kind:
+ 1 = frontend_cpu_seconds
+ 2 = frontend_elapsed_seconds
+ 3 = extractor_cpu_seconds
+ 4 = extractor_elapsed_seconds
+ */
+ int kind : int ref,
+ float seconds : float ref
+);
+
+/**
+ * An error or warning generated by the extractor.
+ * The diagnostic message `diagnostic` was generated during compiler
+ * invocation `compilation`, and is the `file_number_diagnostic_number`th
+ * message generated while extracting the `file_number`th file of that
+ * invocation.
+ */
+#keyset[compilation, file_number, file_number_diagnostic_number]
+diagnostic_for(
+ int diagnostic : @diagnostic ref,
+ int compilation : @compilation ref,
+ int file_number : int ref,
+ int file_number_diagnostic_number : int ref
+);
+
+/**
+ * If extraction was successful, then `cpu_seconds` and
+ * `elapsed_seconds` are the CPU time and elapsed time (respectively)
+ * that extraction took for compiler invocation `id`.
+ */
+compilation_finished(
+ unique int id : @compilation ref,
+ float cpu_seconds : float ref,
+ float elapsed_seconds : float ref
+);
+
+
+/**
+ * External data, loaded from CSV files during snapshot creation. See
+ * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data)
+ * for more information.
+ */
+externalData(
+ int id : @externalDataElement,
+ string path : string ref,
+ int column: int ref,
+ string value : string ref
+);
+
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(string prefix : string ref);
+
+/**
+ * Information about packages that provide code used during compilation.
+ * The `id` is just a unique identifier.
+ * The `namespace` is typically the name of the package manager that
+ * provided the package (e.g. "dpkg" or "yum").
+ * The `package_name` is the name of the package, and `version` is its
+ * version (as a string).
+ */
+external_packages(
+ unique int id: @external_package,
+ string namespace : string ref,
+ string package_name : string ref,
+ string version : string ref
+);
+
+/**
+ * Holds if File `fileid` was provided by package `package`.
+ */
+header_to_external_package(
+ int fileid : @file ref,
+ int package : @external_package ref
+);
+
+/*
+ * Version history
+ */
+
+svnentries(
+ unique int id : @svnentry,
+ string revision : string ref,
+ string author : string ref,
+ date revisionDate : date ref,
+ int changeSize : int ref
+)
+
+svnaffectedfiles(
+ int id : @svnentry ref,
+ int file : @file ref,
+ string action : string ref
+)
+
+svnentrymsg(
+ unique int id : @svnentry ref,
+ string message : string ref
+)
+
+svnchurn(
+ int commit : @svnentry ref,
+ int file : @file ref,
+ int addedLines : int ref,
+ int deletedLines : int ref
+)
+
+/*
+ * C++ dbscheme
+ */
+
+extractor_version(
+ string codeql_version: string ref,
+ string frontend_version: string ref
+)
+
+@location = @location_stmt | @location_expr | @location_default ;
+
+/**
+ * The location of an element that is not an expression or a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_default(
+ /** The location of an element that is not an expression or a statement. */
+ unique int id: @location_default,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_stmt(
+ /** The location of a statement. */
+ unique int id: @location_stmt,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of an expression.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_expr(
+ /** The location of an expression. */
+ unique int id: @location_expr,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/** An element for which line-count information is available. */
+@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable;
+
+numlines(
+ int element_id: @sourceline ref,
+ int num_lines: int ref,
+ int num_code: int ref,
+ int num_comment: int ref
+);
+
+diagnostics(
+ unique int id: @diagnostic,
+ int severity: int ref,
+ string error_tag: string ref,
+ string error_message: string ref,
+ string full_error_message: string ref,
+ int location: @location_default ref
+);
+
+files(
+ unique int id: @file,
+ string name: string ref
+);
+
+folders(
+ unique int id: @folder,
+ string name: string ref
+);
+
+@container = @folder | @file
+
+containerparent(
+ int parent: @container ref,
+ unique int child: @container ref
+);
+
+fileannotations(
+ int id: @file ref,
+ int kind: int ref,
+ string name: string ref,
+ string value: string ref
+);
+
+inmacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+affectedbymacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+case @macroinvocation.kind of
+ 1 = @macro_expansion
+| 2 = @other_macro_reference
+;
+
+macroinvocations(
+ unique int id: @macroinvocation,
+ int macro_id: @ppd_define ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+macroparent(
+ unique int id: @macroinvocation ref,
+ int parent_id: @macroinvocation ref
+);
+
+// a macroinvocation may be part of another location
+// the way to find a constant expression that uses a macro
+// is thus to find a constant expression that has a location
+// to which a macro invocation is bound
+macrolocationbind(
+ int id: @macroinvocation ref,
+ int location: @location ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_unexpanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_expanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+/*
+case @function.kind of
+ 1 = @normal_function
+| 2 = @constructor
+| 3 = @destructor
+| 4 = @conversion_function
+| 5 = @operator
+| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk
+| 7 = @user_defined_literal
+| 8 = @deduction_guide
+;
+*/
+
+functions(
+ unique int id: @function,
+ string name: string ref,
+ int kind: int ref
+);
+
+function_entry_point(
+ int id: @function ref,
+ unique int entry_point: @stmt ref
+);
+
+function_return_type(
+ int id: @function ref,
+ int return_type: @type ref
+);
+
+/**
+ * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits`
+ * instance associated with it, and the variables representing the `handle` and `promise`
+ * for it.
+ */
+coroutine(
+ unique int function: @function ref,
+ int traits: @type ref,
+ int handle: @variable ref,
+ int promise: @variable ref
+);
+
+/** The `new` function used for allocating the coroutine state, if any. */
+coroutine_new(
+ unique int function: @function ref,
+ int new: @function ref
+);
+
+/** The `delete` function used for deallocating the coroutine state, if any. */
+coroutine_delete(
+ unique int function: @function ref,
+ int delete: @function ref
+);
+
+purefunctions(unique int id: @function ref);
+
+function_deleted(unique int id: @function ref);
+
+function_defaulted(unique int id: @function ref);
+
+function_prototyped(unique int id: @function ref)
+
+member_function_this_type(
+ unique int id: @function ref,
+ int this_type: @type ref
+);
+
+#keyset[id, type_id]
+fun_decls(
+ int id: @fun_decl,
+ int function: @function ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+fun_def(unique int id: @fun_decl ref);
+fun_specialized(unique int id: @fun_decl ref);
+fun_implicit(unique int id: @fun_decl ref);
+fun_decl_specifiers(
+ int id: @fun_decl ref,
+ string name: string ref
+)
+#keyset[fun_decl, index]
+fun_decl_throws(
+ int fun_decl: @fun_decl ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+/* an empty throw specification is different from none */
+fun_decl_empty_throws(unique int fun_decl: @fun_decl ref);
+fun_decl_noexcept(
+ int fun_decl: @fun_decl ref,
+ int constant: @expr ref
+);
+fun_decl_empty_noexcept(int fun_decl: @fun_decl ref);
+fun_decl_typedef_type(
+ unique int fun_decl: @fun_decl ref,
+ int typedeftype_id: @usertype ref
+);
+
+param_decl_bind(
+ unique int id: @var_decl ref,
+ int index: int ref,
+ int fun_decl: @fun_decl ref
+);
+
+#keyset[id, type_id]
+var_decls(
+ int id: @var_decl,
+ int variable: @variable ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+var_def(unique int id: @var_decl ref);
+var_decl_specifiers(
+ int id: @var_decl ref,
+ string name: string ref
+)
+is_structured_binding(unique int id: @variable ref);
+
+type_decls(
+ unique int id: @type_decl,
+ int type_id: @type ref,
+ int location: @location_default ref
+);
+type_def(unique int id: @type_decl ref);
+type_decl_top(
+ unique int type_decl: @type_decl ref
+);
+
+namespace_decls(
+ unique int id: @namespace_decl,
+ int namespace_id: @namespace ref,
+ int location: @location_default ref,
+ int bodylocation: @location_default ref
+);
+
+case @using.kind of
+ 1 = @using_declaration
+| 2 = @using_directive
+| 3 = @using_enum_declaration
+;
+
+usings(
+ unique int id: @using,
+ int element_id: @element ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+/** The element which contains the `using` declaration. */
+using_container(
+ int parent: @element ref,
+ int child: @using ref
+);
+
+static_asserts(
+ unique int id: @static_assert,
+ int condition : @expr ref,
+ string message : string ref,
+ int location: @location_default ref,
+ int enclosing : @element ref
+);
+
+// each function has an ordered list of parameters
+#keyset[id, type_id]
+#keyset[function, index, type_id]
+params(
+ int id: @parameter,
+ int function: @functionorblock ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+overrides(
+ int new: @function ref,
+ int old: @function ref
+);
+
+#keyset[id, type_id]
+membervariables(
+ int id: @membervariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+globalvariables(
+ int id: @globalvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+localvariables(
+ int id: @localvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+autoderivation(
+ unique int var: @variable ref,
+ int derivation_type: @type ref
+);
+
+orphaned_variables(
+ int var: @localvariable ref,
+ int function: @function ref
+)
+
+enumconstants(
+ unique int id: @enumconstant,
+ int parent: @usertype ref,
+ int index: int ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+
+@variable = @localscopevariable | @globalvariable | @membervariable;
+
+@localscopevariable = @localvariable | @parameter;
+
+/**
+ * Built-in types are the fundamental types, e.g., integral, floating, and void.
+ */
+case @builtintype.kind of
+ 1 = @errortype
+| 2 = @unknowntype
+| 3 = @void
+| 4 = @boolean
+| 5 = @char
+| 6 = @unsigned_char
+| 7 = @signed_char
+| 8 = @short
+| 9 = @unsigned_short
+| 10 = @signed_short
+| 11 = @int
+| 12 = @unsigned_int
+| 13 = @signed_int
+| 14 = @long
+| 15 = @unsigned_long
+| 16 = @signed_long
+| 17 = @long_long
+| 18 = @unsigned_long_long
+| 19 = @signed_long_long
+// ... 20 Microsoft-specific __int8
+// ... 21 Microsoft-specific __int16
+// ... 22 Microsoft-specific __int32
+// ... 23 Microsoft-specific __int64
+| 24 = @float
+| 25 = @double
+| 26 = @long_double
+| 27 = @complex_float // C99-specific _Complex float
+| 28 = @complex_double // C99-specific _Complex double
+| 29 = @complex_long_double // C99-specific _Complex long double
+| 30 = @imaginary_float // C99-specific _Imaginary float
+| 31 = @imaginary_double // C99-specific _Imaginary double
+| 32 = @imaginary_long_double // C99-specific _Imaginary long double
+| 33 = @wchar_t // Microsoft-specific
+| 34 = @decltype_nullptr // C++11
+| 35 = @int128 // __int128
+| 36 = @unsigned_int128 // unsigned __int128
+| 37 = @signed_int128 // signed __int128
+| 38 = @float128 // __float128
+| 39 = @complex_float128 // _Complex __float128
+| 40 = @decimal32 // _Decimal32
+| 41 = @decimal64 // _Decimal64
+| 42 = @decimal128 // _Decimal128
+| 43 = @char16_t
+| 44 = @char32_t
+| 45 = @std_float32 // _Float32
+| 46 = @float32x // _Float32x
+| 47 = @std_float64 // _Float64
+| 48 = @float64x // _Float64x
+| 49 = @std_float128 // _Float128
+// ... 50 _Float128x
+| 51 = @char8_t
+| 52 = @float16 // _Float16
+| 53 = @complex_float16 // _Complex _Float16
+| 54 = @fp16 // __fp16
+| 55 = @std_bfloat16 // __bf16
+| 56 = @std_float16 // std::float16_t
+| 57 = @complex_std_float32 // _Complex _Float32
+| 58 = @complex_float32x // _Complex _Float32x
+| 59 = @complex_std_float64 // _Complex _Float64
+| 60 = @complex_float64x // _Complex _Float64x
+| 61 = @complex_std_float128 // _Complex _Float128
+;
+
+builtintypes(
+ unique int id: @builtintype,
+ string name: string ref,
+ int kind: int ref,
+ int size: int ref,
+ int sign: int ref,
+ int alignment: int ref
+);
+
+/**
+ * Derived types are types that are directly derived from existing types and
+ * point to, refer to, transform type data to return a new type.
+ */
+case @derivedtype.kind of
+ 1 = @pointer
+| 2 = @reference
+| 3 = @type_with_specifiers
+| 4 = @array
+| 5 = @gnu_vector
+| 6 = @routineptr
+| 7 = @routinereference
+| 8 = @rvalue_reference // C++11
+// ... 9 type_conforming_to_protocols deprecated
+| 10 = @block
+;
+
+derivedtypes(
+ unique int id: @derivedtype,
+ string name: string ref,
+ int kind: int ref,
+ int type_id: @type ref
+);
+
+pointerishsize(unique int id: @derivedtype ref,
+ int size: int ref,
+ int alignment: int ref);
+
+arraysizes(
+ unique int id: @derivedtype ref,
+ int num_elements: int ref,
+ int bytesize: int ref,
+ int alignment: int ref
+);
+
+typedefbase(
+ unique int id: @usertype ref,
+ int type_id: @type ref
+);
+
+/**
+ * An instance of the C++11 `decltype` operator. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * would change the semantics of this decltype, e.g.
+ * ```
+ * struct A { double x; };
+ * const A* a = new A();
+ * decltype( a->x ); // type is double
+ * decltype((a->x)); // type is const double&
+ * ```
+ * (Please consult the C++11 standard for more details).
+ * `parentheses_would_change_meaning` is `true` iff that is the case.
+ */
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @usertype.kind of
+ 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+| 5 = @typedef // classic C: typedef typedef type name
+| 6 = @template
+| 7 = @template_parameter
+| 8 = @template_template_parameter
+| 9 = @proxy_class // a proxy class associated with a template parameter
+// ... 10 objc_class deprecated
+// ... 11 objc_protocol deprecated
+// ... 12 objc_category deprecated
+| 13 = @scoped_enum
+| 14 = @using_alias // a using name = type style typedef
+;
+*/
+
+usertypes(
+ unique int id: @usertype,
+ string name: string ref,
+ int kind: int ref
+);
+
+usertypesize(
+ unique int id: @usertype ref,
+ int size: int ref,
+ int alignment: int ref
+);
+
+usertype_final(unique int id: @usertype ref);
+
+usertype_uuid(
+ unique int id: @usertype ref,
+ string uuid: string ref
+);
+
+mangled_name(
+ unique int id: @declaration ref,
+ int mangled_name : @mangledname,
+ boolean is_complete: boolean ref
+);
+
+is_pod_class(unique int id: @usertype ref);
+is_standard_layout_class(unique int id: @usertype ref);
+
+is_complete(unique int id: @usertype ref);
+
+is_class_template(unique int id: @usertype ref);
+class_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+class_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+class_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ unique int templ_param_id: @usertype ref
+);
+
+type_mentions(
+ unique int id: @type_mention,
+ int type_id: @type ref,
+ int location: @location ref,
+ // a_symbol_reference_kind from the frontend.
+ int kind: int ref
+);
+
+is_function_template(unique int id: @function ref);
+function_instantiation(
+ unique int to: @function ref,
+ int from: @function ref
+);
+function_template_argument(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+function_template_argument_value(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_variable_template(unique int id: @variable ref);
+variable_instantiation(
+ unique int to: @variable ref,
+ int from: @variable ref
+);
+variable_template_argument(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+variable_template_argument_value(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+/*
+ Fixed point types
+ precision(1) = short, precision(2) = default, precision(3) = long
+ is_unsigned(1) = unsigned is_unsigned(2) = signed
+ is_fract_type(1) = declared with _Fract
+ saturating(1) = declared with _Sat
+*/
+/* TODO
+fixedpointtypes(
+ unique int id: @fixedpointtype,
+ int precision: int ref,
+ int is_unsigned: int ref,
+ int is_fract_type: int ref,
+ int saturating: int ref);
+*/
+
+routinetypes(
+ unique int id: @routinetype,
+ int return_type: @type ref
+);
+
+routinetypeargs(
+ int routine: @routinetype ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+ptrtomembers(
+ unique int id: @ptrtomember,
+ int type_id: @type ref,
+ int class_id: @type ref
+);
+
+/*
+ specifiers for types, functions, and variables
+
+ "public",
+ "protected",
+ "private",
+
+ "const",
+ "volatile",
+ "static",
+
+ "pure",
+ "virtual",
+ "sealed", // Microsoft
+ "__interface", // Microsoft
+ "inline",
+ "explicit",
+
+ "near", // near far extension
+ "far", // near far extension
+ "__ptr32", // Microsoft
+ "__ptr64", // Microsoft
+ "__sptr", // Microsoft
+ "__uptr", // Microsoft
+ "dllimport", // Microsoft
+ "dllexport", // Microsoft
+ "thread", // Microsoft
+ "naked", // Microsoft
+ "microsoft_inline", // Microsoft
+ "forceinline", // Microsoft
+ "selectany", // Microsoft
+ "nothrow", // Microsoft
+ "novtable", // Microsoft
+ "noreturn", // Microsoft
+ "noinline", // Microsoft
+ "noalias", // Microsoft
+ "restrict", // Microsoft
+*/
+
+specifiers(
+ unique int id: @specifier,
+ unique string str: string ref
+);
+
+typespecifiers(
+ int type_id: @type ref,
+ int spec_id: @specifier ref
+);
+
+funspecifiers(
+ int func_id: @function ref,
+ int spec_id: @specifier ref
+);
+
+varspecifiers(
+ int var_id: @accessible ref,
+ int spec_id: @specifier ref
+);
+
+attributes(
+ unique int id: @attribute,
+ int kind: int ref,
+ string name: string ref,
+ string name_space: string ref,
+ int location: @location_default ref
+);
+
+case @attribute.kind of
+ 0 = @gnuattribute
+| 1 = @stdattribute
+| 2 = @declspec
+| 3 = @msattribute
+| 4 = @alignas
+// ... 5 @objc_propertyattribute deprecated
+;
+
+attribute_args(
+ unique int id: @attribute_arg,
+ int kind: int ref,
+ int attribute: @attribute ref,
+ int index: int ref,
+ int location: @location_default ref
+);
+
+case @attribute_arg.kind of
+ 0 = @attribute_arg_empty
+| 1 = @attribute_arg_token
+| 2 = @attribute_arg_constant
+| 3 = @attribute_arg_type
+| 4 = @attribute_arg_constant_expr
+| 5 = @attribute_arg_expr
+;
+
+attribute_arg_value(
+ unique int arg: @attribute_arg ref,
+ string value: string ref
+);
+attribute_arg_type(
+ unique int arg: @attribute_arg ref,
+ int type_id: @type ref
+);
+attribute_arg_constant(
+ unique int arg: @attribute_arg ref,
+ int constant: @expr ref
+)
+attribute_arg_expr(
+ unique int arg: @attribute_arg ref,
+ int expr: @expr ref
+)
+attribute_arg_name(
+ unique int arg: @attribute_arg ref,
+ string name: string ref
+);
+
+typeattributes(
+ int type_id: @type ref,
+ int spec_id: @attribute ref
+);
+
+funcattributes(
+ int func_id: @function ref,
+ int spec_id: @attribute ref
+);
+
+varattributes(
+ int var_id: @accessible ref,
+ int spec_id: @attribute ref
+);
+
+stmtattributes(
+ int stmt_id: @stmt ref,
+ int spec_id: @attribute ref
+);
+
+@type = @builtintype
+ | @derivedtype
+ | @usertype
+ /* TODO | @fixedpointtype */
+ | @routinetype
+ | @ptrtomember
+ | @decltype;
+
+unspecifiedtype(
+ unique int type_id: @type ref,
+ int unspecified_type_id: @type ref
+);
+
+member(
+ int parent: @type ref,
+ int index: int ref,
+ int child: @member ref
+);
+
+@enclosingfunction_child = @usertype | @variable | @namespace
+
+enclosingfunction(
+ unique int child: @enclosingfunction_child ref,
+ int parent: @function ref
+);
+
+derivations(
+ unique int derivation: @derivation,
+ int sub: @type ref,
+ int index: int ref,
+ int super: @type ref,
+ int location: @location_default ref
+);
+
+derspecifiers(
+ int der_id: @derivation ref,
+ int spec_id: @specifier ref
+);
+
+/**
+ * Contains the byte offset of the base class subobject within the derived
+ * class. Only holds for non-virtual base classes, but see table
+ * `virtual_base_offsets` for offsets of virtual base class subobjects.
+ */
+direct_base_offsets(
+ unique int der_id: @derivation ref,
+ int offset: int ref
+);
+
+/**
+ * Contains the byte offset of the virtual base class subobject for class
+ * `super` within a most-derived object of class `sub`. `super` can be either a
+ * direct or indirect base class.
+ */
+#keyset[sub, super]
+virtual_base_offsets(
+ int sub: @usertype ref,
+ int super: @usertype ref,
+ int offset: int ref
+);
+
+frienddecls(
+ unique int id: @frienddecl,
+ int type_id: @type ref,
+ int decl_id: @declaration ref,
+ int location: @location_default ref
+);
+
+@declaredtype = @usertype ;
+
+@declaration = @function
+ | @declaredtype
+ | @variable
+ | @enumconstant
+ | @frienddecl;
+
+@member = @membervariable
+ | @function
+ | @declaredtype
+ | @enumconstant;
+
+@locatable = @diagnostic
+ | @declaration
+ | @ppd_include
+ | @ppd_define
+ | @macroinvocation
+ /*| @funcall*/
+ | @xmllocatable
+ | @attribute
+ | @attribute_arg;
+
+@namedscope = @namespace | @usertype;
+
+@element = @locatable
+ | @file
+ | @folder
+ | @specifier
+ | @type
+ | @expr
+ | @namespace
+ | @initialiser
+ | @stmt
+ | @derivation
+ | @comment
+ | @preprocdirect
+ | @fun_decl
+ | @var_decl
+ | @type_decl
+ | @namespace_decl
+ | @using
+ | @namequalifier
+ | @specialnamequalifyingelement
+ | @static_assert
+ | @type_mention
+ | @lambdacapture;
+
+@exprparent = @element;
+
+comments(
+ unique int id: @comment,
+ string contents: string ref,
+ int location: @location_default ref
+);
+
+commentbinding(
+ int id: @comment ref,
+ int element: @element ref
+);
+
+exprconv(
+ int converted: @expr ref,
+ unique int conversion: @expr ref
+);
+
+compgenerated(unique int id: @element ref);
+
+/**
+ * `destructor_call` destructs the `i`'th entity that should be
+ * destructed following `element`. Note that entities should be
+ * destructed in reverse construction order, so for a given `element`
+ * these should be called from highest to lowest `i`.
+ */
+#keyset[element, destructor_call]
+#keyset[element, i]
+synthetic_destructor_call(
+ int element: @element ref,
+ int i: int ref,
+ int destructor_call: @routineexpr ref
+);
+
+namespaces(
+ unique int id: @namespace,
+ string name: string ref
+);
+
+namespace_inline(
+ unique int id: @namespace ref
+);
+
+namespacembrs(
+ int parentid: @namespace ref,
+ unique int memberid: @namespacembr ref
+);
+
+@namespacembr = @declaration | @namespace;
+
+exprparents(
+ int expr_id: @expr ref,
+ int child_index: int ref,
+ int parent_id: @exprparent ref
+);
+
+expr_isload(unique int expr_id: @expr ref);
+
+@cast = @c_style_cast
+ | @const_cast
+ | @dynamic_cast
+ | @reinterpret_cast
+ | @static_cast
+ ;
+
+/*
+case @conversion.kind of
+ 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast
+| 1 = @bool_conversion // conversion to 'bool'
+| 2 = @base_class_conversion // a derived-to-base conversion
+| 3 = @derived_class_conversion // a base-to-derived conversion
+| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member
+| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member
+| 6 = @glvalue_adjust // an adjustment of the type of a glvalue
+| 7 = @prvalue_adjust // an adjustment of the type of a prvalue
+;
+*/
+/**
+ * Describes the semantics represented by a cast expression. This is largely
+ * independent of the source syntax of the cast, so it is separate from the
+ * regular expression kind.
+ */
+conversionkinds(
+ unique int expr_id: @cast ref,
+ int kind: int ref
+);
+
+@conversion = @cast
+ | @array_to_pointer
+ | @parexpr
+ | @reference_to
+ | @ref_indirect
+ | @temp_init
+ ;
+
+/*
+case @funbindexpr.kind of
+ 0 = @normal_call // a normal call
+| 1 = @virtual_call // a virtual call
+| 2 = @adl_call // a call whose target is only found by ADL
+;
+*/
+iscall(
+ unique int caller: @funbindexpr ref,
+ int kind: int ref
+);
+
+numtemplatearguments(
+ unique int expr_id: @expr ref,
+ int num: int ref
+);
+
+specialnamequalifyingelements(
+ unique int id: @specialnamequalifyingelement,
+ unique string name: string ref
+);
+
+@namequalifiableelement = @expr | @namequalifier;
+@namequalifyingelement = @namespace
+ | @specialnamequalifyingelement
+ | @usertype;
+
+namequalifiers(
+ unique int id: @namequalifier,
+ unique int qualifiableelement: @namequalifiableelement ref,
+ int qualifyingelement: @namequalifyingelement ref,
+ int location: @location_default ref
+);
+
+varbind(
+ int expr: @varbindexpr ref,
+ int var: @accessible ref
+);
+
+funbind(
+ int expr: @funbindexpr ref,
+ int fun: @function ref
+);
+
+@any_new_expr = @new_expr
+ | @new_array_expr;
+
+@new_or_delete_expr = @any_new_expr
+ | @delete_expr
+ | @delete_array_expr;
+
+@prefix_crement_expr = @preincrexpr | @predecrexpr;
+
+@postfix_crement_expr = @postincrexpr | @postdecrexpr;
+
+@increment_expr = @preincrexpr | @postincrexpr;
+
+@decrement_expr = @predecrexpr | @postdecrexpr;
+
+@crement_expr = @increment_expr | @decrement_expr;
+
+@un_arith_op_expr = @arithnegexpr
+ | @unaryplusexpr
+ | @conjugation
+ | @realpartexpr
+ | @imagpartexpr
+ | @crement_expr
+ ;
+
+@un_bitwise_op_expr = @complementexpr;
+
+@un_log_op_expr = @notexpr;
+
+@un_op_expr = @address_of
+ | @indirect
+ | @un_arith_op_expr
+ | @un_bitwise_op_expr
+ | @builtinaddressof
+ | @vec_fill
+ | @un_log_op_expr
+ | @co_await
+ | @co_yield
+ ;
+
+@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr;
+
+@cmp_op_expr = @eq_op_expr | @rel_op_expr;
+
+@eq_op_expr = @eqexpr | @neexpr;
+
+@rel_op_expr = @gtexpr
+ | @ltexpr
+ | @geexpr
+ | @leexpr
+ | @spaceshipexpr
+ ;
+
+@bin_bitwise_op_expr = @lshiftexpr
+ | @rshiftexpr
+ | @andexpr
+ | @orexpr
+ | @xorexpr
+ ;
+
+@p_arith_op_expr = @paddexpr
+ | @psubexpr
+ | @pdiffexpr
+ ;
+
+@bin_arith_op_expr = @addexpr
+ | @subexpr
+ | @mulexpr
+ | @divexpr
+ | @remexpr
+ | @jmulexpr
+ | @jdivexpr
+ | @fjaddexpr
+ | @jfaddexpr
+ | @fjsubexpr
+ | @jfsubexpr
+ | @minexpr
+ | @maxexpr
+ | @p_arith_op_expr
+ ;
+
+@bin_op_expr = @bin_arith_op_expr
+ | @bin_bitwise_op_expr
+ | @cmp_op_expr
+ | @bin_log_op_expr
+ ;
+
+@op_expr = @un_op_expr
+ | @bin_op_expr
+ | @assign_expr
+ | @conditionalexpr
+ ;
+
+@assign_arith_expr = @assignaddexpr
+ | @assignsubexpr
+ | @assignmulexpr
+ | @assigndivexpr
+ | @assignremexpr
+ ;
+
+@assign_bitwise_expr = @assignandexpr
+ | @assignorexpr
+ | @assignxorexpr
+ | @assignlshiftexpr
+ | @assignrshiftexpr
+ ;
+
+@assign_pointer_expr = @assignpaddexpr
+ | @assignpsubexpr
+ ;
+
+@assign_op_expr = @assign_arith_expr
+ | @assign_bitwise_expr
+ | @assign_pointer_expr
+ ;
+
+@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr
+
+/*
+ case @allocator.form of
+ 0 = plain
+ | 1 = alignment
+ ;
+*/
+
+/**
+ * The allocator function associated with a `new` or `new[]` expression.
+ * The `form` column specified whether the allocation call contains an alignment
+ * argument.
+ */
+expr_allocator(
+ unique int expr: @any_new_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/*
+ case @deallocator.form of
+ 0 = plain
+ | 1 = size
+ | 2 = alignment
+ | 3 = size_and_alignment
+ ;
+*/
+
+/**
+ * The deallocator function associated with a `delete`, `delete[]`, `new`, or
+ * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the
+ * one used to free memory if the initialization throws an exception.
+ * The `form` column specifies whether the deallocation call contains a size
+ * argument, and alignment argument, or both.
+ */
+expr_deallocator(
+ unique int expr: @new_or_delete_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/**
+ * Holds if the `@conditionalexpr` is of the two operand form
+ * `guard ? : false`.
+ */
+expr_cond_two_operand(
+ unique int cond: @conditionalexpr ref
+);
+
+/**
+ * The guard of `@conditionalexpr` `guard ? true : false`
+ */
+expr_cond_guard(
+ unique int cond: @conditionalexpr ref,
+ int guard: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` holds. For the two operand form
+ * `guard ?: false` consider using `expr_cond_guard` instead.
+ */
+expr_cond_true(
+ unique int cond: @conditionalexpr ref,
+ int true: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` does not hold.
+ */
+expr_cond_false(
+ unique int cond: @conditionalexpr ref,
+ int false: @expr ref
+);
+
+/** A string representation of the value. */
+values(
+ unique int id: @value,
+ string str: string ref
+);
+
+/** The actual text in the source code for the value, if any. */
+valuetext(
+ unique int id: @value ref,
+ string text: string ref
+);
+
+valuebind(
+ int val: @value ref,
+ unique int expr: @expr ref
+);
+
+fieldoffsets(
+ unique int id: @variable ref,
+ int byteoffset: int ref,
+ int bitoffset: int ref
+);
+
+bitfield(
+ unique int id: @variable ref,
+ int bits: int ref,
+ int declared_bits: int ref
+);
+
+/* TODO
+memberprefix(
+ int member: @expr ref,
+ int prefix: @expr ref
+);
+*/
+
+/*
+ kind(1) = mbrcallexpr
+ kind(2) = mbrptrcallexpr
+ kind(3) = mbrptrmbrcallexpr
+ kind(4) = ptrmbrptrmbrcallexpr
+ kind(5) = mbrreadexpr // x.y
+ kind(6) = mbrptrreadexpr // p->y
+ kind(7) = mbrptrmbrreadexpr // x.*pm
+ kind(8) = mbrptrmbrptrreadexpr // x->*pm
+ kind(9) = staticmbrreadexpr // static x.y
+ kind(10) = staticmbrptrreadexpr // static p->y
+*/
+/* TODO
+memberaccess(
+ int member: @expr ref,
+ int kind: int ref
+);
+*/
+
+initialisers(
+ unique int init: @initialiser,
+ int var: @accessible ref,
+ unique int expr: @expr ref,
+ int location: @location_expr ref
+);
+
+braced_initialisers(
+ int init: @initialiser ref
+);
+
+/**
+ * An ancestor for the expression, for cases in which we cannot
+ * otherwise find the expression's parent.
+ */
+expr_ancestor(
+ int exp: @expr ref,
+ int ancestor: @element ref
+);
+
+exprs(
+ unique int id: @expr,
+ int kind: int ref,
+ int location: @location_expr ref
+);
+
+expr_reuse(
+ int reuse: @expr ref,
+ int original: @expr ref,
+ int value_category: int ref
+)
+
+/*
+ case @value.category of
+ 1 = prval
+ | 2 = xval
+ | 3 = lval
+ ;
+*/
+expr_types(
+ int id: @expr ref,
+ int typeid: @type ref,
+ int value_category: int ref
+);
+
+case @expr.kind of
+ 1 = @errorexpr
+| 2 = @address_of // & AddressOfExpr
+| 3 = @reference_to // ReferenceToExpr (implicit?)
+| 4 = @indirect // * PointerDereferenceExpr
+| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?)
+// ...
+| 8 = @array_to_pointer // (???)
+| 9 = @vacuous_destructor_call // VacuousDestructorCall
+// ...
+| 11 = @assume // Microsoft
+| 12 = @parexpr
+| 13 = @arithnegexpr
+| 14 = @unaryplusexpr
+| 15 = @complementexpr
+| 16 = @notexpr
+| 17 = @conjugation // GNU ~ operator
+| 18 = @realpartexpr // GNU __real
+| 19 = @imagpartexpr // GNU __imag
+| 20 = @postincrexpr
+| 21 = @postdecrexpr
+| 22 = @preincrexpr
+| 23 = @predecrexpr
+| 24 = @conditionalexpr
+| 25 = @addexpr
+| 26 = @subexpr
+| 27 = @mulexpr
+| 28 = @divexpr
+| 29 = @remexpr
+| 30 = @jmulexpr // C99 mul imaginary
+| 31 = @jdivexpr // C99 div imaginary
+| 32 = @fjaddexpr // C99 add real + imaginary
+| 33 = @jfaddexpr // C99 add imaginary + real
+| 34 = @fjsubexpr // C99 sub real - imaginary
+| 35 = @jfsubexpr // C99 sub imaginary - real
+| 36 = @paddexpr // pointer add (pointer + int or int + pointer)
+| 37 = @psubexpr // pointer sub (pointer - integer)
+| 38 = @pdiffexpr // difference between two pointers
+| 39 = @lshiftexpr
+| 40 = @rshiftexpr
+| 41 = @andexpr
+| 42 = @orexpr
+| 43 = @xorexpr
+| 44 = @eqexpr
+| 45 = @neexpr
+| 46 = @gtexpr
+| 47 = @ltexpr
+| 48 = @geexpr
+| 49 = @leexpr
+| 50 = @minexpr // GNU minimum
+| 51 = @maxexpr // GNU maximum
+| 52 = @assignexpr
+| 53 = @assignaddexpr
+| 54 = @assignsubexpr
+| 55 = @assignmulexpr
+| 56 = @assigndivexpr
+| 57 = @assignremexpr
+| 58 = @assignlshiftexpr
+| 59 = @assignrshiftexpr
+| 60 = @assignandexpr
+| 61 = @assignorexpr
+| 62 = @assignxorexpr
+| 63 = @assignpaddexpr // assign pointer add
+| 64 = @assignpsubexpr // assign pointer sub
+| 65 = @andlogicalexpr
+| 66 = @orlogicalexpr
+| 67 = @commaexpr
+| 68 = @subscriptexpr // access to member of an array, e.g., a[5]
+// ... 69 @objc_subscriptexpr deprecated
+// ... 70 @cmdaccess deprecated
+// ...
+| 73 = @virtfunptrexpr
+| 74 = @callexpr
+// ... 75 @msgexpr_normal deprecated
+// ... 76 @msgexpr_super deprecated
+// ... 77 @atselectorexpr deprecated
+// ... 78 @atprotocolexpr deprecated
+| 79 = @vastartexpr
+| 80 = @vaargexpr
+| 81 = @vaendexpr
+| 82 = @vacopyexpr
+// ... 83 @atencodeexpr deprecated
+| 84 = @varaccess
+| 85 = @thisaccess
+// ... 86 @objc_box_expr deprecated
+| 87 = @new_expr
+| 88 = @delete_expr
+| 89 = @throw_expr
+| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2)
+| 91 = @braced_init_list
+| 92 = @type_id
+| 93 = @runtime_sizeof
+| 94 = @runtime_alignof
+| 95 = @sizeof_pack
+| 96 = @expr_stmt // GNU extension
+| 97 = @routineexpr
+| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....)
+| 99 = @offsetofexpr // offsetof ::= type and field
+| 100 = @hasassignexpr // __has_assign ::= type
+| 101 = @hascopyexpr // __has_copy ::= type
+| 102 = @hasnothrowassign // __has_nothrow_assign ::= type
+| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type
+| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type
+| 105 = @hastrivialassign // __has_trivial_assign ::= type
+| 106 = @hastrivialconstr // __has_trivial_constructor ::= type
+| 107 = @hastrivialcopy // __has_trivial_copy ::= type
+| 108 = @hasuserdestr // __has_user_destructor ::= type
+| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type
+| 110 = @isabstractexpr // __is_abstract ::= type
+| 111 = @isbaseofexpr // __is_base_of ::= type type
+| 112 = @isclassexpr // __is_class ::= type
+| 113 = @isconvtoexpr // __is_convertible_to ::= type type
+| 114 = @isemptyexpr // __is_empty ::= type
+| 115 = @isenumexpr // __is_enum ::= type
+| 116 = @ispodexpr // __is_pod ::= type
+| 117 = @ispolyexpr // __is_polymorphic ::= type
+| 118 = @isunionexpr // __is_union ::= type
+| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type
+| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof
+// ...
+| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type
+| 123 = @literal
+| 124 = @uuidof
+| 127 = @aggregateliteral
+| 128 = @delete_array_expr
+| 129 = @new_array_expr
+// ... 130 @objc_array_literal deprecated
+// ... 131 @objc_dictionary_literal deprecated
+| 132 = @foldexpr
+// ...
+| 200 = @ctordirectinit
+| 201 = @ctorvirtualinit
+| 202 = @ctorfieldinit
+| 203 = @ctordelegatinginit
+| 204 = @dtordirectdestruct
+| 205 = @dtorvirtualdestruct
+| 206 = @dtorfielddestruct
+// ...
+| 210 = @static_cast
+| 211 = @reinterpret_cast
+| 212 = @const_cast
+| 213 = @dynamic_cast
+| 214 = @c_style_cast
+| 215 = @lambdaexpr
+| 216 = @param_ref
+| 217 = @noopexpr
+// ...
+| 294 = @istriviallyconstructibleexpr
+| 295 = @isdestructibleexpr
+| 296 = @isnothrowdestructibleexpr
+| 297 = @istriviallydestructibleexpr
+| 298 = @istriviallyassignableexpr
+| 299 = @isnothrowassignableexpr
+| 300 = @istrivialexpr
+| 301 = @isstandardlayoutexpr
+| 302 = @istriviallycopyableexpr
+| 303 = @isliteraltypeexpr
+| 304 = @hastrivialmoveconstructorexpr
+| 305 = @hastrivialmoveassignexpr
+| 306 = @hasnothrowmoveassignexpr
+| 307 = @isconstructibleexpr
+| 308 = @isnothrowconstructibleexpr
+| 309 = @hasfinalizerexpr
+| 310 = @isdelegateexpr
+| 311 = @isinterfaceclassexpr
+| 312 = @isrefarrayexpr
+| 313 = @isrefclassexpr
+| 314 = @issealedexpr
+| 315 = @issimplevalueclassexpr
+| 316 = @isvalueclassexpr
+| 317 = @isfinalexpr
+| 319 = @noexceptexpr
+| 320 = @builtinshufflevector
+| 321 = @builtinchooseexpr
+| 322 = @builtinaddressof
+| 323 = @vec_fill
+| 324 = @builtinconvertvector
+| 325 = @builtincomplex
+| 326 = @spaceshipexpr
+| 327 = @co_await
+| 328 = @co_yield
+| 329 = @temp_init
+| 330 = @isassignable
+| 331 = @isaggregate
+| 332 = @hasuniqueobjectrepresentations
+| 333 = @builtinbitcast
+| 334 = @builtinshuffle
+| 335 = @blockassignexpr
+| 336 = @issame
+| 337 = @isfunction
+| 338 = @islayoutcompatible
+| 339 = @ispointerinterconvertiblebaseof
+| 340 = @isarray
+| 341 = @arrayrank
+| 342 = @arrayextent
+| 343 = @isarithmetic
+| 344 = @iscompletetype
+| 345 = @iscompound
+| 346 = @isconst
+| 347 = @isfloatingpoint
+| 348 = @isfundamental
+| 349 = @isintegral
+| 350 = @islvaluereference
+| 351 = @ismemberfunctionpointer
+| 352 = @ismemberobjectpointer
+| 353 = @ismemberpointer
+| 354 = @isobject
+| 355 = @ispointer
+| 356 = @isreference
+| 357 = @isrvaluereference
+| 358 = @isscalar
+| 359 = @issigned
+| 360 = @isunsigned
+| 361 = @isvoid
+| 362 = @isvolatile
+| 363 = @reuseexpr
+| 364 = @istriviallycopyassignable
+| 365 = @isassignablenopreconditioncheck
+| 366 = @referencebindstotemporary
+| 367 = @issameas
+| 368 = @builtinhasattribute
+| 369 = @ispointerinterconvertiblewithclass
+| 370 = @builtinispointerinterconvertiblewithclass
+| 371 = @iscorrespondingmember
+| 372 = @builtiniscorrespondingmember
+| 373 = @isboundedarray
+| 374 = @isunboundedarray
+| 375 = @isreferenceable
+| 378 = @isnothrowconvertible
+| 379 = @referenceconstructsfromtemporary
+| 380 = @referenceconvertsfromtemporary
+| 381 = @isconvertible
+| 382 = @isvalidwinrttype
+| 383 = @iswinclass
+| 384 = @iswininterface
+;
+
+@var_args_expr = @vastartexpr
+ | @vaendexpr
+ | @vaargexpr
+ | @vacopyexpr
+ ;
+
+@builtin_op = @var_args_expr
+ | @noopexpr
+ | @offsetofexpr
+ | @intaddrexpr
+ | @hasassignexpr
+ | @hascopyexpr
+ | @hasnothrowassign
+ | @hasnothrowconstr
+ | @hasnothrowcopy
+ | @hastrivialassign
+ | @hastrivialconstr
+ | @hastrivialcopy
+ | @hastrivialdestructor
+ | @hasuserdestr
+ | @hasvirtualdestr
+ | @isabstractexpr
+ | @isbaseofexpr
+ | @isclassexpr
+ | @isconvtoexpr
+ | @isemptyexpr
+ | @isenumexpr
+ | @ispodexpr
+ | @ispolyexpr
+ | @isunionexpr
+ | @typescompexpr
+ | @builtinshufflevector
+ | @builtinconvertvector
+ | @builtinaddressof
+ | @istriviallyconstructibleexpr
+ | @isdestructibleexpr
+ | @isnothrowdestructibleexpr
+ | @istriviallydestructibleexpr
+ | @istriviallyassignableexpr
+ | @isnothrowassignableexpr
+ | @istrivialexpr
+ | @isstandardlayoutexpr
+ | @istriviallycopyableexpr
+ | @isliteraltypeexpr
+ | @hastrivialmoveconstructorexpr
+ | @hastrivialmoveassignexpr
+ | @hasnothrowmoveassignexpr
+ | @isconstructibleexpr
+ | @isnothrowconstructibleexpr
+ | @hasfinalizerexpr
+ | @isdelegateexpr
+ | @isinterfaceclassexpr
+ | @isrefarrayexpr
+ | @isrefclassexpr
+ | @issealedexpr
+ | @issimplevalueclassexpr
+ | @isvalueclassexpr
+ | @isfinalexpr
+ | @builtinchooseexpr
+ | @builtincomplex
+ | @isassignable
+ | @isaggregate
+ | @hasuniqueobjectrepresentations
+ | @builtinbitcast
+ | @builtinshuffle
+ | @issame
+ | @isfunction
+ | @islayoutcompatible
+ | @ispointerinterconvertiblebaseof
+ | @isarray
+ | @arrayrank
+ | @arrayextent
+ | @isarithmetic
+ | @iscompletetype
+ | @iscompound
+ | @isconst
+ | @isfloatingpoint
+ | @isfundamental
+ | @isintegral
+ | @islvaluereference
+ | @ismemberfunctionpointer
+ | @ismemberobjectpointer
+ | @ismemberpointer
+ | @isobject
+ | @ispointer
+ | @isreference
+ | @isrvaluereference
+ | @isscalar
+ | @issigned
+ | @isunsigned
+ | @isvoid
+ | @isvolatile
+ | @istriviallycopyassignable
+ | @isassignablenopreconditioncheck
+ | @referencebindstotemporary
+ | @issameas
+ | @builtinhasattribute
+ | @ispointerinterconvertiblewithclass
+ | @builtinispointerinterconvertiblewithclass
+ | @iscorrespondingmember
+ | @builtiniscorrespondingmember
+ | @isboundedarray
+ | @isunboundedarray
+ | @isreferenceable
+ | @isnothrowconvertible
+ | @referenceconstructsfromtemporary
+ | @referenceconvertsfromtemporary
+ | @isconvertible
+ | @isvalidwinrttype
+ | @iswinclass
+ | @iswininterface
+ ;
+
+new_allocated_type(
+ unique int expr: @new_expr ref,
+ int type_id: @type ref
+);
+
+new_array_allocated_type(
+ unique int expr: @new_array_expr ref,
+ int type_id: @type ref
+);
+
+/**
+ * The field being initialized by an initializer expression within an aggregate
+ * initializer for a class/struct/union. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_field_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int field: @membervariable ref,
+ int position: int ref
+);
+
+/**
+ * The index of the element being initialized by an initializer expression
+ * within an aggregate initializer for an array. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_array_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int element_index: int ref,
+ int position: int ref
+);
+
+@ctorinit = @ctordirectinit
+ | @ctorvirtualinit
+ | @ctorfieldinit
+ | @ctordelegatinginit;
+@dtordestruct = @dtordirectdestruct
+ | @dtorvirtualdestruct
+ | @dtorfielddestruct;
+
+
+condition_decl_bind(
+ unique int expr: @condition_decl ref,
+ unique int decl: @declaration ref
+);
+
+typeid_bind(
+ unique int expr: @type_id ref,
+ int type_id: @type ref
+);
+
+uuidof_bind(
+ unique int expr: @uuidof ref,
+ int type_id: @type ref
+);
+
+@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof;
+
+sizeof_bind(
+ unique int expr: @runtime_sizeof_or_alignof ref,
+ int type_id: @type ref
+);
+
+code_block(
+ unique int block: @literal ref,
+ unique int routine: @function ref
+);
+
+lambdas(
+ unique int expr: @lambdaexpr ref,
+ string default_capture: string ref,
+ boolean has_explicit_return_type: boolean ref
+);
+
+lambda_capture(
+ unique int id: @lambdacapture,
+ int lambda: @lambdaexpr ref,
+ int index: int ref,
+ int field: @membervariable ref,
+ boolean captured_by_reference: boolean ref,
+ boolean is_implicit: boolean ref,
+ int location: @location_default ref
+);
+
+@funbindexpr = @routineexpr
+ | @new_expr
+ | @delete_expr
+ | @delete_array_expr
+ | @ctordirectinit
+ | @ctorvirtualinit
+ | @ctordelegatinginit
+ | @dtordirectdestruct
+ | @dtorvirtualdestruct;
+
+@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct;
+@addressable = @function | @variable ;
+@accessible = @addressable | @enumconstant ;
+
+@access = @varaccess | @routineexpr ;
+
+fold(
+ int expr: @foldexpr ref,
+ string operator: string ref,
+ boolean is_left_fold: boolean ref
+);
+
+stmts(
+ unique int id: @stmt,
+ int kind: int ref,
+ int location: @location_stmt ref
+);
+
+case @stmt.kind of
+ 1 = @stmt_expr
+| 2 = @stmt_if
+| 3 = @stmt_while
+| 4 = @stmt_goto
+| 5 = @stmt_label
+| 6 = @stmt_return
+| 7 = @stmt_block
+| 8 = @stmt_end_test_while // do { ... } while ( ... )
+| 9 = @stmt_for
+| 10 = @stmt_switch_case
+| 11 = @stmt_switch
+| 13 = @stmt_asm // "asm" statement or the body of an asm function
+| 15 = @stmt_try_block
+| 16 = @stmt_microsoft_try // Microsoft
+| 17 = @stmt_decl
+| 18 = @stmt_set_vla_size // C99
+| 19 = @stmt_vla_decl // C99
+| 25 = @stmt_assigned_goto // GNU
+| 26 = @stmt_empty
+| 27 = @stmt_continue
+| 28 = @stmt_break
+| 29 = @stmt_range_based_for // C++11
+// ... 30 @stmt_at_autoreleasepool_block deprecated
+// ... 31 @stmt_objc_for_in deprecated
+// ... 32 @stmt_at_synchronized deprecated
+| 33 = @stmt_handler
+// ... 34 @stmt_finally_end deprecated
+| 35 = @stmt_constexpr_if
+| 37 = @stmt_co_return
+;
+
+type_vla(
+ int type_id: @type ref,
+ int decl: @stmt_vla_decl ref
+);
+
+variable_vla(
+ int var: @variable ref,
+ int decl: @stmt_vla_decl ref
+);
+
+if_initialization(
+ unique int if_stmt: @stmt_if ref,
+ int init_id: @stmt ref
+);
+
+if_then(
+ unique int if_stmt: @stmt_if ref,
+ int then_id: @stmt ref
+);
+
+if_else(
+ unique int if_stmt: @stmt_if ref,
+ int else_id: @stmt ref
+);
+
+constexpr_if_initialization(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int init_id: @stmt ref
+);
+
+constexpr_if_then(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int then_id: @stmt ref
+);
+
+constexpr_if_else(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int else_id: @stmt ref
+);
+
+while_body(
+ unique int while_stmt: @stmt_while ref,
+ int body_id: @stmt ref
+);
+
+do_body(
+ unique int do_stmt: @stmt_end_test_while ref,
+ int body_id: @stmt ref
+);
+
+switch_initialization(
+ unique int switch_stmt: @stmt_switch ref,
+ int init_id: @stmt ref
+);
+
+#keyset[switch_stmt, index]
+switch_case(
+ int switch_stmt: @stmt_switch ref,
+ int index: int ref,
+ int case_id: @stmt_switch_case ref
+);
+
+switch_body(
+ unique int switch_stmt: @stmt_switch ref,
+ int body_id: @stmt ref
+);
+
+@stmt_for_or_range_based_for = @stmt_for
+ | @stmt_range_based_for;
+
+for_initialization(
+ unique int for_stmt: @stmt_for_or_range_based_for ref,
+ int init_id: @stmt ref
+);
+
+for_condition(
+ unique int for_stmt: @stmt_for ref,
+ int condition_id: @expr ref
+);
+
+for_update(
+ unique int for_stmt: @stmt_for ref,
+ int update_id: @expr ref
+);
+
+for_body(
+ unique int for_stmt: @stmt_for ref,
+ int body_id: @stmt ref
+);
+
+@stmtparent = @stmt | @expr_stmt ;
+stmtparents(
+ unique int id: @stmt ref,
+ int index: int ref,
+ int parent: @stmtparent ref
+);
+
+ishandler(unique int block: @stmt_block ref);
+
+@cfgnode = @stmt | @expr | @function | @initialiser ;
+
+stmt_decl_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl: @declaration ref
+);
+
+stmt_decl_entry_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl_entry: @element ref
+);
+
+@functionorblock = @function | @stmt_block;
+
+blockscope(
+ unique int block: @stmt_block ref,
+ int enclosing: @functionorblock ref
+);
+
+@jump = @stmt_goto | @stmt_break | @stmt_continue;
+
+@jumporlabel = @jump | @stmt_label | @literal;
+
+jumpinfo(
+ unique int id: @jumporlabel ref,
+ string str: string ref,
+ int target: @stmt ref
+);
+
+preprocdirects(
+ unique int id: @preprocdirect,
+ int kind: int ref,
+ int location: @location_default ref
+);
+case @preprocdirect.kind of
+ 0 = @ppd_if
+| 1 = @ppd_ifdef
+| 2 = @ppd_ifndef
+| 3 = @ppd_elif
+| 4 = @ppd_else
+| 5 = @ppd_endif
+| 6 = @ppd_plain_include
+| 7 = @ppd_define
+| 8 = @ppd_undef
+| 9 = @ppd_line
+| 10 = @ppd_error
+| 11 = @ppd_pragma
+| 12 = @ppd_objc_import
+| 13 = @ppd_include_next
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif;
+
+preprocpair(
+ int begin : @ppd_branch ref,
+ int elseelifend : @preprocdirect ref
+);
+
+preproctrue(int branch : @ppd_branch ref);
+preprocfalse(int branch : @ppd_branch ref);
+
+preproctext(
+ unique int id: @preprocdirect ref,
+ string head: string ref,
+ string body: string ref
+);
+
+includes(
+ unique int id: @ppd_include ref,
+ int included: @file ref
+);
+
+link_targets(
+ int id: @link_target,
+ int binary: @file ref
+);
+
+link_parent(
+ int element : @element ref,
+ int link_target : @link_target ref
+);
+
+/* XML Files */
+
+xmlEncoding(unique int id: @file ref, string encoding: string ref);
+
+xmlDTDs(
+ unique int id: @xmldtd,
+ string root: string ref,
+ string publicId: string ref,
+ string systemId: string ref,
+ int fileid: @file ref
+);
+
+xmlElements(
+ unique int id: @xmlelement,
+ string name: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlAttrs(
+ unique int id: @xmlattribute,
+ int elementid: @xmlelement ref,
+ string name: string ref,
+ string value: string ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlNs(
+ int id: @xmlnamespace,
+ string prefixName: string ref,
+ string URI: string ref,
+ int fileid: @file ref
+);
+
+xmlHasNs(
+ int elementId: @xmlnamespaceable ref,
+ int nsId: @xmlnamespace ref,
+ int fileid: @file ref
+);
+
+xmlComments(
+ unique int id: @xmlcomment,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int fileid: @file ref
+);
+
+xmlChars(
+ unique int id: @xmlcharacters,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int isCDATA: int ref,
+ int fileid: @file ref
+);
+
+@xmlparent = @file | @xmlelement;
+@xmlnamespaceable = @xmlelement | @xmlattribute;
+
+xmllocations(
+ int xmlElement: @xmllocatable ref,
+ int location: @location_default ref
+);
+
+@xmllocatable = @xmlcharacters
+ | @xmlelement
+ | @xmlcomment
+ | @xmlattribute
+ | @xmldtd
+ | @file
+ | @xmlnamespace;
diff --git a/cpp/downgrades/9629fc87dab7dbed0771bf5ce22bce4d7f943b52/upgrade.properties b/cpp/downgrades/9629fc87dab7dbed0771bf5ce22bce4d7f943b52/upgrade.properties
new file mode 100644
index 0000000000000..f2c1506bb8bdb
--- /dev/null
+++ b/cpp/downgrades/9629fc87dab7dbed0771bf5ce22bce4d7f943b52/upgrade.properties
@@ -0,0 +1,2 @@
+description: Support destroying deletes
+compatibility: full
diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md
index 61cbcd1318acd..9f01040830c11 100644
--- a/cpp/ql/lib/CHANGELOG.md
+++ b/cpp/ql/lib/CHANGELOG.md
@@ -1,3 +1,11 @@
+## 1.3.0
+
+### New Features
+
+* Models-as-data alert provenance information has been extended to the C/C++ language. Any qltests that include the edges relation in their output (for example, `.qlref`s that reference path-problem queries) will need to be have their expected output updated accordingly.
+* Added subclasses of `BuiltInOperations` for `__builtin_has_attribute`, `__builtin_is_corresponding_member`, `__builtin_is_pointer_interconvertible_with_class`, `__is_assignable_no_precondition_check`, `__is_bounded_array`, `__is_convertible`, `__is_corresponding_member`, `__is_nothrow_convertible`, `__is_pointer_interconvertible_with_class`, `__is_referenceable`, `__is_same_as`, `__is_trivially_copy_assignable`, `__is_unbounded_array`, `__is_valid_winrt_type`, `_is_win_class`, `__is_win_interface`, `__reference_binds_to_temporary`, `__reference_constructs_from_temporary`, and `__reference_converts_from_temporary`.
+* The class `NewArrayExpr` adds a predicate `getArraySize()` to allow a more convenient way to access the static size of the array when the extent is missing.
+
## 1.2.0
### New Features
diff --git a/cpp/ql/lib/change-notes/2024-07-10-newarrayexpr-arraysize.md b/cpp/ql/lib/change-notes/2024-07-10-newarrayexpr-arraysize.md
deleted file mode 100644
index 0a806c9324329..0000000000000
--- a/cpp/ql/lib/change-notes/2024-07-10-newarrayexpr-arraysize.md
+++ /dev/null
@@ -1,4 +0,0 @@
----
-category: feature
----
-* The class `NewArrayExpr` adds a predicate `getArraySize()` to allow a more convenient way to access the static size of the array when the extent is missing.
diff --git a/cpp/ql/lib/change-notes/2024-07-16-alert-provenance.md b/cpp/ql/lib/change-notes/2024-07-16-alert-provenance.md
deleted file mode 100644
index 3f773028073bb..0000000000000
--- a/cpp/ql/lib/change-notes/2024-07-16-alert-provenance.md
+++ /dev/null
@@ -1,4 +0,0 @@
----
-category: feature
----
-* Models-as-data alert provenance information has been extended to the C/C++ language. Any qltests that include the edges relation in their output (for example, `.qlref`s that reference path-problem queries) will need to be have their expected output updated accordingly.
diff --git a/cpp/ql/lib/change-notes/2024-07-23-using-enum-declaration copy.md b/cpp/ql/lib/change-notes/2024-07-23-using-enum-declaration copy.md
new file mode 100644
index 0000000000000..eb2a69f5bac6e
--- /dev/null
+++ b/cpp/ql/lib/change-notes/2024-07-23-using-enum-declaration copy.md
@@ -0,0 +1,4 @@
+---
+category: feature
+---
+* A `isDestroyingDeleteDeallocation` predicate was added to the `NewOrNewArrayExpr` and `DeleteOrDeleteArrayExpr` classes to indicate whether the deallocation function is a destroying delete.
diff --git a/cpp/ql/lib/change-notes/2024-07-23-using-enum-declaration.md b/cpp/ql/lib/change-notes/2024-07-23-using-enum-declaration.md
new file mode 100644
index 0000000000000..cf85b3cef4e87
--- /dev/null
+++ b/cpp/ql/lib/change-notes/2024-07-23-using-enum-declaration.md
@@ -0,0 +1,4 @@
+---
+category: minorAnalysis
+---
+* A `UsingEnumDeclarationEntry` class has been added for C++ `using enum` declarations. As part of this, synthesized `UsingDeclarationEntry`s are no longer emitted for individual enumerators of the referenced enumeration.
diff --git a/cpp/ql/lib/change-notes/2024-07-25-alias-analysis-perf.md b/cpp/ql/lib/change-notes/2024-07-25-alias-analysis-perf.md
new file mode 100644
index 0000000000000..585e824e6f194
--- /dev/null
+++ b/cpp/ql/lib/change-notes/2024-07-25-alias-analysis-perf.md
@@ -0,0 +1,4 @@
+---
+category: minorAnalysis
+---
+* Improved performance of alias analysis of large function bodies. In rare cases, alerts that depend on alias analysis of large function bodies may be affected.
diff --git a/cpp/ql/lib/change-notes/2024-07-11-additional-builtin-support.md b/cpp/ql/lib/change-notes/released/1.3.0.md
similarity index 57%
rename from cpp/ql/lib/change-notes/2024-07-11-additional-builtin-support.md
rename to cpp/ql/lib/change-notes/released/1.3.0.md
index f389283ad1e14..3c3010da96d32 100644
--- a/cpp/ql/lib/change-notes/2024-07-11-additional-builtin-support.md
+++ b/cpp/ql/lib/change-notes/released/1.3.0.md
@@ -1,4 +1,7 @@
----
-category: feature
----
+## 1.3.0
+
+### New Features
+
+* Models-as-data alert provenance information has been extended to the C/C++ language. Any qltests that include the edges relation in their output (for example, `.qlref`s that reference path-problem queries) will need to be have their expected output updated accordingly.
* Added subclasses of `BuiltInOperations` for `__builtin_has_attribute`, `__builtin_is_corresponding_member`, `__builtin_is_pointer_interconvertible_with_class`, `__is_assignable_no_precondition_check`, `__is_bounded_array`, `__is_convertible`, `__is_corresponding_member`, `__is_nothrow_convertible`, `__is_pointer_interconvertible_with_class`, `__is_referenceable`, `__is_same_as`, `__is_trivially_copy_assignable`, `__is_unbounded_array`, `__is_valid_winrt_type`, `_is_win_class`, `__is_win_interface`, `__reference_binds_to_temporary`, `__reference_constructs_from_temporary`, and `__reference_converts_from_temporary`.
+* The class `NewArrayExpr` adds a predicate `getArraySize()` to allow a more convenient way to access the static size of the array when the extent is missing.
diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml
index 75430e73d1c4d..ec16350ed6fd9 100644
--- a/cpp/ql/lib/codeql-pack.release.yml
+++ b/cpp/ql/lib/codeql-pack.release.yml
@@ -1,2 +1,2 @@
---
-lastReleaseVersion: 1.2.0
+lastReleaseVersion: 1.3.0
diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml
index 6b3f05d5f7c1a..5ef613e94c005 100644
--- a/cpp/ql/lib/qlpack.yml
+++ b/cpp/ql/lib/qlpack.yml
@@ -1,5 +1,5 @@
name: codeql/cpp-all
-version: 1.2.1-dev
+version: 1.3.1-dev
groups: cpp
dbscheme: semmlecode.cpp.dbscheme
extractor: cpp
diff --git a/cpp/ql/lib/semmle/code/cpp/Namespace.qll b/cpp/ql/lib/semmle/code/cpp/Namespace.qll
index 065e28c8429ef..2e75a783c14fe 100644
--- a/cpp/ql/lib/semmle/code/cpp/Namespace.qll
+++ b/cpp/ql/lib/semmle/code/cpp/Namespace.qll
@@ -156,7 +156,7 @@ class NamespaceDeclarationEntry extends Locatable, @namespace_decl {
* A C++ `using` directive or `using` declaration.
*/
class UsingEntry extends Locatable, @using {
- override Location getLocation() { usings(underlyingElement(this), _, result) }
+ override Location getLocation() { usings(underlyingElement(this), _, result, _) }
}
/**
@@ -166,15 +166,13 @@ class UsingEntry extends Locatable, @using {
* ```
*/
class UsingDeclarationEntry extends UsingEntry {
- UsingDeclarationEntry() {
- not exists(Namespace n | usings(underlyingElement(this), unresolveElement(n), _))
- }
+ UsingDeclarationEntry() { usings(underlyingElement(this), _, _, 1) }
/**
* Gets the declaration that is referenced by this using declaration. For
* example, `std::string` in `using std::string`.
*/
- Declaration getDeclaration() { usings(underlyingElement(this), unresolveElement(result), _) }
+ Declaration getDeclaration() { usings(underlyingElement(this), unresolveElement(result), _, _) }
override string toString() { result = "using " + this.getDeclaration().getDescription() }
}
@@ -186,19 +184,36 @@ class UsingDeclarationEntry extends UsingEntry {
* ```
*/
class UsingDirectiveEntry extends UsingEntry {
- UsingDirectiveEntry() {
- exists(Namespace n | usings(underlyingElement(this), unresolveElement(n), _))
- }
+ UsingDirectiveEntry() { usings(underlyingElement(this), _, _, 2) }
/**
* Gets the namespace that is referenced by this using directive. For
* example, `std` in `using namespace std`.
*/
- Namespace getNamespace() { usings(underlyingElement(this), unresolveElement(result), _) }
+ Namespace getNamespace() { usings(underlyingElement(this), unresolveElement(result), _, _) }
override string toString() { result = "using namespace " + this.getNamespace().getFriendlyName() }
}
+/**
+ * A C++ `using enum` declaration. For example:
+ * ```
+ * enum class Foo { a, b };
+ * using enum Foo;
+ * ```
+ */
+class UsingEnumDeclarationEntry extends UsingEntry {
+ UsingEnumDeclarationEntry() { usings(underlyingElement(this), _, _, 3) }
+
+ /**
+ * Gets the enumeration that is referenced by this using directive. For
+ * example, `Foo` in `using enum Foo`.
+ */
+ Enum getEnum() { usings(underlyingElement(this), unresolveElement(result), _, _) }
+
+ override string toString() { result = "using enum " + this.getEnum().getQualifiedName() }
+}
+
/**
* Holds if `g` is an instance of `GlobalNamespace`. This predicate
* is used suppress a warning in `GlobalNamespace.getADeclaration()`
diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowPrivate.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowPrivate.qll
index 364359dc9fdb6..b14979470b043 100644
--- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowPrivate.qll
+++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/DataFlowPrivate.qll
@@ -215,19 +215,16 @@ predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { none() }
predicate localMustFlowStep(Node node1, Node node2) { none() }
/** Gets the type of `n` used for type pruning. */
-Type getNodeType(Node n) {
+DataFlowType getNodeType(Node n) {
exists(n) and
result instanceof VoidType // stub implementation
}
-/** Gets a string representation of a type returned by `getNodeType`. */
-string ppReprType(Type t) { none() } // stub implementation
-
/**
* Holds if `t1` and `t2` are compatible, that is, whether data can flow from
* a node of type `t1` to a node of type `t2`.
*/
-predicate compatibleTypes(Type t1, Type t2) {
+predicate compatibleTypes(DataFlowType t1, DataFlowType t2) {
t1 instanceof VoidType and t2 instanceof VoidType // stub implementation
}
@@ -243,7 +240,11 @@ class DataFlowCallable extends Function { }
class DataFlowExpr = Expr;
-class DataFlowType = Type;
+final private class TypeFinal = Type;
+
+class DataFlowType extends TypeFinal {
+ string toString() { result = "" }
+}
/** A function call relevant for data flow. */
class DataFlowCall extends Expr instanceof Call {
diff --git a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll
index 0d68bb1047fa0..8e5f5018c9f30 100644
--- a/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll
+++ b/cpp/ql/lib/semmle/code/cpp/exprs/Expr.qll
@@ -855,6 +855,16 @@ class NewOrNewArrayExpr extends Expr, @any_new_expr {
)
}
+ /**
+ * Holds if the deallocation function is a destroying delete.
+ */
+ predicate isDestroyingDeleteDeallocation() {
+ exists(int form |
+ expr_deallocator(underlyingElement(this), _, form) and
+ form.bitAnd(4) != 0 // Bit two is the "destroying delete" bit
+ )
+ }
+
/**
* Gets the type that is being allocated.
*
@@ -1025,6 +1035,16 @@ class DeleteOrDeleteArrayExpr extends Expr, TDeleteOrDeleteArrayExpr {
)
}
+ /**
+ * Holds if the deallocation function is a destroying delete.
+ */
+ predicate isDestroyingDeleteDeallocation() {
+ exists(int form |
+ expr_deallocator(underlyingElement(this), _, form) and
+ form.bitAnd(4) != 0 // Bit two is the "destroying delete" bit
+ )
+ }
+
/**
* Gets the object or array being deleted.
*/
diff --git a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll
index 9381eb7f64548..ac6e898748aba 100644
--- a/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll
+++ b/cpp/ql/lib/semmle/code/cpp/ir/dataflow/internal/DataFlowPrivate.qll
@@ -994,9 +994,6 @@ DataFlowType getNodeType(Node n) {
result instanceof VoidType // stub implementation
}
-/** Gets a string representation of a type returned by `getNodeType`. */
-string ppReprType(DataFlowType t) { none() } // stub implementation
-
/**
* Holds if `t1` and `t2` are compatible, that is, whether data can flow from
* a node of type `t1` to a node of type `t2`.
@@ -1097,7 +1094,11 @@ class SummarizedCallable extends DataFlowCallable, TSummarizedCallable {
class DataFlowExpr = Expr;
-class DataFlowType = Type;
+final private class TypeFinal = Type;
+
+class DataFlowType extends TypeFinal {
+ string toString() { result = "" }
+}
cached
private newtype TDataFlowCall =
diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasAnalysis.qll
index 8f3493c1065f9..5989f9bf0d52a 100644
--- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasAnalysis.qll
+++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasAnalysis.qll
@@ -338,6 +338,56 @@ private predicate resultEscapesNonReturn(Instruction instr) {
not instr.isResultModeled()
}
+/** Holds if `operand` may (transitively) flow to an `AddressOperand`. */
+private predicate consumedAsAddressOperand(Operand operand) {
+ operand instanceof AddressOperand
+ or
+ exists(Operand address |
+ consumedAsAddressOperand(address) and
+ operandIsPropagated(operand, _, address.getDef())
+ )
+}
+
+/**
+ * Holds if `operand` may originate from a base instruction of an allocation,
+ * and that operand may transitively flow to an `AddressOperand`.
+ */
+private predicate propagatedFromAllocationBase(Operand operand, Configuration::Allocation allocation) {
+ consumedAsAddressOperand(operand) and
+ (
+ not exists(Configuration::getOldAllocation(allocation)) and
+ operand.getDef() = allocation.getABaseInstruction()
+ or
+ exists(Operand address |
+ operandIsPropagated(address, _, operand.getDef()) and
+ propagatedFromAllocationBase(address, allocation)
+ )
+ )
+}
+
+private predicate propagatedFromNonAllocationBase(Operand operand) {
+ exists(Instruction def |
+ def = operand.getDef() and
+ not operandIsPropagated(_, _, def) and
+ not def = any(Configuration::Allocation allocation).getABaseInstruction()
+ )
+ or
+ exists(Operand address |
+ operandIsPropagated(address, _, operand.getDef()) and
+ propagatedFromNonAllocationBase(address)
+ )
+}
+
+/**
+ * Holds if we cannot see all producers of an operand for which allocation also flows into.
+ */
+private predicate operandConsumesEscaped(Configuration::Allocation allocation) {
+ exists(AddressOperand address |
+ propagatedFromAllocationBase(address, allocation) and
+ propagatedFromNonAllocationBase(address)
+ )
+}
+
/**
* Holds if the address of `allocation` escapes outside the domain of the analysis. This can occur
* either because the allocation's address is taken within the function and escapes, or because the
@@ -346,12 +396,14 @@ private predicate resultEscapesNonReturn(Instruction instr) {
predicate allocationEscapes(Configuration::Allocation allocation) {
allocation.alwaysEscapes()
or
- exists(IREscapeAnalysisConfiguration config |
- config.useSoundEscapeAnalysis() and resultEscapesNonReturn(allocation.getABaseInstruction())
+ exists(IREscapeAnalysisConfiguration config | config.useSoundEscapeAnalysis() |
+ resultEscapesNonReturn(allocation.getABaseInstruction())
+ or
+ operandConsumesEscaped(allocation)
)
or
Configuration::phaseNeedsSoundEscapeAnalysis() and
- resultEscapesNonReturn(allocation.getABaseInstruction())
+ (resultEscapesNonReturn(allocation.getABaseInstruction()) or operandConsumesEscaped(allocation))
}
/**
diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasConfiguration.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasConfiguration.qll
index ba2c1d5a22c0d..8b53e12b8a04d 100644
--- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasConfiguration.qll
+++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasConfiguration.qll
@@ -146,3 +146,8 @@ class DynamicAllocation extends Allocation, TDynamicAllocation {
}
predicate phaseNeedsSoundEscapeAnalysis() { none() }
+
+UnaliasedSsa::Allocation getOldAllocation(VariableAllocation allocation) {
+ UnaliasedSsa::canReuseSsaForVariable(allocation.getIRVariable()) and
+ result = allocation.getIRVariable()
+}
diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll
index aba70f8771d2f..4db00eee60846 100644
--- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll
+++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/AliasedSSA.qll
@@ -7,7 +7,7 @@ private import semmle.code.cpp.ir.implementation.unaliased_ssa.internal.SSAConst
private import semmle.code.cpp.ir.internal.IntegerConstant as Ints
private import semmle.code.cpp.ir.internal.IntegerInterval as Interval
private import semmle.code.cpp.ir.implementation.internal.OperandTag
-private import AliasConfiguration
+import AliasConfiguration
private import codeql.util.Boolean
private class IntValue = Ints::IntValue;
@@ -227,13 +227,15 @@ private newtype TMemoryLocation =
TAllAliasedMemory(IRFunction irFunc, Boolean isMayAccess)
/**
- * Represents the memory location accessed by a memory operand or memory result. In this implementation, the location is
+ * A memory location accessed by a memory operand or memory result. In this implementation, the location is
* one of the following:
* - `VariableMemoryLocation` - A location within a known `IRVariable`, at an offset that is either a constant or is
* unknown.
* - `UnknownMemoryLocation` - A location not known to be within a specific `IRVariable`.
+ *
+ * Some of these memory locations will be filtered out for performance reasons before being passed to SSA construction.
*/
-abstract class MemoryLocation extends TMemoryLocation {
+abstract private class MemoryLocation0 extends TMemoryLocation {
final string toString() {
if this.isMayAccess()
then result = "?" + this.toStringInternal()
@@ -294,9 +296,9 @@ abstract class MemoryLocation extends TMemoryLocation {
* represented by a `MemoryLocation` that totally overlaps all other
* `MemoryLocations` in the set.
*/
-abstract class VirtualVariable extends MemoryLocation { }
+abstract class VirtualVariable extends MemoryLocation0 { }
-abstract class AllocationMemoryLocation extends MemoryLocation {
+abstract class AllocationMemoryLocation extends MemoryLocation0 {
Allocation var;
boolean isMayAccess;
@@ -424,7 +426,7 @@ class VariableMemoryLocation extends TVariableMemoryLocation, AllocationMemoryLo
* `{a, b}` into a memory location that represents _all_ of the allocations
* in the set.
*/
-class GroupedMemoryLocation extends TGroupedMemoryLocation, MemoryLocation {
+class GroupedMemoryLocation extends TGroupedMemoryLocation, MemoryLocation0 {
VariableGroup vg;
boolean isMayAccess;
boolean isAll;
@@ -528,7 +530,7 @@ class GroupedVirtualVariable extends GroupedMemoryLocation, VirtualVariable {
/**
* An access to memory that is not known to be confined to a specific `IRVariable`.
*/
-class UnknownMemoryLocation extends TUnknownMemoryLocation, MemoryLocation {
+class UnknownMemoryLocation extends TUnknownMemoryLocation, MemoryLocation0 {
IRFunction irFunc;
boolean isMayAccess;
@@ -555,7 +557,7 @@ class UnknownMemoryLocation extends TUnknownMemoryLocation, MemoryLocation {
* An access to memory that is not known to be confined to a specific `IRVariable`, but is known to
* not access memory on the current function's stack frame.
*/
-class AllNonLocalMemory extends TAllNonLocalMemory, MemoryLocation {
+class AllNonLocalMemory extends TAllNonLocalMemory, MemoryLocation0 {
IRFunction irFunc;
boolean isMayAccess;
@@ -589,7 +591,7 @@ class AllNonLocalMemory extends TAllNonLocalMemory, MemoryLocation {
/**
* An access to all aliased memory.
*/
-class AllAliasedMemory extends TAllAliasedMemory, MemoryLocation {
+class AllAliasedMemory extends TAllAliasedMemory, MemoryLocation0 {
IRFunction irFunc;
boolean isMayAccess;
@@ -620,7 +622,7 @@ class AliasedVirtualVariable extends AllAliasedMemory, VirtualVariable {
/**
* Gets the overlap relationship between the definition location `def` and the use location `use`.
*/
-Overlap getOverlap(MemoryLocation def, MemoryLocation use) {
+Overlap getOverlap(MemoryLocation0 def, MemoryLocation0 use) {
exists(Overlap overlap |
// Compute the overlap based only on the extent.
overlap = getExtentOverlap(def, use) and
@@ -648,7 +650,7 @@ Overlap getOverlap(MemoryLocation def, MemoryLocation use) {
* based only on the set of memory locations accessed. Handling of "may" accesses and read-only
* locations occurs in `getOverlap()`.
*/
-private Overlap getExtentOverlap(MemoryLocation def, MemoryLocation use) {
+private Overlap getExtentOverlap(MemoryLocation0 def, MemoryLocation0 use) {
// The def and the use must have the same virtual variable, or no overlap is possible.
(
// AllAliasedMemory must totally overlap any location within the same virtual variable.
@@ -861,6 +863,40 @@ predicate canReuseSsaForOldResult(Instruction instr) { OldSsa::canReuseSsaForMem
bindingset[result, b]
private boolean unbindBool(boolean b) { result != b.booleanNot() }
+/** Gets the number of overlapping uses of `def`. */
+private int numberOfOverlappingUses(MemoryLocation0 def) {
+ result = strictcount(MemoryLocation0 use | exists(getOverlap(def, use)))
+}
+
+/**
+ * Holds if `def` is a busy definition. That is, it has a large number of
+ * overlapping uses.
+ */
+private predicate isBusyDef(MemoryLocation0 def) { numberOfOverlappingUses(def) > 1024 }
+
+/** Holds if `use` is a use that overlaps with a busy definition. */
+private predicate useOverlapWithBusyDef(MemoryLocation0 use) {
+ exists(MemoryLocation0 def |
+ exists(getOverlap(def, use)) and
+ isBusyDef(def)
+ )
+}
+
+final private class FinalMemoryLocation = MemoryLocation0;
+
+/**
+ * A memory location accessed by a memory operand or memory result. In this implementation, the location is
+ * one of the following:
+ * - `VariableMemoryLocation` - A location within a known `IRVariable`, at an offset that is either a constant or is
+ * unknown.
+ * - `UnknownMemoryLocation` - A location not known to be within a specific `IRVariable`.
+ *
+ * Compared to `MemoryLocation0`, this class does not contain memory locations that represent uses of busy definitions.
+ */
+class MemoryLocation extends FinalMemoryLocation {
+ MemoryLocation() { not useOverlapWithBusyDef(this) }
+}
+
MemoryLocation getResultMemoryLocation(Instruction instr) {
not canReuseSsaForOldResult(instr) and
exists(MemoryAccessKind kind, boolean isMayAccess |
@@ -905,9 +941,9 @@ MemoryLocation getResultMemoryLocation(Instruction instr) {
)
}
-MemoryLocation getOperandMemoryLocation(MemoryOperand operand) {
+private MemoryLocation0 getOperandMemoryLocation0(MemoryOperand operand, boolean isMayAccess) {
not canReuseSsaForOldResult(operand.getAnyDef()) and
- exists(MemoryAccessKind kind, boolean isMayAccess |
+ exists(MemoryAccessKind kind |
kind = operand.getMemoryAccess() and
(if operand.hasMayReadMemoryAccess() then isMayAccess = true else isMayAccess = false) and
(
@@ -948,6 +984,19 @@ MemoryLocation getOperandMemoryLocation(MemoryOperand operand) {
)
}
+MemoryLocation getOperandMemoryLocation(MemoryOperand operand) {
+ exists(MemoryLocation0 use0, boolean isMayAccess |
+ use0 = getOperandMemoryLocation0(operand, isMayAccess)
+ |
+ result = use0
+ or
+ // If `use0` overlaps with a busy definition we turn it into a use
+ // of `UnknownMemoryLocation`.
+ not use0 instanceof MemoryLocation and
+ result = TUnknownMemoryLocation(operand.getEnclosingIRFunction(), isMayAccess)
+ )
+}
+
/** Gets the start bit offset of a `MemoryLocation`, if any. */
int getStartBitOffset(VariableMemoryLocation location) {
result = location.getStartBitOffset() and Ints::hasValue(result)
diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll
index 819f3906b8256..e0a6594e74008 100644
--- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll
+++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/aliased_ssa/internal/SSAConstruction.qll
@@ -933,11 +933,15 @@ module DefUse {
bindingset[index, block]
pragma[inline_late]
private int getNonChiOffset(int index, OldBlock block) {
- exists(IRFunction func | func = block.getEnclosingIRFunction() |
+ exists(OldIR::IRFunction func, Instruction i, OldBlock entryBlock |
+ func = block.getEnclosingIRFunction() and
+ i = block.getInstruction(index) and
+ entryBlock = func.getEntryBlock()
+ |
if
- getNewBlock(block) = func.getEntryBlock() and
- not block.getInstruction(index) instanceof InitializeNonLocalInstruction and
- not block.getInstruction(index) instanceof AliasedDefinitionInstruction
+ block = entryBlock and
+ not i instanceof InitializeNonLocalInstruction and
+ not i instanceof AliasedDefinitionInstruction
then result = 2 * (index + count(VariableGroup vg | vg.getIRFunction() = func))
else result = 2 * index
)
diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/AliasAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/AliasAnalysis.qll
index 8f3493c1065f9..5989f9bf0d52a 100644
--- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/AliasAnalysis.qll
+++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/AliasAnalysis.qll
@@ -338,6 +338,56 @@ private predicate resultEscapesNonReturn(Instruction instr) {
not instr.isResultModeled()
}
+/** Holds if `operand` may (transitively) flow to an `AddressOperand`. */
+private predicate consumedAsAddressOperand(Operand operand) {
+ operand instanceof AddressOperand
+ or
+ exists(Operand address |
+ consumedAsAddressOperand(address) and
+ operandIsPropagated(operand, _, address.getDef())
+ )
+}
+
+/**
+ * Holds if `operand` may originate from a base instruction of an allocation,
+ * and that operand may transitively flow to an `AddressOperand`.
+ */
+private predicate propagatedFromAllocationBase(Operand operand, Configuration::Allocation allocation) {
+ consumedAsAddressOperand(operand) and
+ (
+ not exists(Configuration::getOldAllocation(allocation)) and
+ operand.getDef() = allocation.getABaseInstruction()
+ or
+ exists(Operand address |
+ operandIsPropagated(address, _, operand.getDef()) and
+ propagatedFromAllocationBase(address, allocation)
+ )
+ )
+}
+
+private predicate propagatedFromNonAllocationBase(Operand operand) {
+ exists(Instruction def |
+ def = operand.getDef() and
+ not operandIsPropagated(_, _, def) and
+ not def = any(Configuration::Allocation allocation).getABaseInstruction()
+ )
+ or
+ exists(Operand address |
+ operandIsPropagated(address, _, operand.getDef()) and
+ propagatedFromNonAllocationBase(address)
+ )
+}
+
+/**
+ * Holds if we cannot see all producers of an operand for which allocation also flows into.
+ */
+private predicate operandConsumesEscaped(Configuration::Allocation allocation) {
+ exists(AddressOperand address |
+ propagatedFromAllocationBase(address, allocation) and
+ propagatedFromNonAllocationBase(address)
+ )
+}
+
/**
* Holds if the address of `allocation` escapes outside the domain of the analysis. This can occur
* either because the allocation's address is taken within the function and escapes, or because the
@@ -346,12 +396,14 @@ private predicate resultEscapesNonReturn(Instruction instr) {
predicate allocationEscapes(Configuration::Allocation allocation) {
allocation.alwaysEscapes()
or
- exists(IREscapeAnalysisConfiguration config |
- config.useSoundEscapeAnalysis() and resultEscapesNonReturn(allocation.getABaseInstruction())
+ exists(IREscapeAnalysisConfiguration config | config.useSoundEscapeAnalysis() |
+ resultEscapesNonReturn(allocation.getABaseInstruction())
+ or
+ operandConsumesEscaped(allocation)
)
or
Configuration::phaseNeedsSoundEscapeAnalysis() and
- resultEscapesNonReturn(allocation.getABaseInstruction())
+ (resultEscapesNonReturn(allocation.getABaseInstruction()) or operandConsumesEscaped(allocation))
}
/**
diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/AliasConfiguration.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/AliasConfiguration.qll
index 110e673e1d272..2ca2b4c728498 100644
--- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/AliasConfiguration.qll
+++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/AliasConfiguration.qll
@@ -1,4 +1,5 @@
private import AliasConfigurationImports
+private import codeql.util.Unit
/**
* A memory allocation that can be tracked by the SimpleSSA alias analysis.
@@ -16,3 +17,5 @@ class Allocation extends IRAutomaticVariable {
}
predicate phaseNeedsSoundEscapeAnalysis() { any() }
+
+Unit getOldAllocation(Allocation allocation) { any() }
diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll
index 819f3906b8256..e0a6594e74008 100644
--- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll
+++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SSAConstruction.qll
@@ -933,11 +933,15 @@ module DefUse {
bindingset[index, block]
pragma[inline_late]
private int getNonChiOffset(int index, OldBlock block) {
- exists(IRFunction func | func = block.getEnclosingIRFunction() |
+ exists(OldIR::IRFunction func, Instruction i, OldBlock entryBlock |
+ func = block.getEnclosingIRFunction() and
+ i = block.getInstruction(index) and
+ entryBlock = func.getEntryBlock()
+ |
if
- getNewBlock(block) = func.getEntryBlock() and
- not block.getInstruction(index) instanceof InitializeNonLocalInstruction and
- not block.getInstruction(index) instanceof AliasedDefinitionInstruction
+ block = entryBlock and
+ not i instanceof InitializeNonLocalInstruction and
+ not i instanceof AliasedDefinitionInstruction
then result = 2 * (index + count(VariableGroup vg | vg.getIRFunction() = func))
else result = 2 * index
)
diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll
index 8d11fdeec38e3..648fa0e197b84 100644
--- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll
+++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/unaliased_ssa/internal/SimpleSSA.qll
@@ -1,7 +1,7 @@
import AliasAnalysis
private import SimpleSSAImports
import SimpleSSAPublicImports
-private import AliasConfiguration
+import AliasConfiguration
private import codeql.util.Unit
private predicate isTotalAccess(Allocation var, AddressOperand addrOperand, IRType type) {
diff --git a/cpp/ql/lib/semmle/code/cpp/models/Models.qll b/cpp/ql/lib/semmle/code/cpp/models/Models.qll
index 0b104e5e936c3..90a97777d8fb8 100644
--- a/cpp/ql/lib/semmle/code/cpp/models/Models.qll
+++ b/cpp/ql/lib/semmle/code/cpp/models/Models.qll
@@ -27,6 +27,11 @@ private import implementations.StdPair
private import implementations.StdMap
private import implementations.StdSet
private import implementations.StdString
+private import implementations.StdFunction
+private import implementations.StdException
+private import implementations.StdAllocator
+private import implementations.StdAlgorithm
+private import implementations.StdMath
private import implementations.Swap
private import implementations.GetDelim
private import implementations.SmartPointer
diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Iterator.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Iterator.qll
index a016210de5a04..3a93188e9ca6e 100644
--- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Iterator.qll
+++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Iterator.qll
@@ -86,6 +86,41 @@ private class StdIterator extends Iterator, Class {
override Type getValueType() { result = this.getTemplateArgument(1).(Type).getUnderlyingType() }
}
+private class StdReverseIterator extends Iterator, Class {
+ StdReverseIterator() { this.hasQualifiedName(["std", "bsl"], "reverse_iterator") }
+
+ override Type getValueType() { result = this.getTemplateArgument(1).(Type).getUnderlyingType() }
+}
+
+private class StdIstreamBufIterator extends Iterator, Class {
+ StdIstreamBufIterator() { this.hasQualifiedName(["std", "bsl"], "istreambuf_iterator") }
+
+ override Type getValueType() { result = this.getTemplateArgument(1).(Type).getUnderlyingType() }
+}
+
+private class StdIstreambufIteratorConstructor extends Constructor, SideEffectFunction,
+ AliasFunction
+{
+ StdIstreambufIteratorConstructor() { this.getDeclaringType() instanceof StdIstreamBufIterator }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and buffer = false and mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ this.getParameter(i).getUnspecifiedType() instanceof ReferenceType and
+ buffer = false
+ }
+}
+
/**
* Gets the `FunctionInput` corresponding to an iterator parameter to
* user-defined operator `op`, at `index`.
@@ -579,23 +614,43 @@ private class IteratorAssignmentMemberOperatorModel extends IteratorAssignmentMe
override predicate parameterEscapesOnlyViaReturn(int index) { index = -1 }
}
+private string beginName() {
+ result = ["begin", "cbegin", "rbegin", "crbegin", "before_begin", "cbefore_begin"]
+}
+
/**
* A `begin` member function, or a related function, that returns an iterator.
*/
-class BeginFunction extends MemberFunction {
+class BeginFunction extends Function {
BeginFunction() {
- this.hasName(["begin", "cbegin", "rbegin", "crbegin", "before_begin", "cbefore_begin"]) and
- this.getType().getUnspecifiedType() instanceof Iterator
+ this.getUnspecifiedType() instanceof Iterator and
+ (
+ this.hasName(beginName()) and
+ this instanceof MemberFunction
+ or
+ this.hasGlobalOrStdOrBslName(beginName()) and
+ not this instanceof MemberFunction and
+ this.getNumberOfParameters() = 1
+ )
}
}
+private string endName() { result = ["end", "cend", "rend", "crend"] }
+
/**
* An `end` member function, or a related function, that returns an iterator.
*/
-class EndFunction extends MemberFunction {
+class EndFunction extends Function {
EndFunction() {
- this.hasName(["end", "cend", "rend", "crend"]) and
- this.getType().getUnspecifiedType() instanceof Iterator
+ this.getUnspecifiedType() instanceof Iterator and
+ (
+ this.hasName(endName()) and
+ this instanceof MemberFunction
+ or
+ this.hasGlobalOrStdOrBslName(endName()) and
+ this instanceof MemberFunction and
+ this.getNumberOfParameters() = 1
+ )
}
}
@@ -603,7 +658,7 @@ class EndFunction extends MemberFunction {
* A `begin` or `end` member function, or a related member function, that
* returns an iterator.
*/
-class BeginOrEndFunction extends MemberFunction {
+class BeginOrEndFunction extends Function {
BeginOrEndFunction() {
this instanceof BeginFunction or
this instanceof EndFunction
diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Printf.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Printf.qll
index 7474631397c16..677b9245b6b85 100644
--- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Printf.qll
+++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Printf.qll
@@ -7,6 +7,7 @@
import semmle.code.cpp.models.interfaces.FormattingFunction
import semmle.code.cpp.models.interfaces.Alias
+import semmle.code.cpp.models.interfaces.SideEffect
/**
* The standard functions `printf`, `wprintf` and their glib variants.
@@ -96,7 +97,7 @@ private class Sprintf extends FormattingFunction {
/**
* Implements `Snprintf`.
*/
-private class SnprintfImpl extends Snprintf {
+private class SnprintfImpl extends Snprintf, AliasFunction, SideEffectFunction {
SnprintfImpl() {
this instanceof TopLevelFunction and
(
@@ -143,6 +144,26 @@ private class SnprintfImpl extends Snprintf {
}
override int getSizeParameterIndex() { result = 1 }
+
+ override predicate parameterNeverEscapes(int index) {
+ // We don't know how many parameters are passed to the function since it's varargs, but they also don't escape.
+ index = this.getFormatParameterIndex()
+ }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = this.getOutputParameterIndex(false) and buffer = true and mustWrite = false
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ // We don't know how many parameters are passed to the function since it's varargs, but they also have read side effects.
+ i = this.getFormatParameterIndex() and buffer = true
+ }
}
/**
diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/StdAlgorithm.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdAlgorithm.qll
new file mode 100644
index 0000000000000..85b69fc8ac447
--- /dev/null
+++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdAlgorithm.qll
@@ -0,0 +1,115 @@
+/**
+ * Provides models for C++ functions from the `algorithms` header.
+ */
+
+import semmle.code.cpp.models.interfaces.Taint
+import semmle.code.cpp.models.interfaces.DataFlow
+import semmle.code.cpp.models.interfaces.Iterator
+import semmle.code.cpp.models.interfaces.SideEffect
+import semmle.code.cpp.models.interfaces.Alias
+
+private class StdPartialSort extends Function, SideEffectFunction, AliasFunction {
+ StdPartialSort() { this.hasGlobalOrStdName("partial_sort") }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = this.getAnIteratorParameterIndex() and buffer = true and mustWrite = false
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = this.getAnIteratorParameterIndex() and
+ buffer = true and
+ this.getParameter(i).getUnspecifiedType() instanceof ReferenceType and
+ buffer = false
+ }
+
+ private int getAnIteratorParameterIndex() {
+ this.getParameter(result).getUnspecifiedType() instanceof Iterator
+ }
+
+ override predicate parameterNeverEscapes(int index) {
+ index = this.getAnIteratorParameterIndex()
+ or
+ this.getParameter(index).getUnspecifiedType() instanceof ReferenceType
+ }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+}
+
+private class StdSortHeap extends Function, SideEffectFunction, AliasFunction {
+ StdSortHeap() { this.hasGlobalOrStdName("sort_heap") }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = this.getAnIteratorParameterIndex() and buffer = true and mustWrite = false
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = this.getAnIteratorParameterIndex() and
+ buffer = true
+ }
+
+ private int getAnIteratorParameterIndex() {
+ this.getParameter(result).getUnspecifiedType() instanceof Iterator
+ }
+
+ override predicate parameterNeverEscapes(int index) { index = this.getAnIteratorParameterIndex() }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+}
+
+private class StdGenerateN extends Function, SideEffectFunction, AliasFunction {
+ StdGenerateN() { this.hasGlobalOrStdName("generate_n") }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = this.getAnIteratorParameterIndex() and buffer = true and mustWrite = false
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ this.getParameter(i).getUnspecifiedType() instanceof ReferenceType and buffer = false
+ }
+
+ private int getAnIteratorParameterIndex() {
+ this.getParameter(result).getUnspecifiedType() instanceof Iterator
+ }
+
+ override predicate parameterNeverEscapes(int index) { index = this.getAnIteratorParameterIndex() }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+}
+
+private class StdFindIfOrIfNot extends Function, SideEffectFunction, AliasFunction {
+ StdFindIfOrIfNot() { this.hasGlobalOrStdName(["find_if", "find_if_not"]) }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = this.getAnIteratorParameterIndex() and buffer = true
+ or
+ this.getParameter(i).getUnspecifiedType() instanceof ReferenceType and buffer = false
+ }
+
+ private int getAnIteratorParameterIndex() {
+ this.getParameter(result).getUnspecifiedType() instanceof Iterator
+ }
+
+ override predicate parameterNeverEscapes(int index) {
+ this.getParameter(index).getUnspecifiedType() instanceof ReferenceType
+ }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) {
+ index = this.getAnIteratorParameterIndex()
+ }
+}
diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/StdAllocator.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdAllocator.qll
new file mode 100644
index 0000000000000..189d0ad862bab
--- /dev/null
+++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdAllocator.qll
@@ -0,0 +1,256 @@
+/**
+ * Provides models for C++ `allocator` and `allocator_traits` classes.
+ */
+
+import semmle.code.cpp.models.interfaces.SideEffect
+import semmle.code.cpp.models.interfaces.Alias
+
+/** The `std::allocator` class. */
+class StdAllocator extends Class {
+ StdAllocator() { this.hasGlobalOrStdOrBslName("allocator") }
+}
+
+/** The `std::allocator_traits` class. */
+class StdAllocatorTraits extends Class {
+ StdAllocatorTraits() { this.hasGlobalOrStdOrBslName("allocator_traits") }
+}
+
+private class StdAllocatorConstructor extends Constructor, AliasFunction, SideEffectFunction {
+ StdAllocatorConstructor() { this.getDeclaringType() instanceof StdAllocator }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and
+ buffer = false and
+ mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ this.getParameter(i).getUnspecifiedType() instanceof ReferenceType and buffer = false
+ }
+}
+
+private class StdAllocatorDestructor extends Destructor, AliasFunction, SideEffectFunction {
+ StdAllocatorDestructor() { this.getDeclaringType() instanceof StdAllocator }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and
+ buffer = false and
+ mustWrite = true
+ }
+}
+
+private class StdAllocatorAddress extends MemberFunction, AliasFunction, SideEffectFunction {
+ StdAllocatorAddress() { this.getClassAndName("address") instanceof StdAllocator }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+}
+
+private class StdAllocatorAllocate extends MemberFunction, AliasFunction, SideEffectFunction {
+ StdAllocatorAllocate() { this.getClassAndName("allocate") instanceof StdAllocator }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+}
+
+private class StdAllocatorTraitsAllocate extends MemberFunction, AliasFunction, SideEffectFunction {
+ StdAllocatorTraitsAllocate() {
+ this.getClassAndName(["allocate", "allocate_at_least"]) instanceof StdAllocatorTraits
+ }
+
+ override predicate parameterNeverEscapes(int index) {
+ this.getParameter(index).getUnspecifiedType() instanceof ReferenceType
+ }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ this.getParameter(i).getUnspecifiedType() instanceof ReferenceType and buffer = false
+ }
+}
+
+private class StdAllocatorDeallocate extends MemberFunction, AliasFunction, SideEffectFunction {
+ StdAllocatorDeallocate() { this.getClassAndName("deallocate") instanceof StdAllocator }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = 0 and
+ buffer = false and
+ mustWrite = false
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = 0 and
+ buffer = false
+ }
+}
+
+private class StdAllocatorTraitsDeallocate extends MemberFunction, AliasFunction, SideEffectFunction
+{
+ StdAllocatorTraitsDeallocate() {
+ this.getClassAndName("deallocate") instanceof StdAllocatorTraits
+ }
+
+ override predicate parameterNeverEscapes(int index) { index = [0, 1] }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = 1 and
+ buffer = false and
+ mustWrite = false
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = [0, 1] and
+ buffer = false
+ }
+}
+
+private class StdAllocatorMaxSize extends MemberFunction, AliasFunction, SideEffectFunction {
+ StdAllocatorMaxSize() { this.getClassAndName("max_size") instanceof StdAllocator }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+}
+
+private class StdAllocatTraitsMaxSize extends MemberFunction, AliasFunction, SideEffectFunction {
+ StdAllocatTraitsMaxSize() { this.getClassAndName("max_size") instanceof StdAllocatorTraits }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+}
+
+private class StdAllocatorConstruct extends MemberFunction, AliasFunction, SideEffectFunction {
+ StdAllocatorConstruct() { this.getClassAndName("construct") instanceof StdAllocator }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = 0 and buffer = false and mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ this.getParameter(i).getUnspecifiedType() instanceof ReferenceType and buffer = false
+ }
+}
+
+class StdAllocatorTraitsConstruct extends MemberFunction, AliasFunction, SideEffectFunction {
+ StdAllocatorTraitsConstruct() { this.getClassAndName("construct") instanceof StdAllocatorTraits }
+
+ override predicate parameterNeverEscapes(int index) {
+ index = 1 or this.getParameter(index).getUnspecifiedType() instanceof ReferenceType
+ }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = 1 and buffer = false and mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ this.getParameter(i).getUnspecifiedType() instanceof ReferenceType and
+ buffer = false
+ }
+}
+
+class StdAllocatorDestroy extends MemberFunction, AliasFunction, SideEffectFunction {
+ StdAllocatorDestroy() { this.getClassAndName("destroy") instanceof StdAllocator }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = 0 and buffer = false and mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = 0 and buffer = false
+ }
+}
+
+class StdAllocatorTraitsDestroy extends MemberFunction, AliasFunction, SideEffectFunction {
+ StdAllocatorTraitsDestroy() { this.getClassAndName("destroy") instanceof StdAllocatorTraits }
+
+ override predicate parameterNeverEscapes(int index) { index = [0, 1] }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = 1 and buffer = false and mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = 0 and buffer = false
+ }
+}
diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/StdContainer.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdContainer.qll
index bf9e05991b4c3..a6145fa724ea1 100644
--- a/cpp/ql/lib/semmle/code/cpp/models/implementations/StdContainer.qll
+++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdContainer.qll
@@ -4,6 +4,8 @@
import semmle.code.cpp.models.interfaces.FlowSource
import semmle.code.cpp.models.interfaces.Iterator
+import semmle.code.cpp.models.interfaces.SideEffect
+import semmle.code.cpp.models.interfaces.Alias
/**
* A sequence container template class (for example, `std::vector`) from the
@@ -58,7 +60,7 @@ private class Vector extends StdSequenceContainer {
/**
* The standard container functions `push_back` and `push_front`.
*/
-class StdSequenceContainerPush extends MemberFunction {
+class StdSequenceContainerPush extends MemberFunction, SideEffectFunction, AliasFunction {
StdSequenceContainerPush() {
this.getClassAndName("push_back") instanceof Vector or
this.getClassAndName(["push_back", "push_front"]) instanceof Deque or
@@ -74,12 +76,115 @@ class StdSequenceContainerPush extends MemberFunction {
this.getParameter(result).getUnspecifiedType().(ReferenceType).getBaseType() =
this.getDeclaringType().getTemplateArgument(0).(Type).getUnspecifiedType() // i.e. the `T` of this `std::vector`
}
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and
+ buffer = false and
+ mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ // the `std::vector` specialization doesn't take a reference as a
+ // parameter. So we need to check that the parameter is actually a
+ // reference.
+ this.getParameter(i).getUnspecifiedType() instanceof ReferenceType and
+ buffer = false
+ }
+}
+
+private class StdSequenceContainerPopFrontOrBack extends MemberFunction, SideEffectFunction,
+ AliasFunction
+{
+ StdSequenceContainerPopFrontOrBack() {
+ this.getClassAndName("pop_back") instanceof Vector or
+ this.getClassAndName("pop_front") instanceof ForwardList or
+ this.getClassAndName(["pop_front", "pop_back"]) instanceof Deque or
+ this.getClassAndName(["pop_front", "pop_back"]) instanceof List
+ }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and
+ buffer = false and
+ mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = -1 and
+ buffer = false
+ }
+}
+
+private class StdSequenceContainerClear extends MemberFunction, SideEffectFunction, AliasFunction {
+ StdSequenceContainerClear() {
+ this.getClassAndName("clear") instanceof Vector or
+ this.getClassAndName("clear") instanceof Deque or
+ this.getClassAndName("clear") instanceof ForwardList or
+ this.getClassAndName("clear") instanceof List
+ }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and
+ buffer = false and
+ mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = -1 and
+ buffer = false
+ }
+}
+
+private class StdVectorReserve extends MemberFunction, SideEffectFunction, AliasFunction {
+ StdVectorReserve() { this.getClassAndName("reserve") instanceof Vector }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and
+ buffer = false and
+ mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = -1 and
+ buffer = false
+ }
}
/**
* The standard container functions `insert` and `insert_after`.
*/
-class StdSequenceContainerInsert extends MemberFunction {
+class StdSequenceContainerInsert extends MemberFunction, SideEffectFunction, AliasFunction {
StdSequenceContainerInsert() {
this.getClassAndName("insert") instanceof Deque or
this.getClassAndName("insert") instanceof List or
@@ -100,17 +205,138 @@ class StdSequenceContainerInsert extends MemberFunction {
* Gets the index of a parameter to this function that is an iterator.
*/
int getAnIteratorParameterIndex() { this.getParameter(result).getType() instanceof Iterator }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and
+ buffer = false and
+ mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ this.getParameter(i).getUnspecifiedType() instanceof ReferenceType and
+ buffer = false
+ }
+}
+
+private class StdSequenceContainerFrontBack extends MemberFunction, SideEffectFunction,
+ AliasFunction
+{
+ StdSequenceContainerFrontBack() {
+ this.getClassAndName(["front", "back"]) instanceof Deque or
+ this.getClassAndName(["front", "back"]) instanceof List or
+ this.getClassAndName(["front", "back"]) instanceof Vector or
+ // forward_list does not have a 'back' member function
+ this.getClassAndName("front") instanceof ForwardList
+ }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = -1 and buffer = false
+ }
}
/**
* The standard container functions `at` and `operator[]`.
*/
-class StdSequenceContainerAt extends MemberFunction {
+class StdSequenceContainerAt extends MemberFunction, SideEffectFunction, AliasFunction {
StdSequenceContainerAt() {
this.getClassAndName(["at", "operator[]"]) instanceof Array or
this.getClassAndName(["at", "operator[]"]) instanceof Deque or
this.getClassAndName(["at", "operator[]"]) instanceof Vector
}
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ none()
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = -1 and buffer = false
+ }
+}
+
+private class StdSequenceContainerMemberEquals extends MemberFunction, SideEffectFunction,
+ AliasFunction
+{
+ StdSequenceContainerMemberEquals() {
+ this.getClassAndName("operator==") instanceof Array or
+ this.getClassAndName("operator==") instanceof Deque or
+ this.getClassAndName("operator==") instanceof Vector
+ }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 or index = 0 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ none()
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = -1 and buffer = false
+ or
+ i = 0 and buffer = false
+ }
+}
+
+private class StdSequenceContainerEquals extends Function, SideEffectFunction, AliasFunction {
+ StdSequenceContainerEquals() {
+ this.hasGlobalOrStdOrBslName("operator==") and
+ not this instanceof MemberFunction and
+ this.getNumberOfParameters() = 2 and
+ (
+ this.getParameter(0).getUnspecifiedType().(ReferenceType).getBaseType() instanceof Vector and
+ this.getParameter(1).getUnspecifiedType().(ReferenceType).getBaseType() instanceof Vector
+ or
+ this.getParameter(0).getUnspecifiedType().(ReferenceType).getBaseType() instanceof List and
+ this.getParameter(1).getUnspecifiedType().(ReferenceType).getBaseType() instanceof List
+ or
+ this.getParameter(0).getUnspecifiedType().(ReferenceType).getBaseType() instanceof Deque and
+ this.getParameter(1).getUnspecifiedType().(ReferenceType).getBaseType() instanceof Deque
+ )
+ }
+
+ override predicate parameterNeverEscapes(int index) { index = 0 or index = 1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ none()
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = [0, 1] and buffer = false
+ }
}
/**
@@ -142,6 +368,115 @@ class StdVectorEmplace extends StdSequenceEmplace {
StdVectorEmplace() { this.getDeclaringType() instanceof Vector }
}
+private class StdSequenceSize extends MemberFunction, SideEffectFunction, AliasFunction {
+ StdSequenceSize() {
+ this.getClassAndName("size") instanceof Vector
+ or
+ this.getClassAndName("size") instanceof List
+ or
+ this.getClassAndName("size") instanceof Deque
+ }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = -1 and buffer = false
+ }
+}
+
+private class StdSequenceDestructor extends Destructor, SideEffectFunction, AliasFunction {
+ StdSequenceDestructor() {
+ this.getDeclaringType() instanceof Vector
+ or
+ this.getDeclaringType() instanceof List
+ or
+ this.getDeclaringType() instanceof Deque
+ }
+
+ private Destructor getElementDestructor() {
+ result.getDeclaringType() = this.getTemplateArgument(0)
+ }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() {
+ this.getElementDestructor().(SideEffectFunction).hasOnlySpecificReadSideEffects()
+ or
+ not exists(this.getElementDestructor())
+ }
+
+ override predicate hasOnlySpecificWriteSideEffects() {
+ this.getElementDestructor().(SideEffectFunction).hasOnlySpecificWriteSideEffects()
+ or
+ not exists(this.getElementDestructor())
+ }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and buffer = false and mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = -1 and buffer = false
+ }
+}
+
+private class StdSequenceConstructor extends Constructor, SideEffectFunction, AliasFunction {
+ StdSequenceConstructor() {
+ this.getDeclaringType() instanceof Vector
+ or
+ this.getDeclaringType() instanceof List
+ or
+ this.getDeclaringType() instanceof Deque
+ }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and buffer = false and mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ this.getParameter(i).getUnspecifiedType() instanceof ReferenceType and
+ buffer = false
+ }
+}
+
+private class InitializerList extends Class {
+ InitializerList() { this.hasQualifiedName(["std", "bsl"], "initializer_list") }
+
+ Type getElementType() { result = this.getTemplateArgument(0) }
+}
+
+private class InitializerListConstructor extends Constructor, SideEffectFunction, AliasFunction {
+ InitializerListConstructor() { this.getDeclaringType() instanceof InitializerList }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and buffer = false and mustWrite = true
+ }
+}
+
/**
* The standard vector `emplace_back` function.
*/
diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/StdException.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdException.qll
new file mode 100644
index 0000000000000..e0d45f46814ee
--- /dev/null
+++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdException.qll
@@ -0,0 +1,38 @@
+/**
+ * Provides models for the C++ `std::exception` class and subclasses.
+ */
+
+import semmle.code.cpp.models.interfaces.Taint
+import semmle.code.cpp.models.interfaces.Alias
+import semmle.code.cpp.models.interfaces.SideEffect
+
+/** The `std::exception` class. */
+class StdException extends Class {
+ StdException() { this.hasGlobalOrStdOrBslName("exception") }
+}
+
+/** The `std::bad_alloc` class. */
+class StdBadAllocException extends Class {
+ StdBadAllocException() { this.hasGlobalOrStdOrBslName("bad_alloc") }
+}
+
+private class StdBadAllocExceptionConstructor extends Constructor, SideEffectFunction, AliasFunction
+{
+ StdBadAllocExceptionConstructor() { this.getDeclaringType() instanceof StdBadAllocException }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and buffer = false and mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ this.getParameter(i).getUnspecifiedType() instanceof ReferenceType and buffer = false
+ }
+}
diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/StdFunction.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdFunction.qll
new file mode 100644
index 0000000000000..3b13c31b7c365
--- /dev/null
+++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdFunction.qll
@@ -0,0 +1,53 @@
+/**
+ * Provides models for C++ `std::function` class.
+ */
+
+import semmle.code.cpp.models.interfaces.SideEffect
+import semmle.code.cpp.models.interfaces.Alias
+
+/**
+ * An instantiation of the `std::function` class template.
+ */
+class StdFunction extends ClassTemplateInstantiation {
+ StdFunction() { this.hasGlobalOrStdOrBslName("function") }
+}
+
+private class StdFunctionConstructor extends Constructor, SideEffectFunction, AliasFunction {
+ StdFunctionConstructor() { this.getDeclaringType() instanceof StdFunction }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and buffer = false and mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ this.getParameter(i).getUnspecifiedType() instanceof ReferenceType and buffer = false
+ }
+}
+
+private class StdFunctionDestructor extends Destructor, SideEffectFunction, AliasFunction {
+ StdFunctionDestructor() { this.getDeclaringType() instanceof StdFunction }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and buffer = false and mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = -1 and buffer = false
+ }
+}
diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/StdMap.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdMap.qll
index ce3c596f308aa..5d2133b6f4506 100644
--- a/cpp/ql/lib/semmle/code/cpp/models/implementations/StdMap.qll
+++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdMap.qll
@@ -5,6 +5,8 @@
import semmle.code.cpp.models.interfaces.Taint
import semmle.code.cpp.models.interfaces.DataFlow
import semmle.code.cpp.models.interfaces.Iterator
+import semmle.code.cpp.models.interfaces.SideEffect
+import semmle.code.cpp.models.interfaces.Alias
/**
* The `std::map` and `std::unordered_map` template classes.
@@ -16,7 +18,9 @@ private class MapOrUnorderedMap extends Class {
/**
* Additional model for map constructors using iterator inputs.
*/
-private class StdMapConstructor extends Constructor, TaintFunction {
+private class StdMapConstructor extends Constructor, TaintFunction, AliasFunction,
+ SideEffectFunction
+{
StdMapConstructor() { this.getDeclaringType() instanceof MapOrUnorderedMap }
/**
@@ -35,6 +39,23 @@ private class StdMapConstructor extends Constructor, TaintFunction {
output.isQualifierObject()
)
}
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and buffer = false and mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ this.getParameter(i).getUnspecifiedType() instanceof ReferenceType and
+ buffer = false
+ }
}
/**
@@ -133,7 +154,7 @@ class StdMapAt extends MemberFunction {
StdMapAt() { this.getClassAndName(["at", "operator[]"]) instanceof MapOrUnorderedMap }
}
-private class StdMapAtModels extends StdMapAt, TaintFunction {
+private class StdMapAtModels extends StdMapAt, TaintFunction, AliasFunction, SideEffectFunction {
override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) {
// flow from qualifier to referenced return value
input.isQualifierObject() and
@@ -144,6 +165,18 @@ private class StdMapAtModels extends StdMapAt, TaintFunction {
output.isQualifierObject()
}
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = -1 and buffer = false
+ }
+
override predicate isPartialWrite(FunctionOutput output) { output.isQualifierObject() }
}
@@ -187,3 +220,63 @@ private class StdMapEqualRange extends TaintFunction {
output.isReturnValue()
}
}
+
+class StdMapDestructor extends Destructor, SideEffectFunction, AliasFunction {
+ StdMapDestructor() { this.getDeclaringType() instanceof MapOrUnorderedMap }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and buffer = false and mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = -1 and buffer = false
+ }
+}
+
+private class StdMapClear extends MemberFunction, SideEffectFunction, AliasFunction {
+ StdMapClear() { this.getClassAndName("clear") instanceof MapOrUnorderedMap }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and
+ buffer = false and
+ mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = -1 and
+ buffer = false
+ }
+}
+
+class StdMapSize extends MemberFunction, SideEffectFunction, AliasFunction {
+ StdMapSize() { this.getClassAndName("size") instanceof MapOrUnorderedMap }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = -1 and
+ buffer = false
+ }
+}
diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/StdMath.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdMath.qll
new file mode 100644
index 0000000000000..6ee339c9b997b
--- /dev/null
+++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdMath.qll
@@ -0,0 +1,108 @@
+/**
+ * Provides models for C++ functions from the `cmath` header.
+ */
+
+private import semmle.code.cpp.models.interfaces.SideEffect
+private import semmle.code.cpp.models.interfaces.Alias
+
+private class LdExp extends Function, SideEffectFunction {
+ LdExp() { this.hasGlobalOrStdOrBslName(["ldexp", "ldexpf", "ldexpl"]) }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+}
+
+private class Abs extends Function, SideEffectFunction {
+ Abs() { this.hasGlobalOrStdOrBslName(["abs", "fabs", "fabsf", "fabsl", "llabs", "imaxabs"]) }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+}
+
+private class Div extends Function, SideEffectFunction {
+ Div() { this.hasGlobalOrStdOrBslName(["div", "ldiv", "lldiv", "imaxdiv"]) }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+}
+
+private class FMod extends Function, SideEffectFunction {
+ FMod() { this.hasGlobalOrStdOrBslName(["fmod", "fmodf", "fmodl"]) }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+}
+
+private class Remainder extends Function, SideEffectFunction {
+ Remainder() { this.hasGlobalOrStdOrBslName(["remainder", "remainderf", "remainderl"]) }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+}
+
+private class Remquo extends Function, SideEffectFunction {
+ Remquo() { this.hasGlobalOrStdOrBslName(["remquo", "remquof", "remquol"]) }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ this.getParameter(i).getUnspecifiedType() instanceof PointerType and
+ buffer = false and
+ mustWrite = true
+ }
+}
+
+private class Fma extends Function, SideEffectFunction {
+ Fma() { this.hasGlobalOrStdOrBslName(["fma", "fmaf", "fmal"]) }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+}
+
+private class Fmax extends Function, SideEffectFunction {
+ Fmax() { this.hasGlobalOrStdOrBslName(["fmax", "fmaxf", "fmaxl"]) }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+}
+
+private class Fmin extends Function, SideEffectFunction {
+ Fmin() { this.hasGlobalOrStdOrBslName(["fmin", "fminf", "fminl"]) }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+}
+
+private class Fdim extends Function, SideEffectFunction {
+ Fdim() { this.hasGlobalOrStdOrBslName(["fdim", "fdimf", "fdiml"]) }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+}
+
+private class Nan extends Function, SideEffectFunction, AliasFunction {
+ Nan() { this.hasGlobalOrStdOrBslName(["nan", "nanf", "nanl"]) }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate parameterNeverEscapes(int index) { index = 0 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = 0 and buffer = true
+ }
+}
diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/StdPair.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdPair.qll
index 28d05e5c30691..54b6719e289ff 100644
--- a/cpp/ql/lib/semmle/code/cpp/models/implementations/StdPair.qll
+++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdPair.qll
@@ -3,6 +3,8 @@
*/
import semmle.code.cpp.models.interfaces.Taint
+import semmle.code.cpp.models.interfaces.Alias
+import semmle.code.cpp.models.interfaces.SideEffect
/**
* An instantiation of `std::pair`.
@@ -37,7 +39,9 @@ class StdPairCopyishConstructor extends Constructor, TaintFunction {
/**
* Additional model for `std::pair` constructors.
*/
-private class StdPairConstructor extends Constructor, TaintFunction {
+private class StdPairConstructor extends Constructor, TaintFunction, AliasFunction,
+ SideEffectFunction
+{
StdPairConstructor() { this.getDeclaringType() instanceof StdPair }
/**
@@ -59,4 +63,77 @@ private class StdPairConstructor extends Constructor, TaintFunction {
output.isQualifierObject()
)
}
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and buffer = false and mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ // All the constructor parameters are references with the exception of this one:
+ // ```
+ // template
+ // pair(std::piecewise_construct_t, std::tuple first_args, std::tuple second_args);
+ // ```
+ // So we need to check that the parameters are actually references
+ this.getParameter(i).getUnspecifiedType() instanceof ReferenceType and
+ buffer = false
+ }
+}
+
+private class StdPairDestructor extends Destructor, AliasFunction, SideEffectFunction {
+ StdPairDestructor() { this.getDeclaringType() instanceof StdPair }
+
+ private Type getFirstType() { result = this.getDeclaringType().getTemplateArgument(0) }
+
+ private Type getSecondType() { result = this.getDeclaringType().getTemplateArgument(0) }
+
+ private Type getAType() { result = [this.getFirstType(), this.getSecondType()] }
+
+ /**
+ * Gets the destructor associated with the base type of this pair
+ */
+ private Destructor getADestructor() { result.getDeclaringType() = this.getAType() }
+
+ override predicate hasOnlySpecificReadSideEffects() {
+ this.getADestructor().(SideEffectFunction).hasOnlySpecificReadSideEffects()
+ or
+ // If there's no declared destructor for the base type then it won't have
+ // any strange read side effects.
+ not exists(this.getADestructor())
+ }
+
+ override predicate hasOnlySpecificWriteSideEffects() {
+ this.getADestructor().(SideEffectFunction).hasOnlySpecificWriteSideEffects()
+ or
+ // If there's no declared destructor for the base type then it won't have
+ // any strange write side effects.
+ not exists(this.getADestructor())
+ }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = -1 and buffer = false
+ }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and buffer = false and mustWrite = true
+ }
+
+ override predicate parameterNeverEscapes(int index) {
+ this.getADestructor().(AliasFunction).parameterNeverEscapes(index)
+ or
+ // If there's no declared destructor for the base type then it won't cause
+ // anything to escape.
+ not exists(this.getADestructor()) and
+ index = -1
+ }
}
diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/StdString.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdString.qll
index fd28363297a63..00dc8d26ad39e 100644
--- a/cpp/ql/lib/semmle/code/cpp/models/implementations/StdString.qll
+++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/StdString.qll
@@ -7,6 +7,8 @@
import semmle.code.cpp.models.interfaces.Taint
import semmle.code.cpp.models.interfaces.Iterator
import semmle.code.cpp.models.interfaces.DataFlow
+import semmle.code.cpp.models.interfaces.SideEffect
+import semmle.code.cpp.models.interfaces.Alias
/**
* The `std::basic_string` template class instantiations.
@@ -78,7 +80,9 @@ abstract private class StdStringTaintFunction extends TaintFunction {
* std::string b(a.begin(), a.end());
* ```
*/
-private class StdStringConstructor extends Constructor, StdStringTaintFunction {
+private class StdStringConstructor extends Constructor, StdStringTaintFunction, SideEffectFunction,
+ AliasFunction
+{
StdStringConstructor() { this.getDeclaringType() instanceof StdBasicString }
override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) {
@@ -94,6 +98,42 @@ private class StdStringConstructor extends Constructor, StdStringTaintFunction {
output.isQualifierObject()
)
}
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and buffer = false and mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = -1 and buffer = false
+ }
+}
+
+private class StdStringDestructor extends Destructor, SideEffectFunction, AliasFunction {
+ StdStringDestructor() { this.getDeclaringType() instanceof StdBasicString }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and buffer = false and mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = -1 and buffer = false
+ }
}
/**
@@ -164,7 +204,7 @@ private class StdStringFrontBack extends StdStringTaintFunction {
/**
* The (non-member) `std::string` function `operator+`.
*/
-private class StdStringPlus extends StdStringTaintFunction {
+private class StdStringPlus extends StdStringTaintFunction, SideEffectFunction, AliasFunction {
StdStringPlus() {
this.hasQualifiedName(["std", "bsl"], "operator+") and
this.getUnspecifiedType() instanceof StdBasicString
@@ -178,6 +218,22 @@ private class StdStringPlus extends StdStringTaintFunction {
) and
output.isReturnValue()
}
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ this.getParameter(i).getUnspecifiedType() instanceof ReferenceType and
+ buffer = false
+ or
+ this.getParameter(i).getUnspecifiedType() instanceof PointerType and
+ buffer = true
+ }
+
+ override predicate parameterNeverEscapes(int index) { index = [0, 1] }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
}
/**
@@ -185,7 +241,7 @@ private class StdStringPlus extends StdStringTaintFunction {
* All of these functions combine the existing string with a new
* string (or character) from one of the arguments.
*/
-private class StdStringAppend extends StdStringTaintFunction {
+private class StdStringAppend extends StdStringTaintFunction, SideEffectFunction, AliasFunction {
StdStringAppend() {
this.getClassAndName(["operator+=", "append", "replace"]) instanceof StdBasicString
}
@@ -210,6 +266,22 @@ private class StdStringAppend extends StdStringTaintFunction {
}
override predicate isPartialWrite(FunctionOutput output) { output.isQualifierObject() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and mustWrite = false and buffer = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = [-1, 0] and buffer = true
+ }
+
+ override predicate parameterNeverEscapes(int index) { index = [-1, 0] }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
}
/**
@@ -301,7 +373,7 @@ private class StdStringSubstr extends StdStringTaintFunction {
/**
* The `std::string` functions `at` and `operator[]`.
*/
-private class StdStringAt extends StdStringTaintFunction {
+private class StdStringAt extends StdStringTaintFunction, SideEffectFunction, AliasFunction {
StdStringAt() { this.getClassAndName(["at", "operator[]"]) instanceof StdBasicString }
override predicate hasTaintFlow(FunctionInput input, FunctionOutput output) {
@@ -315,6 +387,22 @@ private class StdStringAt extends StdStringTaintFunction {
}
override predicate isPartialWrite(FunctionOutput output) { output.isQualifierObject() }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ none()
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = -1 and buffer = false
+ }
}
/**
@@ -324,6 +412,54 @@ private class StdBasicIStream extends ClassTemplateInstantiation {
StdBasicIStream() { this.hasQualifiedName(["std", "bsl"], "basic_istream") }
}
+private class StdBasicIfStream extends ClassTemplateInstantiation {
+ StdBasicIfStream() { this.hasQualifiedName(["std", "bsl"], "basic_ifstream") }
+}
+
+class StdBasicIfStreamConstructor extends Constructor, SideEffectFunction, AliasFunction {
+ StdBasicIfStreamConstructor() { this.getDeclaringType() instanceof StdBasicIfStream }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and buffer = false and mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ exists(Type t | t = this.getParameter(i).getUnspecifiedType() |
+ t instanceof PointerType and buffer = true
+ or
+ t instanceof ReferenceType and buffer = false
+ )
+ }
+}
+
+class StdBasicIfStreamDestructor extends Destructor, SideEffectFunction, AliasFunction {
+ StdBasicIfStreamDestructor() { this.getDeclaringType() instanceof StdBasicIfStream }
+
+ override predicate parameterNeverEscapes(int index) { index = -1 }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ i = -1 and buffer = false and mustWrite = true
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = -1 and buffer = false
+ }
+}
+
/**
* The `std::istream` function `operator>>` (defined as a member function).
*/
@@ -542,6 +678,33 @@ private class StdBasicOStream extends ClassTemplateInstantiation {
StdBasicOStream() { this.hasQualifiedName(["std", "bsl"], "basic_ostream") }
}
+private class StdStringLessThan extends Function, AliasFunction, SideEffectFunction {
+ StdStringLessThan() {
+ this.hasQualifiedName(["std", "bsl"], "operator<") and
+ this.getNumberOfParameters() = 2 and
+ this.getParameter(0).getUnspecifiedType().(ReferenceType).getBaseType() instanceof
+ StdBasicString and
+ this.getParameter(1).getUnspecifiedType().(ReferenceType).getBaseType() instanceof
+ StdBasicString
+ }
+
+ override predicate parameterNeverEscapes(int index) { index = [0, 1] }
+
+ override predicate parameterEscapesOnlyViaReturn(int index) { none() }
+
+ override predicate hasOnlySpecificReadSideEffects() { any() }
+
+ override predicate hasOnlySpecificWriteSideEffects() { any() }
+
+ override predicate hasSpecificWriteSideEffect(ParameterIndex i, boolean buffer, boolean mustWrite) {
+ none()
+ }
+
+ override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
+ i = [0, 1] and buffer = false
+ }
+}
+
/**
* The `std::ostream` functions `operator<<` (defined as a member function),
* `put` and `write`.
diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme b/cpp/ql/lib/semmlecode.cpp.dbscheme
index 3d35dd6b50edf..9629fc87dab7d 100644
--- a/cpp/ql/lib/semmlecode.cpp.dbscheme
+++ b/cpp/ql/lib/semmlecode.cpp.dbscheme
@@ -485,10 +485,17 @@ namespace_decls(
int bodylocation: @location_default ref
);
+case @using.kind of
+ 1 = @using_declaration
+| 2 = @using_directive
+| 3 = @using_enum_declaration
+;
+
usings(
unique int id: @using,
int element_id: @element ref,
- int location: @location_default ref
+ int location: @location_default ref,
+ int kind: int ref
);
/** The element which contains the `using` declaration. */
@@ -1358,6 +1365,8 @@ funbind(
@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr
/*
+ Binary encoding of the allocator form.
+
case @allocator.form of
0 = plain
| 1 = alignment
@@ -1376,11 +1385,13 @@ expr_allocator(
);
/*
+ Binary encoding of the deallocator form.
+
case @deallocator.form of
0 = plain
| 1 = size
| 2 = alignment
- | 3 = size_and_alignment
+ | 4 = destroying_delete
;
*/
diff --git a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats
index fbb177927c725..d1ed132e903e9 100644
--- a/cpp/ql/lib/semmlecode.cpp.dbscheme.stats
+++ b/cpp/ql/lib/semmlecode.cpp.dbscheme.stats
@@ -2,7 +2,7 @@
@compilation
- 9651
+ 9742
@externalDataElement
@@ -17,72 +17,80 @@
575525
- @location_default
- 29785199
+ @location_stmt
+ 3819884
- @location_stmt
- 3820138
+ @location_default
+ 29765023
@location_expr
- 13188829
+ 13187951
@diagnostic
- 4979
+ 4996
@file
- 123129
+ 123252
@folder
- 16323
+ 16340
@macro_expansion
- 32951596
+ 33257900
@other_macro_reference
- 858174
+ 859032
@function
- 4645804
+ 4179381
@fun_decl
- 5009596
+ 4543537
@var_decl
- 8422707
+ 8039427
@type_decl
- 3280187
+ 3283466
@namespace_decl
- 311514
+ 311691
- @using
- 369388
+ @using_declaration
+ 363221
+
+
+ @using_directive
+ 6536
+
+
+ @using_enum_declaration
+ 2
@static_assert
- 134648
+ 134725
@parameter
- 6575765
+ 6190639
@membervariable
- 1054767
+ 1054697
@globalvariable
@@ -90,11 +98,11 @@
@localvariable
- 576915
+ 576947
@enumconstant
- 241686
+ 241670
@errortype
@@ -322,35 +330,35 @@
@pointer
- 567608
+ 568175
@type_with_specifiers
- 1010221
+ 852029
@array
- 110070
+ 110180
@routineptr
- 624146
+ 625429
@reference
- 1720096
+ 1276410
@gnu_vector
- 693
+ 699
@routinereference
- 234
+ 237
@rvalue_reference
- 620183
+ 333342
@block
@@ -358,43 +366,43 @@
@decltype
- 27051
+ 27078
@usertype
- 5228803
+ 5234031
@mangledname
- 6447972
+ 6061784
@type_mention
- 4029404
+ 4029136
@routinetype
- 537719
+ 538824
@ptrtomember
- 37778
+ 37816
@specifier
- 24719
+ 24743
@gnuattribute
- 686073
+ 686759
@stdattribute
- 476990
+ 478572
@declspec
- 243125
+ 243108
@msattribute
@@ -402,15 +410,15 @@
@alignas
- 9794
+ 9804
@attribute_arg_token
- 39177
+ 39216
@attribute_arg_constant_expr
- 370787
+ 371158
@attribute_arg_empty
@@ -430,35 +438,35 @@
@derivation
- 390765
+ 391568
@frienddecl
- 705602
+ 707052
@comment
- 8267972
+ 8295380
@namespace
- 12126
-
-
- @namequalifier
- 1508764
+ 12138
@specialnamequalifyingelement
466
+
+ @namequalifier
+ 1513800
+
@value
- 10777417
+ 10776699
@initialiser
- 1710171
+ 1711073
@address_of
@@ -466,15 +474,15 @@
@indirect
- 292665
+ 292646
@array_to_pointer
- 1430934
+ 1430839
@parexpr
- 3587718
+ 3587480
@arithnegexpr
@@ -486,111 +494,111 @@
@complementexpr
- 27839
+ 27837
@notexpr
- 276443
+ 276425
@postincrexpr
- 62049
+ 62045
@postdecrexpr
- 42038
+ 42035
@preincrexpr
- 70578
+ 70573
@predecrexpr
- 26209
+ 26207
@conditionalexpr
- 657281
+ 657238
@addexpr
- 398421
+ 398394
@subexpr
- 340781
+ 340758
@mulexpr
- 306377
+ 306356
@divexpr
- 133175
+ 133166
@remexpr
- 15609
+ 15641
@paddexpr
- 86668
+ 86662
@psubexpr
- 49903
+ 49900
@pdiffexpr
- 33697
+ 33809
@lshiftexpr
- 566340
+ 566303
@rshiftexpr
- 140849
+ 140840
@andexpr
- 489088
+ 489056
@orexpr
- 145475
+ 145465
@xorexpr
- 54178
+ 54175
@eqexpr
- 470681
+ 470650
@neexpr
- 301687
+ 301667
@gtexpr
- 104007
+ 104111
@ltexpr
- 101675
+ 101776
@geexpr
- 59253
+ 59249
@leexpr
- 212540
+ 212526
@assignexpr
- 937019
+ 936957
@assignaddexpr
@@ -598,11 +606,11 @@
@assignsubexpr
- 11200
+ 11199
@assignmulexpr
- 8209
+ 8285
@assigndivexpr
@@ -610,7 +618,7 @@
@assignremexpr
- 689
+ 692
@assignlshiftexpr
@@ -626,15 +634,15 @@
@assignorexpr
- 23626
+ 23627
@assignxorexpr
- 21845
+ 21844
@assignpaddexpr
- 13629
+ 13628
@assignpsubexpr
@@ -642,27 +650,27 @@
@andlogicalexpr
- 249969
+ 249952
@orlogicalexpr
- 866168
+ 866110
@commaexpr
- 122868
+ 123276
@subscriptexpr
- 364458
+ 364479
@callexpr
- 316218
+ 316534
@vastartexpr
- 3738
+ 3740
@vaargexpr
@@ -670,7 +678,7 @@
@vaendexpr
- 2798
+ 2801
@vacopyexpr
@@ -678,35 +686,35 @@
@varaccess
- 6029528
+ 6029127
@runtime_sizeof
- 295856
+ 295836
@runtime_alignof
- 49158
+ 49259
@expr_stmt
- 94393
+ 94387
@routineexpr
- 3176148
+ 3186314
@type_operand
- 1128831
+ 1128756
@offsetofexpr
- 19994
+ 19993
@typescompexpr
- 563815
+ 563777
@literal
@@ -722,27 +730,27 @@
@temp_init
- 791807
+ 794460
@errorexpr
- 46203
+ 46298
@reference_to
- 1568970
+ 1572195
@ref_indirect
- 1905327
+ 1901648
@vacuous_destructor_call
- 8030
+ 8047
@assume
- 3230
+ 3232
@conjugation
@@ -750,11 +758,11 @@
@realpartexpr
- 78
+ 79
@imagpartexpr
- 78
+ 79
@jmulexpr
@@ -794,35 +802,35 @@
@thisaccess
- 1117527
+ 1116975
@new_expr
- 46968
+ 47064
@delete_expr
- 11611
+ 11635
@throw_expr
- 21048
+ 21143
@condition_decl
- 40577
+ 40713
@braced_init_list
- 1060
+ 1063
@type_id
- 35947
+ 36021
@sizeof_pack
- 5596
+ 5602
@hasassignexpr
@@ -874,7 +882,7 @@
@isclassexpr
- 1853
+ 1854
@isconvtoexpr
@@ -882,15 +890,15 @@
@isemptyexpr
- 1460
+ 1463
@isenumexpr
- 492
+ 494
@ispodexpr
- 615
+ 620
@ispolyexpr
@@ -910,15 +918,15 @@
@uuidof
- 20292
+ 20304
@delete_array_expr
- 1364
+ 1377
@new_array_expr
- 5097
+ 5099
@foldexpr
@@ -926,55 +934,55 @@
@ctordirectinit
- 111319
+ 110607
@ctorvirtualinit
- 6318
+ 5384
@ctorfieldinit
- 198163
+ 190976
@ctordelegatinginit
- 3302
+ 3309
@dtordirectdestruct
- 41197
+ 40236
@dtorvirtualdestruct
- 4067
+ 4075
@dtorfielddestruct
- 41092
+ 40863
@static_cast
- 214320
+ 215644
@reinterpret_cast
- 31628
+ 31733
@const_cast
- 34584
+ 34699
@dynamic_cast
- 1006
+ 1015
@lambdaexpr
- 21454
+ 21475
@param_ref
- 234832
+ 235619
@noopexpr
@@ -982,7 +990,7 @@
@istriviallyconstructibleexpr
- 1280
+ 1285
@isdestructibleexpr
@@ -994,7 +1002,7 @@
@istriviallydestructibleexpr
- 788
+ 790
@istriviallyassignableexpr
@@ -1002,11 +1010,11 @@
@isnothrowassignableexpr
- 3941
+ 3954
@istrivialexpr
- 932
+ 933
@isstandardlayoutexpr
@@ -1014,7 +1022,7 @@
@istriviallycopyableexpr
- 3731
+ 3734
@isliteraltypeexpr
@@ -1038,7 +1046,7 @@
@isnothrowconstructibleexpr
- 13597
+ 13642
@hasfinalizerexpr
@@ -1074,11 +1082,11 @@
@isfinalexpr
- 1668
+ 1672
@noexceptexpr
- 24558
+ 24641
@builtinshufflevector
@@ -1090,7 +1098,7 @@
@builtinaddressof
- 13106
+ 13133
@vec_fill
@@ -1134,7 +1142,7 @@
@builtinshuffle
- 1901
+ 1919
@blockassignexpr
@@ -1250,7 +1258,7 @@
@reuseexpr
- 372471
+ 373719
@istriviallycopyassignable
@@ -1330,75 +1338,75 @@
@lambdacapture
- 27983
+ 28011
@stmt_expr
- 1486124
+ 1486025
@stmt_if
- 725963
+ 725914
@stmt_while
- 29134
+ 29316
@stmt_goto
- 110698
+ 110691
@stmt_label
- 53145
+ 53142
@stmt_return
- 1284930
+ 1280145
@stmt_block
- 1423917
+ 1419271
@stmt_end_test_while
- 148884
+ 148874
@stmt_for
- 61560
+ 61556
@stmt_switch_case
- 206808
+ 207501
@stmt_switch
- 20788
+ 20786
@stmt_asm
- 109990
+ 109982
@stmt_decl
- 588851
+ 593110
@stmt_empty
- 192673
+ 192683
@stmt_continue
- 22563
+ 22562
@stmt_break
- 103190
+ 103249
@stmt_try_block
- 44876
+ 45026
@stmt_microsoft_try
@@ -1414,19 +1422,19 @@
@stmt_assigned_goto
- 9076
+ 9075
@stmt_range_based_for
- 8395
+ 8403
@stmt_handler
- 62466
+ 62676
@stmt_constexpr_if
- 53108
+ 53185
@stmt_co_return
@@ -1434,47 +1442,47 @@
@ppd_if
- 666484
+ 667151
@ppd_ifdef
- 263049
+ 263312
@ppd_ifndef
- 266314
+ 266580
@ppd_elif
- 25185
+ 25210
@ppd_else
- 208946
+ 209155
@ppd_endif
- 1195848
+ 1197043
@ppd_plain_include
- 311088
+ 311399
@ppd_define
- 2292433
+ 2300032
@ppd_undef
- 258385
+ 258643
@ppd_include_next
- 1865
+ 1867
@ppd_line
- 27519
+ 27520
@ppd_error
@@ -1482,7 +1490,7 @@
@ppd_pragma
- 296776
+ 297760
@ppd_objc_import
@@ -1494,7 +1502,7 @@
@link_target
- 814
+ 816
@xmldtd
@@ -1524,11 +1532,11 @@
compilations
- 9651
+ 9742
id
- 9651
+ 9742
cwd
@@ -1546,7 +1554,7 @@
1
2
- 9651
+ 9742
@@ -1572,7 +1580,7 @@
compilation_args
- 652594
+ 652551
id
@@ -1584,7 +1592,7 @@
arg
- 34463
+ 34461
@@ -1618,7 +1626,7 @@
131
132
- 815
+ 814
134
@@ -1659,7 +1667,7 @@
109
110
- 815
+ 814
111
@@ -1822,12 +1830,12 @@
1
2
- 32399
+ 32397
2
1043
- 2064
+ 2063
@@ -1843,7 +1851,7 @@
1
2
- 33256
+ 33254
2
@@ -1870,7 +1878,7 @@
file
- 10028
+ 10027
@@ -1986,7 +1994,7 @@
1
2
- 1758
+ 1757
2
@@ -2022,7 +2030,7 @@
1
2
- 1758
+ 1757
2
@@ -2063,7 +2071,7 @@
2
4
- 839
+ 838
4
@@ -2084,7 +2092,7 @@
1
2
- 9189
+ 9188
2
@@ -2104,7 +2112,7 @@
compilation_time
- 46187
+ 46184
id
@@ -2120,7 +2128,7 @@
seconds
- 9948
+ 9468
@@ -2201,12 +2209,12 @@
3
4
- 759
+ 639
4
5
- 239
+ 359
5
@@ -2214,9 +2222,9 @@
159
- 9
+ 8
10
- 159
+ 119
10
@@ -2225,8 +2233,8 @@
11
- 14
- 119
+ 15
+ 159
16
@@ -2234,13 +2242,13 @@
159
- 19
- 27
+ 18
+ 24
159
- 38
- 96
+ 41
+ 90
119
@@ -2257,7 +2265,7 @@
1
2
- 1758
+ 1757
2
@@ -2309,17 +2317,17 @@
3
4
- 1318
+ 1438
4
5
- 439
+ 319
5
6
- 199
+ 279
6
@@ -2329,7 +2337,7 @@
7
8
- 159
+ 79
8
@@ -2338,12 +2346,12 @@
9
- 23
+ 21
279
25
- 92
+ 93
279
@@ -2392,21 +2400,16 @@
3
4
- 39
-
-
- 4
- 5
- 39
+ 79
- 136
- 137
+ 126
+ 127
39
- 145
- 146
+ 135
+ 136
39
@@ -2423,27 +2426,27 @@
1
2
- 4954
+ 4794
2
3
- 2796
+ 2317
3
4
- 1118
+ 1078
4
- 6
- 918
+ 5
+ 599
- 7
+ 5
47
- 159
+ 679
@@ -2459,32 +2462,32 @@
1
2
- 4235
+ 4115
2
3
- 2317
+ 1797
3
4
- 1358
+ 1797
4
5
- 1158
+ 719
5
- 12
- 759
+ 8
+ 799
- 26
- 75
- 119
+ 8
+ 74
+ 239
@@ -2500,12 +2503,12 @@
1
2
- 8390
+ 8270
2
3
- 1558
+ 1198
@@ -2515,15 +2518,15 @@
diagnostic_for
- 5434
+ 5452
diagnostic
- 4979
+ 4996
compilation
- 814
+ 816
file_number
@@ -2531,7 +2534,7 @@
file_number_diagnostic_number
- 397
+ 398
@@ -2545,7 +2548,7 @@
1
2
- 4828
+ 4844
2
@@ -2566,7 +2569,7 @@
1
2
- 4979
+ 4996
@@ -2582,7 +2585,7 @@
1
2
- 4979
+ 4996
@@ -2598,7 +2601,7 @@
5
6
- 605
+ 607
7
@@ -2634,7 +2637,7 @@
1
2
- 814
+ 816
@@ -2650,7 +2653,7 @@
5
6
- 605
+ 607
7
@@ -2831,7 +2834,7 @@
1
2
- 397
+ 398
@@ -2841,19 +2844,19 @@
compilation_finished
- 9651
+ 9742
id
- 9651
+ 9742
cpu_seconds
- 6990
+ 7258
elapsed_seconds
- 134
+ 135
@@ -2867,7 +2870,7 @@
1
2
- 9651
+ 9742
@@ -2883,7 +2886,7 @@
1
2
- 9651
+ 9742
@@ -2899,17 +2902,17 @@
1
2
- 5457
+ 5870
2
3
- 1073
+ 914
3
- 16
- 458
+ 12
+ 474
@@ -2925,12 +2928,12 @@
1
2
- 6341
+ 6547
2
3
- 648
+ 711
@@ -2954,43 +2957,38 @@
11
- 8
- 9
- 11
-
-
- 10
- 11
- 11
+ 9
+ 10
+ 22
- 11
- 12
+ 18
+ 19
11
- 54
- 55
+ 43
+ 44
11
- 156
- 157
+ 161
+ 162
11
- 173
- 174
+ 169
+ 170
11
- 177
- 178
+ 197
+ 198
11
- 261
- 262
+ 244
+ 245
11
@@ -3015,43 +3013,38 @@
11
- 8
- 9
- 11
-
-
- 10
- 11
- 11
+ 9
+ 10
+ 22
- 11
- 12
+ 16
+ 17
11
- 48
- 49
+ 40
+ 41
11
- 109
- 110
+ 116
+ 117
11
- 120
- 121
+ 132
+ 133
11
- 132
- 133
+ 143
+ 144
11
- 232
- 233
+ 228
+ 229
11
@@ -4824,31 +4817,31 @@
locations_default
- 29785199
+ 29765023
id
- 29785199
+ 29765023
container
- 123129
+ 123252
startLine
- 2093200
+ 2095293
startColumn
- 36845
+ 36882
endLine
- 2097398
+ 2099495
endColumn
- 48039
+ 48087
@@ -4862,7 +4855,7 @@
1
2
- 29785199
+ 29765023
@@ -4878,7 +4871,7 @@
1
2
- 29785199
+ 29765023
@@ -4894,7 +4887,7 @@
1
2
- 29785199
+ 29765023
@@ -4910,7 +4903,7 @@
1
2
- 29785199
+ 29765023
@@ -4926,7 +4919,7 @@
1
2
- 29785199
+ 29765023
@@ -4942,67 +4935,67 @@
1
11
- 9794
+ 9804
11
18
- 10260
+ 10271
18
30
- 9327
+ 9337
30
42
- 9794
+ 9804
43
61
- 9794
+ 9804
61
79
- 9327
+ 9337
80
106
- 9794
+ 9804
- 109
+ 108
149
- 9327
+ 9337
149
199
- 9327
+ 9337
206
- 292
- 9327
+ 291
+ 9337
- 305
+ 304
469
- 9327
+ 9337
482
850
- 9327
+ 9337
- 939
+ 936
2380
- 8395
+ 8403
@@ -5018,72 +5011,72 @@
1
8
- 9327
+ 9337
8
13
- 9327
+ 9337
13
20
- 9794
+ 9804
20
32
- 9327
+ 9337
32
43
- 9794
+ 9804
44
61
- 9327
+ 9337
62
72
- 9327
+ 9337
73
93
- 9327
+ 9337
97
128
- 9327
+ 9337
128
180
- 9327
+ 9337
180
267
- 9327
+ 9337
277
414
- 9327
+ 9337
439
1465
- 9327
+ 9337
1557
1569
- 932
+ 933
@@ -5099,67 +5092,67 @@
1
4
- 8861
+ 8870
4
5
- 7928
+ 7936
5
6
- 7462
+ 7469
6
8
- 11193
+ 11204
8
10
- 9327
+ 9337
10
15
- 10727
+ 10737
15
23
- 9794
+ 9804
23
28
- 11193
+ 11204
28
34
- 9794
+ 9804
34
44
- 9327
+ 9337
44
55
- 9327
+ 9337
55
66
- 9794
+ 9804
66
77
- 8395
+ 8403
@@ -5175,72 +5168,72 @@
1
8
- 9327
+ 9337
8
13
- 9327
+ 9337
13
20
- 9794
+ 9804
20
32
- 9327
+ 9337
32
43
- 9794
+ 9804
43
60
- 9327
+ 9337
61
71
- 9327
+ 9337
72
93
- 9327
+ 9337
94
127
- 9327
+ 9337
128
179
- 9327
+ 9337
180
268
- 9327
+ 9337
278
413
- 9327
+ 9337
437
1465
- 9327
+ 9337
1554
1566
- 932
+ 933
@@ -5256,67 +5249,67 @@
1
9
- 9794
+ 9804
9
13
- 9327
+ 9337
13
18
- 9327
+ 9337
18
26
- 10260
+ 10271
27
33
- 9327
+ 9337
33
39
- 9327
+ 9337
39
47
- 10260
+ 10271
47
- 54
- 9327
+ 53
+ 9337
- 54
+ 53
60
- 10260
+ 10271
60
66
- 9327
+ 9337
66
74
- 9794
+ 9804
74
78
- 9794
+ 9804
78
90
- 6995
+ 7002
@@ -5332,52 +5325,52 @@
1
2
- 581133
+ 583115
2
3
- 314819
+ 314200
3
4
- 194954
+ 195616
4
6
- 162306
+ 162002
6
10
- 183294
+ 183011
10
16
- 161840
+ 162936
16
25
- 168370
+ 169005
25
- 45
- 157176
+ 46
+ 161068
- 45
- 160
- 157643
+ 46
+ 169
+ 157333
- 160
+ 169
265
- 11659
+ 7002
@@ -5393,42 +5386,42 @@
1
2
- 870301
+ 871171
2
3
- 273310
+ 273583
3
5
- 193555
+ 193749
5
8
- 173500
+ 173674
8
13
- 187958
+ 188146
13
20
- 160907
+ 161068
20
51
- 159508
+ 159668
51
265
- 74157
+ 74231
@@ -5444,47 +5437,47 @@
1
2
- 611449
+ 612060
2
3
- 312954
+ 313266
3
4
- 198219
+ 198417
4
6
- 182828
+ 183011
6
9
- 173034
+ 173207
9
13
- 163239
+ 163402
13
19
- 173966
+ 174607
19
29
- 165105
+ 164803
29
52
- 112402
+ 112514
@@ -5500,22 +5493,22 @@
1
2
- 1530256
+ 1531786
2
3
- 348400
+ 348748
3
5
- 161840
+ 162002
5
16
- 52703
+ 52755
@@ -5531,47 +5524,52 @@
1
2
- 585797
+ 587783
2
3
- 316218
+ 316068
3
4
- 197753
+ 197484
4
6
- 168370
+ 168538
6
- 10
- 191690
+ 9
+ 158267
- 10
- 15
- 165571
+ 9
+ 14
+ 170872
- 15
- 22
- 167903
+ 14
+ 21
+ 175074
- 22
- 34
- 164172
+ 21
+ 32
+ 162469
- 34
+ 32
+ 63
+ 157800
+
+
+ 64
66
- 135722
+ 933
@@ -5587,67 +5585,67 @@
1
31
- 2798
+ 2801
42
85
- 2798
+ 2801
86
128
- 2798
+ 2801
129
229
- 2798
+ 2801
247
286
- 2798
+ 2801
291
360
- 2798
+ 2801
373
457
- 2798
+ 2801
- 475
+ 473
565
- 2798
+ 2801
566
- 620
- 2798
+ 619
+ 2801
- 623
+ 619
689
- 2798
+ 2801
696
807
- 2798
+ 2801
- 820
+ 819
1563
- 2798
+ 2801
- 1638
- 5632
- 2798
+ 1634
+ 5631
+ 2801
15295
@@ -5668,67 +5666,67 @@
1
18
- 2798
+ 2801
23
35
- 3264
+ 3268
38
43
- 2798
+ 2801
44
61
- 2798
+ 2801
65
73
- 2798
+ 2801
73
84
- 3264
+ 3268
84
96
- 2798
+ 2801
96
101
- 3264
+ 3268
101
105
- 3264
+ 3268
107
112
- 2798
+ 2801
112
126
- 2798
+ 2801
137
170
- 2798
+ 2801
195
265
- 1399
+ 1400
@@ -5744,67 +5742,67 @@
1
19
- 2798
+ 2801
30
72
- 2798
+ 2801
83
122
- 2798
+ 2801
122
205
- 2798
+ 2801
214
261
- 2798
+ 2801
265
322
- 2798
+ 2801
322
379
- 2798
+ 2801
404
430
- 2798
+ 2801
453
474
- 2798
+ 2801
478
505
- 2798
+ 2801
511
583
- 2798
+ 2801
585
836
- 2798
+ 2801
1104
2196
- 2798
+ 2801
2387
@@ -5825,67 +5823,67 @@
1
19
- 2798
+ 2801
30
72
- 2798
+ 2801
83
122
- 2798
+ 2801
122
205
- 2798
+ 2801
214
261
- 2798
+ 2801
265
322
- 2798
+ 2801
322
380
- 2798
+ 2801
404
430
- 2798
+ 2801
453
474
- 2798
+ 2801
477
504
- 2798
+ 2801
514
582
- 2798
+ 2801
585
835
- 2798
+ 2801
1109
2203
- 2798
+ 2801
2382
@@ -5906,67 +5904,67 @@
1
7
- 2798
+ 2801
7
11
- 3264
+ 3268
11
16
- 3264
+ 3268
16
22
- 2798
+ 2801
22
24
- 3264
+ 3268
24
28
- 2798
+ 2801
29
34
- 3264
+ 3268
34
41
- 3264
+ 3268
41
46
- 2798
+ 2801
47
49
- 1865
+ 1867
49
54
- 2798
+ 2801
54
74
- 2798
+ 2801
75
86
- 1865
+ 1867
@@ -5982,52 +5980,52 @@
1
2
- 591394
+ 593386
2
3
- 306890
+ 306263
3
4
- 198219
+ 198417
4
6
- 159508
+ 159668
6
10
- 182828
+ 182544
10
16
- 160441
+ 162002
16
25
- 170702
+ 171339
25
- 45
- 158109
+ 46
+ 158734
- 45
- 160
- 158109
+ 46
+ 161
+ 158267
- 160
+ 162
265
- 11193
+ 8870
@@ -6043,47 +6041,47 @@
1
2
- 885692
+ 886577
2
3
- 259784
+ 260044
3
4
- 124995
+ 125120
4
6
- 140852
+ 140993
6
10
- 184694
+ 184878
10
15
- 168370
+ 168538
15
26
- 163239
+ 163402
26
120
- 158109
+ 158267
121
265
- 11659
+ 11671
@@ -6099,22 +6097,22 @@
1
2
- 1527924
+ 1529452
2
3
- 341404
+ 341745
3
5
- 170702
+ 170872
5
10
- 57367
+ 57424
@@ -6130,47 +6128,47 @@
1
2
- 622643
+ 623265
2
3
- 303159
+ 303462
3
4
- 201484
+ 201685
4
6
- 183761
+ 183945
6
9
- 169769
+ 169939
9
13
- 166504
+ 166671
13
19
- 174899
+ 175074
19
29
- 160907
+ 161068
29
52
- 114267
+ 114382
@@ -6186,52 +6184,52 @@
1
2
- 597924
+ 599922
2
3
- 306890
+ 306263
3
4
- 196354
+ 197017
4
6
- 169302
+ 169005
6
9
- 154844
+ 156400
9
14
- 168370
+ 169005
14
21
- 178630
+ 177875
21
32
- 163239
+ 162002
32
60
- 158109
+ 158267
60
65
- 3731
+ 3734
@@ -6247,67 +6245,67 @@
1
2
- 5130
+ 5135
2
8
- 3731
+ 3734
9
186
- 3731
+ 3734
193
288
- 3731
+ 3734
294
495
- 3731
+ 3734
503
555
- 3731
+ 3734
561
- 634
- 3731
+ 633
+ 3734
640
758
- 3731
+ 3734
758
869
- 3731
+ 3734
- 876
+ 875
1074
- 3731
+ 3734
- 1075
+ 1074
1281
- 3731
+ 3734
1289
1590
- 3731
+ 3734
1685
2418
- 1865
+ 1867
@@ -6323,67 +6321,62 @@
1
2
- 5596
+ 5602
2
5
- 3731
+ 3734
5
65
- 3731
+ 3734
70
100
- 3731
+ 3734
100
111
- 3731
+ 3734
112
122
- 3731
+ 4201
122
- 134
- 3731
-
-
- 139
- 152
- 3731
+ 140
+ 3734
- 152
- 160
- 3731
+ 143
+ 153
+ 3734
- 160
- 171
- 3731
+ 153
+ 161
+ 4201
- 171
- 175
- 3731
+ 161
+ 173
+ 4201
- 176
- 192
- 3731
+ 173
+ 178
+ 3734
- 207
+ 188
265
- 1399
+ 3734
@@ -6399,67 +6392,67 @@
1
2
- 5596
+ 5602
2
8
- 3731
+ 3734
9
105
- 3731
+ 3734
155
241
- 3731
+ 3734
253
336
- 3731
+ 3734
340
426
- 3731
+ 3734
434
488
- 3731
+ 3734
489
572
- 3731
+ 3734
573
623
- 3731
+ 3734
- 628
+ 626
696
- 4197
+ 4201
701
- 819
- 3731
+ 813
+ 3734
- 837
+ 818
1095
- 3731
+ 3734
1172
1174
- 932
+ 933
@@ -6475,67 +6468,67 @@
1
2
- 6063
+ 6069
2
4
- 3731
+ 3734
4
8
- 4197
+ 4201
8
15
- 3731
+ 3734
15
23
- 3731
+ 3734
23
29
- 3731
+ 3734
29
35
- 4197
+ 4201
35
39
- 3264
+ 3268
39
42
- 3264
+ 3268
42
44
- 3264
+ 3268
44
46
- 3731
+ 3734
46
49
- 3731
+ 3734
49
53
- 1399
+ 1400
@@ -6551,67 +6544,67 @@
1
2
- 5596
+ 5602
2
8
- 3731
+ 3734
9
156
- 3731
+ 3734
159
240
- 3731
+ 3734
251
335
- 3731
+ 3734
342
430
- 3731
+ 3734
432
490
- 3731
+ 3734
490
573
- 3731
+ 3734
574
622
- 3731
+ 3734
- 628
+ 626
698
- 3731
+ 3734
700
- 812
- 3731
+ 798
+ 3734
- 812
+ 811
987
- 3731
+ 3734
1096
1180
- 1399
+ 1400
@@ -6621,11 +6614,11 @@
locations_stmt
- 3820138
+ 3819884
id
- 3820138
+ 3819884
container
@@ -6633,7 +6626,7 @@
startLine
- 200185
+ 200172
startColumn
@@ -6641,7 +6634,7 @@
endLine
- 194441
+ 194428
endColumn
@@ -6659,7 +6652,7 @@
1
2
- 3820138
+ 3819884
@@ -6675,7 +6668,7 @@
1
2
- 3820138
+ 3819884
@@ -6691,7 +6684,7 @@
1
2
- 3820138
+ 3819884
@@ -6707,7 +6700,7 @@
1
2
- 3820138
+ 3819884
@@ -6723,7 +6716,7 @@
1
2
- 3820138
+ 3819884
@@ -7124,17 +7117,17 @@
1
2
- 21577
+ 21575
2
3
- 15318
+ 15317
3
4
- 12497
+ 12496
4
@@ -7144,47 +7137,47 @@
6
8
- 12538
+ 12537
8
11
- 16738
+ 16737
11
16
- 17294
+ 17293
16
22
- 15379
+ 15378
22
29
- 17006
+ 17005
29
37
- 17397
+ 17396
37
45
- 15112
+ 15111
45
56
- 16203
+ 16202
56
73
- 8647
+ 8646
@@ -7200,62 +7193,62 @@
1
2
- 22338
+ 22337
2
3
- 15750
+ 15749
3
4
- 12703
+ 12702
4
6
- 14412
+ 14411
6
8
- 12744
+ 12743
8
11
- 17603
+ 17602
11
16
- 16388
+ 16387
16
22
- 16244
+ 16243
22
29
- 16985
+ 16984
29
36
- 16018
+ 16017
36
44
- 16347
+ 16346
44
54
- 15668
+ 15667
54
@@ -7276,52 +7269,52 @@
1
2
- 26868
+ 26866
2
3
- 20877
+ 20875
3
4
- 16841
+ 16840
4
5
- 16100
+ 16099
5
6
- 17459
+ 17458
6
7
- 19888
+ 19887
7
8
- 22791
+ 22790
8
9
- 20424
+ 20422
9
10
- 15029
+ 15028
10
12
- 16676
+ 16675
12
@@ -7342,67 +7335,67 @@
1
2
- 34651
+ 34648
2
3
- 25839
+ 25837
3
4
- 18468
+ 18466
4
5
- 16244
+ 16243
5
6
- 12806
+ 12805
6
7
- 12044
+ 12043
7
8
- 10191
+ 10190
8
9
- 10994
+ 10993
9
10
- 10747
+ 10746
10
11
- 10541
+ 10540
11
12
- 10191
+ 10190
12
14
- 15812
+ 15811
14
24
- 11653
+ 11652
@@ -7418,12 +7411,12 @@
1
2
- 22174
+ 22172
2
3
- 16224
+ 16222
3
@@ -7433,47 +7426,47 @@
4
6
- 16100
+ 16099
6
8
- 14721
+ 14720
8
10
- 13218
+ 13217
10
14
- 18324
+ 18322
14
18
- 17047
+ 17046
18
22
- 17603
+ 17602
22
26
- 18529
+ 18528
26
30
- 16409
+ 16408
30
36
- 15256
+ 15255
36
@@ -7864,67 +7857,67 @@
1
2
- 17438
+ 17437
2
3
- 14432
+ 14431
3
4
- 11509
+ 11508
4
6
- 15626
+ 15625
6
8
- 12518
+ 12517
8
11
- 15482
+ 15481
11
15
- 14659
+ 14658
15
21
- 16121
+ 16120
21
27
- 15441
+ 15440
27
34
- 14968
+ 14967
34
42
- 15771
+ 15770
42
52
- 16038
+ 16037
52
130
- 14432
+ 14431
@@ -7940,62 +7933,62 @@
1
2
- 24994
+ 24993
2
3
- 16162
+ 16161
3
4
- 12785
+ 12784
4
6
- 15688
+ 15687
6
8
- 15029
+ 15028
8
11
- 15915
+ 15914
11
16
- 17479
+ 17478
16
20
- 14618
+ 14617
20
26
- 17191
+ 17190
26
32
- 16285
+ 16284
32
39
- 14885
+ 14884
39
59
- 13403
+ 13402
@@ -8011,62 +8004,62 @@
1
2
- 32530
+ 32528
2
3
- 23800
+ 23799
3
4
- 18488
+ 18487
4
5
- 15173
+ 15172
5
6
- 13897
+ 13896
6
7
- 11694
+ 11693
7
8
- 11756
+ 11755
8
9
- 10932
+ 10931
9
10
- 10191
+ 10190
10
12
- 17994
+ 17993
12
15
- 17747
+ 17746
15
100
- 10232
+ 10231
@@ -8082,52 +8075,52 @@
1
2
- 24994
+ 24993
2
3
- 20424
+ 20422
3
4
- 16862
+ 16861
4
5
- 17829
+ 17828
5
6
- 18612
+ 18611
6
7
- 20465
+ 20463
7
8
- 22462
+ 22460
8
9
- 18777
+ 18775
9
10
- 12950
+ 12949
10
12
- 15050
+ 15049
12
@@ -8148,62 +8141,62 @@
1
2
- 24747
+ 24746
2
3
- 16656
+ 16655
3
4
- 12559
+ 12558
4
6
- 17850
+ 17849
6
8
- 15359
+ 15358
8
10
- 12847
+ 12846
10
13
- 14432
+ 14431
13
16
- 15050
+ 15049
16
19
- 14679
+ 14678
19
22
- 14062
+ 14061
22
26
- 17150
+ 17149
26
31
- 15359
+ 15358
31
@@ -8603,19 +8596,19 @@
locations_expr
- 13188829
+ 13187951
id
- 13188829
+ 13187951
container
- 4653
+ 4652
startLine
- 192238
+ 192225
startColumn
@@ -8623,11 +8616,11 @@
endLine
- 192217
+ 192204
endColumn
- 2800
+ 2799
@@ -8641,7 +8634,7 @@
1
2
- 13188829
+ 13187951
@@ -8657,7 +8650,7 @@
1
2
- 13188829
+ 13187951
@@ -8673,7 +8666,7 @@
1
2
- 13188829
+ 13187951
@@ -8689,7 +8682,7 @@
1
2
- 13188829
+ 13187951
@@ -8705,7 +8698,7 @@
1
2
- 13188829
+ 13187951
@@ -8741,47 +8734,47 @@
27
96
- 350
+ 349
100
514
- 350
+ 349
525
1401
- 350
+ 349
1526
2343
- 350
+ 349
2404
3615
- 350
+ 349
3668
5162
- 350
+ 349
5341
7345
- 350
+ 349
7399
9307
- 350
+ 349
9382
16759
- 350
+ 349
18811
@@ -8817,47 +8810,47 @@
10
20
- 350
+ 349
20
51
- 350
+ 349
65
151
- 350
+ 349
161
360
- 350
+ 349
361
577
- 350
+ 349
590
923
- 350
+ 349
928
1265
- 350
+ 349
1268
1742
- 350
+ 349
1781
2320
- 350
+ 349
2491
@@ -8883,7 +8876,7 @@
2
4
- 350
+ 349
4
@@ -8893,12 +8886,12 @@
7
16
- 350
+ 349
16
37
- 350
+ 349
37
@@ -8979,47 +8972,47 @@
10
20
- 350
+ 349
20
51
- 350
+ 349
65
151
- 350
+ 349
162
360
- 350
+ 349
361
578
- 350
+ 349
591
926
- 350
+ 349
930
1266
- 350
+ 349
1272
1742
- 350
+ 349
1785
2324
- 350
+ 349
2500
@@ -9055,22 +9048,22 @@
7
15
- 350
+ 349
15
36
- 350
+ 349
36
61
- 350
+ 349
61
70
- 350
+ 349
70
@@ -9095,12 +9088,12 @@
77
79
- 350
+ 349
79
84
- 350
+ 349
84
@@ -9121,67 +9114,67 @@
1
5
- 16141
+ 16140
5
9
- 16512
+ 16511
9
15
- 16059
+ 16058
15
23
- 15132
+ 15131
23
32
- 15173
+ 15172
32
44
- 15029
+ 15028
44
60
- 14782
+ 14781
60
80
- 14844
+ 14843
80
103
- 14659
+ 14658
103
130
- 14803
+ 14802
130
159
- 14556
+ 14555
159
194
- 14638
+ 14637
194
302
- 9903
+ 9902
@@ -9197,62 +9190,62 @@
1
2
- 23553
+ 23552
2
3
- 15647
+ 15646
3
4
- 11365
+ 11364
4
6
- 16388
+ 16387
6
8
- 13650
+ 13649
8
11
- 16471
+ 16469
11
16
- 17376
+ 17375
16
21
- 16471
+ 16469
21
28
- 16676
+ 16675
28
35
- 15832
+ 15831
35
43
- 15874
+ 15872
43
60
- 12929
+ 12928
@@ -9268,62 +9261,62 @@
1
4
- 15997
+ 15996
4
7
- 17562
+ 17561
7
11
- 16718
+ 16717
11
16
- 17438
+ 17437
16
21
- 17541
+ 17540
21
26
- 15091
+ 15090
26
31
- 16203
+ 16202
31
36
- 17747
+ 17746
36
40
- 15729
+ 15728
40
44
- 16326
+ 16325
44
49
- 16924
+ 16922
49
63
- 8956
+ 8955
@@ -9339,22 +9332,22 @@
1
2
- 102120
+ 102113
2
3
- 44698
+ 44695
3
4
- 27692
+ 27690
4
6
- 14597
+ 14596
6
@@ -9375,57 +9368,57 @@
1
4
- 16985
+ 16984
4
7
- 16676
+ 16675
7
11
- 16450
+ 16449
11
16
- 16244
+ 16243
16
21
- 16471
+ 16469
21
27
- 16800
+ 16799
27
33
- 16471
+ 16469
33
38
- 14494
+ 14493
38
43
- 15565
+ 15564
43
47
- 14721
+ 14720
47
52
- 16800
+ 16799
52
@@ -9836,67 +9829,67 @@
1
5
- 16162
+ 16161
5
9
- 16512
+ 16511
9
15
- 15832
+ 15831
15
23
- 15112
+ 15111
23
32
- 15668
+ 15667
32
44
- 14762
+ 14761
44
60
- 14515
+ 14514
60
80
- 15276
+ 15275
80
103
- 14556
+ 14555
103
130
- 14782
+ 14781
130
160
- 14906
+ 14905
160
195
- 14576
+ 14575
195
299
- 9553
+ 9552
@@ -9912,62 +9905,62 @@
1
2
- 23553
+ 23552
2
3
- 15585
+ 15584
3
4
- 11365
+ 11364
4
6
- 16079
+ 16078
6
8
- 13506
+ 13505
8
11
- 16532
+ 16531
11
15
- 14453
+ 14452
15
20
- 16800
+ 16799
20
26
- 15009
+ 15008
26
33
- 16079
+ 16078
33
40
- 14659
+ 14658
40
49
- 14618
+ 14617
49
@@ -9988,22 +9981,22 @@
1
2
- 95635
+ 95628
2
3
- 50092
+ 50089
3
4
- 29421
+ 29419
4
6
- 15626
+ 15625
6
@@ -10024,62 +10017,62 @@
1
4
- 15853
+ 15852
4
7
- 17479
+ 17478
7
11
- 16512
+ 16511
11
16
- 17376
+ 17375
16
21
- 17335
+ 17334
21
26
- 15173
+ 15172
26
31
- 16326
+ 16325
31
36
- 17706
+ 17705
36
40
- 15318
+ 15317
40
44
- 16471
+ 16469
44
49
- 17006
+ 17005
49
63
- 9656
+ 9655
@@ -10095,62 +10088,62 @@
1
4
- 17212
+ 17211
4
7
- 16821
+ 16819
7
11
- 16450
+ 16449
11
16
- 16903
+ 16902
16
21
- 16038
+ 16037
21
26
- 14535
+ 14534
26
32
- 16182
+ 16181
32
38
- 17521
+ 17519
38
43
- 16162
+ 16161
43
47
- 14494
+ 14493
47
52
- 16594
+ 16593
52
69
- 13300
+ 13299
@@ -10535,23 +10528,23 @@
numlines
- 1382407
+ 1383789
element_id
- 1375411
+ 1376786
num_lines
- 101675
+ 101776
num_code
- 84884
+ 84969
num_comment
- 59699
+ 59758
@@ -10565,12 +10558,12 @@
1
2
- 1368415
+ 1369783
2
3
- 6995
+ 7002
@@ -10586,12 +10579,12 @@
1
2
- 1369348
+ 1370717
2
3
- 6063
+ 6069
@@ -10607,7 +10600,7 @@
1
2
- 1375411
+ 1376786
@@ -10623,27 +10616,27 @@
1
2
- 68094
+ 68162
2
3
- 12126
+ 12138
3
4
- 7462
+ 7469
4
21
- 7928
+ 7936
29
921
- 6063
+ 6069
@@ -10659,27 +10652,27 @@
1
2
- 70426
+ 70496
2
3
- 12126
+ 12138
3
4
- 8395
+ 8403
4
6
- 9327
+ 9337
6
7
- 1399
+ 1400
@@ -10695,22 +10688,22 @@
1
2
- 69493
+ 69562
2
3
- 14924
+ 14939
3
4
- 10727
+ 10737
4
7
- 6529
+ 6536
@@ -10726,27 +10719,27 @@
1
2
- 52703
+ 52755
2
3
- 14458
+ 14472
3
5
- 6529
+ 6536
5
42
- 6529
+ 6536
44
922
- 4663
+ 4668
@@ -10762,27 +10755,27 @@
1
2
- 52703
+ 52755
2
3
- 16790
+ 16807
3
5
- 6063
+ 6069
5
8
- 6529
+ 6536
8
12
- 2798
+ 2801
@@ -10798,27 +10791,27 @@
1
2
- 53169
+ 53222
2
3
- 15857
+ 15873
3
5
- 7462
+ 7469
5
7
- 5130
+ 5135
7
10
- 3264
+ 3268
@@ -10834,32 +10827,32 @@
1
2
- 34513
+ 34548
2
3
- 9327
+ 9337
3
4
- 4197
+ 4201
4
6
- 4663
+ 4668
6
11
- 5130
+ 5135
17
2596
- 1865
+ 1867
@@ -10875,32 +10868,32 @@
1
2
- 34513
+ 34548
2
3
- 9327
+ 9337
3
4
- 4197
+ 4201
4
6
- 4663
+ 4668
6
8
- 4663
+ 4668
10
38
- 2331
+ 2334
@@ -10916,32 +10909,32 @@
1
2
- 34513
+ 34548
2
3
- 9327
+ 9337
3
4
- 4197
+ 4201
4
6
- 4663
+ 4668
6
10
- 4663
+ 4668
10
37
- 2331
+ 2334
@@ -10951,11 +10944,11 @@
diagnostics
- 4979
+ 4996
id
- 4979
+ 4996
severity
@@ -10967,11 +10960,11 @@
error_message
- 397
+ 398
full_error_message
- 4184
+ 4198
location
@@ -10989,7 +10982,7 @@
1
2
- 4979
+ 4996
@@ -11005,7 +10998,7 @@
1
2
- 4979
+ 4996
@@ -11021,7 +11014,7 @@
1
2
- 4979
+ 4996
@@ -11037,7 +11030,7 @@
1
2
- 4979
+ 4996
@@ -11053,7 +11046,7 @@
1
2
- 4979
+ 4996
@@ -11285,7 +11278,7 @@
1
2
- 397
+ 398
@@ -11301,7 +11294,7 @@
1
2
- 397
+ 398
@@ -11379,7 +11372,7 @@
1
2
- 4165
+ 4179
43
@@ -11400,7 +11393,7 @@
1
2
- 4184
+ 4198
@@ -11416,7 +11409,7 @@
1
2
- 4184
+ 4198
@@ -11432,7 +11425,7 @@
1
2
- 4184
+ 4198
@@ -11448,7 +11441,7 @@
1
2
- 4184
+ 4198
@@ -11583,15 +11576,15 @@
files
- 123129
+ 123252
id
- 123129
+ 123252
name
- 123129
+ 123252
@@ -11605,7 +11598,7 @@
1
2
- 123129
+ 123252
@@ -11621,7 +11614,7 @@
1
2
- 123129
+ 123252
@@ -11631,15 +11624,15 @@
folders
- 16323
+ 16340
id
- 16323
+ 16340
name
- 16323
+ 16340
@@ -11653,7 +11646,7 @@
1
2
- 16323
+ 16340
@@ -11669,7 +11662,7 @@
1
2
- 16323
+ 16340
@@ -11679,15 +11672,15 @@
containerparent
- 138520
+ 138659
parent
- 16323
+ 16340
child
- 138520
+ 138659
@@ -11701,32 +11694,32 @@
1
2
- 7462
+ 7469
2
3
- 3264
+ 3268
3
4
- 1399
+ 1400
4
12
- 1399
+ 1400
23
28
- 1399
+ 1400
40
67
- 1399
+ 1400
@@ -11742,7 +11735,7 @@
1
2
- 138520
+ 138659
@@ -11752,11 +11745,11 @@
fileannotations
- 5081854
+ 5129328
id
- 4853
+ 4899
kind
@@ -11764,11 +11757,11 @@
name
- 54265
+ 54771
value
- 45619
+ 46045
@@ -11782,12 +11775,12 @@
1
2
- 167
+ 169
2
3
- 4686
+ 4729
@@ -11803,57 +11796,57 @@
1
102
- 380
+ 383
102
225
- 369
+ 372
227
299
- 369
+ 372
301
452
- 391
+ 395
452
555
- 369
+ 372
559
626
- 369
+ 372
626
716
- 369
+ 372
729
904
- 369
+ 372
904
934
- 78
+ 79
936
937
- 1409
+ 1422
1083
2036
- 369
+ 372
2293
@@ -11874,57 +11867,57 @@
1
114
- 380
+ 383
114
275
- 369
+ 372
275
363
- 369
+ 372
393
638
- 369
+ 372
643
744
- 369
+ 372
751
955
- 369
+ 372
955
1087
- 369
+ 372
1088
1501
- 246
+ 248
1501
1502
- 1409
+ 1422
1504
1874
- 369
+ 372
1972
4080
- 234
+ 237
@@ -12003,62 +11996,62 @@
1
2
- 8779
+ 8861
2
3
- 6162
+ 6219
3
5
- 4138
+ 4176
5
9
- 4227
+ 4267
9
14
- 3947
+ 3984
14
18
- 4138
+ 4176
18
20
- 4674
+ 4718
20
34
- 4182
+ 4221
34
128
- 4462
+ 4504
128
229
- 4082
+ 4120
229
387
- 4205
+ 4244
387
434
- 1263
+ 1275
@@ -12074,7 +12067,7 @@
1
2
- 54265
+ 54771
@@ -12090,62 +12083,62 @@
1
2
- 8790
+ 8872
2
3
- 7985
+ 8060
3
4
- 2538
+ 2562
4
6
- 4473
+ 4515
6
9
- 4093
+ 4131
9
14
- 4171
+ 4210
14
17
- 4093
+ 4131
17
22
- 4551
+ 4594
22
41
- 4171
+ 4210
41
82
- 4126
+ 4165
82
157
- 4070
+ 4109
158
1895
- 1196
+ 1207
@@ -12161,67 +12154,67 @@
1
2
- 7090
+ 7156
2
5
- 2214
+ 2235
5
8
- 3299
+ 3330
8
15
- 3500
+ 3533
15
17
- 2516
+ 2539
17
19
- 4104
+ 4142
19
34
- 3299
+ 3330
34
189
- 3590
+ 3623
189
201
- 3578
+ 3612
201
266
- 3522
+ 3555
266
321
- 3646
+ 3680
322
399
- 3914
+ 3950
399
435
- 1342
+ 1354
@@ -12237,7 +12230,7 @@
1
2
- 45608
+ 46034
2
@@ -12258,67 +12251,67 @@
1
2
- 7113
+ 7179
2
5
- 2561
+ 2585
5
8
- 3478
+ 3510
8
15
- 3522
+ 3555
15
17
- 2807
+ 2833
17
19
- 3556
+ 3589
19
29
- 3478
+ 3510
29
39
- 3634
+ 3668
39
48
- 3578
+ 3612
48
74
- 3534
+ 3567
74
102
- 3422
+ 3454
102
119
- 3567
+ 3601
119
146
- 1364
+ 1377
@@ -12328,15 +12321,15 @@
inmacroexpansion
- 109786483
+ 109779198
id
- 18028566
+ 18027369
inv
- 2700352
+ 2700171
@@ -12350,37 +12343,37 @@
1
3
- 1582063
+ 1581956
3
5
- 1077870
+ 1077799
5
6
- 1184962
+ 1184884
6
7
- 4820246
+ 4819927
7
8
- 6386387
+ 6385963
8
9
- 2605427
+ 2605255
9
21
- 371608
+ 371583
@@ -12396,32 +12389,32 @@
1
2
- 378450
+ 378424
2
3
- 544144
+ 544101
3
4
- 351538
+ 351515
4
7
- 200672
+ 200659
7
8
- 207166
+ 207152
8
9
- 241904
+ 241888
9
@@ -12431,22 +12424,22 @@
10
11
- 325508
+ 325487
11
337
- 224861
+ 224853
339
423
- 206367
+ 206353
423
7616
- 17526
+ 17524
@@ -12456,15 +12449,15 @@
affectedbymacroexpansion
- 35691465
+ 35689096
id
- 5157087
+ 5156743
inv
- 2784960
+ 2784774
@@ -12478,37 +12471,37 @@
1
2
- 2816122
+ 2815934
2
3
- 560166
+ 560129
3
4
- 264924
+ 264906
4
5
- 565832
+ 565794
5
12
- 391929
+ 391903
12
50
- 407428
+ 407401
50
9900
- 150682
+ 150672
@@ -12524,67 +12517,67 @@
1
4
- 229132
+ 229116
4
7
- 231804
+ 231788
7
9
- 220493
+ 220478
9
12
- 251104
+ 251088
12
13
- 334000
+ 333978
13
14
- 165599
+ 165588
14
15
- 298864
+ 298844
15
16
- 121851
+ 121843
16
17
- 276627
+ 276608
17
18
- 146950
+ 146940
18
20
- 252152
+ 252135
20
25
- 208993
+ 208979
25
109
- 47386
+ 47383
@@ -12594,19 +12587,19 @@
macroinvocations
- 33182692
+ 33491155
id
- 33182692
+ 33491155
macro_id
- 78746
+ 79482
location
- 753335
+ 760372
kind
@@ -12624,7 +12617,7 @@
1
2
- 33182692
+ 33491155
@@ -12640,7 +12633,7 @@
1
2
- 33182692
+ 33491155
@@ -12656,7 +12649,7 @@
1
2
- 33182692
+ 33491155
@@ -12672,57 +12665,57 @@
1
2
- 16105
+ 16255
2
3
- 16418
+ 16571
3
4
- 3086
+ 3115
4
5
- 5222
+ 5271
5
8
- 5636
+ 5689
8
13
- 6050
+ 6107
13
26
- 6117
+ 6174
26
61
- 6005
+ 6061
61
199
- 5916
+ 5971
199
1697
- 5961
+ 6016
1716
- 168807
- 2225
+ 168783
+ 2246
@@ -12738,37 +12731,37 @@
1
2
- 42074
+ 42467
2
3
- 10300
+ 10396
3
4
- 5111
+ 5158
4
6
- 6777
+ 6840
6
13
- 6419
+ 6479
13
66
- 5949
+ 6005
66
3614
- 2113
+ 2133
@@ -12784,12 +12777,12 @@
1
2
- 73065
+ 73747
2
3
- 5681
+ 5734
@@ -12805,37 +12798,37 @@
1
2
- 278617
+ 281219
2
3
- 168051
+ 169655
3
4
- 70101
+ 70733
4
5
- 59734
+ 60325
5
9
- 69743
+ 70361
9
21
- 58559
+ 59106
21
244764
- 48527
+ 48969
@@ -12851,12 +12844,12 @@
1
2
- 707592
+ 714202
2
350
- 45742
+ 46170
@@ -12872,7 +12865,7 @@
1
2
- 753335
+ 760372
@@ -12891,8 +12884,8 @@
11
- 2946302
- 2946303
+ 2946167
+ 2946168
11
@@ -12945,15 +12938,15 @@
macroparent
- 29673573
+ 29950462
id
- 29673573
+ 29950462
parent_id
- 23071649
+ 23286864
@@ -12967,7 +12960,7 @@
1
2
- 29673573
+ 29950462
@@ -12983,17 +12976,17 @@
1
2
- 17826541
+ 17992757
2
3
- 4418192
+ 4459466
3
88
- 826915
+ 834640
@@ -13003,15 +12996,15 @@
macrolocationbind
- 4044068
+ 4043799
id
- 2831338
+ 2831150
location
- 2021204
+ 2021069
@@ -13025,22 +13018,22 @@
1
2
- 2230070
+ 2229922
2
3
- 341148
+ 341125
3
7
- 230540
+ 230525
7
57
- 29579
+ 29577
@@ -13056,22 +13049,22 @@
1
2
- 1611131
+ 1611024
2
3
- 177694
+ 177682
3
8
- 156880
+ 156869
8
723
- 75498
+ 75493
@@ -13081,19 +13074,19 @@
macro_argument_unexpanded
- 83767514
+ 84548260
invocation
- 25973117
+ 26214646
argument_index
- 738
+ 745
text
- 315356
+ 318302
@@ -13107,22 +13100,22 @@
1
2
- 7364296
+ 7432674
2
3
- 10575752
+ 10673860
3
4
- 6082391
+ 6139211
4
67
- 1950677
+ 1968900
@@ -13138,22 +13131,22 @@
1
2
- 7433804
+ 7502832
2
3
- 10720943
+ 10820407
3
4
- 5917605
+ 5972886
4
67
- 1900763
+ 1918519
@@ -13169,16 +13162,16 @@
41230
41231
- 648
+ 654
41432
174417
- 55
+ 56
718261
- 2322336
+ 2322238
33
@@ -13195,12 +13188,12 @@
2
3
- 648
+ 654
13
995
- 55
+ 56
6559
@@ -13221,57 +13214,57 @@
1
2
- 34748
+ 35073
2
3
- 60695
+ 61262
3
4
- 17581
+ 17745
4
5
- 44646
+ 45086
5
7
- 23699
+ 23931
7
12
- 18353
+ 18490
12
16
- 21417
+ 21617
16
23
- 24750
+ 24981
23
42
- 24101
+ 24326
42
- 129
- 23855
+ 128
+ 23875
- 129
- 522417
- 21506
+ 128
+ 522393
+ 21911
@@ -13287,17 +13280,17 @@
1
2
- 228065
+ 230195
2
3
- 77102
+ 77823
3
9
- 10188
+ 10283
@@ -13307,19 +13300,19 @@
macro_argument_expanded
- 83767514
+ 84548260
invocation
- 25973117
+ 26214646
argument_index
- 738
+ 745
text
- 191113
+ 192898
@@ -13333,22 +13326,22 @@
1
2
- 7364296
+ 7432674
2
3
- 10575752
+ 10673860
3
4
- 6082391
+ 6139211
4
67
- 1950677
+ 1968900
@@ -13364,22 +13357,22 @@
1
2
- 10590693
+ 10688941
2
3
- 9116971
+ 9201722
3
4
- 5159975
+ 5208178
4
9
- 1105476
+ 1115803
@@ -13395,16 +13388,16 @@
41230
41231
- 648
+ 654
41432
174417
- 55
+ 56
718261
- 2322336
+ 2322238
33
@@ -13421,17 +13414,17 @@
1
2
- 637
+ 643
2
76
- 55
+ 56
870
13879
- 44
+ 45
@@ -13447,62 +13440,62 @@
1
2
- 20601
+ 20793
2
3
- 36963
+ 37308
3
4
- 8980
+ 9064
4
5
- 16228
+ 16402
5
6
- 2393
+ 2415
6
7
- 22636
+ 22859
7
9
- 14662
+ 14776
9
14
- 11933
+ 12044
14
19
- 14416
+ 14539
19
48
- 14337
+ 14483
48
151
- 14349
+ 14471
152
- 1060462
- 13610
+ 1060426
+ 13738
@@ -13518,17 +13511,17 @@
1
2
- 96719
+ 97623
2
3
- 80122
+ 80871
3
66
- 14270
+ 14404
@@ -13538,19 +13531,19 @@
functions
- 4645804
+ 4179381
id
- 4645804
+ 4179381
name
- 1916901
+ 1895474
kind
- 3264
+ 3268
@@ -13564,7 +13557,7 @@
1
2
- 4645804
+ 4179381
@@ -13580,7 +13573,7 @@
1
2
- 4645804
+ 4179381
@@ -13596,22 +13589,22 @@
1
2
- 1504138
+ 1498172
2
3
- 152046
+ 153131
3
5
- 150180
+ 142860
5
- 1676
- 110536
+ 952
+ 101309
@@ -13627,7 +13620,7 @@
1
2
- 1916435
+ 1895007
2
@@ -13656,8 +13649,8 @@
466
- 173
- 174
+ 167
+ 168
466
@@ -13666,13 +13659,13 @@
466
- 1354
- 1355
+ 1075
+ 1076
466
- 2382
- 2383
+ 1658
+ 1659
466
@@ -13714,12 +13707,7 @@
195
196
- 466
-
-
- 245
- 246
- 466
+ 933
3504
@@ -13734,15 +13722,15 @@
function_entry_point
- 1156670
+ 1151757
id
- 1146876
+ 1141953
entry_point
- 1156670
+ 1151757
@@ -13756,12 +13744,12 @@
1
2
- 1137081
+ 1132149
2
3
- 9794
+ 9804
@@ -13777,7 +13765,7 @@
1
2
- 1156670
+ 1151757
@@ -13787,15 +13775,15 @@
function_return_type
- 4650935
+ 4184517
id
- 4645804
+ 4179381
return_type
- 987367
+ 817948
@@ -13809,12 +13797,12 @@
1
2
- 4640674
+ 4174246
2
3
- 5130
+ 5135
@@ -13830,22 +13818,22 @@
1
2
- 510240
+ 506082
2
3
- 375917
+ 211490
3
- 10
- 75090
+ 7
+ 66294
- 10
- 2516
- 26118
+ 7
+ 2231
+ 34081
@@ -14197,59 +14185,59 @@
purefunctions
- 100911
+ 100969
id
- 100911
+ 100969
function_deleted
- 137587
+ 96174
id
- 137587
+ 96174
function_defaulted
- 73691
+ 73764
id
- 73691
+ 73764
function_prototyped
- 4553923
+ 4087409
id
- 4553923
+ 4087409
member_function_this_type
- 545645
+ 536525
id
- 545645
+ 536525
this_type
- 187282
+ 185332
@@ -14263,7 +14251,7 @@
1
2
- 545645
+ 536525
@@ -14279,32 +14267,32 @@
1
2
- 67619
+ 67897
2
3
- 44812
+ 45148
3
4
- 30176
+ 28775
4
5
- 15331
+ 14805
5
7
- 15366
+ 14910
7
66
- 13975
+ 13795
@@ -14314,27 +14302,27 @@
fun_decls
- 5014726
+ 4548672
id
- 5009596
+ 4543537
function
- 4502153
+ 4035587
type_id
- 985968
+ 816548
name
- 1819424
+ 1797899
location
- 3418241
+ 3370770
@@ -14348,7 +14336,7 @@
1
2
- 5009596
+ 4543537
@@ -14364,12 +14352,12 @@
1
2
- 5004465
+ 4538401
2
3
- 5130
+ 5135
@@ -14385,7 +14373,7 @@
1
2
- 5009596
+ 4543537
@@ -14401,7 +14389,7 @@
1
2
- 5009596
+ 4543537
@@ -14417,17 +14405,17 @@
1
2
- 4073532
+ 3606537
2
3
- 355862
+ 356218
3
7
- 72758
+ 72831
@@ -14443,12 +14431,12 @@
1
2
- 4462509
+ 3995903
2
3
- 39643
+ 39683
@@ -14464,7 +14452,7 @@
1
2
- 4502153
+ 4035587
@@ -14480,17 +14468,17 @@
1
2
- 4129966
+ 3663028
2
- 4
- 371253
+ 3
+ 311866
- 5
+ 3
6
- 932
+ 60692
@@ -14506,22 +14494,22 @@
1
2
- 435617
+ 431383
2
3
- 438415
+ 274050
3
- 8
- 75090
+ 6
+ 63493
- 8
- 2761
- 36845
+ 6
+ 2476
+ 47620
@@ -14537,22 +14525,22 @@
1
2
- 519568
+ 515419
2
3
- 367522
+ 203086
3
- 11
- 75556
+ 7
+ 63026
- 11
- 2477
- 23319
+ 7
+ 2192
+ 35014
@@ -14568,17 +14556,17 @@
1
2
- 858641
+ 690027
2
- 5
- 89548
+ 4
+ 67228
- 5
- 823
- 37778
+ 4
+ 773
+ 59291
@@ -14594,22 +14582,22 @@
1
2
- 754634
+ 595253
2
3
- 131524
+ 121385
3
- 10
- 74623
+ 7
+ 63493
- 10
- 2030
- 25185
+ 7
+ 1959
+ 36415
@@ -14625,27 +14613,27 @@
1
2
- 1234559
+ 1228323
2
3
- 266780
+ 267047
3
4
- 80687
+ 77966
4
- 6
- 136655
+ 7
+ 146128
- 6
- 1710
- 100742
+ 7
+ 986
+ 78433
@@ -14661,22 +14649,22 @@
1
2
- 1413656
+ 1407600
2
3
- 151113
+ 152198
3
5
- 144117
+ 136791
5
- 1660
- 110536
+ 936
+ 101309
@@ -14692,17 +14680,17 @@
1
2
- 1601149
+ 1579406
2
4
- 134789
+ 134924
4
- 930
- 83485
+ 562
+ 83568
@@ -14718,27 +14706,27 @@
1
2
- 1255547
+ 1236260
2
3
- 293365
+ 293191
3
4
- 79754
+ 78900
4
8
- 137587
+ 137258
8
- 653
- 53169
+ 542
+ 52288
@@ -14754,17 +14742,17 @@
1
2
- 2962102
+ 2966464
2
4
- 296163
+ 277785
4
55
- 159975
+ 126520
@@ -14780,17 +14768,17 @@
1
2
- 3029264
+ 3033693
2
- 6
- 262582
+ 7
+ 244170
- 6
+ 7
55
- 126394
+ 92906
@@ -14806,12 +14794,12 @@
1
2
- 3208361
+ 3207367
2
- 25
- 209879
+ 18
+ 163402
@@ -14827,12 +14815,12 @@
1
2
- 3246139
+ 3232578
2
13
- 172101
+ 138192
@@ -14842,22 +14830,22 @@
fun_def
- 1935091
+ 1888938
id
- 1935091
+ 1888938
fun_specialized
- 26118
+ 26144
id
- 26118
+ 26144
@@ -14875,15 +14863,15 @@
fun_decl_specifiers
- 2903802
+ 2906705
id
- 1687899
+ 1689587
name
- 2798
+ 2801
@@ -14897,17 +14885,17 @@
1
2
- 490652
+ 491142
2
3
- 1178591
+ 1179769
3
4
- 18655
+ 18674
@@ -15079,26 +15067,26 @@
fun_decl_empty_throws
- 1933692
+ 1472027
fun_decl
- 1933692
+ 1472027
fun_decl_noexcept
- 61680
+ 61885
fun_decl
- 61680
+ 61885
constant
- 61582
+ 61786
@@ -15112,7 +15100,7 @@
1
2
- 61680
+ 61885
@@ -15128,7 +15116,7 @@
1
2
- 61483
+ 61687
2
@@ -15143,11 +15131,11 @@
fun_decl_empty_noexcept
- 869834
+ 863234
fun_decl
- 869834
+ 863234
@@ -15252,19 +15240,19 @@
param_decl_bind
- 7379371
+ 6995048
id
- 7379371
+ 6995048
index
- 7928
+ 7936
fun_decl
- 4222780
+ 3835301
@@ -15278,7 +15266,7 @@
1
2
- 7379371
+ 6995048
@@ -15294,7 +15282,7 @@
1
2
- 7379371
+ 6995048
@@ -15310,7 +15298,7 @@
2
3
- 932
+ 933
5
@@ -15325,7 +15313,7 @@
10
11
- 932
+ 933
11
@@ -15335,7 +15323,7 @@
12
13
- 932
+ 933
13
@@ -15373,8 +15361,8 @@
466
- 9054
- 9055
+ 8215
+ 8216
466
@@ -15391,7 +15379,7 @@
2
3
- 932
+ 933
5
@@ -15406,7 +15394,7 @@
10
11
- 932
+ 933
11
@@ -15416,7 +15404,7 @@
12
13
- 932
+ 933
13
@@ -15454,8 +15442,8 @@
466
- 9054
- 9055
+ 8215
+ 8216
466
@@ -15472,22 +15460,27 @@
1
2
- 2363245
+ 1973908
2
3
- 1060592
+ 1061652
3
4
- 502312
+ 502814
4
+ 8
+ 290857
+
+
+ 8
18
- 296630
+ 6069
@@ -15503,22 +15496,27 @@
1
2
- 2363245
+ 1973908
2
3
- 1060592
+ 1061652
3
4
- 502312
+ 502814
4
+ 8
+ 290857
+
+
+ 8
18
- 296630
+ 6069
@@ -15528,27 +15526,27 @@
var_decls
- 8493599
+ 8110391
id
- 8422707
+ 8039427
variable
- 7411553
+ 7027262
type_id
- 2384233
+ 2043471
name
- 666951
+ 667617
location
- 5306692
+ 5311998
@@ -15562,7 +15560,7 @@
1
2
- 8422707
+ 8039427
@@ -15578,12 +15576,12 @@
1
2
- 8354612
+ 7971265
2
3
- 68094
+ 68162
@@ -15599,7 +15597,7 @@
1
2
- 8422707
+ 8039427
@@ -15615,12 +15613,12 @@
1
2
- 8419908
+ 8036626
2
3
- 2798
+ 2801
@@ -15636,17 +15634,17 @@
1
2
- 6560374
+ 6175232
2
3
- 697733
+ 698431
3
7
- 153445
+ 153598
@@ -15662,12 +15660,12 @@
1
2
- 7240384
+ 6855922
2
4
- 171168
+ 171339
@@ -15683,12 +15681,12 @@
1
2
- 7296352
+ 6911946
2
3
- 115200
+ 115315
@@ -15704,12 +15702,17 @@
1
2
- 6866798
+ 6481963
2
+ 3
+ 542964
+
+
+ 3
4
- 544754
+ 2334
@@ -15725,27 +15728,27 @@
1
2
- 1469158
+ 1165763
2
3
- 509308
+ 477136
3
4
- 97943
+ 94773
4
7
- 187026
+ 184878
7
762
- 120797
+ 120918
@@ -15761,22 +15764,22 @@
1
2
- 1602548
+ 1299287
2
3
- 484588
+ 452392
3
- 7
- 186559
+ 6
+ 155933
- 7
+ 6
724
- 110536
+ 135857
@@ -15792,17 +15795,17 @@
1
2
- 1877257
+ 1539256
2
3
- 384779
+ 383296
3
128
- 122196
+ 120918
@@ -15818,22 +15821,22 @@
1
2
- 1705156
+ 1365582
2
3
- 401569
+ 404305
3
- 8
- 188425
+ 7
+ 173207
- 8
+ 7
592
- 89082
+ 100376
@@ -15849,37 +15852,37 @@
1
2
- 340937
+ 341278
2
3
- 86750
+ 86837
3
4
- 48505
+ 48554
4
6
- 51770
+ 51822
6
12
- 52236
+ 52288
12
33
- 50371
+ 50421
34
- 3223
- 36379
+ 2384
+ 36415
@@ -15895,37 +15898,37 @@
1
2
- 368455
+ 368823
2
3
- 77888
+ 77966
3
4
- 45240
+ 45285
4
6
- 49438
+ 49487
6
14
- 53169
+ 53222
14
56
- 50837
+ 50888
56
- 3140
- 21920
+ 2301
+ 21942
@@ -15941,27 +15944,27 @@
1
2
- 456605
+ 457061
2
3
- 93746
+ 93840
3
5
- 46639
+ 46686
5
19
- 50837
+ 50888
19
- 1927
- 19122
+ 1182
+ 19141
@@ -15977,32 +15980,32 @@
1
2
- 378716
+ 379094
2
3
- 90481
+ 90571
3
5
- 59699
+ 59758
5
9
- 51303
+ 51355
9
21
- 50371
+ 50421
21
1010
- 36379
+ 36415
@@ -16018,17 +16021,17 @@
1
2
- 4491892
+ 4496383
2
3
- 531228
+ 531760
3
- 1735
- 283570
+ 896
+ 283854
@@ -16044,17 +16047,17 @@
1
2
- 4880869
+ 4885749
2
17
- 415095
+ 415510
17
- 1731
- 10727
+ 892
+ 10737
@@ -16070,12 +16073,12 @@
1
2
- 4956893
+ 4961848
2
- 1513
- 349799
+ 759
+ 350149
@@ -16091,12 +16094,12 @@
1
2
- 5297364
+ 5302660
2
6
- 9327
+ 9337
@@ -16106,26 +16109,26 @@
var_def
- 4024560
+ 3994969
id
- 4024560
+ 3994969
var_decl_specifiers
- 378249
+ 378628
id
- 378249
+ 378628
name
- 1865
+ 1867
@@ -16139,7 +16142,7 @@
1
2
- 378249
+ 378628
@@ -16191,19 +16194,19 @@
type_decls
- 3280187
+ 3283466
id
- 3280187
+ 3283466
type_id
- 3229815
+ 3233045
location
- 3163120
+ 3166283
@@ -16217,7 +16220,7 @@
1
2
- 3280187
+ 3283466
@@ -16233,7 +16236,7 @@
1
2
- 3280187
+ 3283466
@@ -16249,12 +16252,12 @@
1
2
- 3188306
+ 3191493
2
5
- 41509
+ 41551
@@ -16270,12 +16273,12 @@
1
2
- 3188306
+ 3191493
2
5
- 41509
+ 41551
@@ -16291,12 +16294,12 @@
1
2
- 3110884
+ 3113994
2
20
- 52236
+ 52288
@@ -16312,12 +16315,12 @@
1
2
- 3110884
+ 3113994
2
20
- 52236
+ 52288
@@ -16327,33 +16330,33 @@
type_def
- 2639354
+ 2641993
id
- 2639354
+ 2641993
type_decl_top
- 742974
+ 743717
type_decl
- 742974
+ 743717
namespace_decls
- 311514
+ 311691
id
- 311514
+ 311691
namespace_id
@@ -16361,11 +16364,11 @@
location
- 311514
+ 311691
bodylocation
- 311514
+ 311691
@@ -16379,7 +16382,7 @@
1
2
- 311514
+ 311691
@@ -16395,7 +16398,7 @@
1
2
- 311514
+ 311691
@@ -16411,7 +16414,7 @@
1
2
- 311514
+ 311691
@@ -16427,7 +16430,7 @@
1
2
- 291
+ 292
2
@@ -16493,7 +16496,7 @@
1
2
- 291
+ 292
2
@@ -16559,7 +16562,7 @@
1
2
- 291
+ 292
2
@@ -16625,7 +16628,7 @@
1
2
- 311514
+ 311691
@@ -16641,7 +16644,7 @@
1
2
- 311514
+ 311691
@@ -16657,7 +16660,7 @@
1
2
- 311514
+ 311691
@@ -16673,7 +16676,7 @@
1
2
- 311514
+ 311691
@@ -16689,7 +16692,7 @@
1
2
- 311514
+ 311691
@@ -16705,7 +16708,7 @@
1
2
- 311514
+ 311691
@@ -16715,19 +16718,23 @@
usings
- 369388
+ 369757
id
- 369388
+ 369757
element_id
- 315286
+ 315601
location
- 247658
+ 247905
+
+
+ kind
+ 933
@@ -16741,7 +16748,7 @@
1
2
- 369388
+ 369757
@@ -16757,7 +16764,23 @@
1
2
- 369388
+ 369757
+
+
+
+
+
+
+ id
+ kind
+
+
+ 12
+
+
+ 1
+ 2
+ 369757
@@ -16773,17 +16796,17 @@
1
2
- 263049
+ 263312
2
3
- 50837
+ 50888
3
5
- 1399
+ 1400
@@ -16799,17 +16822,33 @@
1
2
- 263049
+ 263312
2
3
- 50837
+ 50888
3
5
- 1399
+ 1400
+
+
+
+
+
+
+ element_id
+ kind
+
+
+ 12
+
+
+ 1
+ 2
+ 315601
@@ -16825,22 +16864,22 @@
1
2
- 202417
+ 202619
2
4
- 10727
+ 10737
4
5
- 31248
+ 31280
5
11
- 3264
+ 3268
@@ -16856,22 +16895,101 @@
1
2
- 202417
+ 202619
2
4
- 10727
+ 10737
4
5
- 31248
+ 31280
5
11
- 3264
+ 3268
+
+
+
+
+
+
+ location
+ kind
+
+
+ 12
+
+
+ 1
+ 2
+ 247905
+
+
+
+
+
+
+ kind
+ id
+
+
+ 12
+
+
+ 14
+ 15
+ 466
+
+
+ 778
+ 779
+ 466
+
+
+
+
+
+
+ kind
+ element_id
+
+
+ 12
+
+
+ 9
+ 10
+ 466
+
+
+ 667
+ 668
+ 466
+
+
+
+
+
+
+ kind
+ location
+
+
+ 12
+
+
+ 14
+ 15
+ 466
+
+
+ 517
+ 518
+ 466
@@ -16881,15 +16999,15 @@
using_container
- 462471
+ 466792
parent
- 10949
+ 11051
child
- 293245
+ 295985
@@ -16903,47 +17021,47 @@
1
2
- 3265
+ 3296
2
4
- 928
+ 936
4
6
- 413
+ 417
6
7
- 2471
+ 2494
7
17
- 894
+ 903
19
143
- 760
+ 767
178
179
- 1286
+ 1298
179
183
- 849
+ 857
201
488
- 78
+ 79
@@ -16959,22 +17077,22 @@
1
2
- 216288
+ 218308
2
3
- 51245
+ 51724
3
11
- 23598
+ 23818
13
41
- 2113
+ 2133
@@ -16984,27 +17102,27 @@
static_asserts
- 134648
+ 134725
id
- 134648
+ 134725
condition
- 134648
+ 134725
message
- 30220
+ 30237
location
- 17563
+ 17573
enclosing
- 4646
+ 4648
@@ -17018,7 +17136,7 @@
1
2
- 134648
+ 134725
@@ -17034,7 +17152,7 @@
1
2
- 134648
+ 134725
@@ -17050,7 +17168,7 @@
1
2
- 134648
+ 134725
@@ -17066,7 +17184,7 @@
1
2
- 134648
+ 134725
@@ -17082,7 +17200,7 @@
1
2
- 134648
+ 134725
@@ -17098,7 +17216,7 @@
1
2
- 134648
+ 134725
@@ -17114,7 +17232,7 @@
1
2
- 134648
+ 134725
@@ -17130,7 +17248,7 @@
1
2
- 134648
+ 134725
@@ -17146,7 +17264,7 @@
1
2
- 22235
+ 22247
2
@@ -17156,17 +17274,17 @@
3
4
- 2875
+ 2877
4
12
- 1612
+ 1613
12
17
- 2431
+ 2432
17
@@ -17187,7 +17305,7 @@
1
2
- 22235
+ 22247
2
@@ -17197,17 +17315,17 @@
3
4
- 2875
+ 2877
4
12
- 1612
+ 1613
12
17
- 2431
+ 2432
17
@@ -17228,12 +17346,12 @@
1
2
- 28005
+ 28020
2
33
- 2215
+ 2216
@@ -17249,7 +17367,7 @@
1
2
- 23663
+ 23676
2
@@ -17259,17 +17377,17 @@
3
4
- 2672
+ 2673
4
12
- 1453
+ 1454
12
37
- 2170
+ 2172
@@ -17285,17 +17403,17 @@
1
2
- 3287
+ 3289
2
3
- 2830
+ 2832
3
4
- 1402
+ 1403
4
@@ -17305,7 +17423,7 @@
5
6
- 3694
+ 3696
6
@@ -17315,7 +17433,7 @@
14
15
- 2069
+ 2070
16
@@ -17325,12 +17443,12 @@
17
18
- 3433
+ 3435
19
52
- 380
+ 381
@@ -17346,17 +17464,17 @@
1
2
- 3287
+ 3289
2
3
- 2830
+ 2832
3
4
- 1402
+ 1403
4
@@ -17366,7 +17484,7 @@
5
6
- 3694
+ 3696
6
@@ -17376,7 +17494,7 @@
14
15
- 2069
+ 2070
16
@@ -17386,12 +17504,12 @@
17
18
- 3433
+ 3435
19
52
- 380
+ 381
@@ -17407,17 +17525,17 @@
1
2
- 5300
+ 5303
2
3
- 5998
+ 6001
3
4
- 6080
+ 6084
4
@@ -17438,12 +17556,12 @@
1
2
- 3897
+ 3899
2
3
- 6277
+ 6281
3
@@ -17453,17 +17571,17 @@
4
5
- 3706
+ 3709
5
13
- 380
+ 381
13
14
- 2069
+ 2070
16
@@ -17484,7 +17602,7 @@
1
2
- 3776
+ 3778
2
@@ -17494,7 +17612,7 @@
3
210
- 361
+ 362
223
@@ -17515,7 +17633,7 @@
1
2
- 3776
+ 3778
2
@@ -17525,7 +17643,7 @@
3
210
- 361
+ 362
223
@@ -17546,7 +17664,7 @@
1
2
- 3948
+ 3950
2
@@ -17572,7 +17690,7 @@
1
2
- 3935
+ 3937
2
@@ -17592,23 +17710,23 @@
params
- 6739471
+ 6354509
id
- 6575765
+ 6190639
function
- 3879510
+ 3491688
index
- 7928
+ 7936
type_id
- 2188812
+ 1846453
@@ -17622,7 +17740,7 @@
1
2
- 6575765
+ 6190639
@@ -17638,7 +17756,7 @@
1
2
- 6575765
+ 6190639
@@ -17654,12 +17772,12 @@
1
2
- 6452169
+ 6066919
2
4
- 123595
+ 123719
@@ -17675,22 +17793,22 @@
1
2
- 2256906
+ 1867462
2
3
- 951921
+ 952872
3
4
- 429553
+ 429983
4
18
- 241128
+ 241369
@@ -17706,22 +17824,22 @@
1
2
- 2256906
+ 1867462
2
3
- 951921
+ 952872
3
4
- 429553
+ 429983
4
18
- 241128
+ 241369
@@ -17737,22 +17855,22 @@
1
2
- 2554936
+ 2165790
2
3
- 825993
+ 826819
3
4
- 346068
+ 346414
4
12
- 152512
+ 152665
@@ -17768,7 +17886,7 @@
2
3
- 932
+ 933
4
@@ -17783,7 +17901,7 @@
8
9
- 932
+ 933
9
@@ -17793,7 +17911,7 @@
10
11
- 932
+ 933
11
@@ -17831,8 +17949,8 @@
466
- 8318
- 8319
+ 7479
+ 7480
466
@@ -17849,7 +17967,7 @@
2
3
- 932
+ 933
4
@@ -17864,7 +17982,7 @@
8
9
- 932
+ 933
9
@@ -17874,7 +17992,7 @@
10
11
- 932
+ 933
11
@@ -17912,8 +18030,8 @@
466
- 8318
- 8319
+ 7479
+ 7480
466
@@ -17930,7 +18048,7 @@
1
2
- 932
+ 933
3
@@ -17950,12 +18068,12 @@
6
7
- 1399
+ 1400
7
8
- 932
+ 933
11
@@ -17988,8 +18106,8 @@
466
- 3609
- 3610
+ 2868
+ 2869
466
@@ -18006,22 +18124,22 @@
1
2
- 1488280
+ 1183971
2
3
- 440281
+ 406173
3
- 8
- 170235
+ 7
+ 154065
- 8
+ 7
518
- 90015
+ 102243
@@ -18037,22 +18155,22 @@
1
2
- 1707954
+ 1404798
2
3
- 248124
+ 212423
3
- 9
- 168370
+ 7
+ 147529
- 9
+ 7
502
- 64363
+ 81701
@@ -18068,17 +18186,17 @@
1
2
- 1761590
+ 1420205
2
3
- 348400
+ 347348
3
13
- 78821
+ 78900
@@ -18088,11 +18206,11 @@
overrides
- 125718
+ 125725
new
- 122746
+ 122753
old
@@ -18110,7 +18228,7 @@
1
2
- 119782
+ 119788
2
@@ -18171,19 +18289,19 @@
membervariables
- 1056565
+ 1056495
id
- 1054767
+ 1054697
type_id
- 327749
+ 327727
name
- 451649
+ 451619
@@ -18197,12 +18315,12 @@
1
2
- 1053049
+ 1052979
2
4
- 1718
+ 1717
@@ -18218,7 +18336,7 @@
1
2
- 1054767
+ 1054697
@@ -18234,17 +18352,17 @@
1
2
- 243045
+ 243029
2
3
- 51901
+ 51897
3
10
- 25531
+ 25529
10
@@ -18265,17 +18383,17 @@
1
2
- 255271
+ 255254
2
3
- 46467
+ 46464
3
40
- 24612
+ 24610
41
@@ -18296,22 +18414,22 @@
1
2
- 295346
+ 295326
2
3
- 86542
+ 86536
3
5
- 41193
+ 41190
5
646
- 28567
+ 28565
@@ -18327,17 +18445,17 @@
1
2
- 367864
+ 367839
2
3
- 51741
+ 51738
3
650
- 32043
+ 32041
@@ -18518,19 +18636,19 @@
localvariables
- 576915
+ 576947
id
- 576915
+ 576947
type_id
- 37715
+ 37717
name
- 90543
+ 90548
@@ -18544,7 +18662,7 @@
1
2
- 576915
+ 576947
@@ -18560,7 +18678,7 @@
1
2
- 576915
+ 576947
@@ -18576,12 +18694,12 @@
1
2
- 21174
+ 21175
2
3
- 5362
+ 5366
3
@@ -18591,7 +18709,7 @@
4
7
- 3380
+ 3376
7
@@ -18617,17 +18735,17 @@
1
2
- 26907
+ 26913
2
3
- 4562
+ 4563
3
5
- 2918
+ 2914
5
@@ -18653,22 +18771,22 @@
1
2
- 57028
+ 57031
2
3
- 14284
+ 14285
3
5
- 8309
+ 8310
5
15
- 6981
+ 6982
15
@@ -18689,12 +18807,12 @@
1
2
- 76488
+ 76492
2
3
- 7410
+ 7411
3
@@ -18709,15 +18827,15 @@
autoderivation
- 149570
+ 148484
var
- 149570
+ 148484
derivation_type
- 492
+ 494
@@ -18731,7 +18849,7 @@
1
2
- 149570
+ 148484
@@ -18750,13 +18868,13 @@
98
- 101
- 102
+ 93
+ 94
98
- 377
- 378
+ 369
+ 370
98
@@ -18777,15 +18895,15 @@
orphaned_variables
- 37338
+ 37414
var
- 37338
+ 37414
function
- 32818
+ 32886
@@ -18799,7 +18917,7 @@
1
2
- 37338
+ 37414
@@ -18815,12 +18933,12 @@
1
2
- 30767
+ 30830
2
47
- 2051
+ 2055
@@ -18830,19 +18948,19 @@
enumconstants
- 241686
+ 241670
id
- 241686
+ 241670
parent
- 28527
+ 28525
index
- 10228
+ 10227
type_id
@@ -18850,11 +18968,11 @@
name
- 241407
+ 241391
location
- 221589
+ 221574
@@ -18868,7 +18986,7 @@
1
2
- 241686
+ 241670
@@ -18884,7 +19002,7 @@
1
2
- 241686
+ 241670
@@ -18900,7 +19018,7 @@
1
2
- 241686
+ 241670
@@ -18916,7 +19034,7 @@
1
2
- 241686
+ 241670
@@ -18932,7 +19050,7 @@
1
2
- 241686
+ 241670
@@ -18983,7 +19101,7 @@
8
11
- 2597
+ 2596
11
@@ -19049,7 +19167,7 @@
8
11
- 2597
+ 2596
11
@@ -19080,7 +19198,7 @@
1
2
- 28527
+ 28525
@@ -19131,7 +19249,7 @@
8
11
- 2597
+ 2596
11
@@ -19167,7 +19285,7 @@
2
3
- 4195
+ 4194
3
@@ -19197,7 +19315,7 @@
8
11
- 2517
+ 2516
11
@@ -19233,12 +19351,12 @@
3
4
- 1758
+ 1757
4
5
- 879
+ 878
5
@@ -19248,12 +19366,12 @@
9
12
- 839
+ 838
12
20
- 879
+ 878
20
@@ -19289,12 +19407,12 @@
3
4
- 1758
+ 1757
4
5
- 879
+ 878
5
@@ -19304,12 +19422,12 @@
9
12
- 839
+ 838
12
20
- 879
+ 878
20
@@ -19335,7 +19453,7 @@
1
2
- 10228
+ 10227
@@ -19361,12 +19479,12 @@
3
4
- 1758
+ 1757
4
5
- 879
+ 878
5
@@ -19376,12 +19494,12 @@
9
12
- 839
+ 838
12
20
- 879
+ 878
20
@@ -19417,12 +19535,12 @@
3
4
- 1758
+ 1757
4
5
- 879
+ 878
5
@@ -19432,12 +19550,12 @@
9
12
- 839
+ 838
12
20
- 879
+ 878
20
@@ -19543,7 +19661,7 @@
1
2
- 241127
+ 241111
2
@@ -19564,7 +19682,7 @@
1
2
- 241127
+ 241111
2
@@ -19585,7 +19703,7 @@
1
2
- 241407
+ 241391
@@ -19601,7 +19719,7 @@
1
2
- 241407
+ 241391
@@ -19617,7 +19735,7 @@
1
2
- 241127
+ 241111
2
@@ -19638,7 +19756,7 @@
1
2
- 220830
+ 220815
2
@@ -19659,7 +19777,7 @@
1
2
- 221589
+ 221574
@@ -19675,7 +19793,7 @@
1
2
- 220830
+ 220815
2
@@ -19696,7 +19814,7 @@
1
2
- 221589
+ 221574
@@ -19712,7 +19830,7 @@
1
2
- 220830
+ 220815
2
@@ -19727,31 +19845,31 @@
builtintypes
- 26118
+ 26144
id
- 26118
+ 26144
name
- 26118
+ 26144
kind
- 26118
+ 26144
size
- 3264
+ 3268
sign
- 1399
+ 1400
alignment
- 2331
+ 2334
@@ -19765,7 +19883,7 @@
1
2
- 26118
+ 26144
@@ -19781,7 +19899,7 @@
1
2
- 26118
+ 26144
@@ -19797,7 +19915,7 @@
1
2
- 26118
+ 26144
@@ -19813,7 +19931,7 @@
1
2
- 26118
+ 26144
@@ -19829,7 +19947,7 @@
1
2
- 26118
+ 26144
@@ -19845,7 +19963,7 @@
1
2
- 26118
+ 26144
@@ -19861,7 +19979,7 @@
1
2
- 26118
+ 26144
@@ -19877,7 +19995,7 @@
1
2
- 26118
+ 26144
@@ -19893,7 +20011,7 @@
1
2
- 26118
+ 26144
@@ -19909,7 +20027,7 @@
1
2
- 26118
+ 26144
@@ -19925,7 +20043,7 @@
1
2
- 26118
+ 26144
@@ -19941,7 +20059,7 @@
1
2
- 26118
+ 26144
@@ -19957,7 +20075,7 @@
1
2
- 26118
+ 26144
@@ -19973,7 +20091,7 @@
1
2
- 26118
+ 26144
@@ -19989,7 +20107,7 @@
1
2
- 26118
+ 26144
@@ -20143,12 +20261,12 @@
1
2
- 932
+ 933
3
4
- 2331
+ 2334
@@ -20164,12 +20282,12 @@
1
2
- 1865
+ 1867
2
3
- 1399
+ 1400
@@ -20263,7 +20381,7 @@
5
6
- 932
+ 933
7
@@ -20284,7 +20402,7 @@
5
6
- 1399
+ 1400
@@ -20408,7 +20526,7 @@
2
3
- 2331
+ 2334
@@ -20424,7 +20542,7 @@
3
4
- 2331
+ 2334
@@ -20434,23 +20552,23 @@
derivedtypes
- 4330518
+ 3669564
id
- 4330518
+ 3669564
name
- 2160828
+ 1552795
kind
- 2798
+ 2801
type_id
- 2670603
+ 2362807
@@ -20464,7 +20582,7 @@
1
2
- 4330518
+ 3669564
@@ -20480,7 +20598,7 @@
1
2
- 4330518
+ 3669564
@@ -20496,7 +20614,7 @@
1
2
- 4330518
+ 3669564
@@ -20512,17 +20630,17 @@
1
2
- 1899178
+ 1324031
2
- 5
- 164638
+ 4
+ 120451
- 5
+ 4
1153
- 97011
+ 108312
@@ -20538,12 +20656,12 @@
1
2
- 2159895
+ 1551861
2
3
- 932
+ 933
@@ -20559,17 +20677,17 @@
1
2
- 1899178
+ 1324031
2
- 5
- 164638
+ 4
+ 120451
- 5
+ 4
1135
- 97011
+ 108312
@@ -20588,8 +20706,8 @@
466
- 1077
- 1078
+ 714
+ 715
466
@@ -20603,13 +20721,13 @@
466
- 2166
- 2167
+ 1825
+ 1826
466
- 3455
- 3456
+ 2734
+ 2735
466
@@ -20634,23 +20752,23 @@
466
- 606
- 607
+ 428
+ 429
466
- 760
- 761
+ 606
+ 607
466
- 1128
- 1129
+ 814
+ 815
466
- 1939
- 1940
+ 1278
+ 1279
466
@@ -20670,8 +20788,8 @@
466
- 1077
- 1078
+ 714
+ 715
466
@@ -20685,13 +20803,13 @@
466
- 2121
- 2122
+ 1780
+ 1781
466
- 3455
- 3456
+ 2734
+ 2735
466
@@ -20708,22 +20826,22 @@
1
2
- 1651053
+ 1515446
2
3
- 560145
+ 546232
3
4
- 353997
+ 218493
4
72
- 105406
+ 82635
@@ -20739,22 +20857,22 @@
1
2
- 1662247
+ 1526650
2
3
- 552683
+ 538763
3
4
- 351198
+ 215691
4
72
- 104473
+ 81701
@@ -20770,22 +20888,22 @@
1
2
- 1655251
+ 1519647
2
3
- 563876
+ 549967
3
4
- 353064
+ 217559
4
6
- 98410
+ 75632
@@ -20795,11 +20913,11 @@
pointerishsize
- 3210227
+ 2707354
id
- 3210227
+ 2707354
size
@@ -20821,7 +20939,7 @@
1
2
- 3210227
+ 2707354
@@ -20837,7 +20955,7 @@
1
2
- 3210227
+ 2707354
@@ -20851,8 +20969,8 @@
12
- 6883
- 6884
+ 5799
+ 5800
466
@@ -20883,8 +21001,8 @@
12
- 6883
- 6884
+ 5799
+ 5800
466
@@ -20911,23 +21029,23 @@
arraysizes
- 88149
+ 88237
id
- 88149
+ 88237
num_elements
- 31715
+ 31746
bytesize
- 33114
+ 33147
alignment
- 1865
+ 1867
@@ -20941,7 +21059,7 @@
1
2
- 88149
+ 88237
@@ -20957,7 +21075,7 @@
1
2
- 88149
+ 88237
@@ -20973,7 +21091,7 @@
1
2
- 88149
+ 88237
@@ -20989,22 +21107,22 @@
1
2
- 1865
+ 1867
2
3
- 23786
+ 23810
3
5
- 2798
+ 2801
5
13
- 2798
+ 2801
13
@@ -21025,17 +21143,17 @@
1
2
- 26584
+ 26611
2
3
- 2331
+ 2334
3
7
- 2798
+ 2801
@@ -21051,17 +21169,17 @@
1
2
- 26584
+ 26611
2
3
- 2798
+ 2801
3
5
- 2331
+ 2334
@@ -21077,27 +21195,27 @@
1
2
- 1865
+ 1867
2
3
- 23786
+ 23810
3
4
- 3264
+ 3268
4
6
- 2331
+ 2334
7
16
- 1865
+ 1867
@@ -21113,17 +21231,17 @@
1
2
- 27517
+ 27545
2
3
- 3731
+ 3734
3
5
- 1865
+ 1867
@@ -21139,17 +21257,17 @@
1
2
- 27517
+ 27545
2
3
- 4663
+ 4668
4
5
- 932
+ 933
@@ -21201,7 +21319,7 @@
7
8
- 932
+ 933
68
@@ -21247,15 +21365,15 @@
typedefbase
- 1671747
+ 1686077
id
- 1671747
+ 1686077
type_id
- 786932
+ 793470
@@ -21269,7 +21387,7 @@
1
2
- 1671747
+ 1686077
@@ -21285,22 +21403,22 @@
1
2
- 612416
+ 617392
2
3
- 82538
+ 83252
3
6
- 61467
+ 62030
6
5437
- 30510
+ 30795
@@ -21310,19 +21428,19 @@
decltypes
- 165094
+ 165647
id
- 16587
+ 16642
expr
- 165094
+ 165647
base_type
- 9903
+ 9936
parentheses_would_change_meaning
@@ -21340,37 +21458,37 @@
1
2
- 5055
+ 5072
2
3
- 6153
+ 6174
3
5
- 1098
+ 1101
5
12
- 1287
+ 1291
12
18
- 1344
+ 1348
18
46
- 1249
+ 1253
51
740
- 397
+ 398
@@ -21386,7 +21504,7 @@
1
2
- 16587
+ 16642
@@ -21402,7 +21520,7 @@
1
2
- 16587
+ 16642
@@ -21418,7 +21536,7 @@
1
2
- 165094
+ 165647
@@ -21434,7 +21552,7 @@
1
2
- 165094
+ 165647
@@ -21450,7 +21568,7 @@
1
2
- 165094
+ 165647
@@ -21466,17 +21584,17 @@
1
2
- 7195
+ 7219
2
3
- 2253
+ 2260
4
149
- 454
+ 455
@@ -21492,32 +21610,32 @@
1
2
- 719
+ 721
2
3
- 6097
+ 6117
3
4
- 340
+ 341
4
5
- 965
+ 968
5
7
- 757
+ 759
7
32
- 795
+ 797
32
@@ -21538,7 +21656,7 @@
1
2
- 9903
+ 9936
@@ -21596,19 +21714,19 @@
usertypes
- 5228803
+ 5234031
id
- 5228803
+ 5234031
name
- 1351159
+ 1352509
kind
- 5130
+ 5135
@@ -21622,7 +21740,7 @@
1
2
- 5228803
+ 5234031
@@ -21638,7 +21756,7 @@
1
2
- 5228803
+ 5234031
@@ -21654,27 +21772,27 @@
1
2
- 982703
+ 983686
2
3
- 153445
+ 153598
3
7
- 104473
+ 104577
7
61
- 101675
+ 101776
65
874
- 8861
+ 8870
@@ -21690,17 +21808,17 @@
1
2
- 1210772
+ 1211983
2
3
- 125461
+ 125586
3
7
- 14924
+ 14939
@@ -21842,19 +21960,19 @@
usertypesize
- 1704689
+ 1706394
id
- 1704689
+ 1706394
size
- 13525
+ 13539
alignment
- 2331
+ 2334
@@ -21868,7 +21986,7 @@
1
2
- 1704689
+ 1706394
@@ -21884,7 +22002,7 @@
1
2
- 1704689
+ 1706394
@@ -21900,12 +22018,12 @@
1
2
- 3264
+ 3268
2
3
- 4197
+ 4201
3
@@ -21915,32 +22033,32 @@
4
5
- 932
+ 933
6
8
- 932
+ 933
9
15
- 932
+ 933
37
84
- 932
+ 933
92
163
- 932
+ 933
740
2470
- 932
+ 933
@@ -21956,12 +22074,12 @@
1
2
- 10260
+ 10271
2
3
- 2798
+ 2801
3
@@ -22048,26 +22166,26 @@
usertype_final
- 8966
+ 8996
id
- 8966
+ 8996
usertype_uuid
- 36637
+ 36658
id
- 36637
+ 36658
uuid
- 36263
+ 36283
@@ -22081,7 +22199,7 @@
1
2
- 36637
+ 36658
@@ -22097,7 +22215,7 @@
1
2
- 35888
+ 35908
2
@@ -22112,15 +22230,15 @@
mangled_name
- 9476303
+ 9019378
id
- 9476303
+ 9019378
mangled_name
- 6447972
+ 6061784
is_complete
@@ -22138,7 +22256,7 @@
1
2
- 9476303
+ 9019378
@@ -22154,7 +22272,7 @@
1
2
- 9476303
+ 9019378
@@ -22170,12 +22288,12 @@
1
2
- 6167199
+ 5789134
2
874
- 280772
+ 272649
@@ -22191,7 +22309,7 @@
1
2
- 6447972
+ 6061784
@@ -22205,8 +22323,8 @@
12
- 20318
- 20319
+ 19319
+ 19320
466
@@ -22221,8 +22339,8 @@
12
- 13825
- 13826
+ 12984
+ 12985
466
@@ -22233,59 +22351,59 @@
is_pod_class
- 530392
+ 534692
id
- 530392
+ 534692
is_standard_layout_class
- 1252748
+ 1254001
id
- 1252748
+ 1254001
is_complete
- 1644057
+ 1645701
id
- 1644057
+ 1645701
is_class_template
- 397838
+ 398236
id
- 397838
+ 398236
class_instantiation
- 1088576
+ 1089664
to
- 1088576
+ 1089664
from
- 168370
+ 168538
@@ -22299,7 +22417,7 @@
1
2
- 1088576
+ 1089664
@@ -22315,47 +22433,47 @@
1
2
- 59699
+ 59758
2
3
- 29383
+ 29412
3
4
- 15857
+ 15873
4
5
- 13059
+ 13072
5
6
- 9794
+ 9804
6
10
- 12592
+ 12605
10
16
- 13059
+ 13072
16
70
- 13525
+ 13539
70
84
- 1399
+ 1400
@@ -22365,19 +22483,19 @@
class_template_argument
- 2857290
+ 2883045
type_id
- 1304038
+ 1315588
index
- 1252
+ 1264
arg_type
- 832719
+ 840476
@@ -22391,27 +22509,27 @@
1
2
- 536264
+ 540946
2
3
- 395848
+ 399241
3
4
- 229284
+ 231426
4
7
- 119255
+ 120369
7
113
- 23385
+ 23604
@@ -22427,22 +22545,22 @@
1
2
- 562669
+ 567598
2
3
- 406987
+ 410484
3
4
- 242604
+ 244870
4
113
- 91776
+ 92633
@@ -22463,32 +22581,32 @@
2
3
- 794
+ 801
3
26
- 100
+ 101
29
64
- 100
+ 101
69
411
- 100
+ 101
592
8901
- 100
+ 101
13095
- 114267
- 44
+ 114211
+ 45
@@ -22509,31 +22627,31 @@
2
3
- 794
+ 801
3
14
- 111
+ 112
14
26
- 100
+ 101
28
145
- 100
+ 101
195
3469
- 100
+ 101
- 10524
- 39738
+ 10523
+ 39736
33
@@ -22550,27 +22668,27 @@
1
2
- 518414
+ 523381
2
3
- 172815
+ 174385
3
4
- 50853
+ 51317
4
10
- 63480
+ 64017
10
10265
- 27154
+ 27374
@@ -22586,17 +22704,17 @@
1
2
- 733975
+ 740821
2
3
- 80581
+ 81424
3
22
- 18162
+ 18230
@@ -22606,19 +22724,19 @@
class_template_argument_value
- 494849
+ 495344
type_id
- 304558
+ 304863
index
- 1865
+ 1867
arg_value
- 494849
+ 495344
@@ -22632,17 +22750,17 @@
1
2
- 249523
+ 249773
2
3
- 53169
+ 53222
3
4
- 1865
+ 1867
@@ -22658,22 +22776,22 @@
1
2
- 189358
+ 189547
2
3
- 81153
+ 81234
3
4
- 12126
+ 12138
4
9
- 21920
+ 21942
@@ -22751,7 +22869,7 @@
1
2
- 494849
+ 495344
@@ -22767,7 +22885,7 @@
1
2
- 494849
+ 495344
@@ -22777,15 +22895,15 @@
is_proxy_class_for
- 62031
+ 62093
id
- 62031
+ 62093
templ_param_id
- 62031
+ 62093
@@ -22799,7 +22917,7 @@
1
2
- 62031
+ 62093
@@ -22815,7 +22933,7 @@
1
2
- 62031
+ 62093
@@ -22825,19 +22943,19 @@
type_mentions
- 4029404
+ 4029136
id
- 4029404
+ 4029136
type_id
- 198215
+ 198202
location
- 3995882
+ 3995616
kind
@@ -22855,7 +22973,7 @@
1
2
- 4029404
+ 4029136
@@ -22871,7 +22989,7 @@
1
2
- 4029404
+ 4029136
@@ -22887,7 +23005,7 @@
1
2
- 4029404
+ 4029136
@@ -22903,12 +23021,12 @@
1
2
- 97609
+ 97603
2
3
- 21735
+ 21733
3
@@ -22923,22 +23041,22 @@
5
7
- 14383
+ 14382
7
12
- 15862
+ 15861
12
27
- 15182
+ 15181
27
8555
- 14423
+ 14422
@@ -22954,12 +23072,12 @@
1
2
- 97609
+ 97603
2
3
- 21735
+ 21733
3
@@ -22974,22 +23092,22 @@
5
7
- 14383
+ 14382
7
12
- 15862
+ 15861
12
27
- 15182
+ 15181
27
8555
- 14423
+ 14422
@@ -23005,7 +23123,7 @@
1
2
- 198215
+ 198202
@@ -23021,12 +23139,12 @@
1
2
- 3962360
+ 3962096
2
3
- 33522
+ 33519
@@ -23042,12 +23160,12 @@
1
2
- 3962360
+ 3962096
2
3
- 33522
+ 33519
@@ -23063,7 +23181,7 @@
1
2
- 3995882
+ 3995616
@@ -23121,26 +23239,26 @@
is_function_template
- 1401530
+ 1402931
id
- 1401530
+ 1402931
function_instantiation
- 894135
+ 894823
to
- 894135
+ 894823
from
- 144138
+ 144434
@@ -23154,7 +23272,7 @@
1
2
- 894135
+ 894823
@@ -23170,27 +23288,27 @@
1
2
- 99951
+ 100156
2
3
- 14219
+ 14248
3
6
- 11855
+ 11879
6
21
- 11889
+ 11914
22
870
- 6223
+ 6235
@@ -23200,19 +23318,19 @@
function_template_argument
- 2308747
+ 2313492
function_id
- 1318866
+ 1321577
index
- 556
+ 557
arg_type
- 300617
+ 301235
@@ -23226,22 +23344,22 @@
1
2
- 673026
+ 674410
2
3
- 389687
+ 390488
3
4
- 186413
+ 186796
4
15
- 69739
+ 69883
@@ -23257,22 +23375,22 @@
1
2
- 690409
+ 691828
2
3
- 399456
+ 400277
3
4
- 166527
+ 166869
4
9
- 62473
+ 62602
@@ -23288,7 +23406,7 @@
1
2
- 208
+ 209
7
@@ -23354,7 +23472,7 @@
1
2
- 208
+ 209
3
@@ -23420,32 +23538,32 @@
1
2
- 184153
+ 184531
2
3
- 44013
+ 44103
3
5
- 23153
+ 23201
5
16
- 23188
+ 23236
16
107
- 22701
+ 22748
108
957
- 3407
+ 3414
@@ -23461,17 +23579,17 @@
1
2
- 270893
+ 271450
2
4
- 25656
+ 25709
4
17
- 4067
+ 4075
@@ -23481,19 +23599,19 @@
function_template_argument_value
- 358259
+ 358995
function_id
- 192357
+ 192753
index
- 556
+ 557
arg_value
- 355651
+ 356382
@@ -23507,12 +23625,12 @@
1
2
- 183110
+ 183486
2
8
- 9247
+ 9266
@@ -23528,17 +23646,17 @@
1
2
- 175774
+ 176136
2
31
- 15088
+ 15119
32
97
- 1494
+ 1497
@@ -23554,7 +23672,7 @@
1
2
- 208
+ 209
2
@@ -23615,7 +23733,7 @@
1
2
- 208
+ 209
2
@@ -23676,12 +23794,12 @@
1
2
- 353044
+ 353770
2
3
- 2607
+ 2612
@@ -23697,7 +23815,7 @@
1
2
- 355651
+ 356382
@@ -23707,26 +23825,26 @@
is_variable_template
- 40299
+ 40432
id
- 40299
+ 40432
variable_instantiation
- 178341
+ 178834
to
- 178341
+ 178834
from
- 24829
+ 24912
@@ -23740,7 +23858,7 @@
1
2
- 178341
+ 178834
@@ -23756,42 +23874,42 @@
1
2
- 12217
+ 12258
2
3
- 2857
+ 2866
3
4
- 1182
+ 1186
4
6
- 2167
+ 2174
6
8
- 1280
+ 1285
8
11
- 2069
+ 2076
11
31
- 1872
+ 1878
33
291
- 1182
+ 1186
@@ -23801,19 +23919,19 @@
variable_template_argument
- 322099
+ 323068
variable_id
- 169671
+ 170134
index
- 1675
+ 1680
arg_type
- 175287
+ 175868
@@ -23827,22 +23945,22 @@
1
2
- 86017
+ 86204
2
3
- 54192
+ 54371
3
4
- 19213
+ 19277
4
17
- 10247
+ 10281
@@ -23858,22 +23976,22 @@
1
2
- 90353
+ 90554
2
3
- 55473
+ 55657
3
4
- 14385
+ 14433
4
17
- 9459
+ 9490
@@ -23894,12 +24012,12 @@
20
21
- 591
+ 593
27
28
- 295
+ 296
28
@@ -23932,8 +24050,8 @@
98
- 1392
- 1393
+ 1391
+ 1392
98
@@ -23955,7 +24073,7 @@
10
11
- 394
+ 395
11
@@ -23965,7 +24083,7 @@
12
13
- 295
+ 296
13
@@ -24016,22 +24134,22 @@
1
2
- 138338
+ 138895
2
3
- 21578
+ 21551
3
11
- 13301
+ 13345
11
119
- 2069
+ 2076
@@ -24047,17 +24165,17 @@
1
2
- 158241
+ 158766
2
3
- 14976
+ 15026
3
7
- 2069
+ 2076
@@ -24067,19 +24185,19 @@
variable_template_argument_value
- 11922
+ 11961
variable_id
- 8079
+ 8106
index
- 394
+ 395
arg_value
- 11922
+ 11961
@@ -24093,12 +24211,12 @@
1
2
- 7685
+ 7710
2
3
- 394
+ 395
@@ -24114,17 +24232,17 @@
1
2
- 4828
+ 4844
2
3
- 2955
+ 2965
4
5
- 295
+ 296
@@ -24202,7 +24320,7 @@
1
2
- 11922
+ 11961
@@ -24218,7 +24336,7 @@
1
2
- 11922
+ 11961
@@ -24228,15 +24346,15 @@
routinetypes
- 537719
+ 538824
id
- 537719
+ 538824
return_type
- 280175
+ 280751
@@ -24250,7 +24368,7 @@
1
2
- 537719
+ 538824
@@ -24266,17 +24384,17 @@
1
2
- 244019
+ 244521
2
3
- 20928
+ 20971
3
3595
- 15227
+ 15258
@@ -24286,19 +24404,19 @@
routinetypeargs
- 982237
+ 983219
routine
- 423024
+ 423447
index
- 7928
+ 7936
type_id
- 226670
+ 226896
@@ -24312,27 +24430,27 @@
1
2
- 152512
+ 152665
2
3
- 133856
+ 133990
3
4
- 63430
+ 63493
4
5
- 45707
+ 45752
5
18
- 27517
+ 27545
@@ -24348,27 +24466,27 @@
1
2
- 182362
+ 182544
2
3
- 133390
+ 133523
3
4
- 58766
+ 58825
4
5
- 33580
+ 33614
5
11
- 14924
+ 14939
@@ -24384,7 +24502,7 @@
2
3
- 932
+ 933
4
@@ -24399,7 +24517,7 @@
8
9
- 932
+ 933
9
@@ -24409,7 +24527,7 @@
10
11
- 1399
+ 1400
13
@@ -24460,27 +24578,27 @@
1
2
- 932
+ 933
3
4
- 932
+ 933
4
5
- 1399
+ 1400
5
6
- 932
+ 933
6
7
- 932
+ 933
10
@@ -24526,27 +24644,27 @@
1
2
- 146449
+ 146595
2
3
- 30782
+ 30813
3
5
- 16790
+ 16807
5
12
- 18189
+ 18207
12
110
- 14458
+ 14472
@@ -24562,22 +24680,22 @@
1
2
- 172567
+ 172740
2
3
- 30782
+ 30813
3
6
- 18655
+ 18674
6
14
- 4663
+ 4668
@@ -24587,19 +24705,19 @@
ptrtomembers
- 37778
+ 37816
id
- 37778
+ 37816
type_id
- 37778
+ 37816
class_id
- 15391
+ 15406
@@ -24613,7 +24731,7 @@
1
2
- 37778
+ 37816
@@ -24629,7 +24747,7 @@
1
2
- 37778
+ 37816
@@ -24645,7 +24763,7 @@
1
2
- 37778
+ 37816
@@ -24661,7 +24779,7 @@
1
2
- 37778
+ 37816
@@ -24677,12 +24795,12 @@
1
2
- 13525
+ 13539
8
9
- 1399
+ 1400
28
@@ -24703,12 +24821,12 @@
1
2
- 13525
+ 13539
8
9
- 1399
+ 1400
28
@@ -24723,15 +24841,15 @@
specifiers
- 24719
+ 24743
id
- 24719
+ 24743
str
- 24719
+ 24743
@@ -24745,7 +24863,7 @@
1
2
- 24719
+ 24743
@@ -24761,7 +24879,7 @@
1
2
- 24719
+ 24743
@@ -24771,15 +24889,15 @@
typespecifiers
- 1290060
+ 1132149
type_id
- 1271871
+ 1113941
spec_id
- 3731
+ 3734
@@ -24793,12 +24911,12 @@
1
2
- 1253681
+ 1095733
2
3
- 18189
+ 18207
@@ -24839,11 +24957,11 @@
219
220
- 932
+ 933
- 2042
- 2043
+ 1701
+ 1702
466
@@ -24854,15 +24972,15 @@
funspecifiers
- 12596680
+ 10305126
func_id
- 3851434
+ 4068267
spec_id
- 695
+ 8403
@@ -24876,27 +24994,27 @@
1
2
- 310491
+ 1357645
2
3
- 539770
+ 640539
3
4
- 1132801
+ 985553
4
5
- 1622683
+ 780132
5
8
- 245688
+ 304396
@@ -24910,99 +25028,94 @@
12
- 13
- 14
- 69
-
-
- 98
- 99
- 34
+ 1
+ 2
+ 466
- 202
- 203
- 34
+ 23
+ 24
+ 466
- 296
- 297
- 34
+ 31
+ 32
+ 466
- 304
- 305
- 34
+ 35
+ 36
+ 466
- 572
- 573
- 34
+ 56
+ 57
+ 466
- 709
- 710
- 34
+ 166
+ 167
+ 466
- 1599
- 1600
- 34
+ 189
+ 190
+ 466
- 1646
- 1647
- 34
+ 192
+ 193
+ 466
- 3782
- 3783
- 34
+ 218
+ 219
+ 466
- 3923
- 3924
- 34
+ 276
+ 277
+ 466
- 5095
- 5096
- 34
+ 315
+ 316
+ 466
- 6823
- 6824
- 34
+ 827
+ 828
+ 466
- 9692
- 9693
- 34
+ 846
+ 847
+ 466
- 12228
- 12229
- 34
+ 942
+ 943
+ 466
- 50664
- 50665
- 34
+ 1824
+ 1825
+ 466
- 77775
- 77776
- 34
+ 4200
+ 4201
+ 466
- 89276
- 89277
- 34
+ 5497
+ 5498
+ 466
- 97622
- 97623
- 34
+ 6435
+ 6436
+ 466
@@ -25012,15 +25125,15 @@
varspecifiers
- 2243847
+ 2246090
var_id
- 1223832
+ 1225055
spec_id
- 3731
+ 3734
@@ -25034,22 +25147,22 @@
1
2
- 729448
+ 730177
2
3
- 202417
+ 202619
3
4
- 58299
+ 58358
4
5
- 233666
+ 233899
@@ -25110,19 +25223,19 @@
attributes
- 707258
+ 709603
id
- 707258
+ 709603
kind
- 295
+ 296
name
- 1576
+ 1581
name_space
@@ -25130,7 +25243,7 @@
location
- 456496
+ 458009
@@ -25144,7 +25257,7 @@
1
2
- 707258
+ 709603
@@ -25160,7 +25273,7 @@
1
2
- 707258
+ 709603
@@ -25176,7 +25289,7 @@
1
2
- 707258
+ 709603
@@ -25192,7 +25305,7 @@
1
2
- 707258
+ 709603
@@ -25383,7 +25496,7 @@
1
2
- 1379
+ 1384
2
@@ -25404,7 +25517,7 @@
1
2
- 1576
+ 1581
@@ -25420,7 +25533,7 @@
1
2
- 295
+ 296
2
@@ -25580,17 +25693,17 @@
1
2
- 398559
+ 399880
2
3
- 35274
+ 35391
3
202
- 22662
+ 22737
@@ -25606,7 +25719,7 @@
1
2
- 456496
+ 458009
@@ -25622,12 +25735,12 @@
1
2
- 452456
+ 453956
2
3
- 4039
+ 4053
@@ -25643,7 +25756,7 @@
1
2
- 456496
+ 458009
@@ -25653,27 +25766,27 @@
attribute_args
- 410431
+ 410841
id
- 410431
+ 410841
kind
- 1399
+ 1400
attribute
- 298495
+ 298794
index
- 1399
+ 1400
location
- 327412
+ 327739
@@ -25687,7 +25800,7 @@
1
2
- 410431
+ 410841
@@ -25703,7 +25816,7 @@
1
2
- 410431
+ 410841
@@ -25719,7 +25832,7 @@
1
2
- 410431
+ 410841
@@ -25735,7 +25848,7 @@
1
2
- 410431
+ 410841
@@ -25803,7 +25916,7 @@
1
2
- 932
+ 933
3
@@ -25850,17 +25963,17 @@
1
2
- 216409
+ 216625
2
3
- 52236
+ 52288
3
4
- 29849
+ 29879
@@ -25876,12 +25989,12 @@
1
2
- 274242
+ 274517
2
3
- 24252
+ 24277
@@ -25897,17 +26010,17 @@
1
2
- 216409
+ 216625
2
3
- 52236
+ 52288
3
4
- 29849
+ 29879
@@ -25923,17 +26036,17 @@
1
2
- 216409
+ 216625
2
3
- 52236
+ 52288
3
4
- 29849
+ 29879
@@ -25975,7 +26088,7 @@
1
2
- 932
+ 933
3
@@ -26048,17 +26161,17 @@
1
2
- 278440
+ 278718
2
3
- 23786
+ 23810
3
9
- 24719
+ 24743
17
@@ -26079,12 +26192,12 @@
1
2
- 314819
+ 315134
2
3
- 12592
+ 12605
@@ -26100,17 +26213,17 @@
1
2
- 278440
+ 278718
2
3
- 23786
+ 23810
3
9
- 24719
+ 24743
17
@@ -26131,7 +26244,7 @@
1
2
- 327412
+ 327739
@@ -26141,15 +26254,15 @@
attribute_arg_value
- 39177
+ 39216
arg
- 39177
+ 39216
value
- 15857
+ 15873
@@ -26163,7 +26276,7 @@
1
2
- 39177
+ 39216
@@ -26179,12 +26292,12 @@
1
2
- 14458
+ 14472
2
34
- 1399
+ 1400
@@ -26242,15 +26355,15 @@
attribute_arg_constant
- 370787
+ 371158
arg
- 370787
+ 371158
constant
- 370787
+ 371158
@@ -26264,7 +26377,7 @@
1
2
- 370787
+ 371158
@@ -26280,7 +26393,7 @@
1
2
- 370787
+ 371158
@@ -26391,15 +26504,15 @@
typeattributes
- 82963
+ 83238
type_id
- 58330
+ 58523
spec_id
- 82963
+ 83238
@@ -26413,17 +26526,17 @@
1
2
- 49659
+ 49824
2
3
- 6897
+ 6920
3
13
- 1773
+ 1779
@@ -26439,7 +26552,7 @@
1
2
- 82963
+ 83238
@@ -26449,15 +26562,15 @@
funcattributes
- 652026
+ 652678
func_id
- 443079
+ 443522
spec_id
- 652026
+ 652678
@@ -26471,22 +26584,22 @@
1
2
- 333941
+ 334275
2
3
- 65762
+ 65828
3
6
- 34979
+ 35014
6
9
- 8395
+ 8403
@@ -26502,7 +26615,7 @@
1
2
- 652026
+ 652678
@@ -26570,15 +26683,15 @@
stmtattributes
- 973
+ 982
stmt_id
- 973
+ 982
spec_id
- 973
+ 982
@@ -26592,7 +26705,7 @@
1
2
- 973
+ 982
@@ -26608,7 +26721,7 @@
1
2
- 973
+ 982
@@ -26618,15 +26731,15 @@
unspecifiedtype
- 10143254
+ 9488111
type_id
- 10143254
+ 9488111
unspecified_type_id
- 6815961
+ 6490367
@@ -26640,7 +26753,7 @@
1
2
- 10143254
+ 9488111
@@ -26656,17 +26769,17 @@
1
2
- 4583307
+ 4558943
2
3
- 1995256
+ 1715731
3
145
- 237397
+ 215691
@@ -26676,19 +26789,19 @@
member
- 4941022
+ 3881054
parent
- 638852
+ 545766
index
- 8691
+ 92906
child
- 4896383
+ 3809624
@@ -26701,43 +26814,48 @@
1
+ 2
+ 129788
+
+
+ 2
3
- 19051
+ 64894
3
4
- 344213
+ 73297
4
5
- 37755
+ 75165
5
- 7
- 52461
+ 6
+ 40617
- 7
- 10
- 52148
+ 6
+ 8
+ 46686
- 10
- 15
- 49540
+ 8
+ 14
+ 45752
- 15
- 24
- 48915
+ 14
+ 30
+ 41551
- 24
- 251
- 34765
+ 30
+ 200
+ 28011
@@ -26752,43 +26870,53 @@
1
+ 2
+ 129788
+
+
+ 2
3
- 19051
+ 64894
3
4
- 344144
+ 73297
4
5
- 37790
+ 76099
5
+ 6
+ 39683
+
+
+ 6
7
- 52565
+ 24277
7
- 10
- 52496
+ 9
+ 42017
- 10
- 15
- 49158
+ 9
+ 17
+ 43885
- 15
- 24
- 48984
+ 17
+ 41
+ 41551
- 24
- 255
- 34661
+ 41
+ 200
+ 10271
@@ -26804,62 +26932,62 @@
1
2
- 1390
+ 26144
2
3
- 799
+ 7002
3
4
- 938
+ 3734
- 5
- 22
- 660
+ 4
+ 5
+ 7936
- 22
- 42
- 660
+ 5
+ 6
+ 5602
- 42
- 56
- 660
+ 6
+ 7
+ 5602
- 56
- 100
- 660
+ 7
+ 9
+ 7469
- 104
- 164
- 660
+ 9
+ 16
+ 7002
- 181
- 299
- 660
+ 16
+ 52
+ 7002
- 300
- 727
- 660
+ 52
+ 107
+ 7002
- 845
- 4002
- 660
+ 108
+ 577
+ 7002
- 4606
- 18045
- 278
+ 737
+ 1162
+ 1400
@@ -26875,62 +27003,62 @@
1
2
- 799
+ 26144
2
3
- 869
+ 7002
3
4
- 1147
+ 3734
4
- 15
- 660
+ 5
+ 7936
- 16
- 35
- 730
+ 5
+ 6
+ 5602
- 36
- 55
- 660
+ 6
+ 7
+ 5602
- 57
- 93
- 730
+ 7
+ 9
+ 7469
- 97
- 135
- 660
+ 9
+ 16
+ 7002
- 140
- 256
- 660
+ 16
+ 52
+ 7002
- 268
- 612
- 660
+ 52
+ 107
+ 7002
- 619
- 2611
- 660
+ 108
+ 577
+ 7002
- 2770
- 18057
- 451
+ 738
+ 1163
+ 1400
@@ -26946,7 +27074,7 @@
1
2
- 4896383
+ 3809624
@@ -26962,12 +27090,12 @@
1
2
- 4853100
+ 3738193
2
- 8
- 43283
+ 3
+ 71430
@@ -26977,15 +27105,15 @@
enclosingfunction
- 117812
+ 118326
child
- 117812
+ 118326
parent
- 67294
+ 67663
@@ -26999,7 +27127,7 @@
1
2
- 117812
+ 118326
@@ -27015,22 +27143,22 @@
1
2
- 35565
+ 35762
2
3
- 20880
+ 21053
3
4
- 5905
+ 5960
4
45
- 4943
+ 4887
@@ -27040,27 +27168,27 @@
derivations
- 390765
+ 391568
derivation
- 390765
+ 391568
sub
- 370531
+ 371293
index
- 208
+ 209
super
- 202335
+ 202751
location
- 37651
+ 37728
@@ -27074,7 +27202,7 @@
1
2
- 390765
+ 391568
@@ -27090,7 +27218,7 @@
1
2
- 390765
+ 391568
@@ -27106,7 +27234,7 @@
1
2
- 390765
+ 391568
@@ -27122,7 +27250,7 @@
1
2
- 390765
+ 391568
@@ -27138,12 +27266,12 @@
1
2
- 355582
+ 356313
2
7
- 14949
+ 14979
@@ -27159,12 +27287,12 @@
1
2
- 355582
+ 356313
2
7
- 14949
+ 14979
@@ -27180,12 +27308,12 @@
1
2
- 355582
+ 356313
2
7
- 14949
+ 14979
@@ -27201,12 +27329,12 @@
1
2
- 355582
+ 356313
2
7
- 14949
+ 14979
@@ -27351,12 +27479,12 @@
1
2
- 194965
+ 195366
2
1519
- 7370
+ 7385
@@ -27372,12 +27500,12 @@
1
2
- 194965
+ 195366
2
1519
- 7370
+ 7385
@@ -27393,12 +27521,12 @@
1
2
- 201883
+ 202298
2
4
- 451
+ 452
@@ -27414,12 +27542,12 @@
1
2
- 198685
+ 199093
2
108
- 3650
+ 3657
@@ -27435,27 +27563,27 @@
1
2
- 27986
+ 28043
2
5
- 3198
+ 3205
5
15
- 2885
+ 2891
15
134
- 2850
+ 2856
136
476
- 730
+ 731
@@ -27471,27 +27599,27 @@
1
2
- 27986
+ 28043
2
5
- 3198
+ 3205
5
15
- 2885
+ 2891
15
134
- 2850
+ 2856
136
476
- 730
+ 731
@@ -27507,7 +27635,7 @@
1
2
- 37651
+ 37728
@@ -27523,22 +27651,22 @@
1
2
- 30350
+ 30412
2
5
- 3337
+ 3344
5
45
- 2850
+ 2856
54
415
- 1112
+ 1114
@@ -27548,11 +27676,11 @@
derspecifiers
- 392642
+ 393449
der_id
- 390382
+ 391184
spec_id
@@ -27570,12 +27698,12 @@
1
2
- 388122
+ 388920
2
3
- 2259
+ 2264
@@ -27616,15 +27744,15 @@
direct_base_offsets
- 361874
+ 362618
der_id
- 361874
+ 362618
offset
- 347
+ 348
@@ -27638,7 +27766,7 @@
1
2
- 361874
+ 362618
@@ -27689,19 +27817,19 @@
virtual_base_offsets
- 6442
+ 6502
sub
- 3556
+ 3589
super
- 492
+ 496
offset
- 246
+ 248
@@ -27715,22 +27843,22 @@
1
2
- 2796
+ 2822
2
4
- 313
+ 316
4
7
- 257
+ 259
7
11
- 190
+ 191
@@ -27746,17 +27874,17 @@
1
2
- 2997
+ 3025
2
4
- 301
+ 304
4
8
- 257
+ 259
@@ -27772,22 +27900,22 @@
1
2
- 78
+ 79
2
3
- 44
+ 45
3
4
- 55
+ 56
4
5
- 89
+ 90
5
@@ -27797,22 +27925,22 @@
8
13
- 44
+ 45
13
15
- 44
+ 45
15
23
- 44
+ 45
24
60
- 44
+ 45
194
@@ -27833,12 +27961,12 @@
1
2
- 279
+ 282
2
3
- 78
+ 79
4
@@ -27848,12 +27976,12 @@
6
8
- 44
+ 45
8
10
- 44
+ 45
14
@@ -27940,7 +28068,7 @@
1
2
- 78
+ 79
2
@@ -27950,7 +28078,7 @@
3
4
- 44
+ 45
5
@@ -27980,23 +28108,23 @@
frienddecls
- 705602
+ 707052
id
- 705602
+ 707052
type_id
- 41822
+ 41908
decl_id
- 69253
+ 69395
location
- 6257
+ 6270
@@ -28010,7 +28138,7 @@
1
2
- 705602
+ 707052
@@ -28026,7 +28154,7 @@
1
2
- 705602
+ 707052
@@ -28042,7 +28170,7 @@
1
2
- 705602
+ 707052
@@ -28058,47 +28186,47 @@
1
2
- 6118
+ 6131
2
3
- 13037
+ 13063
3
6
- 2920
+ 2926
6
10
- 3163
+ 3170
10
17
- 3233
+ 3239
17
24
- 3302
+ 3309
25
36
- 3267
+ 3274
37
55
- 3198
+ 3205
55
103
- 3580
+ 3588
@@ -28114,47 +28242,47 @@
1
2
- 6118
+ 6131
2
3
- 13037
+ 13063
3
6
- 2920
+ 2926
6
10
- 3163
+ 3170
10
17
- 3233
+ 3239
17
24
- 3302
+ 3309
25
36
- 3267
+ 3274
37
55
- 3198
+ 3205
55
103
- 3580
+ 3588
@@ -28170,12 +28298,12 @@
1
2
- 40397
+ 40480
2
13
- 1425
+ 1428
@@ -28191,37 +28319,37 @@
1
2
- 39945
+ 40027
2
3
- 5805
+ 5817
3
8
- 5944
+ 5957
8
15
- 5353
+ 5364
15
32
- 5214
+ 5225
32
71
- 5214
+ 5225
72
160
- 1773
+ 1776
@@ -28237,37 +28365,37 @@
1
2
- 39945
+ 40027
2
3
- 5805
+ 5817
3
8
- 5944
+ 5957
8
15
- 5353
+ 5364
15
32
- 5214
+ 5225
32
71
- 5214
+ 5225
72
160
- 1773
+ 1776
@@ -28283,12 +28411,12 @@
1
2
- 68592
+ 68733
2
5
- 660
+ 661
@@ -28304,12 +28432,12 @@
1
2
- 5875
+ 5887
2
20106
- 382
+ 383
@@ -28325,7 +28453,7 @@
1
2
- 6118
+ 6131
2
@@ -28346,12 +28474,12 @@
1
2
- 5910
+ 5922
2
1837
- 347
+ 348
@@ -28361,19 +28489,19 @@
comments
- 8267972
+ 8295380
id
- 8267972
+ 8295380
contents
- 3148277
+ 3158713
location
- 8267972
+ 8295380
@@ -28387,7 +28515,7 @@
1
2
- 8267972
+ 8295380
@@ -28403,7 +28531,7 @@
1
2
- 8267972
+ 8295380
@@ -28419,17 +28547,17 @@
1
2
- 2879976
+ 2889523
2
7
- 236672
+ 237457
7
32784
- 31628
+ 31733
@@ -28445,17 +28573,17 @@
1
2
- 2879976
+ 2889523
2
7
- 236672
+ 237457
7
32784
- 31628
+ 31733
@@ -28471,7 +28599,7 @@
1
2
- 8267972
+ 8295380
@@ -28487,7 +28615,7 @@
1
2
- 8267972
+ 8295380
@@ -28497,15 +28625,15 @@
commentbinding
- 3088030
+ 3091117
id
- 2443000
+ 2445442
element
- 3011541
+ 3014551
@@ -28519,12 +28647,12 @@
1
2
- 2366044
+ 2368409
2
97
- 76955
+ 77032
@@ -28540,12 +28668,12 @@
1
2
- 2935051
+ 2937985
2
3
- 76489
+ 76565
@@ -28555,15 +28683,15 @@
exprconv
- 7033492
+ 7033025
converted
- 7033492
+ 7033025
conversion
- 7033492
+ 7033025
@@ -28577,7 +28705,7 @@
1
2
- 7033492
+ 7033025
@@ -28593,7 +28721,7 @@
1
2
- 7033492
+ 7033025
@@ -28603,30 +28731,30 @@
compgenerated
- 9273474
+ 7908075
id
- 9273474
+ 7908075
synthetic_destructor_call
- 510792
+ 512503
element
- 324717
+ 325805
i
- 359
+ 360
destructor_call
- 510792
+ 512503
@@ -28640,27 +28768,27 @@
1
2
- 227088
+ 227848
2
3
- 50651
+ 50820
3
4
- 21775
+ 21848
4
8
- 24539
+ 24622
8
20
- 662
+ 664
@@ -28676,27 +28804,27 @@
1
2
- 227088
+ 227848
2
3
- 50651
+ 50820
3
4
- 21775
+ 21848
4
8
- 24539
+ 24622
8
20
- 662
+ 664
@@ -28924,7 +29052,7 @@
1
2
- 510792
+ 512503
@@ -28940,7 +29068,7 @@
1
2
- 510792
+ 512503
@@ -28950,15 +29078,15 @@
namespaces
- 12126
+ 12138
id
- 12126
+ 12138
name
- 9794
+ 9804
@@ -28972,7 +29100,7 @@
1
2
- 12126
+ 12138
@@ -28988,7 +29116,7 @@
1
2
- 8395
+ 8403
2
@@ -28998,7 +29126,7 @@
3
4
- 932
+ 933
@@ -29008,26 +29136,26 @@
namespace_inline
- 1399
+ 1400
id
- 1399
+ 1400
namespacembrs
- 2385633
+ 2388018
parentid
- 10260
+ 10271
memberid
- 2385633
+ 2388018
@@ -29041,52 +29169,52 @@
1
2
- 1865
+ 1867
2
4
- 932
+ 933
4
5
- 932
+ 933
5
7
- 932
+ 933
7
8
- 932
+ 933
8
12
- 932
+ 933
17
30
- 932
+ 933
43
47
- 932
+ 933
52
143
- 932
+ 933
258
4468
- 932
+ 933
@@ -29102,7 +29230,7 @@
1
2
- 2385633
+ 2388018
@@ -29112,19 +29240,19 @@
exprparents
- 14207462
+ 14206517
expr_id
- 14207462
+ 14206517
child_index
- 14659
+ 14658
parent_id
- 9454319
+ 9453690
@@ -29138,7 +29266,7 @@
1
2
- 14207462
+ 14206517
@@ -29154,7 +29282,7 @@
1
2
- 14207462
+ 14206517
@@ -29272,17 +29400,17 @@
1
2
- 5409721
+ 5409361
2
3
- 3706838
+ 3706591
3
712
- 337760
+ 337737
@@ -29298,17 +29426,17 @@
1
2
- 5409721
+ 5409361
2
3
- 3706838
+ 3706591
3
712
- 337760
+ 337737
@@ -29318,11 +29446,11 @@
expr_isload
- 5082911
+ 5082393
expr_id
- 5082911
+ 5082393
@@ -29402,11 +29530,11 @@
iscall
- 3208148
+ 3218003
caller
- 3208148
+ 3218003
kind
@@ -29424,7 +29552,7 @@
1
2
- 3208148
+ 3218003
@@ -29448,8 +29576,8 @@
18
- 165637
- 165638
+ 165590
+ 165591
18
@@ -29460,15 +29588,15 @@
numtemplatearguments
- 393024
+ 393832
expr_id
- 393024
+ 393832
num
- 312
+ 313
@@ -29482,7 +29610,7 @@
1
2
- 393024
+ 393832
@@ -29586,23 +29714,23 @@
namequalifiers
- 1508764
+ 1513800
id
- 1508764
+ 1513800
qualifiableelement
- 1508764
+ 1513800
qualifyingelement
- 97193
+ 97538
location
- 303282
+ 304298
@@ -29616,7 +29744,7 @@
1
2
- 1508764
+ 1513800
@@ -29632,7 +29760,7 @@
1
2
- 1508764
+ 1513800
@@ -29648,7 +29776,7 @@
1
2
- 1508764
+ 1513800
@@ -29664,7 +29792,7 @@
1
2
- 1508764
+ 1513800
@@ -29680,7 +29808,7 @@
1
2
- 1508764
+ 1513800
@@ -29696,7 +29824,7 @@
1
2
- 1508764
+ 1513800
@@ -29712,27 +29840,27 @@
1
2
- 58206
+ 58420
2
3
- 22324
+ 22399
3
5
- 8880
+ 8910
5
92
- 7346
+ 7371
96
- 21584
- 435
+ 21583
+ 436
@@ -29748,27 +29876,27 @@
1
2
- 58206
+ 58420
2
3
- 22324
+ 22399
3
5
- 8880
+ 8910
5
92
- 7346
+ 7371
96
- 21584
- 435
+ 21583
+ 436
@@ -29784,22 +29912,22 @@
1
2
- 63602
+ 63834
2
3
- 20582
+ 20651
3
5
- 8350
+ 8378
5
7095
- 4658
+ 4673
@@ -29815,32 +29943,32 @@
1
2
- 100223
+ 100559
2
3
- 28307
+ 28402
3
4
- 44459
+ 44608
4
6
- 13727
+ 13773
6
7
- 95262
+ 95581
7
790
- 21301
+ 21373
@@ -29856,32 +29984,32 @@
1
2
- 100223
+ 100559
2
3
- 28307
+ 28402
3
4
- 44459
+ 44608
4
6
- 13727
+ 13773
6
7
- 95262
+ 95581
7
790
- 21301
+ 21373
@@ -29897,22 +30025,22 @@
1
2
- 136616
+ 137055
2
3
- 55498
+ 55703
3
4
- 102003
+ 102344
4
143
- 9164
+ 9195
@@ -29922,15 +30050,15 @@
varbind
- 6029528
+ 6029127
expr
- 6029528
+ 6029127
var
- 768581
+ 768530
@@ -29944,7 +30072,7 @@
1
2
- 6029528
+ 6029127
@@ -29960,52 +30088,52 @@
1
2
- 126230
+ 126221
2
3
- 137883
+ 137874
3
4
- 106300
+ 106293
4
5
- 85217
+ 85211
5
6
- 61293
+ 61288
6
7
- 48116
+ 48112
7
9
- 59625
+ 59621
9
13
- 59275
+ 59271
13
28
- 58884
+ 58880
28
5137
- 25756
+ 25754
@@ -30015,15 +30143,15 @@
funbind
- 3214624
+ 3224501
expr
- 3208432
+ 3218288
fun
- 510072
+ 511344
@@ -30037,12 +30165,12 @@
1
2
- 3202241
+ 3212076
2
3
- 6191
+ 6212
@@ -30058,32 +30186,32 @@
1
2
- 314454
+ 315090
2
3
- 77652
+ 77893
3
4
- 31261
+ 31385
4
7
- 45955
+ 46128
7
121
- 38305
+ 38395
123
5011
- 2442
+ 2450
@@ -30093,11 +30221,11 @@
expr_allocator
- 45925
+ 46019
expr
- 45925
+ 46019
func
@@ -30119,7 +30247,7 @@
1
2
- 45925
+ 46019
@@ -30135,7 +30263,7 @@
1
2
- 45925
+ 46019
@@ -30219,11 +30347,11 @@
expr_deallocator
- 54581
+ 54694
expr
- 54581
+ 54694
func
@@ -30245,7 +30373,7 @@
1
2
- 54581
+ 54694
@@ -30261,7 +30389,7 @@
1
2
- 54581
+ 54694
@@ -30366,15 +30494,15 @@
expr_cond_guard
- 657281
+ 657238
cond
- 657281
+ 657238
guard
- 657281
+ 657238
@@ -30388,7 +30516,7 @@
1
2
- 657281
+ 657238
@@ -30404,7 +30532,7 @@
1
2
- 657281
+ 657238
@@ -30414,15 +30542,15 @@
expr_cond_true
- 657279
+ 657235
cond
- 657279
+ 657235
true
- 657279
+ 657235
@@ -30436,7 +30564,7 @@
1
2
- 657279
+ 657235
@@ -30452,7 +30580,7 @@
1
2
- 657279
+ 657235
@@ -30462,15 +30590,15 @@
expr_cond_false
- 657281
+ 657238
cond
- 657281
+ 657238
false
- 657281
+ 657238
@@ -30484,7 +30612,7 @@
1
2
- 657281
+ 657238
@@ -30500,7 +30628,7 @@
1
2
- 657281
+ 657238
@@ -30510,15 +30638,15 @@
values
- 10777417
+ 10776699
id
- 10777417
+ 10776699
str
- 88069
+ 88063
@@ -30532,7 +30660,7 @@
1
2
- 10777417
+ 10776699
@@ -30548,22 +30676,22 @@
1
2
- 59549
+ 59545
2
3
- 12410
+ 12409
3
6
- 6917
+ 6916
6
56
- 6631
+ 6630
57
@@ -30641,15 +30769,15 @@
valuebind
- 11211667
+ 11210920
val
- 10777417
+ 10776699
expr
- 11211667
+ 11210920
@@ -30663,12 +30791,12 @@
1
2
- 10365712
+ 10365022
2
7
- 411704
+ 411677
@@ -30684,7 +30812,7 @@
1
2
- 11211667
+ 11210920
@@ -30694,15 +30822,15 @@
fieldoffsets
- 1054767
+ 1054697
id
- 1054767
+ 1054697
byteoffset
- 22694
+ 22692
bitoffset
@@ -30720,7 +30848,7 @@
1
2
- 1054767
+ 1054697
@@ -30736,7 +30864,7 @@
1
2
- 1054767
+ 1054697
@@ -30752,12 +30880,12 @@
1
2
- 13025
+ 13024
2
3
- 1718
+ 1717
3
@@ -30772,12 +30900,12 @@
12
35
- 1718
+ 1717
35
205
- 1718
+ 1717
244
@@ -30798,7 +30926,7 @@
1
2
- 22015
+ 22013
2
@@ -30895,19 +31023,19 @@
bitfield
- 19706
+ 19771
id
- 19706
+ 19771
bits
- 2463
+ 2471
declared_bits
- 2463
+ 2471
@@ -30921,7 +31049,7 @@
1
2
- 19706
+ 19771
@@ -30937,7 +31065,7 @@
1
2
- 19706
+ 19771
@@ -30953,12 +31081,12 @@
1
2
- 689
+ 692
2
3
- 591
+ 593
3
@@ -31004,7 +31132,7 @@
1
2
- 2463
+ 2471
@@ -31020,12 +31148,12 @@
1
2
- 689
+ 692
2
3
- 591
+ 593
3
@@ -31071,7 +31199,7 @@
1
2
- 2463
+ 2471
@@ -31081,23 +31209,23 @@
initialisers
- 1710171
+ 1711073
init
- 1710171
+ 1711073
var
- 719548
+ 719887
expr
- 1710171
+ 1711073
location
- 394501
+ 394718
@@ -31111,7 +31239,7 @@
1
2
- 1710171
+ 1711073
@@ -31127,7 +31255,7 @@
1
2
- 1710171
+ 1711073
@@ -31143,7 +31271,7 @@
1
2
- 1710171
+ 1711073
@@ -31159,17 +31287,17 @@
1
2
- 633806
+ 634097
2
15
- 28722
+ 28738
16
25
- 57019
+ 57051
@@ -31185,17 +31313,17 @@
1
2
- 633806
+ 634097
2
15
- 28722
+ 28738
16
25
- 57019
+ 57051
@@ -31211,7 +31339,7 @@
1
2
- 719541
+ 719880
2
@@ -31232,7 +31360,7 @@
1
2
- 1710171
+ 1711073
@@ -31248,7 +31376,7 @@
1
2
- 1710171
+ 1711073
@@ -31264,7 +31392,7 @@
1
2
- 1710171
+ 1711073
@@ -31280,22 +31408,22 @@
1
2
- 321587
+ 321770
2
3
- 23955
+ 23968
3
15
- 30975
+ 30986
15
111551
- 17982
+ 17992
@@ -31311,17 +31439,17 @@
1
2
- 344470
+ 344666
2
4
- 36085
+ 36105
4
12073
- 13945
+ 13946
@@ -31337,22 +31465,22 @@
1
2
- 321587
+ 321770
2
3
- 23955
+ 23968
3
15
- 30975
+ 30986
15
111551
- 17982
+ 17992
@@ -31362,26 +31490,26 @@
braced_initialisers
- 41701
+ 41698
init
- 41701
+ 41698
expr_ancestor
- 514901
+ 516626
exp
- 514901
+ 516626
ancestor
- 307486
+ 308516
@@ -31395,7 +31523,7 @@
1
2
- 514901
+ 516626
@@ -31411,27 +31539,27 @@
1
2
- 202889
+ 203568
2
3
- 54930
+ 55114
3
4
- 22400
+ 22475
4
7
- 25070
+ 25154
7
26
- 2196
+ 2203
@@ -31441,11 +31569,11 @@
exprs
- 18388730
+ 18387506
id
- 18388730
+ 18387506
kind
@@ -31453,7 +31581,7 @@
location
- 8488659
+ 8488094
@@ -31467,7 +31595,7 @@
1
2
- 18388730
+ 18387506
@@ -31483,7 +31611,7 @@
1
2
- 18388730
+ 18387506
@@ -31661,22 +31789,22 @@
1
2
- 7145629
+ 7145154
2
3
- 663075
+ 663031
3
18
- 638145
+ 638103
18
71656
- 41808
+ 41805
@@ -31692,17 +31820,17 @@
1
2
- 7251705
+ 7251222
2
3
- 618283
+ 618242
3
32
- 618671
+ 618630
@@ -31712,15 +31840,15 @@
expr_reuse
- 372471
+ 373719
reuse
- 372471
+ 373719
original
- 372452
+ 373700
value_category
@@ -31738,7 +31866,7 @@
1
2
- 372471
+ 373719
@@ -31754,7 +31882,7 @@
1
2
- 372471
+ 373719
@@ -31770,7 +31898,7 @@
1
2
- 372433
+ 373681
2
@@ -31791,7 +31919,7 @@
1
2
- 372452
+ 373700
@@ -31843,15 +31971,15 @@
expr_types
- 18452210
+ 18451523
id
- 18321703
+ 18319865
typeid
- 1236464
+ 1214578
value_category
@@ -31869,12 +31997,12 @@
1
2
- 18191197
+ 18188206
2
3
- 130506
+ 131658
@@ -31890,7 +32018,7 @@
1
2
- 18321703
+ 18319865
@@ -31906,42 +32034,42 @@
1
2
- 447977
+ 438548
2
3
- 256729
+ 249329
3
4
- 102714
+ 102804
4
5
- 84159
+ 81887
5
8
- 110118
+ 109284
8
14
- 98307
+ 96471
14
- 42
- 93532
+ 41
+ 91662
- 42
- 125371
- 42924
+ 41
+ 125330
+ 44589
@@ -31957,17 +32085,17 @@
1
2
- 1068826
+ 1050194
2
3
- 157225
+ 154190
3
4
- 10412
+ 10193
@@ -31981,18 +32109,18 @@
12
- 14892
- 14893
+ 14874
+ 14875
11
- 372567
- 372568
+ 368484
+ 368485
11
- 1250740
- 1250741
+ 1239516
+ 1239517
11
@@ -32007,18 +32135,18 @@
12
- 2722
- 2723
+ 2712
+ 2713
11
- 30862
- 30863
+ 29920
+ 29921
11
- 92892
- 92893
+ 90427
+ 90428
11
@@ -32029,15 +32157,15 @@
new_allocated_type
- 46968
+ 47064
expr
- 46968
+ 47064
type_id
- 27777
+ 27834
@@ -32051,7 +32179,7 @@
1
2
- 46968
+ 47064
@@ -32067,17 +32195,17 @@
1
2
- 11611
+ 11635
2
3
- 14705
+ 14736
3
19
- 1460
+ 1463
@@ -32087,15 +32215,15 @@
new_array_allocated_type
- 5097
+ 5099
expr
- 5097
+ 5099
type_id
- 2189
+ 2191
@@ -32109,7 +32237,7 @@
1
2
- 5097
+ 5099
@@ -32130,7 +32258,7 @@
2
3
- 1935
+ 1937
3
@@ -33172,15 +33300,15 @@
condition_decl_bind
- 40577
+ 40713
expr
- 40577
+ 40713
decl
- 40577
+ 40713
@@ -33194,7 +33322,7 @@
1
2
- 40577
+ 40713
@@ -33210,7 +33338,7 @@
1
2
- 40577
+ 40713
@@ -33220,15 +33348,15 @@
typeid_bind
- 35947
+ 36021
expr
- 35947
+ 36021
type_id
- 16165
+ 16199
@@ -33242,7 +33370,7 @@
1
2
- 35947
+ 36021
@@ -33258,12 +33386,12 @@
1
2
- 15748
+ 15781
3
328
- 417
+ 418
@@ -33273,15 +33401,15 @@
uuidof_bind
- 20292
+ 20304
expr
- 20292
+ 20304
type_id
- 20096
+ 20107
@@ -33295,7 +33423,7 @@
1
2
- 20292
+ 20304
@@ -33311,7 +33439,7 @@
1
2
- 19931
+ 19942
2
@@ -33326,15 +33454,15 @@
sizeof_bind
- 199197
+ 199184
expr
- 199197
+ 199184
type_id
- 8224
+ 8223
@@ -33348,7 +33476,7 @@
1
2
- 199197
+ 199184
@@ -33457,11 +33585,11 @@
lambdas
- 21454
+ 21475
expr
- 21454
+ 21475
default_capture
@@ -33483,7 +33611,7 @@
1
2
- 21454
+ 21475
@@ -33499,7 +33627,7 @@
1
2
- 21454
+ 21475
@@ -33573,23 +33701,23 @@
lambda_capture
- 27983
+ 28011
id
- 27983
+ 28011
lambda
- 20521
+ 20542
index
- 932
+ 933
field
- 27983
+ 28011
captured_by_reference
@@ -33601,7 +33729,7 @@
location
- 2798
+ 2801
@@ -33615,7 +33743,7 @@
1
2
- 27983
+ 28011
@@ -33631,7 +33759,7 @@
1
2
- 27983
+ 28011
@@ -33647,7 +33775,7 @@
1
2
- 27983
+ 28011
@@ -33663,7 +33791,7 @@
1
2
- 27983
+ 28011
@@ -33679,7 +33807,7 @@
1
2
- 27983
+ 28011
@@ -33695,7 +33823,7 @@
1
2
- 27983
+ 28011
@@ -33711,12 +33839,12 @@
1
2
- 13059
+ 13072
2
3
- 7462
+ 7469
@@ -33732,12 +33860,12 @@
1
2
- 13059
+ 13072
2
3
- 7462
+ 7469
@@ -33753,12 +33881,12 @@
1
2
- 13059
+ 13072
2
3
- 7462
+ 7469
@@ -33774,7 +33902,7 @@
1
2
- 20521
+ 20542
@@ -33790,7 +33918,7 @@
1
2
- 20521
+ 20542
@@ -33806,12 +33934,12 @@
1
2
- 13059
+ 13072
2
3
- 7462
+ 7469
@@ -33890,7 +34018,7 @@
1
2
- 932
+ 933
@@ -33906,7 +34034,7 @@
1
2
- 932
+ 933
@@ -33943,7 +34071,7 @@
1
2
- 27983
+ 28011
@@ -33959,7 +34087,7 @@
1
2
- 27983
+ 28011
@@ -33975,7 +34103,7 @@
1
2
- 27983
+ 28011
@@ -33991,7 +34119,7 @@
1
2
- 27983
+ 28011
@@ -34007,7 +34135,7 @@
1
2
- 27983
+ 28011
@@ -34023,7 +34151,7 @@
1
2
- 27983
+ 28011
@@ -34231,12 +34359,12 @@
8
9
- 1865
+ 1867
14
15
- 932
+ 933
@@ -34252,12 +34380,12 @@
8
9
- 1865
+ 1867
14
15
- 932
+ 933
@@ -34273,7 +34401,7 @@
1
2
- 2798
+ 2801
@@ -34289,12 +34417,12 @@
8
9
- 1865
+ 1867
14
15
- 932
+ 933
@@ -34310,7 +34438,7 @@
1
2
- 2798
+ 2801
@@ -34326,7 +34454,7 @@
1
2
- 2798
+ 2801
@@ -34452,19 +34580,19 @@
stmts
- 4652754
+ 4646725
id
- 4652754
+ 4646725
kind
- 1872
+ 1878
location
- 2173505
+ 2179425
@@ -34478,7 +34606,7 @@
1
2
- 4652754
+ 4646725
@@ -34494,7 +34622,7 @@
1
2
- 4652754
+ 4646725
@@ -34568,38 +34696,38 @@
98
- 539
- 540
+ 538
+ 539
98
- 1372
- 1373
+ 1371
+ 1372
98
- 2811
- 2812
+ 2810
+ 2811
98
- 4882
- 4883
+ 4866
+ 4867
98
- 9278
- 9279
+ 9205
+ 9206
98
- 12170
- 12171
+ 12120
+ 12121
98
- 14180
- 14181
+ 14105
+ 14106
98
@@ -34684,8 +34812,8 @@
98
- 1754
- 1755
+ 1753
+ 1754
98
@@ -34694,18 +34822,18 @@
98
- 4253
- 4254
+ 4244
+ 4245
98
- 6102
- 6103
+ 6101
+ 6102
98
- 6617
- 6618
+ 6607
+ 6608
98
@@ -34722,22 +34850,22 @@
1
2
- 1726665
+ 1731894
2
3
- 178637
+ 178933
3
8
- 166419
+ 167959
8
- 689
- 101783
+ 653
+ 100637
@@ -34753,12 +34881,12 @@
1
2
- 2118820
+ 2125350
2
8
- 54684
+ 54075
@@ -34864,15 +34992,15 @@
if_initialization
- 295
+ 296
if_stmt
- 295
+ 296
init_id
- 295
+ 296
@@ -34886,7 +35014,7 @@
1
2
- 295
+ 296
@@ -34902,7 +35030,7 @@
1
2
- 295
+ 296
@@ -34912,15 +35040,15 @@
if_then
- 725963
+ 725914
if_stmt
- 725963
+ 725914
then_id
- 725963
+ 725914
@@ -34934,7 +35062,7 @@
1
2
- 725963
+ 725914
@@ -34950,7 +35078,7 @@
1
2
- 725963
+ 725914
@@ -34960,15 +35088,15 @@
if_else
- 184682
+ 184669
if_stmt
- 184682
+ 184669
else_id
- 184682
+ 184669
@@ -34982,7 +35110,7 @@
1
2
- 184682
+ 184669
@@ -34998,7 +35126,7 @@
1
2
- 184682
+ 184669
@@ -35056,15 +35184,15 @@
constexpr_if_then
- 53108
+ 53185
constexpr_if_stmt
- 53108
+ 53185
then_id
- 53108
+ 53185
@@ -35078,7 +35206,7 @@
1
2
- 53108
+ 53185
@@ -35094,7 +35222,7 @@
1
2
- 53108
+ 53185
@@ -35104,15 +35232,15 @@
constexpr_if_else
- 30840
+ 30843
constexpr_if_stmt
- 30840
+ 30843
else_id
- 30840
+ 30843
@@ -35126,7 +35254,7 @@
1
2
- 30840
+ 30843
@@ -35142,7 +35270,7 @@
1
2
- 30840
+ 30843
@@ -35152,15 +35280,15 @@
while_body
- 29134
+ 29316
while_stmt
- 29134
+ 29316
body_id
- 29134
+ 29316
@@ -35174,7 +35302,7 @@
1
2
- 29134
+ 29316
@@ -35190,7 +35318,7 @@
1
2
- 29134
+ 29316
@@ -35200,15 +35328,15 @@
do_body
- 148884
+ 148874
do_stmt
- 148884
+ 148874
body_id
- 148884
+ 148874
@@ -35222,7 +35350,7 @@
1
2
- 148884
+ 148874
@@ -35238,7 +35366,7 @@
1
2
- 148884
+ 148874
@@ -35296,19 +35424,19 @@
switch_case
- 206808
+ 207501
switch_stmt
- 10982
+ 11019
index
- 4658
+ 4673
case_id
- 206808
+ 207501
@@ -35327,52 +35455,52 @@
3
4
- 2385
+ 2393
4
5
- 1760
+ 1766
5
6
- 1041
+ 1044
6
8
- 984
+ 987
8
9
- 530
+ 531
9
10
- 1022
+ 1025
10
11
- 359
+ 360
11
14
- 1003
+ 1006
14
31
- 927
+ 930
36
247
- 908
+ 911
@@ -35393,52 +35521,52 @@
3
4
- 2385
+ 2393
4
5
- 1760
+ 1766
5
6
- 1041
+ 1044
6
8
- 984
+ 987
8
9
- 530
+ 531
9
10
- 1022
+ 1025
10
11
- 359
+ 360
11
14
- 1003
+ 1006
14
31
- 927
+ 930
36
247
- 908
+ 911
@@ -35454,27 +35582,27 @@
14
15
- 1230
+ 1234
19
20
- 568
+ 569
33
34
- 2007
+ 2013
34
63
- 397
+ 398
68
304
- 359
+ 360
358
@@ -35495,27 +35623,27 @@
14
15
- 1230
+ 1234
19
20
- 568
+ 569
33
34
- 2007
+ 2013
34
63
- 397
+ 398
68
304
- 359
+ 360
358
@@ -35536,7 +35664,7 @@
1
2
- 206808
+ 207501
@@ -35552,7 +35680,7 @@
1
2
- 206808
+ 207501
@@ -35562,15 +35690,15 @@
switch_body
- 20788
+ 20786
switch_stmt
- 20788
+ 20786
body_id
- 20788
+ 20786
@@ -35584,7 +35712,7 @@
1
2
- 20788
+ 20786
@@ -35600,7 +35728,7 @@
1
2
- 20788
+ 20786
@@ -35610,15 +35738,15 @@
for_initialization
- 53407
+ 53403
for_stmt
- 53407
+ 53403
init_id
- 53407
+ 53403
@@ -35632,7 +35760,7 @@
1
2
- 53407
+ 53403
@@ -35648,7 +35776,7 @@
1
2
- 53407
+ 53403
@@ -35658,15 +35786,15 @@
for_condition
- 55672
+ 55668
for_stmt
- 55672
+ 55668
condition_id
- 55672
+ 55668
@@ -35680,7 +35808,7 @@
1
2
- 55672
+ 55668
@@ -35696,7 +35824,7 @@
1
2
- 55672
+ 55668
@@ -35706,15 +35834,15 @@
for_update
- 53510
+ 53506
for_stmt
- 53510
+ 53506
update_id
- 53510
+ 53506
@@ -35728,7 +35856,7 @@
1
2
- 53510
+ 53506
@@ -35744,7 +35872,7 @@
1
2
- 53510
+ 53506
@@ -35754,15 +35882,15 @@
for_body
- 61560
+ 61556
for_stmt
- 61560
+ 61556
body_id
- 61560
+ 61556
@@ -35776,7 +35904,7 @@
1
2
- 61560
+ 61556
@@ -35792,7 +35920,7 @@
1
2
- 61560
+ 61556
@@ -35802,19 +35930,19 @@
stmtparents
- 4054504
+ 4054166
id
- 4054504
+ 4054166
index
- 12326
+ 12333
parent
- 1721253
+ 1720155
@@ -35828,7 +35956,7 @@
1
2
- 4054504
+ 4054166
@@ -35844,7 +35972,7 @@
1
2
- 4054504
+ 4054166
@@ -35860,7 +35988,7 @@
1
2
- 4049
+ 4051
2
@@ -35875,7 +36003,7 @@
4
5
- 1567
+ 1568
7
@@ -35885,17 +36013,17 @@
8
12
- 799
+ 800
12
29
- 1085
+ 1086
29
38
- 926
+ 927
41
@@ -35904,7 +36032,7 @@
77
- 195141
+ 194851
704
@@ -35921,7 +36049,7 @@
1
2
- 4049
+ 4051
2
@@ -35936,7 +36064,7 @@
4
5
- 1567
+ 1568
7
@@ -35946,17 +36074,17 @@
8
12
- 799
+ 800
12
29
- 1085
+ 1086
29
38
- 926
+ 927
41
@@ -35965,7 +36093,7 @@
77
- 195141
+ 194851
704
@@ -35982,32 +36110,32 @@
1
2
- 989112
+ 987870
2
3
- 372551
+ 372687
3
4
- 105697
+ 105656
4
6
- 111251
+ 111219
6
17
- 130357
+ 130431
17
1943
- 12282
+ 12289
@@ -36023,32 +36151,32 @@
1
2
- 989112
+ 987870
2
3
- 372551
+ 372687
3
4
- 105697
+ 105656
4
6
- 111251
+ 111219
6
17
- 130357
+ 130431
17
1943
- 12282
+ 12289
@@ -36058,22 +36186,22 @@
ishandler
- 62466
+ 62676
block
- 62466
+ 62676
stmt_decl_bind
- 580812
+ 580844
stmt
- 541032
+ 541062
num
@@ -36081,7 +36209,7 @@
decl
- 580708
+ 580740
@@ -36095,12 +36223,12 @@
1
2
- 520345
+ 520373
2
19
- 20687
+ 20688
@@ -36116,12 +36244,12 @@
1
2
- 520345
+ 520373
2
19
- 20687
+ 20688
@@ -36319,7 +36447,7 @@
1
2
- 580671
+ 580703
2
@@ -36340,7 +36468,7 @@
1
2
- 580708
+ 580740
@@ -36350,11 +36478,11 @@
stmt_decl_entry_bind
- 580812
+ 580844
stmt
- 541032
+ 541062
num
@@ -36362,7 +36490,7 @@
decl_entry
- 580754
+ 580786
@@ -36376,12 +36504,12 @@
1
2
- 520345
+ 520373
2
19
- 20687
+ 20688
@@ -36397,12 +36525,12 @@
1
2
- 520345
+ 520373
2
19
- 20687
+ 20688
@@ -36600,7 +36728,7 @@
1
2
- 580733
+ 580765
3
@@ -36621,7 +36749,7 @@
1
2
- 580754
+ 580786
@@ -36631,15 +36759,15 @@
blockscope
- 1415522
+ 1410868
block
- 1415522
+ 1410868
enclosing
- 1300321
+ 1295552
@@ -36653,7 +36781,7 @@
1
2
- 1415522
+ 1410868
@@ -36669,12 +36797,12 @@
1
2
- 1235025
+ 1230191
2
13
- 65295
+ 65361
@@ -36684,19 +36812,19 @@
jumpinfo
- 254474
+ 254457
id
- 254474
+ 254457
str
- 21192
+ 21191
target
- 53145
+ 53142
@@ -36710,7 +36838,7 @@
1
2
- 254474
+ 254457
@@ -36726,7 +36854,7 @@
1
2
- 254474
+ 254457
@@ -36742,7 +36870,7 @@
2
3
- 9894
+ 9893
3
@@ -36788,7 +36916,7 @@
1
2
- 16748
+ 16747
2
@@ -36824,17 +36952,17 @@
2
3
- 26478
+ 26476
3
4
- 12921
+ 12920
4
5
- 5353
+ 5352
5
@@ -36860,7 +36988,7 @@
1
2
- 53145
+ 53142
@@ -36870,19 +36998,19 @@
preprocdirects
- 4186401
+ 4191484
id
- 4186401
+ 4191484
kind
- 5130
+ 1087
location
- 4145824
+ 4189012
@@ -36896,7 +37024,7 @@
1
2
- 4186401
+ 4191484
@@ -36912,7 +37040,7 @@
1
2
- 4186401
+ 4191484
@@ -36926,59 +37054,59 @@
12
- 4
- 5
- 466
+ 1
+ 2
+ 98
- 54
- 55
- 466
+ 122
+ 123
+ 98
- 151
- 152
- 466
+ 694
+ 695
+ 98
- 448
- 449
- 466
+ 799
+ 800
+ 98
- 554
- 555
- 466
+ 932
+ 933
+ 98
- 564
- 565
- 466
+ 1689
+ 1690
+ 98
- 571
- 572
- 466
+ 1792
+ 1793
+ 98
- 667
- 668
- 466
+ 3012
+ 3013
+ 98
- 1429
- 1430
- 466
+ 3802
+ 3803
+ 98
- 1970
- 1971
- 466
+ 6290
+ 6291
+ 98
- 2564
- 2565
- 466
+ 23266
+ 23267
+ 98
@@ -36992,59 +37120,59 @@
12
- 4
- 5
- 466
+ 1
+ 2
+ 98
- 54
- 55
- 466
+ 122
+ 123
+ 98
- 151
- 152
- 466
+ 694
+ 695
+ 98
- 448
- 449
- 466
+ 799
+ 800
+ 98
- 554
- 555
- 466
+ 932
+ 933
+ 98
- 564
- 565
- 466
+ 1689
+ 1690
+ 98
- 571
- 572
- 466
+ 1792
+ 1793
+ 98
- 667
- 668
- 466
+ 3012
+ 3013
+ 98
- 1429
- 1430
- 466
+ 3802
+ 3803
+ 98
- 1883
- 1884
- 466
+ 6290
+ 6291
+ 98
- 2564
- 2565
- 466
+ 23241
+ 23242
+ 98
@@ -37060,12 +37188,12 @@
1
2
- 4145358
+ 4188913
- 88
- 89
- 466
+ 26
+ 27
+ 98
@@ -37081,7 +37209,7 @@
1
2
- 4145824
+ 4189012
@@ -37091,15 +37219,15 @@
preprocpair
- 1429980
+ 1431410
begin
- 1195848
+ 1197043
elseelifend
- 1429980
+ 1431410
@@ -37113,17 +37241,17 @@
1
2
- 977573
+ 978550
2
3
- 208014
+ 208222
3
11
- 10260
+ 10271
@@ -37139,7 +37267,7 @@
1
2
- 1429980
+ 1431410
@@ -37149,41 +37277,41 @@
preproctrue
- 766294
+ 767060
branch
- 766294
+ 767060
preprocfalse
- 331143
+ 331474
branch
- 331143
+ 331474
preproctext
- 3368495
+ 3379661
id
- 3368495
+ 3379661
head
- 2441215
+ 2449308
body
- 1426735
+ 1431465
@@ -37197,7 +37325,7 @@
1
2
- 3368495
+ 3379661
@@ -37213,7 +37341,7 @@
1
2
- 3368495
+ 3379661
@@ -37229,12 +37357,12 @@
1
2
- 2302384
+ 2310017
2
740
- 138830
+ 139291
@@ -37250,12 +37378,12 @@
1
2
- 2382490
+ 2390388
2
5
- 58724
+ 58919
@@ -37271,17 +37399,17 @@
1
2
- 1291550
+ 1295831
2
6
- 107005
+ 107359
6
11630
- 28179
+ 28273
@@ -37297,17 +37425,17 @@
1
2
- 1294407
+ 1298698
2
7
- 107300
+ 107656
7
2980
- 25026
+ 25109
@@ -37317,15 +37445,15 @@
includes
- 312954
+ 313266
id
- 312954
+ 313266
included
- 117066
+ 117183
@@ -37339,7 +37467,7 @@
1
2
- 312954
+ 313266
@@ -37355,32 +37483,32 @@
1
2
- 61098
+ 61159
2
3
- 21920
+ 21942
3
4
- 12592
+ 12605
4
6
- 10260
+ 10271
6
14
- 8861
+ 8870
14
47
- 2331
+ 2334
@@ -37390,15 +37518,15 @@
link_targets
- 814
+ 816
id
- 814
+ 816
binary
- 814
+ 816
@@ -37412,7 +37540,7 @@
1
2
- 814
+ 816
@@ -37428,7 +37556,7 @@
1
2
- 814
+ 816
@@ -37438,15 +37566,15 @@
link_parent
- 38845246
+ 28676866
element
- 4923570
+ 3584451
link_target
- 347
+ 348
@@ -37460,17 +37588,17 @@
1
2
- 663709
+ 432954
2
9
- 25830
+ 20344
9
10
- 4234029
+ 3131152
@@ -37489,48 +37617,48 @@
34
- 121970
- 121971
+ 90034
+ 90035
34
- 122082
- 122083
+ 90100
+ 90101
34
- 122181
- 122182
+ 90152
+ 90153
34
- 122212
- 122213
+ 90159
+ 90160
34
- 122224
- 122225
+ 90195
+ 90196
34
- 122241
- 122242
+ 90252
+ 90253
34
- 124241
- 124242
+ 91339
+ 91340
34
- 128895
- 128896
+ 94665
+ 94666
34
- 131299
- 131300
+ 96273
+ 96274
34
diff --git a/cpp/ql/lib/upgrades/25e365d1e8147df0f759b604f96eb4bffea48271/old.dbscheme b/cpp/ql/lib/upgrades/25e365d1e8147df0f759b604f96eb4bffea48271/old.dbscheme
new file mode 100644
index 0000000000000..25e365d1e8147
--- /dev/null
+++ b/cpp/ql/lib/upgrades/25e365d1e8147df0f759b604f96eb4bffea48271/old.dbscheme
@@ -0,0 +1,2296 @@
+
+/**
+ * An invocation of the compiler. Note that more than one file may be
+ * compiled per invocation. For example, this command compiles three
+ * source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * The `id` simply identifies the invocation, while `cwd` is the working
+ * directory from which the compiler was invoked.
+ */
+compilations(
+ /**
+ * An invocation of the compiler. Note that more than one file may
+ * be compiled per invocation. For example, this command compiles
+ * three source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ */
+ unique int id : @compilation,
+ string cwd : string ref
+);
+
+/**
+ * The arguments that were passed to the extractor for a compiler
+ * invocation. If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then typically there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | *path to extractor*
+ * 1 | `--mimic`
+ * 2 | `/usr/bin/gcc`
+ * 3 | `-c`
+ * 4 | f1.c
+ * 5 | f2.c
+ * 6 | f3.c
+ */
+#keyset[id, num]
+compilation_args(
+ int id : @compilation ref,
+ int num : int ref,
+ string arg : string ref
+);
+
+/**
+ * The source files that are compiled by a compiler invocation.
+ * If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | f1.c
+ * 1 | f2.c
+ * 2 | f3.c
+ *
+ * Note that even if those files `#include` headers, those headers
+ * do not appear as rows.
+ */
+#keyset[id, num]
+compilation_compiling_files(
+ int id : @compilation ref,
+ int num : int ref,
+ int file : @file ref
+);
+
+/**
+ * The time taken by the extractor for a compiler invocation.
+ *
+ * For each file `num`, there will be rows for
+ *
+ * kind | seconds
+ * ---- | ---
+ * 1 | CPU seconds used by the extractor frontend
+ * 2 | Elapsed seconds during the extractor frontend
+ * 3 | CPU seconds used by the extractor backend
+ * 4 | Elapsed seconds during the extractor backend
+ */
+#keyset[id, num, kind]
+compilation_time(
+ int id : @compilation ref,
+ int num : int ref,
+ /* kind:
+ 1 = frontend_cpu_seconds
+ 2 = frontend_elapsed_seconds
+ 3 = extractor_cpu_seconds
+ 4 = extractor_elapsed_seconds
+ */
+ int kind : int ref,
+ float seconds : float ref
+);
+
+/**
+ * An error or warning generated by the extractor.
+ * The diagnostic message `diagnostic` was generated during compiler
+ * invocation `compilation`, and is the `file_number_diagnostic_number`th
+ * message generated while extracting the `file_number`th file of that
+ * invocation.
+ */
+#keyset[compilation, file_number, file_number_diagnostic_number]
+diagnostic_for(
+ int diagnostic : @diagnostic ref,
+ int compilation : @compilation ref,
+ int file_number : int ref,
+ int file_number_diagnostic_number : int ref
+);
+
+/**
+ * If extraction was successful, then `cpu_seconds` and
+ * `elapsed_seconds` are the CPU time and elapsed time (respectively)
+ * that extraction took for compiler invocation `id`.
+ */
+compilation_finished(
+ unique int id : @compilation ref,
+ float cpu_seconds : float ref,
+ float elapsed_seconds : float ref
+);
+
+
+/**
+ * External data, loaded from CSV files during snapshot creation. See
+ * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data)
+ * for more information.
+ */
+externalData(
+ int id : @externalDataElement,
+ string path : string ref,
+ int column: int ref,
+ string value : string ref
+);
+
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(string prefix : string ref);
+
+/**
+ * Information about packages that provide code used during compilation.
+ * The `id` is just a unique identifier.
+ * The `namespace` is typically the name of the package manager that
+ * provided the package (e.g. "dpkg" or "yum").
+ * The `package_name` is the name of the package, and `version` is its
+ * version (as a string).
+ */
+external_packages(
+ unique int id: @external_package,
+ string namespace : string ref,
+ string package_name : string ref,
+ string version : string ref
+);
+
+/**
+ * Holds if File `fileid` was provided by package `package`.
+ */
+header_to_external_package(
+ int fileid : @file ref,
+ int package : @external_package ref
+);
+
+/*
+ * Version history
+ */
+
+svnentries(
+ unique int id : @svnentry,
+ string revision : string ref,
+ string author : string ref,
+ date revisionDate : date ref,
+ int changeSize : int ref
+)
+
+svnaffectedfiles(
+ int id : @svnentry ref,
+ int file : @file ref,
+ string action : string ref
+)
+
+svnentrymsg(
+ unique int id : @svnentry ref,
+ string message : string ref
+)
+
+svnchurn(
+ int commit : @svnentry ref,
+ int file : @file ref,
+ int addedLines : int ref,
+ int deletedLines : int ref
+)
+
+/*
+ * C++ dbscheme
+ */
+
+extractor_version(
+ string codeql_version: string ref,
+ string frontend_version: string ref
+)
+
+@location = @location_stmt | @location_expr | @location_default ;
+
+/**
+ * The location of an element that is not an expression or a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_default(
+ /** The location of an element that is not an expression or a statement. */
+ unique int id: @location_default,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_stmt(
+ /** The location of a statement. */
+ unique int id: @location_stmt,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of an expression.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_expr(
+ /** The location of an expression. */
+ unique int id: @location_expr,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/** An element for which line-count information is available. */
+@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable;
+
+numlines(
+ int element_id: @sourceline ref,
+ int num_lines: int ref,
+ int num_code: int ref,
+ int num_comment: int ref
+);
+
+diagnostics(
+ unique int id: @diagnostic,
+ int severity: int ref,
+ string error_tag: string ref,
+ string error_message: string ref,
+ string full_error_message: string ref,
+ int location: @location_default ref
+);
+
+files(
+ unique int id: @file,
+ string name: string ref
+);
+
+folders(
+ unique int id: @folder,
+ string name: string ref
+);
+
+@container = @folder | @file
+
+containerparent(
+ int parent: @container ref,
+ unique int child: @container ref
+);
+
+fileannotations(
+ int id: @file ref,
+ int kind: int ref,
+ string name: string ref,
+ string value: string ref
+);
+
+inmacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+affectedbymacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+case @macroinvocation.kind of
+ 1 = @macro_expansion
+| 2 = @other_macro_reference
+;
+
+macroinvocations(
+ unique int id: @macroinvocation,
+ int macro_id: @ppd_define ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+macroparent(
+ unique int id: @macroinvocation ref,
+ int parent_id: @macroinvocation ref
+);
+
+// a macroinvocation may be part of another location
+// the way to find a constant expression that uses a macro
+// is thus to find a constant expression that has a location
+// to which a macro invocation is bound
+macrolocationbind(
+ int id: @macroinvocation ref,
+ int location: @location ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_unexpanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_expanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+/*
+case @function.kind of
+ 1 = @normal_function
+| 2 = @constructor
+| 3 = @destructor
+| 4 = @conversion_function
+| 5 = @operator
+| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk
+| 7 = @user_defined_literal
+| 8 = @deduction_guide
+;
+*/
+
+functions(
+ unique int id: @function,
+ string name: string ref,
+ int kind: int ref
+);
+
+function_entry_point(
+ int id: @function ref,
+ unique int entry_point: @stmt ref
+);
+
+function_return_type(
+ int id: @function ref,
+ int return_type: @type ref
+);
+
+/**
+ * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits`
+ * instance associated with it, and the variables representing the `handle` and `promise`
+ * for it.
+ */
+coroutine(
+ unique int function: @function ref,
+ int traits: @type ref,
+ int handle: @variable ref,
+ int promise: @variable ref
+);
+
+/** The `new` function used for allocating the coroutine state, if any. */
+coroutine_new(
+ unique int function: @function ref,
+ int new: @function ref
+);
+
+/** The `delete` function used for deallocating the coroutine state, if any. */
+coroutine_delete(
+ unique int function: @function ref,
+ int delete: @function ref
+);
+
+purefunctions(unique int id: @function ref);
+
+function_deleted(unique int id: @function ref);
+
+function_defaulted(unique int id: @function ref);
+
+function_prototyped(unique int id: @function ref)
+
+member_function_this_type(
+ unique int id: @function ref,
+ int this_type: @type ref
+);
+
+#keyset[id, type_id]
+fun_decls(
+ int id: @fun_decl,
+ int function: @function ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+fun_def(unique int id: @fun_decl ref);
+fun_specialized(unique int id: @fun_decl ref);
+fun_implicit(unique int id: @fun_decl ref);
+fun_decl_specifiers(
+ int id: @fun_decl ref,
+ string name: string ref
+)
+#keyset[fun_decl, index]
+fun_decl_throws(
+ int fun_decl: @fun_decl ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+/* an empty throw specification is different from none */
+fun_decl_empty_throws(unique int fun_decl: @fun_decl ref);
+fun_decl_noexcept(
+ int fun_decl: @fun_decl ref,
+ int constant: @expr ref
+);
+fun_decl_empty_noexcept(int fun_decl: @fun_decl ref);
+fun_decl_typedef_type(
+ unique int fun_decl: @fun_decl ref,
+ int typedeftype_id: @usertype ref
+);
+
+param_decl_bind(
+ unique int id: @var_decl ref,
+ int index: int ref,
+ int fun_decl: @fun_decl ref
+);
+
+#keyset[id, type_id]
+var_decls(
+ int id: @var_decl,
+ int variable: @variable ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+var_def(unique int id: @var_decl ref);
+var_decl_specifiers(
+ int id: @var_decl ref,
+ string name: string ref
+)
+is_structured_binding(unique int id: @variable ref);
+
+type_decls(
+ unique int id: @type_decl,
+ int type_id: @type ref,
+ int location: @location_default ref
+);
+type_def(unique int id: @type_decl ref);
+type_decl_top(
+ unique int type_decl: @type_decl ref
+);
+
+namespace_decls(
+ unique int id: @namespace_decl,
+ int namespace_id: @namespace ref,
+ int location: @location_default ref,
+ int bodylocation: @location_default ref
+);
+
+case @using.kind of
+ 1 = @using_declaration
+| 2 = @using_directive
+| 3 = @using_enum_declaration
+;
+
+usings(
+ unique int id: @using,
+ int element_id: @element ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+/** The element which contains the `using` declaration. */
+using_container(
+ int parent: @element ref,
+ int child: @using ref
+);
+
+static_asserts(
+ unique int id: @static_assert,
+ int condition : @expr ref,
+ string message : string ref,
+ int location: @location_default ref,
+ int enclosing : @element ref
+);
+
+// each function has an ordered list of parameters
+#keyset[id, type_id]
+#keyset[function, index, type_id]
+params(
+ int id: @parameter,
+ int function: @functionorblock ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+overrides(
+ int new: @function ref,
+ int old: @function ref
+);
+
+#keyset[id, type_id]
+membervariables(
+ int id: @membervariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+globalvariables(
+ int id: @globalvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+localvariables(
+ int id: @localvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+autoderivation(
+ unique int var: @variable ref,
+ int derivation_type: @type ref
+);
+
+orphaned_variables(
+ int var: @localvariable ref,
+ int function: @function ref
+)
+
+enumconstants(
+ unique int id: @enumconstant,
+ int parent: @usertype ref,
+ int index: int ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+
+@variable = @localscopevariable | @globalvariable | @membervariable;
+
+@localscopevariable = @localvariable | @parameter;
+
+/**
+ * Built-in types are the fundamental types, e.g., integral, floating, and void.
+ */
+case @builtintype.kind of
+ 1 = @errortype
+| 2 = @unknowntype
+| 3 = @void
+| 4 = @boolean
+| 5 = @char
+| 6 = @unsigned_char
+| 7 = @signed_char
+| 8 = @short
+| 9 = @unsigned_short
+| 10 = @signed_short
+| 11 = @int
+| 12 = @unsigned_int
+| 13 = @signed_int
+| 14 = @long
+| 15 = @unsigned_long
+| 16 = @signed_long
+| 17 = @long_long
+| 18 = @unsigned_long_long
+| 19 = @signed_long_long
+// ... 20 Microsoft-specific __int8
+// ... 21 Microsoft-specific __int16
+// ... 22 Microsoft-specific __int32
+// ... 23 Microsoft-specific __int64
+| 24 = @float
+| 25 = @double
+| 26 = @long_double
+| 27 = @complex_float // C99-specific _Complex float
+| 28 = @complex_double // C99-specific _Complex double
+| 29 = @complex_long_double // C99-specific _Complex long double
+| 30 = @imaginary_float // C99-specific _Imaginary float
+| 31 = @imaginary_double // C99-specific _Imaginary double
+| 32 = @imaginary_long_double // C99-specific _Imaginary long double
+| 33 = @wchar_t // Microsoft-specific
+| 34 = @decltype_nullptr // C++11
+| 35 = @int128 // __int128
+| 36 = @unsigned_int128 // unsigned __int128
+| 37 = @signed_int128 // signed __int128
+| 38 = @float128 // __float128
+| 39 = @complex_float128 // _Complex __float128
+| 40 = @decimal32 // _Decimal32
+| 41 = @decimal64 // _Decimal64
+| 42 = @decimal128 // _Decimal128
+| 43 = @char16_t
+| 44 = @char32_t
+| 45 = @std_float32 // _Float32
+| 46 = @float32x // _Float32x
+| 47 = @std_float64 // _Float64
+| 48 = @float64x // _Float64x
+| 49 = @std_float128 // _Float128
+// ... 50 _Float128x
+| 51 = @char8_t
+| 52 = @float16 // _Float16
+| 53 = @complex_float16 // _Complex _Float16
+| 54 = @fp16 // __fp16
+| 55 = @std_bfloat16 // __bf16
+| 56 = @std_float16 // std::float16_t
+| 57 = @complex_std_float32 // _Complex _Float32
+| 58 = @complex_float32x // _Complex _Float32x
+| 59 = @complex_std_float64 // _Complex _Float64
+| 60 = @complex_float64x // _Complex _Float64x
+| 61 = @complex_std_float128 // _Complex _Float128
+;
+
+builtintypes(
+ unique int id: @builtintype,
+ string name: string ref,
+ int kind: int ref,
+ int size: int ref,
+ int sign: int ref,
+ int alignment: int ref
+);
+
+/**
+ * Derived types are types that are directly derived from existing types and
+ * point to, refer to, transform type data to return a new type.
+ */
+case @derivedtype.kind of
+ 1 = @pointer
+| 2 = @reference
+| 3 = @type_with_specifiers
+| 4 = @array
+| 5 = @gnu_vector
+| 6 = @routineptr
+| 7 = @routinereference
+| 8 = @rvalue_reference // C++11
+// ... 9 type_conforming_to_protocols deprecated
+| 10 = @block
+;
+
+derivedtypes(
+ unique int id: @derivedtype,
+ string name: string ref,
+ int kind: int ref,
+ int type_id: @type ref
+);
+
+pointerishsize(unique int id: @derivedtype ref,
+ int size: int ref,
+ int alignment: int ref);
+
+arraysizes(
+ unique int id: @derivedtype ref,
+ int num_elements: int ref,
+ int bytesize: int ref,
+ int alignment: int ref
+);
+
+typedefbase(
+ unique int id: @usertype ref,
+ int type_id: @type ref
+);
+
+/**
+ * An instance of the C++11 `decltype` operator. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * would change the semantics of this decltype, e.g.
+ * ```
+ * struct A { double x; };
+ * const A* a = new A();
+ * decltype( a->x ); // type is double
+ * decltype((a->x)); // type is const double&
+ * ```
+ * (Please consult the C++11 standard for more details).
+ * `parentheses_would_change_meaning` is `true` iff that is the case.
+ */
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @usertype.kind of
+ 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+| 5 = @typedef // classic C: typedef typedef type name
+| 6 = @template
+| 7 = @template_parameter
+| 8 = @template_template_parameter
+| 9 = @proxy_class // a proxy class associated with a template parameter
+// ... 10 objc_class deprecated
+// ... 11 objc_protocol deprecated
+// ... 12 objc_category deprecated
+| 13 = @scoped_enum
+| 14 = @using_alias // a using name = type style typedef
+;
+*/
+
+usertypes(
+ unique int id: @usertype,
+ string name: string ref,
+ int kind: int ref
+);
+
+usertypesize(
+ unique int id: @usertype ref,
+ int size: int ref,
+ int alignment: int ref
+);
+
+usertype_final(unique int id: @usertype ref);
+
+usertype_uuid(
+ unique int id: @usertype ref,
+ string uuid: string ref
+);
+
+mangled_name(
+ unique int id: @declaration ref,
+ int mangled_name : @mangledname,
+ boolean is_complete: boolean ref
+);
+
+is_pod_class(unique int id: @usertype ref);
+is_standard_layout_class(unique int id: @usertype ref);
+
+is_complete(unique int id: @usertype ref);
+
+is_class_template(unique int id: @usertype ref);
+class_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+class_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+class_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ unique int templ_param_id: @usertype ref
+);
+
+type_mentions(
+ unique int id: @type_mention,
+ int type_id: @type ref,
+ int location: @location ref,
+ // a_symbol_reference_kind from the frontend.
+ int kind: int ref
+);
+
+is_function_template(unique int id: @function ref);
+function_instantiation(
+ unique int to: @function ref,
+ int from: @function ref
+);
+function_template_argument(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+function_template_argument_value(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_variable_template(unique int id: @variable ref);
+variable_instantiation(
+ unique int to: @variable ref,
+ int from: @variable ref
+);
+variable_template_argument(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+variable_template_argument_value(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+/*
+ Fixed point types
+ precision(1) = short, precision(2) = default, precision(3) = long
+ is_unsigned(1) = unsigned is_unsigned(2) = signed
+ is_fract_type(1) = declared with _Fract
+ saturating(1) = declared with _Sat
+*/
+/* TODO
+fixedpointtypes(
+ unique int id: @fixedpointtype,
+ int precision: int ref,
+ int is_unsigned: int ref,
+ int is_fract_type: int ref,
+ int saturating: int ref);
+*/
+
+routinetypes(
+ unique int id: @routinetype,
+ int return_type: @type ref
+);
+
+routinetypeargs(
+ int routine: @routinetype ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+ptrtomembers(
+ unique int id: @ptrtomember,
+ int type_id: @type ref,
+ int class_id: @type ref
+);
+
+/*
+ specifiers for types, functions, and variables
+
+ "public",
+ "protected",
+ "private",
+
+ "const",
+ "volatile",
+ "static",
+
+ "pure",
+ "virtual",
+ "sealed", // Microsoft
+ "__interface", // Microsoft
+ "inline",
+ "explicit",
+
+ "near", // near far extension
+ "far", // near far extension
+ "__ptr32", // Microsoft
+ "__ptr64", // Microsoft
+ "__sptr", // Microsoft
+ "__uptr", // Microsoft
+ "dllimport", // Microsoft
+ "dllexport", // Microsoft
+ "thread", // Microsoft
+ "naked", // Microsoft
+ "microsoft_inline", // Microsoft
+ "forceinline", // Microsoft
+ "selectany", // Microsoft
+ "nothrow", // Microsoft
+ "novtable", // Microsoft
+ "noreturn", // Microsoft
+ "noinline", // Microsoft
+ "noalias", // Microsoft
+ "restrict", // Microsoft
+*/
+
+specifiers(
+ unique int id: @specifier,
+ unique string str: string ref
+);
+
+typespecifiers(
+ int type_id: @type ref,
+ int spec_id: @specifier ref
+);
+
+funspecifiers(
+ int func_id: @function ref,
+ int spec_id: @specifier ref
+);
+
+varspecifiers(
+ int var_id: @accessible ref,
+ int spec_id: @specifier ref
+);
+
+attributes(
+ unique int id: @attribute,
+ int kind: int ref,
+ string name: string ref,
+ string name_space: string ref,
+ int location: @location_default ref
+);
+
+case @attribute.kind of
+ 0 = @gnuattribute
+| 1 = @stdattribute
+| 2 = @declspec
+| 3 = @msattribute
+| 4 = @alignas
+// ... 5 @objc_propertyattribute deprecated
+;
+
+attribute_args(
+ unique int id: @attribute_arg,
+ int kind: int ref,
+ int attribute: @attribute ref,
+ int index: int ref,
+ int location: @location_default ref
+);
+
+case @attribute_arg.kind of
+ 0 = @attribute_arg_empty
+| 1 = @attribute_arg_token
+| 2 = @attribute_arg_constant
+| 3 = @attribute_arg_type
+| 4 = @attribute_arg_constant_expr
+| 5 = @attribute_arg_expr
+;
+
+attribute_arg_value(
+ unique int arg: @attribute_arg ref,
+ string value: string ref
+);
+attribute_arg_type(
+ unique int arg: @attribute_arg ref,
+ int type_id: @type ref
+);
+attribute_arg_constant(
+ unique int arg: @attribute_arg ref,
+ int constant: @expr ref
+)
+attribute_arg_expr(
+ unique int arg: @attribute_arg ref,
+ int expr: @expr ref
+)
+attribute_arg_name(
+ unique int arg: @attribute_arg ref,
+ string name: string ref
+);
+
+typeattributes(
+ int type_id: @type ref,
+ int spec_id: @attribute ref
+);
+
+funcattributes(
+ int func_id: @function ref,
+ int spec_id: @attribute ref
+);
+
+varattributes(
+ int var_id: @accessible ref,
+ int spec_id: @attribute ref
+);
+
+stmtattributes(
+ int stmt_id: @stmt ref,
+ int spec_id: @attribute ref
+);
+
+@type = @builtintype
+ | @derivedtype
+ | @usertype
+ /* TODO | @fixedpointtype */
+ | @routinetype
+ | @ptrtomember
+ | @decltype;
+
+unspecifiedtype(
+ unique int type_id: @type ref,
+ int unspecified_type_id: @type ref
+);
+
+member(
+ int parent: @type ref,
+ int index: int ref,
+ int child: @member ref
+);
+
+@enclosingfunction_child = @usertype | @variable | @namespace
+
+enclosingfunction(
+ unique int child: @enclosingfunction_child ref,
+ int parent: @function ref
+);
+
+derivations(
+ unique int derivation: @derivation,
+ int sub: @type ref,
+ int index: int ref,
+ int super: @type ref,
+ int location: @location_default ref
+);
+
+derspecifiers(
+ int der_id: @derivation ref,
+ int spec_id: @specifier ref
+);
+
+/**
+ * Contains the byte offset of the base class subobject within the derived
+ * class. Only holds for non-virtual base classes, but see table
+ * `virtual_base_offsets` for offsets of virtual base class subobjects.
+ */
+direct_base_offsets(
+ unique int der_id: @derivation ref,
+ int offset: int ref
+);
+
+/**
+ * Contains the byte offset of the virtual base class subobject for class
+ * `super` within a most-derived object of class `sub`. `super` can be either a
+ * direct or indirect base class.
+ */
+#keyset[sub, super]
+virtual_base_offsets(
+ int sub: @usertype ref,
+ int super: @usertype ref,
+ int offset: int ref
+);
+
+frienddecls(
+ unique int id: @frienddecl,
+ int type_id: @type ref,
+ int decl_id: @declaration ref,
+ int location: @location_default ref
+);
+
+@declaredtype = @usertype ;
+
+@declaration = @function
+ | @declaredtype
+ | @variable
+ | @enumconstant
+ | @frienddecl;
+
+@member = @membervariable
+ | @function
+ | @declaredtype
+ | @enumconstant;
+
+@locatable = @diagnostic
+ | @declaration
+ | @ppd_include
+ | @ppd_define
+ | @macroinvocation
+ /*| @funcall*/
+ | @xmllocatable
+ | @attribute
+ | @attribute_arg;
+
+@namedscope = @namespace | @usertype;
+
+@element = @locatable
+ | @file
+ | @folder
+ | @specifier
+ | @type
+ | @expr
+ | @namespace
+ | @initialiser
+ | @stmt
+ | @derivation
+ | @comment
+ | @preprocdirect
+ | @fun_decl
+ | @var_decl
+ | @type_decl
+ | @namespace_decl
+ | @using
+ | @namequalifier
+ | @specialnamequalifyingelement
+ | @static_assert
+ | @type_mention
+ | @lambdacapture;
+
+@exprparent = @element;
+
+comments(
+ unique int id: @comment,
+ string contents: string ref,
+ int location: @location_default ref
+);
+
+commentbinding(
+ int id: @comment ref,
+ int element: @element ref
+);
+
+exprconv(
+ int converted: @expr ref,
+ unique int conversion: @expr ref
+);
+
+compgenerated(unique int id: @element ref);
+
+/**
+ * `destructor_call` destructs the `i`'th entity that should be
+ * destructed following `element`. Note that entities should be
+ * destructed in reverse construction order, so for a given `element`
+ * these should be called from highest to lowest `i`.
+ */
+#keyset[element, destructor_call]
+#keyset[element, i]
+synthetic_destructor_call(
+ int element: @element ref,
+ int i: int ref,
+ int destructor_call: @routineexpr ref
+);
+
+namespaces(
+ unique int id: @namespace,
+ string name: string ref
+);
+
+namespace_inline(
+ unique int id: @namespace ref
+);
+
+namespacembrs(
+ int parentid: @namespace ref,
+ unique int memberid: @namespacembr ref
+);
+
+@namespacembr = @declaration | @namespace;
+
+exprparents(
+ int expr_id: @expr ref,
+ int child_index: int ref,
+ int parent_id: @exprparent ref
+);
+
+expr_isload(unique int expr_id: @expr ref);
+
+@cast = @c_style_cast
+ | @const_cast
+ | @dynamic_cast
+ | @reinterpret_cast
+ | @static_cast
+ ;
+
+/*
+case @conversion.kind of
+ 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast
+| 1 = @bool_conversion // conversion to 'bool'
+| 2 = @base_class_conversion // a derived-to-base conversion
+| 3 = @derived_class_conversion // a base-to-derived conversion
+| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member
+| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member
+| 6 = @glvalue_adjust // an adjustment of the type of a glvalue
+| 7 = @prvalue_adjust // an adjustment of the type of a prvalue
+;
+*/
+/**
+ * Describes the semantics represented by a cast expression. This is largely
+ * independent of the source syntax of the cast, so it is separate from the
+ * regular expression kind.
+ */
+conversionkinds(
+ unique int expr_id: @cast ref,
+ int kind: int ref
+);
+
+@conversion = @cast
+ | @array_to_pointer
+ | @parexpr
+ | @reference_to
+ | @ref_indirect
+ | @temp_init
+ ;
+
+/*
+case @funbindexpr.kind of
+ 0 = @normal_call // a normal call
+| 1 = @virtual_call // a virtual call
+| 2 = @adl_call // a call whose target is only found by ADL
+;
+*/
+iscall(
+ unique int caller: @funbindexpr ref,
+ int kind: int ref
+);
+
+numtemplatearguments(
+ unique int expr_id: @expr ref,
+ int num: int ref
+);
+
+specialnamequalifyingelements(
+ unique int id: @specialnamequalifyingelement,
+ unique string name: string ref
+);
+
+@namequalifiableelement = @expr | @namequalifier;
+@namequalifyingelement = @namespace
+ | @specialnamequalifyingelement
+ | @usertype;
+
+namequalifiers(
+ unique int id: @namequalifier,
+ unique int qualifiableelement: @namequalifiableelement ref,
+ int qualifyingelement: @namequalifyingelement ref,
+ int location: @location_default ref
+);
+
+varbind(
+ int expr: @varbindexpr ref,
+ int var: @accessible ref
+);
+
+funbind(
+ int expr: @funbindexpr ref,
+ int fun: @function ref
+);
+
+@any_new_expr = @new_expr
+ | @new_array_expr;
+
+@new_or_delete_expr = @any_new_expr
+ | @delete_expr
+ | @delete_array_expr;
+
+@prefix_crement_expr = @preincrexpr | @predecrexpr;
+
+@postfix_crement_expr = @postincrexpr | @postdecrexpr;
+
+@increment_expr = @preincrexpr | @postincrexpr;
+
+@decrement_expr = @predecrexpr | @postdecrexpr;
+
+@crement_expr = @increment_expr | @decrement_expr;
+
+@un_arith_op_expr = @arithnegexpr
+ | @unaryplusexpr
+ | @conjugation
+ | @realpartexpr
+ | @imagpartexpr
+ | @crement_expr
+ ;
+
+@un_bitwise_op_expr = @complementexpr;
+
+@un_log_op_expr = @notexpr;
+
+@un_op_expr = @address_of
+ | @indirect
+ | @un_arith_op_expr
+ | @un_bitwise_op_expr
+ | @builtinaddressof
+ | @vec_fill
+ | @un_log_op_expr
+ | @co_await
+ | @co_yield
+ ;
+
+@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr;
+
+@cmp_op_expr = @eq_op_expr | @rel_op_expr;
+
+@eq_op_expr = @eqexpr | @neexpr;
+
+@rel_op_expr = @gtexpr
+ | @ltexpr
+ | @geexpr
+ | @leexpr
+ | @spaceshipexpr
+ ;
+
+@bin_bitwise_op_expr = @lshiftexpr
+ | @rshiftexpr
+ | @andexpr
+ | @orexpr
+ | @xorexpr
+ ;
+
+@p_arith_op_expr = @paddexpr
+ | @psubexpr
+ | @pdiffexpr
+ ;
+
+@bin_arith_op_expr = @addexpr
+ | @subexpr
+ | @mulexpr
+ | @divexpr
+ | @remexpr
+ | @jmulexpr
+ | @jdivexpr
+ | @fjaddexpr
+ | @jfaddexpr
+ | @fjsubexpr
+ | @jfsubexpr
+ | @minexpr
+ | @maxexpr
+ | @p_arith_op_expr
+ ;
+
+@bin_op_expr = @bin_arith_op_expr
+ | @bin_bitwise_op_expr
+ | @cmp_op_expr
+ | @bin_log_op_expr
+ ;
+
+@op_expr = @un_op_expr
+ | @bin_op_expr
+ | @assign_expr
+ | @conditionalexpr
+ ;
+
+@assign_arith_expr = @assignaddexpr
+ | @assignsubexpr
+ | @assignmulexpr
+ | @assigndivexpr
+ | @assignremexpr
+ ;
+
+@assign_bitwise_expr = @assignandexpr
+ | @assignorexpr
+ | @assignxorexpr
+ | @assignlshiftexpr
+ | @assignrshiftexpr
+ ;
+
+@assign_pointer_expr = @assignpaddexpr
+ | @assignpsubexpr
+ ;
+
+@assign_op_expr = @assign_arith_expr
+ | @assign_bitwise_expr
+ | @assign_pointer_expr
+ ;
+
+@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr
+
+/*
+ case @allocator.form of
+ 0 = plain
+ | 1 = alignment
+ ;
+*/
+
+/**
+ * The allocator function associated with a `new` or `new[]` expression.
+ * The `form` column specified whether the allocation call contains an alignment
+ * argument.
+ */
+expr_allocator(
+ unique int expr: @any_new_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/*
+ case @deallocator.form of
+ 0 = plain
+ | 1 = size
+ | 2 = alignment
+ | 3 = size_and_alignment
+ ;
+*/
+
+/**
+ * The deallocator function associated with a `delete`, `delete[]`, `new`, or
+ * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the
+ * one used to free memory if the initialization throws an exception.
+ * The `form` column specifies whether the deallocation call contains a size
+ * argument, and alignment argument, or both.
+ */
+expr_deallocator(
+ unique int expr: @new_or_delete_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/**
+ * Holds if the `@conditionalexpr` is of the two operand form
+ * `guard ? : false`.
+ */
+expr_cond_two_operand(
+ unique int cond: @conditionalexpr ref
+);
+
+/**
+ * The guard of `@conditionalexpr` `guard ? true : false`
+ */
+expr_cond_guard(
+ unique int cond: @conditionalexpr ref,
+ int guard: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` holds. For the two operand form
+ * `guard ?: false` consider using `expr_cond_guard` instead.
+ */
+expr_cond_true(
+ unique int cond: @conditionalexpr ref,
+ int true: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` does not hold.
+ */
+expr_cond_false(
+ unique int cond: @conditionalexpr ref,
+ int false: @expr ref
+);
+
+/** A string representation of the value. */
+values(
+ unique int id: @value,
+ string str: string ref
+);
+
+/** The actual text in the source code for the value, if any. */
+valuetext(
+ unique int id: @value ref,
+ string text: string ref
+);
+
+valuebind(
+ int val: @value ref,
+ unique int expr: @expr ref
+);
+
+fieldoffsets(
+ unique int id: @variable ref,
+ int byteoffset: int ref,
+ int bitoffset: int ref
+);
+
+bitfield(
+ unique int id: @variable ref,
+ int bits: int ref,
+ int declared_bits: int ref
+);
+
+/* TODO
+memberprefix(
+ int member: @expr ref,
+ int prefix: @expr ref
+);
+*/
+
+/*
+ kind(1) = mbrcallexpr
+ kind(2) = mbrptrcallexpr
+ kind(3) = mbrptrmbrcallexpr
+ kind(4) = ptrmbrptrmbrcallexpr
+ kind(5) = mbrreadexpr // x.y
+ kind(6) = mbrptrreadexpr // p->y
+ kind(7) = mbrptrmbrreadexpr // x.*pm
+ kind(8) = mbrptrmbrptrreadexpr // x->*pm
+ kind(9) = staticmbrreadexpr // static x.y
+ kind(10) = staticmbrptrreadexpr // static p->y
+*/
+/* TODO
+memberaccess(
+ int member: @expr ref,
+ int kind: int ref
+);
+*/
+
+initialisers(
+ unique int init: @initialiser,
+ int var: @accessible ref,
+ unique int expr: @expr ref,
+ int location: @location_expr ref
+);
+
+braced_initialisers(
+ int init: @initialiser ref
+);
+
+/**
+ * An ancestor for the expression, for cases in which we cannot
+ * otherwise find the expression's parent.
+ */
+expr_ancestor(
+ int exp: @expr ref,
+ int ancestor: @element ref
+);
+
+exprs(
+ unique int id: @expr,
+ int kind: int ref,
+ int location: @location_expr ref
+);
+
+expr_reuse(
+ int reuse: @expr ref,
+ int original: @expr ref,
+ int value_category: int ref
+)
+
+/*
+ case @value.category of
+ 1 = prval
+ | 2 = xval
+ | 3 = lval
+ ;
+*/
+expr_types(
+ int id: @expr ref,
+ int typeid: @type ref,
+ int value_category: int ref
+);
+
+case @expr.kind of
+ 1 = @errorexpr
+| 2 = @address_of // & AddressOfExpr
+| 3 = @reference_to // ReferenceToExpr (implicit?)
+| 4 = @indirect // * PointerDereferenceExpr
+| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?)
+// ...
+| 8 = @array_to_pointer // (???)
+| 9 = @vacuous_destructor_call // VacuousDestructorCall
+// ...
+| 11 = @assume // Microsoft
+| 12 = @parexpr
+| 13 = @arithnegexpr
+| 14 = @unaryplusexpr
+| 15 = @complementexpr
+| 16 = @notexpr
+| 17 = @conjugation // GNU ~ operator
+| 18 = @realpartexpr // GNU __real
+| 19 = @imagpartexpr // GNU __imag
+| 20 = @postincrexpr
+| 21 = @postdecrexpr
+| 22 = @preincrexpr
+| 23 = @predecrexpr
+| 24 = @conditionalexpr
+| 25 = @addexpr
+| 26 = @subexpr
+| 27 = @mulexpr
+| 28 = @divexpr
+| 29 = @remexpr
+| 30 = @jmulexpr // C99 mul imaginary
+| 31 = @jdivexpr // C99 div imaginary
+| 32 = @fjaddexpr // C99 add real + imaginary
+| 33 = @jfaddexpr // C99 add imaginary + real
+| 34 = @fjsubexpr // C99 sub real - imaginary
+| 35 = @jfsubexpr // C99 sub imaginary - real
+| 36 = @paddexpr // pointer add (pointer + int or int + pointer)
+| 37 = @psubexpr // pointer sub (pointer - integer)
+| 38 = @pdiffexpr // difference between two pointers
+| 39 = @lshiftexpr
+| 40 = @rshiftexpr
+| 41 = @andexpr
+| 42 = @orexpr
+| 43 = @xorexpr
+| 44 = @eqexpr
+| 45 = @neexpr
+| 46 = @gtexpr
+| 47 = @ltexpr
+| 48 = @geexpr
+| 49 = @leexpr
+| 50 = @minexpr // GNU minimum
+| 51 = @maxexpr // GNU maximum
+| 52 = @assignexpr
+| 53 = @assignaddexpr
+| 54 = @assignsubexpr
+| 55 = @assignmulexpr
+| 56 = @assigndivexpr
+| 57 = @assignremexpr
+| 58 = @assignlshiftexpr
+| 59 = @assignrshiftexpr
+| 60 = @assignandexpr
+| 61 = @assignorexpr
+| 62 = @assignxorexpr
+| 63 = @assignpaddexpr // assign pointer add
+| 64 = @assignpsubexpr // assign pointer sub
+| 65 = @andlogicalexpr
+| 66 = @orlogicalexpr
+| 67 = @commaexpr
+| 68 = @subscriptexpr // access to member of an array, e.g., a[5]
+// ... 69 @objc_subscriptexpr deprecated
+// ... 70 @cmdaccess deprecated
+// ...
+| 73 = @virtfunptrexpr
+| 74 = @callexpr
+// ... 75 @msgexpr_normal deprecated
+// ... 76 @msgexpr_super deprecated
+// ... 77 @atselectorexpr deprecated
+// ... 78 @atprotocolexpr deprecated
+| 79 = @vastartexpr
+| 80 = @vaargexpr
+| 81 = @vaendexpr
+| 82 = @vacopyexpr
+// ... 83 @atencodeexpr deprecated
+| 84 = @varaccess
+| 85 = @thisaccess
+// ... 86 @objc_box_expr deprecated
+| 87 = @new_expr
+| 88 = @delete_expr
+| 89 = @throw_expr
+| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2)
+| 91 = @braced_init_list
+| 92 = @type_id
+| 93 = @runtime_sizeof
+| 94 = @runtime_alignof
+| 95 = @sizeof_pack
+| 96 = @expr_stmt // GNU extension
+| 97 = @routineexpr
+| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....)
+| 99 = @offsetofexpr // offsetof ::= type and field
+| 100 = @hasassignexpr // __has_assign ::= type
+| 101 = @hascopyexpr // __has_copy ::= type
+| 102 = @hasnothrowassign // __has_nothrow_assign ::= type
+| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type
+| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type
+| 105 = @hastrivialassign // __has_trivial_assign ::= type
+| 106 = @hastrivialconstr // __has_trivial_constructor ::= type
+| 107 = @hastrivialcopy // __has_trivial_copy ::= type
+| 108 = @hasuserdestr // __has_user_destructor ::= type
+| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type
+| 110 = @isabstractexpr // __is_abstract ::= type
+| 111 = @isbaseofexpr // __is_base_of ::= type type
+| 112 = @isclassexpr // __is_class ::= type
+| 113 = @isconvtoexpr // __is_convertible_to ::= type type
+| 114 = @isemptyexpr // __is_empty ::= type
+| 115 = @isenumexpr // __is_enum ::= type
+| 116 = @ispodexpr // __is_pod ::= type
+| 117 = @ispolyexpr // __is_polymorphic ::= type
+| 118 = @isunionexpr // __is_union ::= type
+| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type
+| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof
+// ...
+| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type
+| 123 = @literal
+| 124 = @uuidof
+| 127 = @aggregateliteral
+| 128 = @delete_array_expr
+| 129 = @new_array_expr
+// ... 130 @objc_array_literal deprecated
+// ... 131 @objc_dictionary_literal deprecated
+| 132 = @foldexpr
+// ...
+| 200 = @ctordirectinit
+| 201 = @ctorvirtualinit
+| 202 = @ctorfieldinit
+| 203 = @ctordelegatinginit
+| 204 = @dtordirectdestruct
+| 205 = @dtorvirtualdestruct
+| 206 = @dtorfielddestruct
+// ...
+| 210 = @static_cast
+| 211 = @reinterpret_cast
+| 212 = @const_cast
+| 213 = @dynamic_cast
+| 214 = @c_style_cast
+| 215 = @lambdaexpr
+| 216 = @param_ref
+| 217 = @noopexpr
+// ...
+| 294 = @istriviallyconstructibleexpr
+| 295 = @isdestructibleexpr
+| 296 = @isnothrowdestructibleexpr
+| 297 = @istriviallydestructibleexpr
+| 298 = @istriviallyassignableexpr
+| 299 = @isnothrowassignableexpr
+| 300 = @istrivialexpr
+| 301 = @isstandardlayoutexpr
+| 302 = @istriviallycopyableexpr
+| 303 = @isliteraltypeexpr
+| 304 = @hastrivialmoveconstructorexpr
+| 305 = @hastrivialmoveassignexpr
+| 306 = @hasnothrowmoveassignexpr
+| 307 = @isconstructibleexpr
+| 308 = @isnothrowconstructibleexpr
+| 309 = @hasfinalizerexpr
+| 310 = @isdelegateexpr
+| 311 = @isinterfaceclassexpr
+| 312 = @isrefarrayexpr
+| 313 = @isrefclassexpr
+| 314 = @issealedexpr
+| 315 = @issimplevalueclassexpr
+| 316 = @isvalueclassexpr
+| 317 = @isfinalexpr
+| 319 = @noexceptexpr
+| 320 = @builtinshufflevector
+| 321 = @builtinchooseexpr
+| 322 = @builtinaddressof
+| 323 = @vec_fill
+| 324 = @builtinconvertvector
+| 325 = @builtincomplex
+| 326 = @spaceshipexpr
+| 327 = @co_await
+| 328 = @co_yield
+| 329 = @temp_init
+| 330 = @isassignable
+| 331 = @isaggregate
+| 332 = @hasuniqueobjectrepresentations
+| 333 = @builtinbitcast
+| 334 = @builtinshuffle
+| 335 = @blockassignexpr
+| 336 = @issame
+| 337 = @isfunction
+| 338 = @islayoutcompatible
+| 339 = @ispointerinterconvertiblebaseof
+| 340 = @isarray
+| 341 = @arrayrank
+| 342 = @arrayextent
+| 343 = @isarithmetic
+| 344 = @iscompletetype
+| 345 = @iscompound
+| 346 = @isconst
+| 347 = @isfloatingpoint
+| 348 = @isfundamental
+| 349 = @isintegral
+| 350 = @islvaluereference
+| 351 = @ismemberfunctionpointer
+| 352 = @ismemberobjectpointer
+| 353 = @ismemberpointer
+| 354 = @isobject
+| 355 = @ispointer
+| 356 = @isreference
+| 357 = @isrvaluereference
+| 358 = @isscalar
+| 359 = @issigned
+| 360 = @isunsigned
+| 361 = @isvoid
+| 362 = @isvolatile
+| 363 = @reuseexpr
+| 364 = @istriviallycopyassignable
+| 365 = @isassignablenopreconditioncheck
+| 366 = @referencebindstotemporary
+| 367 = @issameas
+| 368 = @builtinhasattribute
+| 369 = @ispointerinterconvertiblewithclass
+| 370 = @builtinispointerinterconvertiblewithclass
+| 371 = @iscorrespondingmember
+| 372 = @builtiniscorrespondingmember
+| 373 = @isboundedarray
+| 374 = @isunboundedarray
+| 375 = @isreferenceable
+| 378 = @isnothrowconvertible
+| 379 = @referenceconstructsfromtemporary
+| 380 = @referenceconvertsfromtemporary
+| 381 = @isconvertible
+| 382 = @isvalidwinrttype
+| 383 = @iswinclass
+| 384 = @iswininterface
+;
+
+@var_args_expr = @vastartexpr
+ | @vaendexpr
+ | @vaargexpr
+ | @vacopyexpr
+ ;
+
+@builtin_op = @var_args_expr
+ | @noopexpr
+ | @offsetofexpr
+ | @intaddrexpr
+ | @hasassignexpr
+ | @hascopyexpr
+ | @hasnothrowassign
+ | @hasnothrowconstr
+ | @hasnothrowcopy
+ | @hastrivialassign
+ | @hastrivialconstr
+ | @hastrivialcopy
+ | @hastrivialdestructor
+ | @hasuserdestr
+ | @hasvirtualdestr
+ | @isabstractexpr
+ | @isbaseofexpr
+ | @isclassexpr
+ | @isconvtoexpr
+ | @isemptyexpr
+ | @isenumexpr
+ | @ispodexpr
+ | @ispolyexpr
+ | @isunionexpr
+ | @typescompexpr
+ | @builtinshufflevector
+ | @builtinconvertvector
+ | @builtinaddressof
+ | @istriviallyconstructibleexpr
+ | @isdestructibleexpr
+ | @isnothrowdestructibleexpr
+ | @istriviallydestructibleexpr
+ | @istriviallyassignableexpr
+ | @isnothrowassignableexpr
+ | @istrivialexpr
+ | @isstandardlayoutexpr
+ | @istriviallycopyableexpr
+ | @isliteraltypeexpr
+ | @hastrivialmoveconstructorexpr
+ | @hastrivialmoveassignexpr
+ | @hasnothrowmoveassignexpr
+ | @isconstructibleexpr
+ | @isnothrowconstructibleexpr
+ | @hasfinalizerexpr
+ | @isdelegateexpr
+ | @isinterfaceclassexpr
+ | @isrefarrayexpr
+ | @isrefclassexpr
+ | @issealedexpr
+ | @issimplevalueclassexpr
+ | @isvalueclassexpr
+ | @isfinalexpr
+ | @builtinchooseexpr
+ | @builtincomplex
+ | @isassignable
+ | @isaggregate
+ | @hasuniqueobjectrepresentations
+ | @builtinbitcast
+ | @builtinshuffle
+ | @issame
+ | @isfunction
+ | @islayoutcompatible
+ | @ispointerinterconvertiblebaseof
+ | @isarray
+ | @arrayrank
+ | @arrayextent
+ | @isarithmetic
+ | @iscompletetype
+ | @iscompound
+ | @isconst
+ | @isfloatingpoint
+ | @isfundamental
+ | @isintegral
+ | @islvaluereference
+ | @ismemberfunctionpointer
+ | @ismemberobjectpointer
+ | @ismemberpointer
+ | @isobject
+ | @ispointer
+ | @isreference
+ | @isrvaluereference
+ | @isscalar
+ | @issigned
+ | @isunsigned
+ | @isvoid
+ | @isvolatile
+ | @istriviallycopyassignable
+ | @isassignablenopreconditioncheck
+ | @referencebindstotemporary
+ | @issameas
+ | @builtinhasattribute
+ | @ispointerinterconvertiblewithclass
+ | @builtinispointerinterconvertiblewithclass
+ | @iscorrespondingmember
+ | @builtiniscorrespondingmember
+ | @isboundedarray
+ | @isunboundedarray
+ | @isreferenceable
+ | @isnothrowconvertible
+ | @referenceconstructsfromtemporary
+ | @referenceconvertsfromtemporary
+ | @isconvertible
+ | @isvalidwinrttype
+ | @iswinclass
+ | @iswininterface
+ ;
+
+new_allocated_type(
+ unique int expr: @new_expr ref,
+ int type_id: @type ref
+);
+
+new_array_allocated_type(
+ unique int expr: @new_array_expr ref,
+ int type_id: @type ref
+);
+
+/**
+ * The field being initialized by an initializer expression within an aggregate
+ * initializer for a class/struct/union. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_field_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int field: @membervariable ref,
+ int position: int ref
+);
+
+/**
+ * The index of the element being initialized by an initializer expression
+ * within an aggregate initializer for an array. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_array_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int element_index: int ref,
+ int position: int ref
+);
+
+@ctorinit = @ctordirectinit
+ | @ctorvirtualinit
+ | @ctorfieldinit
+ | @ctordelegatinginit;
+@dtordestruct = @dtordirectdestruct
+ | @dtorvirtualdestruct
+ | @dtorfielddestruct;
+
+
+condition_decl_bind(
+ unique int expr: @condition_decl ref,
+ unique int decl: @declaration ref
+);
+
+typeid_bind(
+ unique int expr: @type_id ref,
+ int type_id: @type ref
+);
+
+uuidof_bind(
+ unique int expr: @uuidof ref,
+ int type_id: @type ref
+);
+
+@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof;
+
+sizeof_bind(
+ unique int expr: @runtime_sizeof_or_alignof ref,
+ int type_id: @type ref
+);
+
+code_block(
+ unique int block: @literal ref,
+ unique int routine: @function ref
+);
+
+lambdas(
+ unique int expr: @lambdaexpr ref,
+ string default_capture: string ref,
+ boolean has_explicit_return_type: boolean ref
+);
+
+lambda_capture(
+ unique int id: @lambdacapture,
+ int lambda: @lambdaexpr ref,
+ int index: int ref,
+ int field: @membervariable ref,
+ boolean captured_by_reference: boolean ref,
+ boolean is_implicit: boolean ref,
+ int location: @location_default ref
+);
+
+@funbindexpr = @routineexpr
+ | @new_expr
+ | @delete_expr
+ | @delete_array_expr
+ | @ctordirectinit
+ | @ctorvirtualinit
+ | @ctordelegatinginit
+ | @dtordirectdestruct
+ | @dtorvirtualdestruct;
+
+@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct;
+@addressable = @function | @variable ;
+@accessible = @addressable | @enumconstant ;
+
+@access = @varaccess | @routineexpr ;
+
+fold(
+ int expr: @foldexpr ref,
+ string operator: string ref,
+ boolean is_left_fold: boolean ref
+);
+
+stmts(
+ unique int id: @stmt,
+ int kind: int ref,
+ int location: @location_stmt ref
+);
+
+case @stmt.kind of
+ 1 = @stmt_expr
+| 2 = @stmt_if
+| 3 = @stmt_while
+| 4 = @stmt_goto
+| 5 = @stmt_label
+| 6 = @stmt_return
+| 7 = @stmt_block
+| 8 = @stmt_end_test_while // do { ... } while ( ... )
+| 9 = @stmt_for
+| 10 = @stmt_switch_case
+| 11 = @stmt_switch
+| 13 = @stmt_asm // "asm" statement or the body of an asm function
+| 15 = @stmt_try_block
+| 16 = @stmt_microsoft_try // Microsoft
+| 17 = @stmt_decl
+| 18 = @stmt_set_vla_size // C99
+| 19 = @stmt_vla_decl // C99
+| 25 = @stmt_assigned_goto // GNU
+| 26 = @stmt_empty
+| 27 = @stmt_continue
+| 28 = @stmt_break
+| 29 = @stmt_range_based_for // C++11
+// ... 30 @stmt_at_autoreleasepool_block deprecated
+// ... 31 @stmt_objc_for_in deprecated
+// ... 32 @stmt_at_synchronized deprecated
+| 33 = @stmt_handler
+// ... 34 @stmt_finally_end deprecated
+| 35 = @stmt_constexpr_if
+| 37 = @stmt_co_return
+;
+
+type_vla(
+ int type_id: @type ref,
+ int decl: @stmt_vla_decl ref
+);
+
+variable_vla(
+ int var: @variable ref,
+ int decl: @stmt_vla_decl ref
+);
+
+if_initialization(
+ unique int if_stmt: @stmt_if ref,
+ int init_id: @stmt ref
+);
+
+if_then(
+ unique int if_stmt: @stmt_if ref,
+ int then_id: @stmt ref
+);
+
+if_else(
+ unique int if_stmt: @stmt_if ref,
+ int else_id: @stmt ref
+);
+
+constexpr_if_initialization(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int init_id: @stmt ref
+);
+
+constexpr_if_then(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int then_id: @stmt ref
+);
+
+constexpr_if_else(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int else_id: @stmt ref
+);
+
+while_body(
+ unique int while_stmt: @stmt_while ref,
+ int body_id: @stmt ref
+);
+
+do_body(
+ unique int do_stmt: @stmt_end_test_while ref,
+ int body_id: @stmt ref
+);
+
+switch_initialization(
+ unique int switch_stmt: @stmt_switch ref,
+ int init_id: @stmt ref
+);
+
+#keyset[switch_stmt, index]
+switch_case(
+ int switch_stmt: @stmt_switch ref,
+ int index: int ref,
+ int case_id: @stmt_switch_case ref
+);
+
+switch_body(
+ unique int switch_stmt: @stmt_switch ref,
+ int body_id: @stmt ref
+);
+
+@stmt_for_or_range_based_for = @stmt_for
+ | @stmt_range_based_for;
+
+for_initialization(
+ unique int for_stmt: @stmt_for_or_range_based_for ref,
+ int init_id: @stmt ref
+);
+
+for_condition(
+ unique int for_stmt: @stmt_for ref,
+ int condition_id: @expr ref
+);
+
+for_update(
+ unique int for_stmt: @stmt_for ref,
+ int update_id: @expr ref
+);
+
+for_body(
+ unique int for_stmt: @stmt_for ref,
+ int body_id: @stmt ref
+);
+
+@stmtparent = @stmt | @expr_stmt ;
+stmtparents(
+ unique int id: @stmt ref,
+ int index: int ref,
+ int parent: @stmtparent ref
+);
+
+ishandler(unique int block: @stmt_block ref);
+
+@cfgnode = @stmt | @expr | @function | @initialiser ;
+
+stmt_decl_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl: @declaration ref
+);
+
+stmt_decl_entry_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl_entry: @element ref
+);
+
+@functionorblock = @function | @stmt_block;
+
+blockscope(
+ unique int block: @stmt_block ref,
+ int enclosing: @functionorblock ref
+);
+
+@jump = @stmt_goto | @stmt_break | @stmt_continue;
+
+@jumporlabel = @jump | @stmt_label | @literal;
+
+jumpinfo(
+ unique int id: @jumporlabel ref,
+ string str: string ref,
+ int target: @stmt ref
+);
+
+preprocdirects(
+ unique int id: @preprocdirect,
+ int kind: int ref,
+ int location: @location_default ref
+);
+case @preprocdirect.kind of
+ 0 = @ppd_if
+| 1 = @ppd_ifdef
+| 2 = @ppd_ifndef
+| 3 = @ppd_elif
+| 4 = @ppd_else
+| 5 = @ppd_endif
+| 6 = @ppd_plain_include
+| 7 = @ppd_define
+| 8 = @ppd_undef
+| 9 = @ppd_line
+| 10 = @ppd_error
+| 11 = @ppd_pragma
+| 12 = @ppd_objc_import
+| 13 = @ppd_include_next
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif;
+
+preprocpair(
+ int begin : @ppd_branch ref,
+ int elseelifend : @preprocdirect ref
+);
+
+preproctrue(int branch : @ppd_branch ref);
+preprocfalse(int branch : @ppd_branch ref);
+
+preproctext(
+ unique int id: @preprocdirect ref,
+ string head: string ref,
+ string body: string ref
+);
+
+includes(
+ unique int id: @ppd_include ref,
+ int included: @file ref
+);
+
+link_targets(
+ int id: @link_target,
+ int binary: @file ref
+);
+
+link_parent(
+ int element : @element ref,
+ int link_target : @link_target ref
+);
+
+/* XML Files */
+
+xmlEncoding(unique int id: @file ref, string encoding: string ref);
+
+xmlDTDs(
+ unique int id: @xmldtd,
+ string root: string ref,
+ string publicId: string ref,
+ string systemId: string ref,
+ int fileid: @file ref
+);
+
+xmlElements(
+ unique int id: @xmlelement,
+ string name: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlAttrs(
+ unique int id: @xmlattribute,
+ int elementid: @xmlelement ref,
+ string name: string ref,
+ string value: string ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlNs(
+ int id: @xmlnamespace,
+ string prefixName: string ref,
+ string URI: string ref,
+ int fileid: @file ref
+);
+
+xmlHasNs(
+ int elementId: @xmlnamespaceable ref,
+ int nsId: @xmlnamespace ref,
+ int fileid: @file ref
+);
+
+xmlComments(
+ unique int id: @xmlcomment,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int fileid: @file ref
+);
+
+xmlChars(
+ unique int id: @xmlcharacters,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int isCDATA: int ref,
+ int fileid: @file ref
+);
+
+@xmlparent = @file | @xmlelement;
+@xmlnamespaceable = @xmlelement | @xmlattribute;
+
+xmllocations(
+ int xmlElement: @xmllocatable ref,
+ int location: @location_default ref
+);
+
+@xmllocatable = @xmlcharacters
+ | @xmlelement
+ | @xmlcomment
+ | @xmlattribute
+ | @xmldtd
+ | @file
+ | @xmlnamespace;
diff --git a/cpp/ql/lib/upgrades/25e365d1e8147df0f759b604f96eb4bffea48271/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/25e365d1e8147df0f759b604f96eb4bffea48271/semmlecode.cpp.dbscheme
new file mode 100644
index 0000000000000..9629fc87dab7d
--- /dev/null
+++ b/cpp/ql/lib/upgrades/25e365d1e8147df0f759b604f96eb4bffea48271/semmlecode.cpp.dbscheme
@@ -0,0 +1,2300 @@
+
+/**
+ * An invocation of the compiler. Note that more than one file may be
+ * compiled per invocation. For example, this command compiles three
+ * source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * The `id` simply identifies the invocation, while `cwd` is the working
+ * directory from which the compiler was invoked.
+ */
+compilations(
+ /**
+ * An invocation of the compiler. Note that more than one file may
+ * be compiled per invocation. For example, this command compiles
+ * three source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ */
+ unique int id : @compilation,
+ string cwd : string ref
+);
+
+/**
+ * The arguments that were passed to the extractor for a compiler
+ * invocation. If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then typically there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | *path to extractor*
+ * 1 | `--mimic`
+ * 2 | `/usr/bin/gcc`
+ * 3 | `-c`
+ * 4 | f1.c
+ * 5 | f2.c
+ * 6 | f3.c
+ */
+#keyset[id, num]
+compilation_args(
+ int id : @compilation ref,
+ int num : int ref,
+ string arg : string ref
+);
+
+/**
+ * The source files that are compiled by a compiler invocation.
+ * If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | f1.c
+ * 1 | f2.c
+ * 2 | f3.c
+ *
+ * Note that even if those files `#include` headers, those headers
+ * do not appear as rows.
+ */
+#keyset[id, num]
+compilation_compiling_files(
+ int id : @compilation ref,
+ int num : int ref,
+ int file : @file ref
+);
+
+/**
+ * The time taken by the extractor for a compiler invocation.
+ *
+ * For each file `num`, there will be rows for
+ *
+ * kind | seconds
+ * ---- | ---
+ * 1 | CPU seconds used by the extractor frontend
+ * 2 | Elapsed seconds during the extractor frontend
+ * 3 | CPU seconds used by the extractor backend
+ * 4 | Elapsed seconds during the extractor backend
+ */
+#keyset[id, num, kind]
+compilation_time(
+ int id : @compilation ref,
+ int num : int ref,
+ /* kind:
+ 1 = frontend_cpu_seconds
+ 2 = frontend_elapsed_seconds
+ 3 = extractor_cpu_seconds
+ 4 = extractor_elapsed_seconds
+ */
+ int kind : int ref,
+ float seconds : float ref
+);
+
+/**
+ * An error or warning generated by the extractor.
+ * The diagnostic message `diagnostic` was generated during compiler
+ * invocation `compilation`, and is the `file_number_diagnostic_number`th
+ * message generated while extracting the `file_number`th file of that
+ * invocation.
+ */
+#keyset[compilation, file_number, file_number_diagnostic_number]
+diagnostic_for(
+ int diagnostic : @diagnostic ref,
+ int compilation : @compilation ref,
+ int file_number : int ref,
+ int file_number_diagnostic_number : int ref
+);
+
+/**
+ * If extraction was successful, then `cpu_seconds` and
+ * `elapsed_seconds` are the CPU time and elapsed time (respectively)
+ * that extraction took for compiler invocation `id`.
+ */
+compilation_finished(
+ unique int id : @compilation ref,
+ float cpu_seconds : float ref,
+ float elapsed_seconds : float ref
+);
+
+
+/**
+ * External data, loaded from CSV files during snapshot creation. See
+ * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data)
+ * for more information.
+ */
+externalData(
+ int id : @externalDataElement,
+ string path : string ref,
+ int column: int ref,
+ string value : string ref
+);
+
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(string prefix : string ref);
+
+/**
+ * Information about packages that provide code used during compilation.
+ * The `id` is just a unique identifier.
+ * The `namespace` is typically the name of the package manager that
+ * provided the package (e.g. "dpkg" or "yum").
+ * The `package_name` is the name of the package, and `version` is its
+ * version (as a string).
+ */
+external_packages(
+ unique int id: @external_package,
+ string namespace : string ref,
+ string package_name : string ref,
+ string version : string ref
+);
+
+/**
+ * Holds if File `fileid` was provided by package `package`.
+ */
+header_to_external_package(
+ int fileid : @file ref,
+ int package : @external_package ref
+);
+
+/*
+ * Version history
+ */
+
+svnentries(
+ unique int id : @svnentry,
+ string revision : string ref,
+ string author : string ref,
+ date revisionDate : date ref,
+ int changeSize : int ref
+)
+
+svnaffectedfiles(
+ int id : @svnentry ref,
+ int file : @file ref,
+ string action : string ref
+)
+
+svnentrymsg(
+ unique int id : @svnentry ref,
+ string message : string ref
+)
+
+svnchurn(
+ int commit : @svnentry ref,
+ int file : @file ref,
+ int addedLines : int ref,
+ int deletedLines : int ref
+)
+
+/*
+ * C++ dbscheme
+ */
+
+extractor_version(
+ string codeql_version: string ref,
+ string frontend_version: string ref
+)
+
+@location = @location_stmt | @location_expr | @location_default ;
+
+/**
+ * The location of an element that is not an expression or a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_default(
+ /** The location of an element that is not an expression or a statement. */
+ unique int id: @location_default,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_stmt(
+ /** The location of a statement. */
+ unique int id: @location_stmt,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of an expression.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_expr(
+ /** The location of an expression. */
+ unique int id: @location_expr,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/** An element for which line-count information is available. */
+@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable;
+
+numlines(
+ int element_id: @sourceline ref,
+ int num_lines: int ref,
+ int num_code: int ref,
+ int num_comment: int ref
+);
+
+diagnostics(
+ unique int id: @diagnostic,
+ int severity: int ref,
+ string error_tag: string ref,
+ string error_message: string ref,
+ string full_error_message: string ref,
+ int location: @location_default ref
+);
+
+files(
+ unique int id: @file,
+ string name: string ref
+);
+
+folders(
+ unique int id: @folder,
+ string name: string ref
+);
+
+@container = @folder | @file
+
+containerparent(
+ int parent: @container ref,
+ unique int child: @container ref
+);
+
+fileannotations(
+ int id: @file ref,
+ int kind: int ref,
+ string name: string ref,
+ string value: string ref
+);
+
+inmacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+affectedbymacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+case @macroinvocation.kind of
+ 1 = @macro_expansion
+| 2 = @other_macro_reference
+;
+
+macroinvocations(
+ unique int id: @macroinvocation,
+ int macro_id: @ppd_define ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+macroparent(
+ unique int id: @macroinvocation ref,
+ int parent_id: @macroinvocation ref
+);
+
+// a macroinvocation may be part of another location
+// the way to find a constant expression that uses a macro
+// is thus to find a constant expression that has a location
+// to which a macro invocation is bound
+macrolocationbind(
+ int id: @macroinvocation ref,
+ int location: @location ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_unexpanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_expanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+/*
+case @function.kind of
+ 1 = @normal_function
+| 2 = @constructor
+| 3 = @destructor
+| 4 = @conversion_function
+| 5 = @operator
+| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk
+| 7 = @user_defined_literal
+| 8 = @deduction_guide
+;
+*/
+
+functions(
+ unique int id: @function,
+ string name: string ref,
+ int kind: int ref
+);
+
+function_entry_point(
+ int id: @function ref,
+ unique int entry_point: @stmt ref
+);
+
+function_return_type(
+ int id: @function ref,
+ int return_type: @type ref
+);
+
+/**
+ * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits`
+ * instance associated with it, and the variables representing the `handle` and `promise`
+ * for it.
+ */
+coroutine(
+ unique int function: @function ref,
+ int traits: @type ref,
+ int handle: @variable ref,
+ int promise: @variable ref
+);
+
+/** The `new` function used for allocating the coroutine state, if any. */
+coroutine_new(
+ unique int function: @function ref,
+ int new: @function ref
+);
+
+/** The `delete` function used for deallocating the coroutine state, if any. */
+coroutine_delete(
+ unique int function: @function ref,
+ int delete: @function ref
+);
+
+purefunctions(unique int id: @function ref);
+
+function_deleted(unique int id: @function ref);
+
+function_defaulted(unique int id: @function ref);
+
+function_prototyped(unique int id: @function ref)
+
+member_function_this_type(
+ unique int id: @function ref,
+ int this_type: @type ref
+);
+
+#keyset[id, type_id]
+fun_decls(
+ int id: @fun_decl,
+ int function: @function ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+fun_def(unique int id: @fun_decl ref);
+fun_specialized(unique int id: @fun_decl ref);
+fun_implicit(unique int id: @fun_decl ref);
+fun_decl_specifiers(
+ int id: @fun_decl ref,
+ string name: string ref
+)
+#keyset[fun_decl, index]
+fun_decl_throws(
+ int fun_decl: @fun_decl ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+/* an empty throw specification is different from none */
+fun_decl_empty_throws(unique int fun_decl: @fun_decl ref);
+fun_decl_noexcept(
+ int fun_decl: @fun_decl ref,
+ int constant: @expr ref
+);
+fun_decl_empty_noexcept(int fun_decl: @fun_decl ref);
+fun_decl_typedef_type(
+ unique int fun_decl: @fun_decl ref,
+ int typedeftype_id: @usertype ref
+);
+
+param_decl_bind(
+ unique int id: @var_decl ref,
+ int index: int ref,
+ int fun_decl: @fun_decl ref
+);
+
+#keyset[id, type_id]
+var_decls(
+ int id: @var_decl,
+ int variable: @variable ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+var_def(unique int id: @var_decl ref);
+var_decl_specifiers(
+ int id: @var_decl ref,
+ string name: string ref
+)
+is_structured_binding(unique int id: @variable ref);
+
+type_decls(
+ unique int id: @type_decl,
+ int type_id: @type ref,
+ int location: @location_default ref
+);
+type_def(unique int id: @type_decl ref);
+type_decl_top(
+ unique int type_decl: @type_decl ref
+);
+
+namespace_decls(
+ unique int id: @namespace_decl,
+ int namespace_id: @namespace ref,
+ int location: @location_default ref,
+ int bodylocation: @location_default ref
+);
+
+case @using.kind of
+ 1 = @using_declaration
+| 2 = @using_directive
+| 3 = @using_enum_declaration
+;
+
+usings(
+ unique int id: @using,
+ int element_id: @element ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+/** The element which contains the `using` declaration. */
+using_container(
+ int parent: @element ref,
+ int child: @using ref
+);
+
+static_asserts(
+ unique int id: @static_assert,
+ int condition : @expr ref,
+ string message : string ref,
+ int location: @location_default ref,
+ int enclosing : @element ref
+);
+
+// each function has an ordered list of parameters
+#keyset[id, type_id]
+#keyset[function, index, type_id]
+params(
+ int id: @parameter,
+ int function: @functionorblock ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+overrides(
+ int new: @function ref,
+ int old: @function ref
+);
+
+#keyset[id, type_id]
+membervariables(
+ int id: @membervariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+globalvariables(
+ int id: @globalvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+localvariables(
+ int id: @localvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+autoderivation(
+ unique int var: @variable ref,
+ int derivation_type: @type ref
+);
+
+orphaned_variables(
+ int var: @localvariable ref,
+ int function: @function ref
+)
+
+enumconstants(
+ unique int id: @enumconstant,
+ int parent: @usertype ref,
+ int index: int ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+
+@variable = @localscopevariable | @globalvariable | @membervariable;
+
+@localscopevariable = @localvariable | @parameter;
+
+/**
+ * Built-in types are the fundamental types, e.g., integral, floating, and void.
+ */
+case @builtintype.kind of
+ 1 = @errortype
+| 2 = @unknowntype
+| 3 = @void
+| 4 = @boolean
+| 5 = @char
+| 6 = @unsigned_char
+| 7 = @signed_char
+| 8 = @short
+| 9 = @unsigned_short
+| 10 = @signed_short
+| 11 = @int
+| 12 = @unsigned_int
+| 13 = @signed_int
+| 14 = @long
+| 15 = @unsigned_long
+| 16 = @signed_long
+| 17 = @long_long
+| 18 = @unsigned_long_long
+| 19 = @signed_long_long
+// ... 20 Microsoft-specific __int8
+// ... 21 Microsoft-specific __int16
+// ... 22 Microsoft-specific __int32
+// ... 23 Microsoft-specific __int64
+| 24 = @float
+| 25 = @double
+| 26 = @long_double
+| 27 = @complex_float // C99-specific _Complex float
+| 28 = @complex_double // C99-specific _Complex double
+| 29 = @complex_long_double // C99-specific _Complex long double
+| 30 = @imaginary_float // C99-specific _Imaginary float
+| 31 = @imaginary_double // C99-specific _Imaginary double
+| 32 = @imaginary_long_double // C99-specific _Imaginary long double
+| 33 = @wchar_t // Microsoft-specific
+| 34 = @decltype_nullptr // C++11
+| 35 = @int128 // __int128
+| 36 = @unsigned_int128 // unsigned __int128
+| 37 = @signed_int128 // signed __int128
+| 38 = @float128 // __float128
+| 39 = @complex_float128 // _Complex __float128
+| 40 = @decimal32 // _Decimal32
+| 41 = @decimal64 // _Decimal64
+| 42 = @decimal128 // _Decimal128
+| 43 = @char16_t
+| 44 = @char32_t
+| 45 = @std_float32 // _Float32
+| 46 = @float32x // _Float32x
+| 47 = @std_float64 // _Float64
+| 48 = @float64x // _Float64x
+| 49 = @std_float128 // _Float128
+// ... 50 _Float128x
+| 51 = @char8_t
+| 52 = @float16 // _Float16
+| 53 = @complex_float16 // _Complex _Float16
+| 54 = @fp16 // __fp16
+| 55 = @std_bfloat16 // __bf16
+| 56 = @std_float16 // std::float16_t
+| 57 = @complex_std_float32 // _Complex _Float32
+| 58 = @complex_float32x // _Complex _Float32x
+| 59 = @complex_std_float64 // _Complex _Float64
+| 60 = @complex_float64x // _Complex _Float64x
+| 61 = @complex_std_float128 // _Complex _Float128
+;
+
+builtintypes(
+ unique int id: @builtintype,
+ string name: string ref,
+ int kind: int ref,
+ int size: int ref,
+ int sign: int ref,
+ int alignment: int ref
+);
+
+/**
+ * Derived types are types that are directly derived from existing types and
+ * point to, refer to, transform type data to return a new type.
+ */
+case @derivedtype.kind of
+ 1 = @pointer
+| 2 = @reference
+| 3 = @type_with_specifiers
+| 4 = @array
+| 5 = @gnu_vector
+| 6 = @routineptr
+| 7 = @routinereference
+| 8 = @rvalue_reference // C++11
+// ... 9 type_conforming_to_protocols deprecated
+| 10 = @block
+;
+
+derivedtypes(
+ unique int id: @derivedtype,
+ string name: string ref,
+ int kind: int ref,
+ int type_id: @type ref
+);
+
+pointerishsize(unique int id: @derivedtype ref,
+ int size: int ref,
+ int alignment: int ref);
+
+arraysizes(
+ unique int id: @derivedtype ref,
+ int num_elements: int ref,
+ int bytesize: int ref,
+ int alignment: int ref
+);
+
+typedefbase(
+ unique int id: @usertype ref,
+ int type_id: @type ref
+);
+
+/**
+ * An instance of the C++11 `decltype` operator. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * would change the semantics of this decltype, e.g.
+ * ```
+ * struct A { double x; };
+ * const A* a = new A();
+ * decltype( a->x ); // type is double
+ * decltype((a->x)); // type is const double&
+ * ```
+ * (Please consult the C++11 standard for more details).
+ * `parentheses_would_change_meaning` is `true` iff that is the case.
+ */
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @usertype.kind of
+ 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+| 5 = @typedef // classic C: typedef typedef type name
+| 6 = @template
+| 7 = @template_parameter
+| 8 = @template_template_parameter
+| 9 = @proxy_class // a proxy class associated with a template parameter
+// ... 10 objc_class deprecated
+// ... 11 objc_protocol deprecated
+// ... 12 objc_category deprecated
+| 13 = @scoped_enum
+| 14 = @using_alias // a using name = type style typedef
+;
+*/
+
+usertypes(
+ unique int id: @usertype,
+ string name: string ref,
+ int kind: int ref
+);
+
+usertypesize(
+ unique int id: @usertype ref,
+ int size: int ref,
+ int alignment: int ref
+);
+
+usertype_final(unique int id: @usertype ref);
+
+usertype_uuid(
+ unique int id: @usertype ref,
+ string uuid: string ref
+);
+
+mangled_name(
+ unique int id: @declaration ref,
+ int mangled_name : @mangledname,
+ boolean is_complete: boolean ref
+);
+
+is_pod_class(unique int id: @usertype ref);
+is_standard_layout_class(unique int id: @usertype ref);
+
+is_complete(unique int id: @usertype ref);
+
+is_class_template(unique int id: @usertype ref);
+class_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+class_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+class_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ unique int templ_param_id: @usertype ref
+);
+
+type_mentions(
+ unique int id: @type_mention,
+ int type_id: @type ref,
+ int location: @location ref,
+ // a_symbol_reference_kind from the frontend.
+ int kind: int ref
+);
+
+is_function_template(unique int id: @function ref);
+function_instantiation(
+ unique int to: @function ref,
+ int from: @function ref
+);
+function_template_argument(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+function_template_argument_value(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_variable_template(unique int id: @variable ref);
+variable_instantiation(
+ unique int to: @variable ref,
+ int from: @variable ref
+);
+variable_template_argument(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+variable_template_argument_value(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+/*
+ Fixed point types
+ precision(1) = short, precision(2) = default, precision(3) = long
+ is_unsigned(1) = unsigned is_unsigned(2) = signed
+ is_fract_type(1) = declared with _Fract
+ saturating(1) = declared with _Sat
+*/
+/* TODO
+fixedpointtypes(
+ unique int id: @fixedpointtype,
+ int precision: int ref,
+ int is_unsigned: int ref,
+ int is_fract_type: int ref,
+ int saturating: int ref);
+*/
+
+routinetypes(
+ unique int id: @routinetype,
+ int return_type: @type ref
+);
+
+routinetypeargs(
+ int routine: @routinetype ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+ptrtomembers(
+ unique int id: @ptrtomember,
+ int type_id: @type ref,
+ int class_id: @type ref
+);
+
+/*
+ specifiers for types, functions, and variables
+
+ "public",
+ "protected",
+ "private",
+
+ "const",
+ "volatile",
+ "static",
+
+ "pure",
+ "virtual",
+ "sealed", // Microsoft
+ "__interface", // Microsoft
+ "inline",
+ "explicit",
+
+ "near", // near far extension
+ "far", // near far extension
+ "__ptr32", // Microsoft
+ "__ptr64", // Microsoft
+ "__sptr", // Microsoft
+ "__uptr", // Microsoft
+ "dllimport", // Microsoft
+ "dllexport", // Microsoft
+ "thread", // Microsoft
+ "naked", // Microsoft
+ "microsoft_inline", // Microsoft
+ "forceinline", // Microsoft
+ "selectany", // Microsoft
+ "nothrow", // Microsoft
+ "novtable", // Microsoft
+ "noreturn", // Microsoft
+ "noinline", // Microsoft
+ "noalias", // Microsoft
+ "restrict", // Microsoft
+*/
+
+specifiers(
+ unique int id: @specifier,
+ unique string str: string ref
+);
+
+typespecifiers(
+ int type_id: @type ref,
+ int spec_id: @specifier ref
+);
+
+funspecifiers(
+ int func_id: @function ref,
+ int spec_id: @specifier ref
+);
+
+varspecifiers(
+ int var_id: @accessible ref,
+ int spec_id: @specifier ref
+);
+
+attributes(
+ unique int id: @attribute,
+ int kind: int ref,
+ string name: string ref,
+ string name_space: string ref,
+ int location: @location_default ref
+);
+
+case @attribute.kind of
+ 0 = @gnuattribute
+| 1 = @stdattribute
+| 2 = @declspec
+| 3 = @msattribute
+| 4 = @alignas
+// ... 5 @objc_propertyattribute deprecated
+;
+
+attribute_args(
+ unique int id: @attribute_arg,
+ int kind: int ref,
+ int attribute: @attribute ref,
+ int index: int ref,
+ int location: @location_default ref
+);
+
+case @attribute_arg.kind of
+ 0 = @attribute_arg_empty
+| 1 = @attribute_arg_token
+| 2 = @attribute_arg_constant
+| 3 = @attribute_arg_type
+| 4 = @attribute_arg_constant_expr
+| 5 = @attribute_arg_expr
+;
+
+attribute_arg_value(
+ unique int arg: @attribute_arg ref,
+ string value: string ref
+);
+attribute_arg_type(
+ unique int arg: @attribute_arg ref,
+ int type_id: @type ref
+);
+attribute_arg_constant(
+ unique int arg: @attribute_arg ref,
+ int constant: @expr ref
+)
+attribute_arg_expr(
+ unique int arg: @attribute_arg ref,
+ int expr: @expr ref
+)
+attribute_arg_name(
+ unique int arg: @attribute_arg ref,
+ string name: string ref
+);
+
+typeattributes(
+ int type_id: @type ref,
+ int spec_id: @attribute ref
+);
+
+funcattributes(
+ int func_id: @function ref,
+ int spec_id: @attribute ref
+);
+
+varattributes(
+ int var_id: @accessible ref,
+ int spec_id: @attribute ref
+);
+
+stmtattributes(
+ int stmt_id: @stmt ref,
+ int spec_id: @attribute ref
+);
+
+@type = @builtintype
+ | @derivedtype
+ | @usertype
+ /* TODO | @fixedpointtype */
+ | @routinetype
+ | @ptrtomember
+ | @decltype;
+
+unspecifiedtype(
+ unique int type_id: @type ref,
+ int unspecified_type_id: @type ref
+);
+
+member(
+ int parent: @type ref,
+ int index: int ref,
+ int child: @member ref
+);
+
+@enclosingfunction_child = @usertype | @variable | @namespace
+
+enclosingfunction(
+ unique int child: @enclosingfunction_child ref,
+ int parent: @function ref
+);
+
+derivations(
+ unique int derivation: @derivation,
+ int sub: @type ref,
+ int index: int ref,
+ int super: @type ref,
+ int location: @location_default ref
+);
+
+derspecifiers(
+ int der_id: @derivation ref,
+ int spec_id: @specifier ref
+);
+
+/**
+ * Contains the byte offset of the base class subobject within the derived
+ * class. Only holds for non-virtual base classes, but see table
+ * `virtual_base_offsets` for offsets of virtual base class subobjects.
+ */
+direct_base_offsets(
+ unique int der_id: @derivation ref,
+ int offset: int ref
+);
+
+/**
+ * Contains the byte offset of the virtual base class subobject for class
+ * `super` within a most-derived object of class `sub`. `super` can be either a
+ * direct or indirect base class.
+ */
+#keyset[sub, super]
+virtual_base_offsets(
+ int sub: @usertype ref,
+ int super: @usertype ref,
+ int offset: int ref
+);
+
+frienddecls(
+ unique int id: @frienddecl,
+ int type_id: @type ref,
+ int decl_id: @declaration ref,
+ int location: @location_default ref
+);
+
+@declaredtype = @usertype ;
+
+@declaration = @function
+ | @declaredtype
+ | @variable
+ | @enumconstant
+ | @frienddecl;
+
+@member = @membervariable
+ | @function
+ | @declaredtype
+ | @enumconstant;
+
+@locatable = @diagnostic
+ | @declaration
+ | @ppd_include
+ | @ppd_define
+ | @macroinvocation
+ /*| @funcall*/
+ | @xmllocatable
+ | @attribute
+ | @attribute_arg;
+
+@namedscope = @namespace | @usertype;
+
+@element = @locatable
+ | @file
+ | @folder
+ | @specifier
+ | @type
+ | @expr
+ | @namespace
+ | @initialiser
+ | @stmt
+ | @derivation
+ | @comment
+ | @preprocdirect
+ | @fun_decl
+ | @var_decl
+ | @type_decl
+ | @namespace_decl
+ | @using
+ | @namequalifier
+ | @specialnamequalifyingelement
+ | @static_assert
+ | @type_mention
+ | @lambdacapture;
+
+@exprparent = @element;
+
+comments(
+ unique int id: @comment,
+ string contents: string ref,
+ int location: @location_default ref
+);
+
+commentbinding(
+ int id: @comment ref,
+ int element: @element ref
+);
+
+exprconv(
+ int converted: @expr ref,
+ unique int conversion: @expr ref
+);
+
+compgenerated(unique int id: @element ref);
+
+/**
+ * `destructor_call` destructs the `i`'th entity that should be
+ * destructed following `element`. Note that entities should be
+ * destructed in reverse construction order, so for a given `element`
+ * these should be called from highest to lowest `i`.
+ */
+#keyset[element, destructor_call]
+#keyset[element, i]
+synthetic_destructor_call(
+ int element: @element ref,
+ int i: int ref,
+ int destructor_call: @routineexpr ref
+);
+
+namespaces(
+ unique int id: @namespace,
+ string name: string ref
+);
+
+namespace_inline(
+ unique int id: @namespace ref
+);
+
+namespacembrs(
+ int parentid: @namespace ref,
+ unique int memberid: @namespacembr ref
+);
+
+@namespacembr = @declaration | @namespace;
+
+exprparents(
+ int expr_id: @expr ref,
+ int child_index: int ref,
+ int parent_id: @exprparent ref
+);
+
+expr_isload(unique int expr_id: @expr ref);
+
+@cast = @c_style_cast
+ | @const_cast
+ | @dynamic_cast
+ | @reinterpret_cast
+ | @static_cast
+ ;
+
+/*
+case @conversion.kind of
+ 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast
+| 1 = @bool_conversion // conversion to 'bool'
+| 2 = @base_class_conversion // a derived-to-base conversion
+| 3 = @derived_class_conversion // a base-to-derived conversion
+| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member
+| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member
+| 6 = @glvalue_adjust // an adjustment of the type of a glvalue
+| 7 = @prvalue_adjust // an adjustment of the type of a prvalue
+;
+*/
+/**
+ * Describes the semantics represented by a cast expression. This is largely
+ * independent of the source syntax of the cast, so it is separate from the
+ * regular expression kind.
+ */
+conversionkinds(
+ unique int expr_id: @cast ref,
+ int kind: int ref
+);
+
+@conversion = @cast
+ | @array_to_pointer
+ | @parexpr
+ | @reference_to
+ | @ref_indirect
+ | @temp_init
+ ;
+
+/*
+case @funbindexpr.kind of
+ 0 = @normal_call // a normal call
+| 1 = @virtual_call // a virtual call
+| 2 = @adl_call // a call whose target is only found by ADL
+;
+*/
+iscall(
+ unique int caller: @funbindexpr ref,
+ int kind: int ref
+);
+
+numtemplatearguments(
+ unique int expr_id: @expr ref,
+ int num: int ref
+);
+
+specialnamequalifyingelements(
+ unique int id: @specialnamequalifyingelement,
+ unique string name: string ref
+);
+
+@namequalifiableelement = @expr | @namequalifier;
+@namequalifyingelement = @namespace
+ | @specialnamequalifyingelement
+ | @usertype;
+
+namequalifiers(
+ unique int id: @namequalifier,
+ unique int qualifiableelement: @namequalifiableelement ref,
+ int qualifyingelement: @namequalifyingelement ref,
+ int location: @location_default ref
+);
+
+varbind(
+ int expr: @varbindexpr ref,
+ int var: @accessible ref
+);
+
+funbind(
+ int expr: @funbindexpr ref,
+ int fun: @function ref
+);
+
+@any_new_expr = @new_expr
+ | @new_array_expr;
+
+@new_or_delete_expr = @any_new_expr
+ | @delete_expr
+ | @delete_array_expr;
+
+@prefix_crement_expr = @preincrexpr | @predecrexpr;
+
+@postfix_crement_expr = @postincrexpr | @postdecrexpr;
+
+@increment_expr = @preincrexpr | @postincrexpr;
+
+@decrement_expr = @predecrexpr | @postdecrexpr;
+
+@crement_expr = @increment_expr | @decrement_expr;
+
+@un_arith_op_expr = @arithnegexpr
+ | @unaryplusexpr
+ | @conjugation
+ | @realpartexpr
+ | @imagpartexpr
+ | @crement_expr
+ ;
+
+@un_bitwise_op_expr = @complementexpr;
+
+@un_log_op_expr = @notexpr;
+
+@un_op_expr = @address_of
+ | @indirect
+ | @un_arith_op_expr
+ | @un_bitwise_op_expr
+ | @builtinaddressof
+ | @vec_fill
+ | @un_log_op_expr
+ | @co_await
+ | @co_yield
+ ;
+
+@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr;
+
+@cmp_op_expr = @eq_op_expr | @rel_op_expr;
+
+@eq_op_expr = @eqexpr | @neexpr;
+
+@rel_op_expr = @gtexpr
+ | @ltexpr
+ | @geexpr
+ | @leexpr
+ | @spaceshipexpr
+ ;
+
+@bin_bitwise_op_expr = @lshiftexpr
+ | @rshiftexpr
+ | @andexpr
+ | @orexpr
+ | @xorexpr
+ ;
+
+@p_arith_op_expr = @paddexpr
+ | @psubexpr
+ | @pdiffexpr
+ ;
+
+@bin_arith_op_expr = @addexpr
+ | @subexpr
+ | @mulexpr
+ | @divexpr
+ | @remexpr
+ | @jmulexpr
+ | @jdivexpr
+ | @fjaddexpr
+ | @jfaddexpr
+ | @fjsubexpr
+ | @jfsubexpr
+ | @minexpr
+ | @maxexpr
+ | @p_arith_op_expr
+ ;
+
+@bin_op_expr = @bin_arith_op_expr
+ | @bin_bitwise_op_expr
+ | @cmp_op_expr
+ | @bin_log_op_expr
+ ;
+
+@op_expr = @un_op_expr
+ | @bin_op_expr
+ | @assign_expr
+ | @conditionalexpr
+ ;
+
+@assign_arith_expr = @assignaddexpr
+ | @assignsubexpr
+ | @assignmulexpr
+ | @assigndivexpr
+ | @assignremexpr
+ ;
+
+@assign_bitwise_expr = @assignandexpr
+ | @assignorexpr
+ | @assignxorexpr
+ | @assignlshiftexpr
+ | @assignrshiftexpr
+ ;
+
+@assign_pointer_expr = @assignpaddexpr
+ | @assignpsubexpr
+ ;
+
+@assign_op_expr = @assign_arith_expr
+ | @assign_bitwise_expr
+ | @assign_pointer_expr
+ ;
+
+@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr
+
+/*
+ Binary encoding of the allocator form.
+
+ case @allocator.form of
+ 0 = plain
+ | 1 = alignment
+ ;
+*/
+
+/**
+ * The allocator function associated with a `new` or `new[]` expression.
+ * The `form` column specified whether the allocation call contains an alignment
+ * argument.
+ */
+expr_allocator(
+ unique int expr: @any_new_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/*
+ Binary encoding of the deallocator form.
+
+ case @deallocator.form of
+ 0 = plain
+ | 1 = size
+ | 2 = alignment
+ | 4 = destroying_delete
+ ;
+*/
+
+/**
+ * The deallocator function associated with a `delete`, `delete[]`, `new`, or
+ * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the
+ * one used to free memory if the initialization throws an exception.
+ * The `form` column specifies whether the deallocation call contains a size
+ * argument, and alignment argument, or both.
+ */
+expr_deallocator(
+ unique int expr: @new_or_delete_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/**
+ * Holds if the `@conditionalexpr` is of the two operand form
+ * `guard ? : false`.
+ */
+expr_cond_two_operand(
+ unique int cond: @conditionalexpr ref
+);
+
+/**
+ * The guard of `@conditionalexpr` `guard ? true : false`
+ */
+expr_cond_guard(
+ unique int cond: @conditionalexpr ref,
+ int guard: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` holds. For the two operand form
+ * `guard ?: false` consider using `expr_cond_guard` instead.
+ */
+expr_cond_true(
+ unique int cond: @conditionalexpr ref,
+ int true: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` does not hold.
+ */
+expr_cond_false(
+ unique int cond: @conditionalexpr ref,
+ int false: @expr ref
+);
+
+/** A string representation of the value. */
+values(
+ unique int id: @value,
+ string str: string ref
+);
+
+/** The actual text in the source code for the value, if any. */
+valuetext(
+ unique int id: @value ref,
+ string text: string ref
+);
+
+valuebind(
+ int val: @value ref,
+ unique int expr: @expr ref
+);
+
+fieldoffsets(
+ unique int id: @variable ref,
+ int byteoffset: int ref,
+ int bitoffset: int ref
+);
+
+bitfield(
+ unique int id: @variable ref,
+ int bits: int ref,
+ int declared_bits: int ref
+);
+
+/* TODO
+memberprefix(
+ int member: @expr ref,
+ int prefix: @expr ref
+);
+*/
+
+/*
+ kind(1) = mbrcallexpr
+ kind(2) = mbrptrcallexpr
+ kind(3) = mbrptrmbrcallexpr
+ kind(4) = ptrmbrptrmbrcallexpr
+ kind(5) = mbrreadexpr // x.y
+ kind(6) = mbrptrreadexpr // p->y
+ kind(7) = mbrptrmbrreadexpr // x.*pm
+ kind(8) = mbrptrmbrptrreadexpr // x->*pm
+ kind(9) = staticmbrreadexpr // static x.y
+ kind(10) = staticmbrptrreadexpr // static p->y
+*/
+/* TODO
+memberaccess(
+ int member: @expr ref,
+ int kind: int ref
+);
+*/
+
+initialisers(
+ unique int init: @initialiser,
+ int var: @accessible ref,
+ unique int expr: @expr ref,
+ int location: @location_expr ref
+);
+
+braced_initialisers(
+ int init: @initialiser ref
+);
+
+/**
+ * An ancestor for the expression, for cases in which we cannot
+ * otherwise find the expression's parent.
+ */
+expr_ancestor(
+ int exp: @expr ref,
+ int ancestor: @element ref
+);
+
+exprs(
+ unique int id: @expr,
+ int kind: int ref,
+ int location: @location_expr ref
+);
+
+expr_reuse(
+ int reuse: @expr ref,
+ int original: @expr ref,
+ int value_category: int ref
+)
+
+/*
+ case @value.category of
+ 1 = prval
+ | 2 = xval
+ | 3 = lval
+ ;
+*/
+expr_types(
+ int id: @expr ref,
+ int typeid: @type ref,
+ int value_category: int ref
+);
+
+case @expr.kind of
+ 1 = @errorexpr
+| 2 = @address_of // & AddressOfExpr
+| 3 = @reference_to // ReferenceToExpr (implicit?)
+| 4 = @indirect // * PointerDereferenceExpr
+| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?)
+// ...
+| 8 = @array_to_pointer // (???)
+| 9 = @vacuous_destructor_call // VacuousDestructorCall
+// ...
+| 11 = @assume // Microsoft
+| 12 = @parexpr
+| 13 = @arithnegexpr
+| 14 = @unaryplusexpr
+| 15 = @complementexpr
+| 16 = @notexpr
+| 17 = @conjugation // GNU ~ operator
+| 18 = @realpartexpr // GNU __real
+| 19 = @imagpartexpr // GNU __imag
+| 20 = @postincrexpr
+| 21 = @postdecrexpr
+| 22 = @preincrexpr
+| 23 = @predecrexpr
+| 24 = @conditionalexpr
+| 25 = @addexpr
+| 26 = @subexpr
+| 27 = @mulexpr
+| 28 = @divexpr
+| 29 = @remexpr
+| 30 = @jmulexpr // C99 mul imaginary
+| 31 = @jdivexpr // C99 div imaginary
+| 32 = @fjaddexpr // C99 add real + imaginary
+| 33 = @jfaddexpr // C99 add imaginary + real
+| 34 = @fjsubexpr // C99 sub real - imaginary
+| 35 = @jfsubexpr // C99 sub imaginary - real
+| 36 = @paddexpr // pointer add (pointer + int or int + pointer)
+| 37 = @psubexpr // pointer sub (pointer - integer)
+| 38 = @pdiffexpr // difference between two pointers
+| 39 = @lshiftexpr
+| 40 = @rshiftexpr
+| 41 = @andexpr
+| 42 = @orexpr
+| 43 = @xorexpr
+| 44 = @eqexpr
+| 45 = @neexpr
+| 46 = @gtexpr
+| 47 = @ltexpr
+| 48 = @geexpr
+| 49 = @leexpr
+| 50 = @minexpr // GNU minimum
+| 51 = @maxexpr // GNU maximum
+| 52 = @assignexpr
+| 53 = @assignaddexpr
+| 54 = @assignsubexpr
+| 55 = @assignmulexpr
+| 56 = @assigndivexpr
+| 57 = @assignremexpr
+| 58 = @assignlshiftexpr
+| 59 = @assignrshiftexpr
+| 60 = @assignandexpr
+| 61 = @assignorexpr
+| 62 = @assignxorexpr
+| 63 = @assignpaddexpr // assign pointer add
+| 64 = @assignpsubexpr // assign pointer sub
+| 65 = @andlogicalexpr
+| 66 = @orlogicalexpr
+| 67 = @commaexpr
+| 68 = @subscriptexpr // access to member of an array, e.g., a[5]
+// ... 69 @objc_subscriptexpr deprecated
+// ... 70 @cmdaccess deprecated
+// ...
+| 73 = @virtfunptrexpr
+| 74 = @callexpr
+// ... 75 @msgexpr_normal deprecated
+// ... 76 @msgexpr_super deprecated
+// ... 77 @atselectorexpr deprecated
+// ... 78 @atprotocolexpr deprecated
+| 79 = @vastartexpr
+| 80 = @vaargexpr
+| 81 = @vaendexpr
+| 82 = @vacopyexpr
+// ... 83 @atencodeexpr deprecated
+| 84 = @varaccess
+| 85 = @thisaccess
+// ... 86 @objc_box_expr deprecated
+| 87 = @new_expr
+| 88 = @delete_expr
+| 89 = @throw_expr
+| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2)
+| 91 = @braced_init_list
+| 92 = @type_id
+| 93 = @runtime_sizeof
+| 94 = @runtime_alignof
+| 95 = @sizeof_pack
+| 96 = @expr_stmt // GNU extension
+| 97 = @routineexpr
+| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....)
+| 99 = @offsetofexpr // offsetof ::= type and field
+| 100 = @hasassignexpr // __has_assign ::= type
+| 101 = @hascopyexpr // __has_copy ::= type
+| 102 = @hasnothrowassign // __has_nothrow_assign ::= type
+| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type
+| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type
+| 105 = @hastrivialassign // __has_trivial_assign ::= type
+| 106 = @hastrivialconstr // __has_trivial_constructor ::= type
+| 107 = @hastrivialcopy // __has_trivial_copy ::= type
+| 108 = @hasuserdestr // __has_user_destructor ::= type
+| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type
+| 110 = @isabstractexpr // __is_abstract ::= type
+| 111 = @isbaseofexpr // __is_base_of ::= type type
+| 112 = @isclassexpr // __is_class ::= type
+| 113 = @isconvtoexpr // __is_convertible_to ::= type type
+| 114 = @isemptyexpr // __is_empty ::= type
+| 115 = @isenumexpr // __is_enum ::= type
+| 116 = @ispodexpr // __is_pod ::= type
+| 117 = @ispolyexpr // __is_polymorphic ::= type
+| 118 = @isunionexpr // __is_union ::= type
+| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type
+| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof
+// ...
+| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type
+| 123 = @literal
+| 124 = @uuidof
+| 127 = @aggregateliteral
+| 128 = @delete_array_expr
+| 129 = @new_array_expr
+// ... 130 @objc_array_literal deprecated
+// ... 131 @objc_dictionary_literal deprecated
+| 132 = @foldexpr
+// ...
+| 200 = @ctordirectinit
+| 201 = @ctorvirtualinit
+| 202 = @ctorfieldinit
+| 203 = @ctordelegatinginit
+| 204 = @dtordirectdestruct
+| 205 = @dtorvirtualdestruct
+| 206 = @dtorfielddestruct
+// ...
+| 210 = @static_cast
+| 211 = @reinterpret_cast
+| 212 = @const_cast
+| 213 = @dynamic_cast
+| 214 = @c_style_cast
+| 215 = @lambdaexpr
+| 216 = @param_ref
+| 217 = @noopexpr
+// ...
+| 294 = @istriviallyconstructibleexpr
+| 295 = @isdestructibleexpr
+| 296 = @isnothrowdestructibleexpr
+| 297 = @istriviallydestructibleexpr
+| 298 = @istriviallyassignableexpr
+| 299 = @isnothrowassignableexpr
+| 300 = @istrivialexpr
+| 301 = @isstandardlayoutexpr
+| 302 = @istriviallycopyableexpr
+| 303 = @isliteraltypeexpr
+| 304 = @hastrivialmoveconstructorexpr
+| 305 = @hastrivialmoveassignexpr
+| 306 = @hasnothrowmoveassignexpr
+| 307 = @isconstructibleexpr
+| 308 = @isnothrowconstructibleexpr
+| 309 = @hasfinalizerexpr
+| 310 = @isdelegateexpr
+| 311 = @isinterfaceclassexpr
+| 312 = @isrefarrayexpr
+| 313 = @isrefclassexpr
+| 314 = @issealedexpr
+| 315 = @issimplevalueclassexpr
+| 316 = @isvalueclassexpr
+| 317 = @isfinalexpr
+| 319 = @noexceptexpr
+| 320 = @builtinshufflevector
+| 321 = @builtinchooseexpr
+| 322 = @builtinaddressof
+| 323 = @vec_fill
+| 324 = @builtinconvertvector
+| 325 = @builtincomplex
+| 326 = @spaceshipexpr
+| 327 = @co_await
+| 328 = @co_yield
+| 329 = @temp_init
+| 330 = @isassignable
+| 331 = @isaggregate
+| 332 = @hasuniqueobjectrepresentations
+| 333 = @builtinbitcast
+| 334 = @builtinshuffle
+| 335 = @blockassignexpr
+| 336 = @issame
+| 337 = @isfunction
+| 338 = @islayoutcompatible
+| 339 = @ispointerinterconvertiblebaseof
+| 340 = @isarray
+| 341 = @arrayrank
+| 342 = @arrayextent
+| 343 = @isarithmetic
+| 344 = @iscompletetype
+| 345 = @iscompound
+| 346 = @isconst
+| 347 = @isfloatingpoint
+| 348 = @isfundamental
+| 349 = @isintegral
+| 350 = @islvaluereference
+| 351 = @ismemberfunctionpointer
+| 352 = @ismemberobjectpointer
+| 353 = @ismemberpointer
+| 354 = @isobject
+| 355 = @ispointer
+| 356 = @isreference
+| 357 = @isrvaluereference
+| 358 = @isscalar
+| 359 = @issigned
+| 360 = @isunsigned
+| 361 = @isvoid
+| 362 = @isvolatile
+| 363 = @reuseexpr
+| 364 = @istriviallycopyassignable
+| 365 = @isassignablenopreconditioncheck
+| 366 = @referencebindstotemporary
+| 367 = @issameas
+| 368 = @builtinhasattribute
+| 369 = @ispointerinterconvertiblewithclass
+| 370 = @builtinispointerinterconvertiblewithclass
+| 371 = @iscorrespondingmember
+| 372 = @builtiniscorrespondingmember
+| 373 = @isboundedarray
+| 374 = @isunboundedarray
+| 375 = @isreferenceable
+| 378 = @isnothrowconvertible
+| 379 = @referenceconstructsfromtemporary
+| 380 = @referenceconvertsfromtemporary
+| 381 = @isconvertible
+| 382 = @isvalidwinrttype
+| 383 = @iswinclass
+| 384 = @iswininterface
+;
+
+@var_args_expr = @vastartexpr
+ | @vaendexpr
+ | @vaargexpr
+ | @vacopyexpr
+ ;
+
+@builtin_op = @var_args_expr
+ | @noopexpr
+ | @offsetofexpr
+ | @intaddrexpr
+ | @hasassignexpr
+ | @hascopyexpr
+ | @hasnothrowassign
+ | @hasnothrowconstr
+ | @hasnothrowcopy
+ | @hastrivialassign
+ | @hastrivialconstr
+ | @hastrivialcopy
+ | @hastrivialdestructor
+ | @hasuserdestr
+ | @hasvirtualdestr
+ | @isabstractexpr
+ | @isbaseofexpr
+ | @isclassexpr
+ | @isconvtoexpr
+ | @isemptyexpr
+ | @isenumexpr
+ | @ispodexpr
+ | @ispolyexpr
+ | @isunionexpr
+ | @typescompexpr
+ | @builtinshufflevector
+ | @builtinconvertvector
+ | @builtinaddressof
+ | @istriviallyconstructibleexpr
+ | @isdestructibleexpr
+ | @isnothrowdestructibleexpr
+ | @istriviallydestructibleexpr
+ | @istriviallyassignableexpr
+ | @isnothrowassignableexpr
+ | @istrivialexpr
+ | @isstandardlayoutexpr
+ | @istriviallycopyableexpr
+ | @isliteraltypeexpr
+ | @hastrivialmoveconstructorexpr
+ | @hastrivialmoveassignexpr
+ | @hasnothrowmoveassignexpr
+ | @isconstructibleexpr
+ | @isnothrowconstructibleexpr
+ | @hasfinalizerexpr
+ | @isdelegateexpr
+ | @isinterfaceclassexpr
+ | @isrefarrayexpr
+ | @isrefclassexpr
+ | @issealedexpr
+ | @issimplevalueclassexpr
+ | @isvalueclassexpr
+ | @isfinalexpr
+ | @builtinchooseexpr
+ | @builtincomplex
+ | @isassignable
+ | @isaggregate
+ | @hasuniqueobjectrepresentations
+ | @builtinbitcast
+ | @builtinshuffle
+ | @issame
+ | @isfunction
+ | @islayoutcompatible
+ | @ispointerinterconvertiblebaseof
+ | @isarray
+ | @arrayrank
+ | @arrayextent
+ | @isarithmetic
+ | @iscompletetype
+ | @iscompound
+ | @isconst
+ | @isfloatingpoint
+ | @isfundamental
+ | @isintegral
+ | @islvaluereference
+ | @ismemberfunctionpointer
+ | @ismemberobjectpointer
+ | @ismemberpointer
+ | @isobject
+ | @ispointer
+ | @isreference
+ | @isrvaluereference
+ | @isscalar
+ | @issigned
+ | @isunsigned
+ | @isvoid
+ | @isvolatile
+ | @istriviallycopyassignable
+ | @isassignablenopreconditioncheck
+ | @referencebindstotemporary
+ | @issameas
+ | @builtinhasattribute
+ | @ispointerinterconvertiblewithclass
+ | @builtinispointerinterconvertiblewithclass
+ | @iscorrespondingmember
+ | @builtiniscorrespondingmember
+ | @isboundedarray
+ | @isunboundedarray
+ | @isreferenceable
+ | @isnothrowconvertible
+ | @referenceconstructsfromtemporary
+ | @referenceconvertsfromtemporary
+ | @isconvertible
+ | @isvalidwinrttype
+ | @iswinclass
+ | @iswininterface
+ ;
+
+new_allocated_type(
+ unique int expr: @new_expr ref,
+ int type_id: @type ref
+);
+
+new_array_allocated_type(
+ unique int expr: @new_array_expr ref,
+ int type_id: @type ref
+);
+
+/**
+ * The field being initialized by an initializer expression within an aggregate
+ * initializer for a class/struct/union. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_field_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int field: @membervariable ref,
+ int position: int ref
+);
+
+/**
+ * The index of the element being initialized by an initializer expression
+ * within an aggregate initializer for an array. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_array_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int element_index: int ref,
+ int position: int ref
+);
+
+@ctorinit = @ctordirectinit
+ | @ctorvirtualinit
+ | @ctorfieldinit
+ | @ctordelegatinginit;
+@dtordestruct = @dtordirectdestruct
+ | @dtorvirtualdestruct
+ | @dtorfielddestruct;
+
+
+condition_decl_bind(
+ unique int expr: @condition_decl ref,
+ unique int decl: @declaration ref
+);
+
+typeid_bind(
+ unique int expr: @type_id ref,
+ int type_id: @type ref
+);
+
+uuidof_bind(
+ unique int expr: @uuidof ref,
+ int type_id: @type ref
+);
+
+@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof;
+
+sizeof_bind(
+ unique int expr: @runtime_sizeof_or_alignof ref,
+ int type_id: @type ref
+);
+
+code_block(
+ unique int block: @literal ref,
+ unique int routine: @function ref
+);
+
+lambdas(
+ unique int expr: @lambdaexpr ref,
+ string default_capture: string ref,
+ boolean has_explicit_return_type: boolean ref
+);
+
+lambda_capture(
+ unique int id: @lambdacapture,
+ int lambda: @lambdaexpr ref,
+ int index: int ref,
+ int field: @membervariable ref,
+ boolean captured_by_reference: boolean ref,
+ boolean is_implicit: boolean ref,
+ int location: @location_default ref
+);
+
+@funbindexpr = @routineexpr
+ | @new_expr
+ | @delete_expr
+ | @delete_array_expr
+ | @ctordirectinit
+ | @ctorvirtualinit
+ | @ctordelegatinginit
+ | @dtordirectdestruct
+ | @dtorvirtualdestruct;
+
+@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct;
+@addressable = @function | @variable ;
+@accessible = @addressable | @enumconstant ;
+
+@access = @varaccess | @routineexpr ;
+
+fold(
+ int expr: @foldexpr ref,
+ string operator: string ref,
+ boolean is_left_fold: boolean ref
+);
+
+stmts(
+ unique int id: @stmt,
+ int kind: int ref,
+ int location: @location_stmt ref
+);
+
+case @stmt.kind of
+ 1 = @stmt_expr
+| 2 = @stmt_if
+| 3 = @stmt_while
+| 4 = @stmt_goto
+| 5 = @stmt_label
+| 6 = @stmt_return
+| 7 = @stmt_block
+| 8 = @stmt_end_test_while // do { ... } while ( ... )
+| 9 = @stmt_for
+| 10 = @stmt_switch_case
+| 11 = @stmt_switch
+| 13 = @stmt_asm // "asm" statement or the body of an asm function
+| 15 = @stmt_try_block
+| 16 = @stmt_microsoft_try // Microsoft
+| 17 = @stmt_decl
+| 18 = @stmt_set_vla_size // C99
+| 19 = @stmt_vla_decl // C99
+| 25 = @stmt_assigned_goto // GNU
+| 26 = @stmt_empty
+| 27 = @stmt_continue
+| 28 = @stmt_break
+| 29 = @stmt_range_based_for // C++11
+// ... 30 @stmt_at_autoreleasepool_block deprecated
+// ... 31 @stmt_objc_for_in deprecated
+// ... 32 @stmt_at_synchronized deprecated
+| 33 = @stmt_handler
+// ... 34 @stmt_finally_end deprecated
+| 35 = @stmt_constexpr_if
+| 37 = @stmt_co_return
+;
+
+type_vla(
+ int type_id: @type ref,
+ int decl: @stmt_vla_decl ref
+);
+
+variable_vla(
+ int var: @variable ref,
+ int decl: @stmt_vla_decl ref
+);
+
+if_initialization(
+ unique int if_stmt: @stmt_if ref,
+ int init_id: @stmt ref
+);
+
+if_then(
+ unique int if_stmt: @stmt_if ref,
+ int then_id: @stmt ref
+);
+
+if_else(
+ unique int if_stmt: @stmt_if ref,
+ int else_id: @stmt ref
+);
+
+constexpr_if_initialization(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int init_id: @stmt ref
+);
+
+constexpr_if_then(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int then_id: @stmt ref
+);
+
+constexpr_if_else(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int else_id: @stmt ref
+);
+
+while_body(
+ unique int while_stmt: @stmt_while ref,
+ int body_id: @stmt ref
+);
+
+do_body(
+ unique int do_stmt: @stmt_end_test_while ref,
+ int body_id: @stmt ref
+);
+
+switch_initialization(
+ unique int switch_stmt: @stmt_switch ref,
+ int init_id: @stmt ref
+);
+
+#keyset[switch_stmt, index]
+switch_case(
+ int switch_stmt: @stmt_switch ref,
+ int index: int ref,
+ int case_id: @stmt_switch_case ref
+);
+
+switch_body(
+ unique int switch_stmt: @stmt_switch ref,
+ int body_id: @stmt ref
+);
+
+@stmt_for_or_range_based_for = @stmt_for
+ | @stmt_range_based_for;
+
+for_initialization(
+ unique int for_stmt: @stmt_for_or_range_based_for ref,
+ int init_id: @stmt ref
+);
+
+for_condition(
+ unique int for_stmt: @stmt_for ref,
+ int condition_id: @expr ref
+);
+
+for_update(
+ unique int for_stmt: @stmt_for ref,
+ int update_id: @expr ref
+);
+
+for_body(
+ unique int for_stmt: @stmt_for ref,
+ int body_id: @stmt ref
+);
+
+@stmtparent = @stmt | @expr_stmt ;
+stmtparents(
+ unique int id: @stmt ref,
+ int index: int ref,
+ int parent: @stmtparent ref
+);
+
+ishandler(unique int block: @stmt_block ref);
+
+@cfgnode = @stmt | @expr | @function | @initialiser ;
+
+stmt_decl_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl: @declaration ref
+);
+
+stmt_decl_entry_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl_entry: @element ref
+);
+
+@functionorblock = @function | @stmt_block;
+
+blockscope(
+ unique int block: @stmt_block ref,
+ int enclosing: @functionorblock ref
+);
+
+@jump = @stmt_goto | @stmt_break | @stmt_continue;
+
+@jumporlabel = @jump | @stmt_label | @literal;
+
+jumpinfo(
+ unique int id: @jumporlabel ref,
+ string str: string ref,
+ int target: @stmt ref
+);
+
+preprocdirects(
+ unique int id: @preprocdirect,
+ int kind: int ref,
+ int location: @location_default ref
+);
+case @preprocdirect.kind of
+ 0 = @ppd_if
+| 1 = @ppd_ifdef
+| 2 = @ppd_ifndef
+| 3 = @ppd_elif
+| 4 = @ppd_else
+| 5 = @ppd_endif
+| 6 = @ppd_plain_include
+| 7 = @ppd_define
+| 8 = @ppd_undef
+| 9 = @ppd_line
+| 10 = @ppd_error
+| 11 = @ppd_pragma
+| 12 = @ppd_objc_import
+| 13 = @ppd_include_next
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif;
+
+preprocpair(
+ int begin : @ppd_branch ref,
+ int elseelifend : @preprocdirect ref
+);
+
+preproctrue(int branch : @ppd_branch ref);
+preprocfalse(int branch : @ppd_branch ref);
+
+preproctext(
+ unique int id: @preprocdirect ref,
+ string head: string ref,
+ string body: string ref
+);
+
+includes(
+ unique int id: @ppd_include ref,
+ int included: @file ref
+);
+
+link_targets(
+ int id: @link_target,
+ int binary: @file ref
+);
+
+link_parent(
+ int element : @element ref,
+ int link_target : @link_target ref
+);
+
+/* XML Files */
+
+xmlEncoding(unique int id: @file ref, string encoding: string ref);
+
+xmlDTDs(
+ unique int id: @xmldtd,
+ string root: string ref,
+ string publicId: string ref,
+ string systemId: string ref,
+ int fileid: @file ref
+);
+
+xmlElements(
+ unique int id: @xmlelement,
+ string name: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlAttrs(
+ unique int id: @xmlattribute,
+ int elementid: @xmlelement ref,
+ string name: string ref,
+ string value: string ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlNs(
+ int id: @xmlnamespace,
+ string prefixName: string ref,
+ string URI: string ref,
+ int fileid: @file ref
+);
+
+xmlHasNs(
+ int elementId: @xmlnamespaceable ref,
+ int nsId: @xmlnamespace ref,
+ int fileid: @file ref
+);
+
+xmlComments(
+ unique int id: @xmlcomment,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int fileid: @file ref
+);
+
+xmlChars(
+ unique int id: @xmlcharacters,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int isCDATA: int ref,
+ int fileid: @file ref
+);
+
+@xmlparent = @file | @xmlelement;
+@xmlnamespaceable = @xmlelement | @xmlattribute;
+
+xmllocations(
+ int xmlElement: @xmllocatable ref,
+ int location: @location_default ref
+);
+
+@xmllocatable = @xmlcharacters
+ | @xmlelement
+ | @xmlcomment
+ | @xmlattribute
+ | @xmldtd
+ | @file
+ | @xmlnamespace;
diff --git a/cpp/ql/lib/upgrades/25e365d1e8147df0f759b604f96eb4bffea48271/upgrade.properties b/cpp/ql/lib/upgrades/25e365d1e8147df0f759b604f96eb4bffea48271/upgrade.properties
new file mode 100644
index 0000000000000..abbd5dfd69822
--- /dev/null
+++ b/cpp/ql/lib/upgrades/25e365d1e8147df0f759b604f96eb4bffea48271/upgrade.properties
@@ -0,0 +1,2 @@
+description: Support destroying deletes
+compatibility: partial
diff --git a/cpp/ql/lib/upgrades/3d35dd6b50edfc540c14c6757e0c7b3c5b7b04dd/old.dbscheme b/cpp/ql/lib/upgrades/3d35dd6b50edfc540c14c6757e0c7b3c5b7b04dd/old.dbscheme
new file mode 100644
index 0000000000000..3d35dd6b50edf
--- /dev/null
+++ b/cpp/ql/lib/upgrades/3d35dd6b50edfc540c14c6757e0c7b3c5b7b04dd/old.dbscheme
@@ -0,0 +1,2289 @@
+
+/**
+ * An invocation of the compiler. Note that more than one file may be
+ * compiled per invocation. For example, this command compiles three
+ * source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * The `id` simply identifies the invocation, while `cwd` is the working
+ * directory from which the compiler was invoked.
+ */
+compilations(
+ /**
+ * An invocation of the compiler. Note that more than one file may
+ * be compiled per invocation. For example, this command compiles
+ * three source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ */
+ unique int id : @compilation,
+ string cwd : string ref
+);
+
+/**
+ * The arguments that were passed to the extractor for a compiler
+ * invocation. If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then typically there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | *path to extractor*
+ * 1 | `--mimic`
+ * 2 | `/usr/bin/gcc`
+ * 3 | `-c`
+ * 4 | f1.c
+ * 5 | f2.c
+ * 6 | f3.c
+ */
+#keyset[id, num]
+compilation_args(
+ int id : @compilation ref,
+ int num : int ref,
+ string arg : string ref
+);
+
+/**
+ * The source files that are compiled by a compiler invocation.
+ * If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | f1.c
+ * 1 | f2.c
+ * 2 | f3.c
+ *
+ * Note that even if those files `#include` headers, those headers
+ * do not appear as rows.
+ */
+#keyset[id, num]
+compilation_compiling_files(
+ int id : @compilation ref,
+ int num : int ref,
+ int file : @file ref
+);
+
+/**
+ * The time taken by the extractor for a compiler invocation.
+ *
+ * For each file `num`, there will be rows for
+ *
+ * kind | seconds
+ * ---- | ---
+ * 1 | CPU seconds used by the extractor frontend
+ * 2 | Elapsed seconds during the extractor frontend
+ * 3 | CPU seconds used by the extractor backend
+ * 4 | Elapsed seconds during the extractor backend
+ */
+#keyset[id, num, kind]
+compilation_time(
+ int id : @compilation ref,
+ int num : int ref,
+ /* kind:
+ 1 = frontend_cpu_seconds
+ 2 = frontend_elapsed_seconds
+ 3 = extractor_cpu_seconds
+ 4 = extractor_elapsed_seconds
+ */
+ int kind : int ref,
+ float seconds : float ref
+);
+
+/**
+ * An error or warning generated by the extractor.
+ * The diagnostic message `diagnostic` was generated during compiler
+ * invocation `compilation`, and is the `file_number_diagnostic_number`th
+ * message generated while extracting the `file_number`th file of that
+ * invocation.
+ */
+#keyset[compilation, file_number, file_number_diagnostic_number]
+diagnostic_for(
+ int diagnostic : @diagnostic ref,
+ int compilation : @compilation ref,
+ int file_number : int ref,
+ int file_number_diagnostic_number : int ref
+);
+
+/**
+ * If extraction was successful, then `cpu_seconds` and
+ * `elapsed_seconds` are the CPU time and elapsed time (respectively)
+ * that extraction took for compiler invocation `id`.
+ */
+compilation_finished(
+ unique int id : @compilation ref,
+ float cpu_seconds : float ref,
+ float elapsed_seconds : float ref
+);
+
+
+/**
+ * External data, loaded from CSV files during snapshot creation. See
+ * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data)
+ * for more information.
+ */
+externalData(
+ int id : @externalDataElement,
+ string path : string ref,
+ int column: int ref,
+ string value : string ref
+);
+
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(string prefix : string ref);
+
+/**
+ * Information about packages that provide code used during compilation.
+ * The `id` is just a unique identifier.
+ * The `namespace` is typically the name of the package manager that
+ * provided the package (e.g. "dpkg" or "yum").
+ * The `package_name` is the name of the package, and `version` is its
+ * version (as a string).
+ */
+external_packages(
+ unique int id: @external_package,
+ string namespace : string ref,
+ string package_name : string ref,
+ string version : string ref
+);
+
+/**
+ * Holds if File `fileid` was provided by package `package`.
+ */
+header_to_external_package(
+ int fileid : @file ref,
+ int package : @external_package ref
+);
+
+/*
+ * Version history
+ */
+
+svnentries(
+ unique int id : @svnentry,
+ string revision : string ref,
+ string author : string ref,
+ date revisionDate : date ref,
+ int changeSize : int ref
+)
+
+svnaffectedfiles(
+ int id : @svnentry ref,
+ int file : @file ref,
+ string action : string ref
+)
+
+svnentrymsg(
+ unique int id : @svnentry ref,
+ string message : string ref
+)
+
+svnchurn(
+ int commit : @svnentry ref,
+ int file : @file ref,
+ int addedLines : int ref,
+ int deletedLines : int ref
+)
+
+/*
+ * C++ dbscheme
+ */
+
+extractor_version(
+ string codeql_version: string ref,
+ string frontend_version: string ref
+)
+
+@location = @location_stmt | @location_expr | @location_default ;
+
+/**
+ * The location of an element that is not an expression or a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_default(
+ /** The location of an element that is not an expression or a statement. */
+ unique int id: @location_default,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_stmt(
+ /** The location of a statement. */
+ unique int id: @location_stmt,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of an expression.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_expr(
+ /** The location of an expression. */
+ unique int id: @location_expr,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/** An element for which line-count information is available. */
+@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable;
+
+numlines(
+ int element_id: @sourceline ref,
+ int num_lines: int ref,
+ int num_code: int ref,
+ int num_comment: int ref
+);
+
+diagnostics(
+ unique int id: @diagnostic,
+ int severity: int ref,
+ string error_tag: string ref,
+ string error_message: string ref,
+ string full_error_message: string ref,
+ int location: @location_default ref
+);
+
+files(
+ unique int id: @file,
+ string name: string ref
+);
+
+folders(
+ unique int id: @folder,
+ string name: string ref
+);
+
+@container = @folder | @file
+
+containerparent(
+ int parent: @container ref,
+ unique int child: @container ref
+);
+
+fileannotations(
+ int id: @file ref,
+ int kind: int ref,
+ string name: string ref,
+ string value: string ref
+);
+
+inmacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+affectedbymacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+case @macroinvocation.kind of
+ 1 = @macro_expansion
+| 2 = @other_macro_reference
+;
+
+macroinvocations(
+ unique int id: @macroinvocation,
+ int macro_id: @ppd_define ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+macroparent(
+ unique int id: @macroinvocation ref,
+ int parent_id: @macroinvocation ref
+);
+
+// a macroinvocation may be part of another location
+// the way to find a constant expression that uses a macro
+// is thus to find a constant expression that has a location
+// to which a macro invocation is bound
+macrolocationbind(
+ int id: @macroinvocation ref,
+ int location: @location ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_unexpanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_expanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+/*
+case @function.kind of
+ 1 = @normal_function
+| 2 = @constructor
+| 3 = @destructor
+| 4 = @conversion_function
+| 5 = @operator
+| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk
+| 7 = @user_defined_literal
+| 8 = @deduction_guide
+;
+*/
+
+functions(
+ unique int id: @function,
+ string name: string ref,
+ int kind: int ref
+);
+
+function_entry_point(
+ int id: @function ref,
+ unique int entry_point: @stmt ref
+);
+
+function_return_type(
+ int id: @function ref,
+ int return_type: @type ref
+);
+
+/**
+ * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits`
+ * instance associated with it, and the variables representing the `handle` and `promise`
+ * for it.
+ */
+coroutine(
+ unique int function: @function ref,
+ int traits: @type ref,
+ int handle: @variable ref,
+ int promise: @variable ref
+);
+
+/** The `new` function used for allocating the coroutine state, if any. */
+coroutine_new(
+ unique int function: @function ref,
+ int new: @function ref
+);
+
+/** The `delete` function used for deallocating the coroutine state, if any. */
+coroutine_delete(
+ unique int function: @function ref,
+ int delete: @function ref
+);
+
+purefunctions(unique int id: @function ref);
+
+function_deleted(unique int id: @function ref);
+
+function_defaulted(unique int id: @function ref);
+
+function_prototyped(unique int id: @function ref)
+
+member_function_this_type(
+ unique int id: @function ref,
+ int this_type: @type ref
+);
+
+#keyset[id, type_id]
+fun_decls(
+ int id: @fun_decl,
+ int function: @function ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+fun_def(unique int id: @fun_decl ref);
+fun_specialized(unique int id: @fun_decl ref);
+fun_implicit(unique int id: @fun_decl ref);
+fun_decl_specifiers(
+ int id: @fun_decl ref,
+ string name: string ref
+)
+#keyset[fun_decl, index]
+fun_decl_throws(
+ int fun_decl: @fun_decl ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+/* an empty throw specification is different from none */
+fun_decl_empty_throws(unique int fun_decl: @fun_decl ref);
+fun_decl_noexcept(
+ int fun_decl: @fun_decl ref,
+ int constant: @expr ref
+);
+fun_decl_empty_noexcept(int fun_decl: @fun_decl ref);
+fun_decl_typedef_type(
+ unique int fun_decl: @fun_decl ref,
+ int typedeftype_id: @usertype ref
+);
+
+param_decl_bind(
+ unique int id: @var_decl ref,
+ int index: int ref,
+ int fun_decl: @fun_decl ref
+);
+
+#keyset[id, type_id]
+var_decls(
+ int id: @var_decl,
+ int variable: @variable ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+var_def(unique int id: @var_decl ref);
+var_decl_specifiers(
+ int id: @var_decl ref,
+ string name: string ref
+)
+is_structured_binding(unique int id: @variable ref);
+
+type_decls(
+ unique int id: @type_decl,
+ int type_id: @type ref,
+ int location: @location_default ref
+);
+type_def(unique int id: @type_decl ref);
+type_decl_top(
+ unique int type_decl: @type_decl ref
+);
+
+namespace_decls(
+ unique int id: @namespace_decl,
+ int namespace_id: @namespace ref,
+ int location: @location_default ref,
+ int bodylocation: @location_default ref
+);
+
+usings(
+ unique int id: @using,
+ int element_id: @element ref,
+ int location: @location_default ref
+);
+
+/** The element which contains the `using` declaration. */
+using_container(
+ int parent: @element ref,
+ int child: @using ref
+);
+
+static_asserts(
+ unique int id: @static_assert,
+ int condition : @expr ref,
+ string message : string ref,
+ int location: @location_default ref,
+ int enclosing : @element ref
+);
+
+// each function has an ordered list of parameters
+#keyset[id, type_id]
+#keyset[function, index, type_id]
+params(
+ int id: @parameter,
+ int function: @functionorblock ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+overrides(
+ int new: @function ref,
+ int old: @function ref
+);
+
+#keyset[id, type_id]
+membervariables(
+ int id: @membervariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+globalvariables(
+ int id: @globalvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+localvariables(
+ int id: @localvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+autoderivation(
+ unique int var: @variable ref,
+ int derivation_type: @type ref
+);
+
+orphaned_variables(
+ int var: @localvariable ref,
+ int function: @function ref
+)
+
+enumconstants(
+ unique int id: @enumconstant,
+ int parent: @usertype ref,
+ int index: int ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+
+@variable = @localscopevariable | @globalvariable | @membervariable;
+
+@localscopevariable = @localvariable | @parameter;
+
+/**
+ * Built-in types are the fundamental types, e.g., integral, floating, and void.
+ */
+case @builtintype.kind of
+ 1 = @errortype
+| 2 = @unknowntype
+| 3 = @void
+| 4 = @boolean
+| 5 = @char
+| 6 = @unsigned_char
+| 7 = @signed_char
+| 8 = @short
+| 9 = @unsigned_short
+| 10 = @signed_short
+| 11 = @int
+| 12 = @unsigned_int
+| 13 = @signed_int
+| 14 = @long
+| 15 = @unsigned_long
+| 16 = @signed_long
+| 17 = @long_long
+| 18 = @unsigned_long_long
+| 19 = @signed_long_long
+// ... 20 Microsoft-specific __int8
+// ... 21 Microsoft-specific __int16
+// ... 22 Microsoft-specific __int32
+// ... 23 Microsoft-specific __int64
+| 24 = @float
+| 25 = @double
+| 26 = @long_double
+| 27 = @complex_float // C99-specific _Complex float
+| 28 = @complex_double // C99-specific _Complex double
+| 29 = @complex_long_double // C99-specific _Complex long double
+| 30 = @imaginary_float // C99-specific _Imaginary float
+| 31 = @imaginary_double // C99-specific _Imaginary double
+| 32 = @imaginary_long_double // C99-specific _Imaginary long double
+| 33 = @wchar_t // Microsoft-specific
+| 34 = @decltype_nullptr // C++11
+| 35 = @int128 // __int128
+| 36 = @unsigned_int128 // unsigned __int128
+| 37 = @signed_int128 // signed __int128
+| 38 = @float128 // __float128
+| 39 = @complex_float128 // _Complex __float128
+| 40 = @decimal32 // _Decimal32
+| 41 = @decimal64 // _Decimal64
+| 42 = @decimal128 // _Decimal128
+| 43 = @char16_t
+| 44 = @char32_t
+| 45 = @std_float32 // _Float32
+| 46 = @float32x // _Float32x
+| 47 = @std_float64 // _Float64
+| 48 = @float64x // _Float64x
+| 49 = @std_float128 // _Float128
+// ... 50 _Float128x
+| 51 = @char8_t
+| 52 = @float16 // _Float16
+| 53 = @complex_float16 // _Complex _Float16
+| 54 = @fp16 // __fp16
+| 55 = @std_bfloat16 // __bf16
+| 56 = @std_float16 // std::float16_t
+| 57 = @complex_std_float32 // _Complex _Float32
+| 58 = @complex_float32x // _Complex _Float32x
+| 59 = @complex_std_float64 // _Complex _Float64
+| 60 = @complex_float64x // _Complex _Float64x
+| 61 = @complex_std_float128 // _Complex _Float128
+;
+
+builtintypes(
+ unique int id: @builtintype,
+ string name: string ref,
+ int kind: int ref,
+ int size: int ref,
+ int sign: int ref,
+ int alignment: int ref
+);
+
+/**
+ * Derived types are types that are directly derived from existing types and
+ * point to, refer to, transform type data to return a new type.
+ */
+case @derivedtype.kind of
+ 1 = @pointer
+| 2 = @reference
+| 3 = @type_with_specifiers
+| 4 = @array
+| 5 = @gnu_vector
+| 6 = @routineptr
+| 7 = @routinereference
+| 8 = @rvalue_reference // C++11
+// ... 9 type_conforming_to_protocols deprecated
+| 10 = @block
+;
+
+derivedtypes(
+ unique int id: @derivedtype,
+ string name: string ref,
+ int kind: int ref,
+ int type_id: @type ref
+);
+
+pointerishsize(unique int id: @derivedtype ref,
+ int size: int ref,
+ int alignment: int ref);
+
+arraysizes(
+ unique int id: @derivedtype ref,
+ int num_elements: int ref,
+ int bytesize: int ref,
+ int alignment: int ref
+);
+
+typedefbase(
+ unique int id: @usertype ref,
+ int type_id: @type ref
+);
+
+/**
+ * An instance of the C++11 `decltype` operator. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * would change the semantics of this decltype, e.g.
+ * ```
+ * struct A { double x; };
+ * const A* a = new A();
+ * decltype( a->x ); // type is double
+ * decltype((a->x)); // type is const double&
+ * ```
+ * (Please consult the C++11 standard for more details).
+ * `parentheses_would_change_meaning` is `true` iff that is the case.
+ */
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @usertype.kind of
+ 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+| 5 = @typedef // classic C: typedef typedef type name
+| 6 = @template
+| 7 = @template_parameter
+| 8 = @template_template_parameter
+| 9 = @proxy_class // a proxy class associated with a template parameter
+// ... 10 objc_class deprecated
+// ... 11 objc_protocol deprecated
+// ... 12 objc_category deprecated
+| 13 = @scoped_enum
+| 14 = @using_alias // a using name = type style typedef
+;
+*/
+
+usertypes(
+ unique int id: @usertype,
+ string name: string ref,
+ int kind: int ref
+);
+
+usertypesize(
+ unique int id: @usertype ref,
+ int size: int ref,
+ int alignment: int ref
+);
+
+usertype_final(unique int id: @usertype ref);
+
+usertype_uuid(
+ unique int id: @usertype ref,
+ string uuid: string ref
+);
+
+mangled_name(
+ unique int id: @declaration ref,
+ int mangled_name : @mangledname,
+ boolean is_complete: boolean ref
+);
+
+is_pod_class(unique int id: @usertype ref);
+is_standard_layout_class(unique int id: @usertype ref);
+
+is_complete(unique int id: @usertype ref);
+
+is_class_template(unique int id: @usertype ref);
+class_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+class_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+class_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ unique int templ_param_id: @usertype ref
+);
+
+type_mentions(
+ unique int id: @type_mention,
+ int type_id: @type ref,
+ int location: @location ref,
+ // a_symbol_reference_kind from the frontend.
+ int kind: int ref
+);
+
+is_function_template(unique int id: @function ref);
+function_instantiation(
+ unique int to: @function ref,
+ int from: @function ref
+);
+function_template_argument(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+function_template_argument_value(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_variable_template(unique int id: @variable ref);
+variable_instantiation(
+ unique int to: @variable ref,
+ int from: @variable ref
+);
+variable_template_argument(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+variable_template_argument_value(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+/*
+ Fixed point types
+ precision(1) = short, precision(2) = default, precision(3) = long
+ is_unsigned(1) = unsigned is_unsigned(2) = signed
+ is_fract_type(1) = declared with _Fract
+ saturating(1) = declared with _Sat
+*/
+/* TODO
+fixedpointtypes(
+ unique int id: @fixedpointtype,
+ int precision: int ref,
+ int is_unsigned: int ref,
+ int is_fract_type: int ref,
+ int saturating: int ref);
+*/
+
+routinetypes(
+ unique int id: @routinetype,
+ int return_type: @type ref
+);
+
+routinetypeargs(
+ int routine: @routinetype ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+ptrtomembers(
+ unique int id: @ptrtomember,
+ int type_id: @type ref,
+ int class_id: @type ref
+);
+
+/*
+ specifiers for types, functions, and variables
+
+ "public",
+ "protected",
+ "private",
+
+ "const",
+ "volatile",
+ "static",
+
+ "pure",
+ "virtual",
+ "sealed", // Microsoft
+ "__interface", // Microsoft
+ "inline",
+ "explicit",
+
+ "near", // near far extension
+ "far", // near far extension
+ "__ptr32", // Microsoft
+ "__ptr64", // Microsoft
+ "__sptr", // Microsoft
+ "__uptr", // Microsoft
+ "dllimport", // Microsoft
+ "dllexport", // Microsoft
+ "thread", // Microsoft
+ "naked", // Microsoft
+ "microsoft_inline", // Microsoft
+ "forceinline", // Microsoft
+ "selectany", // Microsoft
+ "nothrow", // Microsoft
+ "novtable", // Microsoft
+ "noreturn", // Microsoft
+ "noinline", // Microsoft
+ "noalias", // Microsoft
+ "restrict", // Microsoft
+*/
+
+specifiers(
+ unique int id: @specifier,
+ unique string str: string ref
+);
+
+typespecifiers(
+ int type_id: @type ref,
+ int spec_id: @specifier ref
+);
+
+funspecifiers(
+ int func_id: @function ref,
+ int spec_id: @specifier ref
+);
+
+varspecifiers(
+ int var_id: @accessible ref,
+ int spec_id: @specifier ref
+);
+
+attributes(
+ unique int id: @attribute,
+ int kind: int ref,
+ string name: string ref,
+ string name_space: string ref,
+ int location: @location_default ref
+);
+
+case @attribute.kind of
+ 0 = @gnuattribute
+| 1 = @stdattribute
+| 2 = @declspec
+| 3 = @msattribute
+| 4 = @alignas
+// ... 5 @objc_propertyattribute deprecated
+;
+
+attribute_args(
+ unique int id: @attribute_arg,
+ int kind: int ref,
+ int attribute: @attribute ref,
+ int index: int ref,
+ int location: @location_default ref
+);
+
+case @attribute_arg.kind of
+ 0 = @attribute_arg_empty
+| 1 = @attribute_arg_token
+| 2 = @attribute_arg_constant
+| 3 = @attribute_arg_type
+| 4 = @attribute_arg_constant_expr
+| 5 = @attribute_arg_expr
+;
+
+attribute_arg_value(
+ unique int arg: @attribute_arg ref,
+ string value: string ref
+);
+attribute_arg_type(
+ unique int arg: @attribute_arg ref,
+ int type_id: @type ref
+);
+attribute_arg_constant(
+ unique int arg: @attribute_arg ref,
+ int constant: @expr ref
+)
+attribute_arg_expr(
+ unique int arg: @attribute_arg ref,
+ int expr: @expr ref
+)
+attribute_arg_name(
+ unique int arg: @attribute_arg ref,
+ string name: string ref
+);
+
+typeattributes(
+ int type_id: @type ref,
+ int spec_id: @attribute ref
+);
+
+funcattributes(
+ int func_id: @function ref,
+ int spec_id: @attribute ref
+);
+
+varattributes(
+ int var_id: @accessible ref,
+ int spec_id: @attribute ref
+);
+
+stmtattributes(
+ int stmt_id: @stmt ref,
+ int spec_id: @attribute ref
+);
+
+@type = @builtintype
+ | @derivedtype
+ | @usertype
+ /* TODO | @fixedpointtype */
+ | @routinetype
+ | @ptrtomember
+ | @decltype;
+
+unspecifiedtype(
+ unique int type_id: @type ref,
+ int unspecified_type_id: @type ref
+);
+
+member(
+ int parent: @type ref,
+ int index: int ref,
+ int child: @member ref
+);
+
+@enclosingfunction_child = @usertype | @variable | @namespace
+
+enclosingfunction(
+ unique int child: @enclosingfunction_child ref,
+ int parent: @function ref
+);
+
+derivations(
+ unique int derivation: @derivation,
+ int sub: @type ref,
+ int index: int ref,
+ int super: @type ref,
+ int location: @location_default ref
+);
+
+derspecifiers(
+ int der_id: @derivation ref,
+ int spec_id: @specifier ref
+);
+
+/**
+ * Contains the byte offset of the base class subobject within the derived
+ * class. Only holds for non-virtual base classes, but see table
+ * `virtual_base_offsets` for offsets of virtual base class subobjects.
+ */
+direct_base_offsets(
+ unique int der_id: @derivation ref,
+ int offset: int ref
+);
+
+/**
+ * Contains the byte offset of the virtual base class subobject for class
+ * `super` within a most-derived object of class `sub`. `super` can be either a
+ * direct or indirect base class.
+ */
+#keyset[sub, super]
+virtual_base_offsets(
+ int sub: @usertype ref,
+ int super: @usertype ref,
+ int offset: int ref
+);
+
+frienddecls(
+ unique int id: @frienddecl,
+ int type_id: @type ref,
+ int decl_id: @declaration ref,
+ int location: @location_default ref
+);
+
+@declaredtype = @usertype ;
+
+@declaration = @function
+ | @declaredtype
+ | @variable
+ | @enumconstant
+ | @frienddecl;
+
+@member = @membervariable
+ | @function
+ | @declaredtype
+ | @enumconstant;
+
+@locatable = @diagnostic
+ | @declaration
+ | @ppd_include
+ | @ppd_define
+ | @macroinvocation
+ /*| @funcall*/
+ | @xmllocatable
+ | @attribute
+ | @attribute_arg;
+
+@namedscope = @namespace | @usertype;
+
+@element = @locatable
+ | @file
+ | @folder
+ | @specifier
+ | @type
+ | @expr
+ | @namespace
+ | @initialiser
+ | @stmt
+ | @derivation
+ | @comment
+ | @preprocdirect
+ | @fun_decl
+ | @var_decl
+ | @type_decl
+ | @namespace_decl
+ | @using
+ | @namequalifier
+ | @specialnamequalifyingelement
+ | @static_assert
+ | @type_mention
+ | @lambdacapture;
+
+@exprparent = @element;
+
+comments(
+ unique int id: @comment,
+ string contents: string ref,
+ int location: @location_default ref
+);
+
+commentbinding(
+ int id: @comment ref,
+ int element: @element ref
+);
+
+exprconv(
+ int converted: @expr ref,
+ unique int conversion: @expr ref
+);
+
+compgenerated(unique int id: @element ref);
+
+/**
+ * `destructor_call` destructs the `i`'th entity that should be
+ * destructed following `element`. Note that entities should be
+ * destructed in reverse construction order, so for a given `element`
+ * these should be called from highest to lowest `i`.
+ */
+#keyset[element, destructor_call]
+#keyset[element, i]
+synthetic_destructor_call(
+ int element: @element ref,
+ int i: int ref,
+ int destructor_call: @routineexpr ref
+);
+
+namespaces(
+ unique int id: @namespace,
+ string name: string ref
+);
+
+namespace_inline(
+ unique int id: @namespace ref
+);
+
+namespacembrs(
+ int parentid: @namespace ref,
+ unique int memberid: @namespacembr ref
+);
+
+@namespacembr = @declaration | @namespace;
+
+exprparents(
+ int expr_id: @expr ref,
+ int child_index: int ref,
+ int parent_id: @exprparent ref
+);
+
+expr_isload(unique int expr_id: @expr ref);
+
+@cast = @c_style_cast
+ | @const_cast
+ | @dynamic_cast
+ | @reinterpret_cast
+ | @static_cast
+ ;
+
+/*
+case @conversion.kind of
+ 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast
+| 1 = @bool_conversion // conversion to 'bool'
+| 2 = @base_class_conversion // a derived-to-base conversion
+| 3 = @derived_class_conversion // a base-to-derived conversion
+| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member
+| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member
+| 6 = @glvalue_adjust // an adjustment of the type of a glvalue
+| 7 = @prvalue_adjust // an adjustment of the type of a prvalue
+;
+*/
+/**
+ * Describes the semantics represented by a cast expression. This is largely
+ * independent of the source syntax of the cast, so it is separate from the
+ * regular expression kind.
+ */
+conversionkinds(
+ unique int expr_id: @cast ref,
+ int kind: int ref
+);
+
+@conversion = @cast
+ | @array_to_pointer
+ | @parexpr
+ | @reference_to
+ | @ref_indirect
+ | @temp_init
+ ;
+
+/*
+case @funbindexpr.kind of
+ 0 = @normal_call // a normal call
+| 1 = @virtual_call // a virtual call
+| 2 = @adl_call // a call whose target is only found by ADL
+;
+*/
+iscall(
+ unique int caller: @funbindexpr ref,
+ int kind: int ref
+);
+
+numtemplatearguments(
+ unique int expr_id: @expr ref,
+ int num: int ref
+);
+
+specialnamequalifyingelements(
+ unique int id: @specialnamequalifyingelement,
+ unique string name: string ref
+);
+
+@namequalifiableelement = @expr | @namequalifier;
+@namequalifyingelement = @namespace
+ | @specialnamequalifyingelement
+ | @usertype;
+
+namequalifiers(
+ unique int id: @namequalifier,
+ unique int qualifiableelement: @namequalifiableelement ref,
+ int qualifyingelement: @namequalifyingelement ref,
+ int location: @location_default ref
+);
+
+varbind(
+ int expr: @varbindexpr ref,
+ int var: @accessible ref
+);
+
+funbind(
+ int expr: @funbindexpr ref,
+ int fun: @function ref
+);
+
+@any_new_expr = @new_expr
+ | @new_array_expr;
+
+@new_or_delete_expr = @any_new_expr
+ | @delete_expr
+ | @delete_array_expr;
+
+@prefix_crement_expr = @preincrexpr | @predecrexpr;
+
+@postfix_crement_expr = @postincrexpr | @postdecrexpr;
+
+@increment_expr = @preincrexpr | @postincrexpr;
+
+@decrement_expr = @predecrexpr | @postdecrexpr;
+
+@crement_expr = @increment_expr | @decrement_expr;
+
+@un_arith_op_expr = @arithnegexpr
+ | @unaryplusexpr
+ | @conjugation
+ | @realpartexpr
+ | @imagpartexpr
+ | @crement_expr
+ ;
+
+@un_bitwise_op_expr = @complementexpr;
+
+@un_log_op_expr = @notexpr;
+
+@un_op_expr = @address_of
+ | @indirect
+ | @un_arith_op_expr
+ | @un_bitwise_op_expr
+ | @builtinaddressof
+ | @vec_fill
+ | @un_log_op_expr
+ | @co_await
+ | @co_yield
+ ;
+
+@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr;
+
+@cmp_op_expr = @eq_op_expr | @rel_op_expr;
+
+@eq_op_expr = @eqexpr | @neexpr;
+
+@rel_op_expr = @gtexpr
+ | @ltexpr
+ | @geexpr
+ | @leexpr
+ | @spaceshipexpr
+ ;
+
+@bin_bitwise_op_expr = @lshiftexpr
+ | @rshiftexpr
+ | @andexpr
+ | @orexpr
+ | @xorexpr
+ ;
+
+@p_arith_op_expr = @paddexpr
+ | @psubexpr
+ | @pdiffexpr
+ ;
+
+@bin_arith_op_expr = @addexpr
+ | @subexpr
+ | @mulexpr
+ | @divexpr
+ | @remexpr
+ | @jmulexpr
+ | @jdivexpr
+ | @fjaddexpr
+ | @jfaddexpr
+ | @fjsubexpr
+ | @jfsubexpr
+ | @minexpr
+ | @maxexpr
+ | @p_arith_op_expr
+ ;
+
+@bin_op_expr = @bin_arith_op_expr
+ | @bin_bitwise_op_expr
+ | @cmp_op_expr
+ | @bin_log_op_expr
+ ;
+
+@op_expr = @un_op_expr
+ | @bin_op_expr
+ | @assign_expr
+ | @conditionalexpr
+ ;
+
+@assign_arith_expr = @assignaddexpr
+ | @assignsubexpr
+ | @assignmulexpr
+ | @assigndivexpr
+ | @assignremexpr
+ ;
+
+@assign_bitwise_expr = @assignandexpr
+ | @assignorexpr
+ | @assignxorexpr
+ | @assignlshiftexpr
+ | @assignrshiftexpr
+ ;
+
+@assign_pointer_expr = @assignpaddexpr
+ | @assignpsubexpr
+ ;
+
+@assign_op_expr = @assign_arith_expr
+ | @assign_bitwise_expr
+ | @assign_pointer_expr
+ ;
+
+@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr
+
+/*
+ case @allocator.form of
+ 0 = plain
+ | 1 = alignment
+ ;
+*/
+
+/**
+ * The allocator function associated with a `new` or `new[]` expression.
+ * The `form` column specified whether the allocation call contains an alignment
+ * argument.
+ */
+expr_allocator(
+ unique int expr: @any_new_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/*
+ case @deallocator.form of
+ 0 = plain
+ | 1 = size
+ | 2 = alignment
+ | 3 = size_and_alignment
+ ;
+*/
+
+/**
+ * The deallocator function associated with a `delete`, `delete[]`, `new`, or
+ * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the
+ * one used to free memory if the initialization throws an exception.
+ * The `form` column specifies whether the deallocation call contains a size
+ * argument, and alignment argument, or both.
+ */
+expr_deallocator(
+ unique int expr: @new_or_delete_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/**
+ * Holds if the `@conditionalexpr` is of the two operand form
+ * `guard ? : false`.
+ */
+expr_cond_two_operand(
+ unique int cond: @conditionalexpr ref
+);
+
+/**
+ * The guard of `@conditionalexpr` `guard ? true : false`
+ */
+expr_cond_guard(
+ unique int cond: @conditionalexpr ref,
+ int guard: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` holds. For the two operand form
+ * `guard ?: false` consider using `expr_cond_guard` instead.
+ */
+expr_cond_true(
+ unique int cond: @conditionalexpr ref,
+ int true: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` does not hold.
+ */
+expr_cond_false(
+ unique int cond: @conditionalexpr ref,
+ int false: @expr ref
+);
+
+/** A string representation of the value. */
+values(
+ unique int id: @value,
+ string str: string ref
+);
+
+/** The actual text in the source code for the value, if any. */
+valuetext(
+ unique int id: @value ref,
+ string text: string ref
+);
+
+valuebind(
+ int val: @value ref,
+ unique int expr: @expr ref
+);
+
+fieldoffsets(
+ unique int id: @variable ref,
+ int byteoffset: int ref,
+ int bitoffset: int ref
+);
+
+bitfield(
+ unique int id: @variable ref,
+ int bits: int ref,
+ int declared_bits: int ref
+);
+
+/* TODO
+memberprefix(
+ int member: @expr ref,
+ int prefix: @expr ref
+);
+*/
+
+/*
+ kind(1) = mbrcallexpr
+ kind(2) = mbrptrcallexpr
+ kind(3) = mbrptrmbrcallexpr
+ kind(4) = ptrmbrptrmbrcallexpr
+ kind(5) = mbrreadexpr // x.y
+ kind(6) = mbrptrreadexpr // p->y
+ kind(7) = mbrptrmbrreadexpr // x.*pm
+ kind(8) = mbrptrmbrptrreadexpr // x->*pm
+ kind(9) = staticmbrreadexpr // static x.y
+ kind(10) = staticmbrptrreadexpr // static p->y
+*/
+/* TODO
+memberaccess(
+ int member: @expr ref,
+ int kind: int ref
+);
+*/
+
+initialisers(
+ unique int init: @initialiser,
+ int var: @accessible ref,
+ unique int expr: @expr ref,
+ int location: @location_expr ref
+);
+
+braced_initialisers(
+ int init: @initialiser ref
+);
+
+/**
+ * An ancestor for the expression, for cases in which we cannot
+ * otherwise find the expression's parent.
+ */
+expr_ancestor(
+ int exp: @expr ref,
+ int ancestor: @element ref
+);
+
+exprs(
+ unique int id: @expr,
+ int kind: int ref,
+ int location: @location_expr ref
+);
+
+expr_reuse(
+ int reuse: @expr ref,
+ int original: @expr ref,
+ int value_category: int ref
+)
+
+/*
+ case @value.category of
+ 1 = prval
+ | 2 = xval
+ | 3 = lval
+ ;
+*/
+expr_types(
+ int id: @expr ref,
+ int typeid: @type ref,
+ int value_category: int ref
+);
+
+case @expr.kind of
+ 1 = @errorexpr
+| 2 = @address_of // & AddressOfExpr
+| 3 = @reference_to // ReferenceToExpr (implicit?)
+| 4 = @indirect // * PointerDereferenceExpr
+| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?)
+// ...
+| 8 = @array_to_pointer // (???)
+| 9 = @vacuous_destructor_call // VacuousDestructorCall
+// ...
+| 11 = @assume // Microsoft
+| 12 = @parexpr
+| 13 = @arithnegexpr
+| 14 = @unaryplusexpr
+| 15 = @complementexpr
+| 16 = @notexpr
+| 17 = @conjugation // GNU ~ operator
+| 18 = @realpartexpr // GNU __real
+| 19 = @imagpartexpr // GNU __imag
+| 20 = @postincrexpr
+| 21 = @postdecrexpr
+| 22 = @preincrexpr
+| 23 = @predecrexpr
+| 24 = @conditionalexpr
+| 25 = @addexpr
+| 26 = @subexpr
+| 27 = @mulexpr
+| 28 = @divexpr
+| 29 = @remexpr
+| 30 = @jmulexpr // C99 mul imaginary
+| 31 = @jdivexpr // C99 div imaginary
+| 32 = @fjaddexpr // C99 add real + imaginary
+| 33 = @jfaddexpr // C99 add imaginary + real
+| 34 = @fjsubexpr // C99 sub real - imaginary
+| 35 = @jfsubexpr // C99 sub imaginary - real
+| 36 = @paddexpr // pointer add (pointer + int or int + pointer)
+| 37 = @psubexpr // pointer sub (pointer - integer)
+| 38 = @pdiffexpr // difference between two pointers
+| 39 = @lshiftexpr
+| 40 = @rshiftexpr
+| 41 = @andexpr
+| 42 = @orexpr
+| 43 = @xorexpr
+| 44 = @eqexpr
+| 45 = @neexpr
+| 46 = @gtexpr
+| 47 = @ltexpr
+| 48 = @geexpr
+| 49 = @leexpr
+| 50 = @minexpr // GNU minimum
+| 51 = @maxexpr // GNU maximum
+| 52 = @assignexpr
+| 53 = @assignaddexpr
+| 54 = @assignsubexpr
+| 55 = @assignmulexpr
+| 56 = @assigndivexpr
+| 57 = @assignremexpr
+| 58 = @assignlshiftexpr
+| 59 = @assignrshiftexpr
+| 60 = @assignandexpr
+| 61 = @assignorexpr
+| 62 = @assignxorexpr
+| 63 = @assignpaddexpr // assign pointer add
+| 64 = @assignpsubexpr // assign pointer sub
+| 65 = @andlogicalexpr
+| 66 = @orlogicalexpr
+| 67 = @commaexpr
+| 68 = @subscriptexpr // access to member of an array, e.g., a[5]
+// ... 69 @objc_subscriptexpr deprecated
+// ... 70 @cmdaccess deprecated
+// ...
+| 73 = @virtfunptrexpr
+| 74 = @callexpr
+// ... 75 @msgexpr_normal deprecated
+// ... 76 @msgexpr_super deprecated
+// ... 77 @atselectorexpr deprecated
+// ... 78 @atprotocolexpr deprecated
+| 79 = @vastartexpr
+| 80 = @vaargexpr
+| 81 = @vaendexpr
+| 82 = @vacopyexpr
+// ... 83 @atencodeexpr deprecated
+| 84 = @varaccess
+| 85 = @thisaccess
+// ... 86 @objc_box_expr deprecated
+| 87 = @new_expr
+| 88 = @delete_expr
+| 89 = @throw_expr
+| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2)
+| 91 = @braced_init_list
+| 92 = @type_id
+| 93 = @runtime_sizeof
+| 94 = @runtime_alignof
+| 95 = @sizeof_pack
+| 96 = @expr_stmt // GNU extension
+| 97 = @routineexpr
+| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....)
+| 99 = @offsetofexpr // offsetof ::= type and field
+| 100 = @hasassignexpr // __has_assign ::= type
+| 101 = @hascopyexpr // __has_copy ::= type
+| 102 = @hasnothrowassign // __has_nothrow_assign ::= type
+| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type
+| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type
+| 105 = @hastrivialassign // __has_trivial_assign ::= type
+| 106 = @hastrivialconstr // __has_trivial_constructor ::= type
+| 107 = @hastrivialcopy // __has_trivial_copy ::= type
+| 108 = @hasuserdestr // __has_user_destructor ::= type
+| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type
+| 110 = @isabstractexpr // __is_abstract ::= type
+| 111 = @isbaseofexpr // __is_base_of ::= type type
+| 112 = @isclassexpr // __is_class ::= type
+| 113 = @isconvtoexpr // __is_convertible_to ::= type type
+| 114 = @isemptyexpr // __is_empty ::= type
+| 115 = @isenumexpr // __is_enum ::= type
+| 116 = @ispodexpr // __is_pod ::= type
+| 117 = @ispolyexpr // __is_polymorphic ::= type
+| 118 = @isunionexpr // __is_union ::= type
+| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type
+| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof
+// ...
+| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type
+| 123 = @literal
+| 124 = @uuidof
+| 127 = @aggregateliteral
+| 128 = @delete_array_expr
+| 129 = @new_array_expr
+// ... 130 @objc_array_literal deprecated
+// ... 131 @objc_dictionary_literal deprecated
+| 132 = @foldexpr
+// ...
+| 200 = @ctordirectinit
+| 201 = @ctorvirtualinit
+| 202 = @ctorfieldinit
+| 203 = @ctordelegatinginit
+| 204 = @dtordirectdestruct
+| 205 = @dtorvirtualdestruct
+| 206 = @dtorfielddestruct
+// ...
+| 210 = @static_cast
+| 211 = @reinterpret_cast
+| 212 = @const_cast
+| 213 = @dynamic_cast
+| 214 = @c_style_cast
+| 215 = @lambdaexpr
+| 216 = @param_ref
+| 217 = @noopexpr
+// ...
+| 294 = @istriviallyconstructibleexpr
+| 295 = @isdestructibleexpr
+| 296 = @isnothrowdestructibleexpr
+| 297 = @istriviallydestructibleexpr
+| 298 = @istriviallyassignableexpr
+| 299 = @isnothrowassignableexpr
+| 300 = @istrivialexpr
+| 301 = @isstandardlayoutexpr
+| 302 = @istriviallycopyableexpr
+| 303 = @isliteraltypeexpr
+| 304 = @hastrivialmoveconstructorexpr
+| 305 = @hastrivialmoveassignexpr
+| 306 = @hasnothrowmoveassignexpr
+| 307 = @isconstructibleexpr
+| 308 = @isnothrowconstructibleexpr
+| 309 = @hasfinalizerexpr
+| 310 = @isdelegateexpr
+| 311 = @isinterfaceclassexpr
+| 312 = @isrefarrayexpr
+| 313 = @isrefclassexpr
+| 314 = @issealedexpr
+| 315 = @issimplevalueclassexpr
+| 316 = @isvalueclassexpr
+| 317 = @isfinalexpr
+| 319 = @noexceptexpr
+| 320 = @builtinshufflevector
+| 321 = @builtinchooseexpr
+| 322 = @builtinaddressof
+| 323 = @vec_fill
+| 324 = @builtinconvertvector
+| 325 = @builtincomplex
+| 326 = @spaceshipexpr
+| 327 = @co_await
+| 328 = @co_yield
+| 329 = @temp_init
+| 330 = @isassignable
+| 331 = @isaggregate
+| 332 = @hasuniqueobjectrepresentations
+| 333 = @builtinbitcast
+| 334 = @builtinshuffle
+| 335 = @blockassignexpr
+| 336 = @issame
+| 337 = @isfunction
+| 338 = @islayoutcompatible
+| 339 = @ispointerinterconvertiblebaseof
+| 340 = @isarray
+| 341 = @arrayrank
+| 342 = @arrayextent
+| 343 = @isarithmetic
+| 344 = @iscompletetype
+| 345 = @iscompound
+| 346 = @isconst
+| 347 = @isfloatingpoint
+| 348 = @isfundamental
+| 349 = @isintegral
+| 350 = @islvaluereference
+| 351 = @ismemberfunctionpointer
+| 352 = @ismemberobjectpointer
+| 353 = @ismemberpointer
+| 354 = @isobject
+| 355 = @ispointer
+| 356 = @isreference
+| 357 = @isrvaluereference
+| 358 = @isscalar
+| 359 = @issigned
+| 360 = @isunsigned
+| 361 = @isvoid
+| 362 = @isvolatile
+| 363 = @reuseexpr
+| 364 = @istriviallycopyassignable
+| 365 = @isassignablenopreconditioncheck
+| 366 = @referencebindstotemporary
+| 367 = @issameas
+| 368 = @builtinhasattribute
+| 369 = @ispointerinterconvertiblewithclass
+| 370 = @builtinispointerinterconvertiblewithclass
+| 371 = @iscorrespondingmember
+| 372 = @builtiniscorrespondingmember
+| 373 = @isboundedarray
+| 374 = @isunboundedarray
+| 375 = @isreferenceable
+| 378 = @isnothrowconvertible
+| 379 = @referenceconstructsfromtemporary
+| 380 = @referenceconvertsfromtemporary
+| 381 = @isconvertible
+| 382 = @isvalidwinrttype
+| 383 = @iswinclass
+| 384 = @iswininterface
+;
+
+@var_args_expr = @vastartexpr
+ | @vaendexpr
+ | @vaargexpr
+ | @vacopyexpr
+ ;
+
+@builtin_op = @var_args_expr
+ | @noopexpr
+ | @offsetofexpr
+ | @intaddrexpr
+ | @hasassignexpr
+ | @hascopyexpr
+ | @hasnothrowassign
+ | @hasnothrowconstr
+ | @hasnothrowcopy
+ | @hastrivialassign
+ | @hastrivialconstr
+ | @hastrivialcopy
+ | @hastrivialdestructor
+ | @hasuserdestr
+ | @hasvirtualdestr
+ | @isabstractexpr
+ | @isbaseofexpr
+ | @isclassexpr
+ | @isconvtoexpr
+ | @isemptyexpr
+ | @isenumexpr
+ | @ispodexpr
+ | @ispolyexpr
+ | @isunionexpr
+ | @typescompexpr
+ | @builtinshufflevector
+ | @builtinconvertvector
+ | @builtinaddressof
+ | @istriviallyconstructibleexpr
+ | @isdestructibleexpr
+ | @isnothrowdestructibleexpr
+ | @istriviallydestructibleexpr
+ | @istriviallyassignableexpr
+ | @isnothrowassignableexpr
+ | @istrivialexpr
+ | @isstandardlayoutexpr
+ | @istriviallycopyableexpr
+ | @isliteraltypeexpr
+ | @hastrivialmoveconstructorexpr
+ | @hastrivialmoveassignexpr
+ | @hasnothrowmoveassignexpr
+ | @isconstructibleexpr
+ | @isnothrowconstructibleexpr
+ | @hasfinalizerexpr
+ | @isdelegateexpr
+ | @isinterfaceclassexpr
+ | @isrefarrayexpr
+ | @isrefclassexpr
+ | @issealedexpr
+ | @issimplevalueclassexpr
+ | @isvalueclassexpr
+ | @isfinalexpr
+ | @builtinchooseexpr
+ | @builtincomplex
+ | @isassignable
+ | @isaggregate
+ | @hasuniqueobjectrepresentations
+ | @builtinbitcast
+ | @builtinshuffle
+ | @issame
+ | @isfunction
+ | @islayoutcompatible
+ | @ispointerinterconvertiblebaseof
+ | @isarray
+ | @arrayrank
+ | @arrayextent
+ | @isarithmetic
+ | @iscompletetype
+ | @iscompound
+ | @isconst
+ | @isfloatingpoint
+ | @isfundamental
+ | @isintegral
+ | @islvaluereference
+ | @ismemberfunctionpointer
+ | @ismemberobjectpointer
+ | @ismemberpointer
+ | @isobject
+ | @ispointer
+ | @isreference
+ | @isrvaluereference
+ | @isscalar
+ | @issigned
+ | @isunsigned
+ | @isvoid
+ | @isvolatile
+ | @istriviallycopyassignable
+ | @isassignablenopreconditioncheck
+ | @referencebindstotemporary
+ | @issameas
+ | @builtinhasattribute
+ | @ispointerinterconvertiblewithclass
+ | @builtinispointerinterconvertiblewithclass
+ | @iscorrespondingmember
+ | @builtiniscorrespondingmember
+ | @isboundedarray
+ | @isunboundedarray
+ | @isreferenceable
+ | @isnothrowconvertible
+ | @referenceconstructsfromtemporary
+ | @referenceconvertsfromtemporary
+ | @isconvertible
+ | @isvalidwinrttype
+ | @iswinclass
+ | @iswininterface
+ ;
+
+new_allocated_type(
+ unique int expr: @new_expr ref,
+ int type_id: @type ref
+);
+
+new_array_allocated_type(
+ unique int expr: @new_array_expr ref,
+ int type_id: @type ref
+);
+
+/**
+ * The field being initialized by an initializer expression within an aggregate
+ * initializer for a class/struct/union. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_field_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int field: @membervariable ref,
+ int position: int ref
+);
+
+/**
+ * The index of the element being initialized by an initializer expression
+ * within an aggregate initializer for an array. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_array_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int element_index: int ref,
+ int position: int ref
+);
+
+@ctorinit = @ctordirectinit
+ | @ctorvirtualinit
+ | @ctorfieldinit
+ | @ctordelegatinginit;
+@dtordestruct = @dtordirectdestruct
+ | @dtorvirtualdestruct
+ | @dtorfielddestruct;
+
+
+condition_decl_bind(
+ unique int expr: @condition_decl ref,
+ unique int decl: @declaration ref
+);
+
+typeid_bind(
+ unique int expr: @type_id ref,
+ int type_id: @type ref
+);
+
+uuidof_bind(
+ unique int expr: @uuidof ref,
+ int type_id: @type ref
+);
+
+@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof;
+
+sizeof_bind(
+ unique int expr: @runtime_sizeof_or_alignof ref,
+ int type_id: @type ref
+);
+
+code_block(
+ unique int block: @literal ref,
+ unique int routine: @function ref
+);
+
+lambdas(
+ unique int expr: @lambdaexpr ref,
+ string default_capture: string ref,
+ boolean has_explicit_return_type: boolean ref
+);
+
+lambda_capture(
+ unique int id: @lambdacapture,
+ int lambda: @lambdaexpr ref,
+ int index: int ref,
+ int field: @membervariable ref,
+ boolean captured_by_reference: boolean ref,
+ boolean is_implicit: boolean ref,
+ int location: @location_default ref
+);
+
+@funbindexpr = @routineexpr
+ | @new_expr
+ | @delete_expr
+ | @delete_array_expr
+ | @ctordirectinit
+ | @ctorvirtualinit
+ | @ctordelegatinginit
+ | @dtordirectdestruct
+ | @dtorvirtualdestruct;
+
+@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct;
+@addressable = @function | @variable ;
+@accessible = @addressable | @enumconstant ;
+
+@access = @varaccess | @routineexpr ;
+
+fold(
+ int expr: @foldexpr ref,
+ string operator: string ref,
+ boolean is_left_fold: boolean ref
+);
+
+stmts(
+ unique int id: @stmt,
+ int kind: int ref,
+ int location: @location_stmt ref
+);
+
+case @stmt.kind of
+ 1 = @stmt_expr
+| 2 = @stmt_if
+| 3 = @stmt_while
+| 4 = @stmt_goto
+| 5 = @stmt_label
+| 6 = @stmt_return
+| 7 = @stmt_block
+| 8 = @stmt_end_test_while // do { ... } while ( ... )
+| 9 = @stmt_for
+| 10 = @stmt_switch_case
+| 11 = @stmt_switch
+| 13 = @stmt_asm // "asm" statement or the body of an asm function
+| 15 = @stmt_try_block
+| 16 = @stmt_microsoft_try // Microsoft
+| 17 = @stmt_decl
+| 18 = @stmt_set_vla_size // C99
+| 19 = @stmt_vla_decl // C99
+| 25 = @stmt_assigned_goto // GNU
+| 26 = @stmt_empty
+| 27 = @stmt_continue
+| 28 = @stmt_break
+| 29 = @stmt_range_based_for // C++11
+// ... 30 @stmt_at_autoreleasepool_block deprecated
+// ... 31 @stmt_objc_for_in deprecated
+// ... 32 @stmt_at_synchronized deprecated
+| 33 = @stmt_handler
+// ... 34 @stmt_finally_end deprecated
+| 35 = @stmt_constexpr_if
+| 37 = @stmt_co_return
+;
+
+type_vla(
+ int type_id: @type ref,
+ int decl: @stmt_vla_decl ref
+);
+
+variable_vla(
+ int var: @variable ref,
+ int decl: @stmt_vla_decl ref
+);
+
+if_initialization(
+ unique int if_stmt: @stmt_if ref,
+ int init_id: @stmt ref
+);
+
+if_then(
+ unique int if_stmt: @stmt_if ref,
+ int then_id: @stmt ref
+);
+
+if_else(
+ unique int if_stmt: @stmt_if ref,
+ int else_id: @stmt ref
+);
+
+constexpr_if_initialization(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int init_id: @stmt ref
+);
+
+constexpr_if_then(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int then_id: @stmt ref
+);
+
+constexpr_if_else(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int else_id: @stmt ref
+);
+
+while_body(
+ unique int while_stmt: @stmt_while ref,
+ int body_id: @stmt ref
+);
+
+do_body(
+ unique int do_stmt: @stmt_end_test_while ref,
+ int body_id: @stmt ref
+);
+
+switch_initialization(
+ unique int switch_stmt: @stmt_switch ref,
+ int init_id: @stmt ref
+);
+
+#keyset[switch_stmt, index]
+switch_case(
+ int switch_stmt: @stmt_switch ref,
+ int index: int ref,
+ int case_id: @stmt_switch_case ref
+);
+
+switch_body(
+ unique int switch_stmt: @stmt_switch ref,
+ int body_id: @stmt ref
+);
+
+@stmt_for_or_range_based_for = @stmt_for
+ | @stmt_range_based_for;
+
+for_initialization(
+ unique int for_stmt: @stmt_for_or_range_based_for ref,
+ int init_id: @stmt ref
+);
+
+for_condition(
+ unique int for_stmt: @stmt_for ref,
+ int condition_id: @expr ref
+);
+
+for_update(
+ unique int for_stmt: @stmt_for ref,
+ int update_id: @expr ref
+);
+
+for_body(
+ unique int for_stmt: @stmt_for ref,
+ int body_id: @stmt ref
+);
+
+@stmtparent = @stmt | @expr_stmt ;
+stmtparents(
+ unique int id: @stmt ref,
+ int index: int ref,
+ int parent: @stmtparent ref
+);
+
+ishandler(unique int block: @stmt_block ref);
+
+@cfgnode = @stmt | @expr | @function | @initialiser ;
+
+stmt_decl_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl: @declaration ref
+);
+
+stmt_decl_entry_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl_entry: @element ref
+);
+
+@functionorblock = @function | @stmt_block;
+
+blockscope(
+ unique int block: @stmt_block ref,
+ int enclosing: @functionorblock ref
+);
+
+@jump = @stmt_goto | @stmt_break | @stmt_continue;
+
+@jumporlabel = @jump | @stmt_label | @literal;
+
+jumpinfo(
+ unique int id: @jumporlabel ref,
+ string str: string ref,
+ int target: @stmt ref
+);
+
+preprocdirects(
+ unique int id: @preprocdirect,
+ int kind: int ref,
+ int location: @location_default ref
+);
+case @preprocdirect.kind of
+ 0 = @ppd_if
+| 1 = @ppd_ifdef
+| 2 = @ppd_ifndef
+| 3 = @ppd_elif
+| 4 = @ppd_else
+| 5 = @ppd_endif
+| 6 = @ppd_plain_include
+| 7 = @ppd_define
+| 8 = @ppd_undef
+| 9 = @ppd_line
+| 10 = @ppd_error
+| 11 = @ppd_pragma
+| 12 = @ppd_objc_import
+| 13 = @ppd_include_next
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif;
+
+preprocpair(
+ int begin : @ppd_branch ref,
+ int elseelifend : @preprocdirect ref
+);
+
+preproctrue(int branch : @ppd_branch ref);
+preprocfalse(int branch : @ppd_branch ref);
+
+preproctext(
+ unique int id: @preprocdirect ref,
+ string head: string ref,
+ string body: string ref
+);
+
+includes(
+ unique int id: @ppd_include ref,
+ int included: @file ref
+);
+
+link_targets(
+ int id: @link_target,
+ int binary: @file ref
+);
+
+link_parent(
+ int element : @element ref,
+ int link_target : @link_target ref
+);
+
+/* XML Files */
+
+xmlEncoding(unique int id: @file ref, string encoding: string ref);
+
+xmlDTDs(
+ unique int id: @xmldtd,
+ string root: string ref,
+ string publicId: string ref,
+ string systemId: string ref,
+ int fileid: @file ref
+);
+
+xmlElements(
+ unique int id: @xmlelement,
+ string name: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlAttrs(
+ unique int id: @xmlattribute,
+ int elementid: @xmlelement ref,
+ string name: string ref,
+ string value: string ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlNs(
+ int id: @xmlnamespace,
+ string prefixName: string ref,
+ string URI: string ref,
+ int fileid: @file ref
+);
+
+xmlHasNs(
+ int elementId: @xmlnamespaceable ref,
+ int nsId: @xmlnamespace ref,
+ int fileid: @file ref
+);
+
+xmlComments(
+ unique int id: @xmlcomment,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int fileid: @file ref
+);
+
+xmlChars(
+ unique int id: @xmlcharacters,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int isCDATA: int ref,
+ int fileid: @file ref
+);
+
+@xmlparent = @file | @xmlelement;
+@xmlnamespaceable = @xmlelement | @xmlattribute;
+
+xmllocations(
+ int xmlElement: @xmllocatable ref,
+ int location: @location_default ref
+);
+
+@xmllocatable = @xmlcharacters
+ | @xmlelement
+ | @xmlcomment
+ | @xmlattribute
+ | @xmldtd
+ | @file
+ | @xmlnamespace;
diff --git a/cpp/ql/lib/upgrades/3d35dd6b50edfc540c14c6757e0c7b3c5b7b04dd/semmlecode.cpp.dbscheme b/cpp/ql/lib/upgrades/3d35dd6b50edfc540c14c6757e0c7b3c5b7b04dd/semmlecode.cpp.dbscheme
new file mode 100644
index 0000000000000..25e365d1e8147
--- /dev/null
+++ b/cpp/ql/lib/upgrades/3d35dd6b50edfc540c14c6757e0c7b3c5b7b04dd/semmlecode.cpp.dbscheme
@@ -0,0 +1,2296 @@
+
+/**
+ * An invocation of the compiler. Note that more than one file may be
+ * compiled per invocation. For example, this command compiles three
+ * source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * The `id` simply identifies the invocation, while `cwd` is the working
+ * directory from which the compiler was invoked.
+ */
+compilations(
+ /**
+ * An invocation of the compiler. Note that more than one file may
+ * be compiled per invocation. For example, this command compiles
+ * three source files:
+ *
+ * gcc -c f1.c f2.c f3.c
+ */
+ unique int id : @compilation,
+ string cwd : string ref
+);
+
+/**
+ * The arguments that were passed to the extractor for a compiler
+ * invocation. If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then typically there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | *path to extractor*
+ * 1 | `--mimic`
+ * 2 | `/usr/bin/gcc`
+ * 3 | `-c`
+ * 4 | f1.c
+ * 5 | f2.c
+ * 6 | f3.c
+ */
+#keyset[id, num]
+compilation_args(
+ int id : @compilation ref,
+ int num : int ref,
+ string arg : string ref
+);
+
+/**
+ * The source files that are compiled by a compiler invocation.
+ * If `id` is for the compiler invocation
+ *
+ * gcc -c f1.c f2.c f3.c
+ *
+ * then there will be rows for
+ *
+ * num | arg
+ * --- | ---
+ * 0 | f1.c
+ * 1 | f2.c
+ * 2 | f3.c
+ *
+ * Note that even if those files `#include` headers, those headers
+ * do not appear as rows.
+ */
+#keyset[id, num]
+compilation_compiling_files(
+ int id : @compilation ref,
+ int num : int ref,
+ int file : @file ref
+);
+
+/**
+ * The time taken by the extractor for a compiler invocation.
+ *
+ * For each file `num`, there will be rows for
+ *
+ * kind | seconds
+ * ---- | ---
+ * 1 | CPU seconds used by the extractor frontend
+ * 2 | Elapsed seconds during the extractor frontend
+ * 3 | CPU seconds used by the extractor backend
+ * 4 | Elapsed seconds during the extractor backend
+ */
+#keyset[id, num, kind]
+compilation_time(
+ int id : @compilation ref,
+ int num : int ref,
+ /* kind:
+ 1 = frontend_cpu_seconds
+ 2 = frontend_elapsed_seconds
+ 3 = extractor_cpu_seconds
+ 4 = extractor_elapsed_seconds
+ */
+ int kind : int ref,
+ float seconds : float ref
+);
+
+/**
+ * An error or warning generated by the extractor.
+ * The diagnostic message `diagnostic` was generated during compiler
+ * invocation `compilation`, and is the `file_number_diagnostic_number`th
+ * message generated while extracting the `file_number`th file of that
+ * invocation.
+ */
+#keyset[compilation, file_number, file_number_diagnostic_number]
+diagnostic_for(
+ int diagnostic : @diagnostic ref,
+ int compilation : @compilation ref,
+ int file_number : int ref,
+ int file_number_diagnostic_number : int ref
+);
+
+/**
+ * If extraction was successful, then `cpu_seconds` and
+ * `elapsed_seconds` are the CPU time and elapsed time (respectively)
+ * that extraction took for compiler invocation `id`.
+ */
+compilation_finished(
+ unique int id : @compilation ref,
+ float cpu_seconds : float ref,
+ float elapsed_seconds : float ref
+);
+
+
+/**
+ * External data, loaded from CSV files during snapshot creation. See
+ * [Tutorial: Incorporating external data](https://help.semmle.com/wiki/display/SD/Tutorial%3A+Incorporating+external+data)
+ * for more information.
+ */
+externalData(
+ int id : @externalDataElement,
+ string path : string ref,
+ int column: int ref,
+ string value : string ref
+);
+
+/**
+ * The source location of the snapshot.
+ */
+sourceLocationPrefix(string prefix : string ref);
+
+/**
+ * Information about packages that provide code used during compilation.
+ * The `id` is just a unique identifier.
+ * The `namespace` is typically the name of the package manager that
+ * provided the package (e.g. "dpkg" or "yum").
+ * The `package_name` is the name of the package, and `version` is its
+ * version (as a string).
+ */
+external_packages(
+ unique int id: @external_package,
+ string namespace : string ref,
+ string package_name : string ref,
+ string version : string ref
+);
+
+/**
+ * Holds if File `fileid` was provided by package `package`.
+ */
+header_to_external_package(
+ int fileid : @file ref,
+ int package : @external_package ref
+);
+
+/*
+ * Version history
+ */
+
+svnentries(
+ unique int id : @svnentry,
+ string revision : string ref,
+ string author : string ref,
+ date revisionDate : date ref,
+ int changeSize : int ref
+)
+
+svnaffectedfiles(
+ int id : @svnentry ref,
+ int file : @file ref,
+ string action : string ref
+)
+
+svnentrymsg(
+ unique int id : @svnentry ref,
+ string message : string ref
+)
+
+svnchurn(
+ int commit : @svnentry ref,
+ int file : @file ref,
+ int addedLines : int ref,
+ int deletedLines : int ref
+)
+
+/*
+ * C++ dbscheme
+ */
+
+extractor_version(
+ string codeql_version: string ref,
+ string frontend_version: string ref
+)
+
+@location = @location_stmt | @location_expr | @location_default ;
+
+/**
+ * The location of an element that is not an expression or a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_default(
+ /** The location of an element that is not an expression or a statement. */
+ unique int id: @location_default,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of a statement.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_stmt(
+ /** The location of a statement. */
+ unique int id: @location_stmt,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/**
+ * The location of an expression.
+ * The location spans column `startcolumn` of line `startline` to
+ * column `endcolumn` of line `endline` in file `file`.
+ * For more information, see
+ * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/).
+ */
+locations_expr(
+ /** The location of an expression. */
+ unique int id: @location_expr,
+ int container: @container ref,
+ int startLine: int ref,
+ int startColumn: int ref,
+ int endLine: int ref,
+ int endColumn: int ref
+);
+
+/** An element for which line-count information is available. */
+@sourceline = @file | @function | @variable | @enumconstant | @xmllocatable;
+
+numlines(
+ int element_id: @sourceline ref,
+ int num_lines: int ref,
+ int num_code: int ref,
+ int num_comment: int ref
+);
+
+diagnostics(
+ unique int id: @diagnostic,
+ int severity: int ref,
+ string error_tag: string ref,
+ string error_message: string ref,
+ string full_error_message: string ref,
+ int location: @location_default ref
+);
+
+files(
+ unique int id: @file,
+ string name: string ref
+);
+
+folders(
+ unique int id: @folder,
+ string name: string ref
+);
+
+@container = @folder | @file
+
+containerparent(
+ int parent: @container ref,
+ unique int child: @container ref
+);
+
+fileannotations(
+ int id: @file ref,
+ int kind: int ref,
+ string name: string ref,
+ string value: string ref
+);
+
+inmacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+affectedbymacroexpansion(
+ int id: @element ref,
+ int inv: @macroinvocation ref
+);
+
+case @macroinvocation.kind of
+ 1 = @macro_expansion
+| 2 = @other_macro_reference
+;
+
+macroinvocations(
+ unique int id: @macroinvocation,
+ int macro_id: @ppd_define ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+macroparent(
+ unique int id: @macroinvocation ref,
+ int parent_id: @macroinvocation ref
+);
+
+// a macroinvocation may be part of another location
+// the way to find a constant expression that uses a macro
+// is thus to find a constant expression that has a location
+// to which a macro invocation is bound
+macrolocationbind(
+ int id: @macroinvocation ref,
+ int location: @location ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_unexpanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+#keyset[invocation, argument_index]
+macro_argument_expanded(
+ int invocation: @macroinvocation ref,
+ int argument_index: int ref,
+ string text: string ref
+);
+
+/*
+case @function.kind of
+ 1 = @normal_function
+| 2 = @constructor
+| 3 = @destructor
+| 4 = @conversion_function
+| 5 = @operator
+| 6 = @builtin_function // GCC built-in functions, e.g. __builtin___memcpy_chk
+| 7 = @user_defined_literal
+| 8 = @deduction_guide
+;
+*/
+
+functions(
+ unique int id: @function,
+ string name: string ref,
+ int kind: int ref
+);
+
+function_entry_point(
+ int id: @function ref,
+ unique int entry_point: @stmt ref
+);
+
+function_return_type(
+ int id: @function ref,
+ int return_type: @type ref
+);
+
+/**
+ * If `function` is a coroutine, then this gives the `std::experimental::resumable_traits`
+ * instance associated with it, and the variables representing the `handle` and `promise`
+ * for it.
+ */
+coroutine(
+ unique int function: @function ref,
+ int traits: @type ref,
+ int handle: @variable ref,
+ int promise: @variable ref
+);
+
+/** The `new` function used for allocating the coroutine state, if any. */
+coroutine_new(
+ unique int function: @function ref,
+ int new: @function ref
+);
+
+/** The `delete` function used for deallocating the coroutine state, if any. */
+coroutine_delete(
+ unique int function: @function ref,
+ int delete: @function ref
+);
+
+purefunctions(unique int id: @function ref);
+
+function_deleted(unique int id: @function ref);
+
+function_defaulted(unique int id: @function ref);
+
+function_prototyped(unique int id: @function ref)
+
+member_function_this_type(
+ unique int id: @function ref,
+ int this_type: @type ref
+);
+
+#keyset[id, type_id]
+fun_decls(
+ int id: @fun_decl,
+ int function: @function ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+fun_def(unique int id: @fun_decl ref);
+fun_specialized(unique int id: @fun_decl ref);
+fun_implicit(unique int id: @fun_decl ref);
+fun_decl_specifiers(
+ int id: @fun_decl ref,
+ string name: string ref
+)
+#keyset[fun_decl, index]
+fun_decl_throws(
+ int fun_decl: @fun_decl ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+/* an empty throw specification is different from none */
+fun_decl_empty_throws(unique int fun_decl: @fun_decl ref);
+fun_decl_noexcept(
+ int fun_decl: @fun_decl ref,
+ int constant: @expr ref
+);
+fun_decl_empty_noexcept(int fun_decl: @fun_decl ref);
+fun_decl_typedef_type(
+ unique int fun_decl: @fun_decl ref,
+ int typedeftype_id: @usertype ref
+);
+
+param_decl_bind(
+ unique int id: @var_decl ref,
+ int index: int ref,
+ int fun_decl: @fun_decl ref
+);
+
+#keyset[id, type_id]
+var_decls(
+ int id: @var_decl,
+ int variable: @variable ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+var_def(unique int id: @var_decl ref);
+var_decl_specifiers(
+ int id: @var_decl ref,
+ string name: string ref
+)
+is_structured_binding(unique int id: @variable ref);
+
+type_decls(
+ unique int id: @type_decl,
+ int type_id: @type ref,
+ int location: @location_default ref
+);
+type_def(unique int id: @type_decl ref);
+type_decl_top(
+ unique int type_decl: @type_decl ref
+);
+
+namespace_decls(
+ unique int id: @namespace_decl,
+ int namespace_id: @namespace ref,
+ int location: @location_default ref,
+ int bodylocation: @location_default ref
+);
+
+case @using.kind of
+ 1 = @using_declaration
+| 2 = @using_directive
+| 3 = @using_enum_declaration
+;
+
+usings(
+ unique int id: @using,
+ int element_id: @element ref,
+ int location: @location_default ref,
+ int kind: int ref
+);
+
+/** The element which contains the `using` declaration. */
+using_container(
+ int parent: @element ref,
+ int child: @using ref
+);
+
+static_asserts(
+ unique int id: @static_assert,
+ int condition : @expr ref,
+ string message : string ref,
+ int location: @location_default ref,
+ int enclosing : @element ref
+);
+
+// each function has an ordered list of parameters
+#keyset[id, type_id]
+#keyset[function, index, type_id]
+params(
+ int id: @parameter,
+ int function: @functionorblock ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+overrides(
+ int new: @function ref,
+ int old: @function ref
+);
+
+#keyset[id, type_id]
+membervariables(
+ int id: @membervariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+globalvariables(
+ int id: @globalvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+#keyset[id, type_id]
+localvariables(
+ int id: @localvariable,
+ int type_id: @type ref,
+ string name: string ref
+);
+
+autoderivation(
+ unique int var: @variable ref,
+ int derivation_type: @type ref
+);
+
+orphaned_variables(
+ int var: @localvariable ref,
+ int function: @function ref
+)
+
+enumconstants(
+ unique int id: @enumconstant,
+ int parent: @usertype ref,
+ int index: int ref,
+ int type_id: @type ref,
+ string name: string ref,
+ int location: @location_default ref
+);
+
+@variable = @localscopevariable | @globalvariable | @membervariable;
+
+@localscopevariable = @localvariable | @parameter;
+
+/**
+ * Built-in types are the fundamental types, e.g., integral, floating, and void.
+ */
+case @builtintype.kind of
+ 1 = @errortype
+| 2 = @unknowntype
+| 3 = @void
+| 4 = @boolean
+| 5 = @char
+| 6 = @unsigned_char
+| 7 = @signed_char
+| 8 = @short
+| 9 = @unsigned_short
+| 10 = @signed_short
+| 11 = @int
+| 12 = @unsigned_int
+| 13 = @signed_int
+| 14 = @long
+| 15 = @unsigned_long
+| 16 = @signed_long
+| 17 = @long_long
+| 18 = @unsigned_long_long
+| 19 = @signed_long_long
+// ... 20 Microsoft-specific __int8
+// ... 21 Microsoft-specific __int16
+// ... 22 Microsoft-specific __int32
+// ... 23 Microsoft-specific __int64
+| 24 = @float
+| 25 = @double
+| 26 = @long_double
+| 27 = @complex_float // C99-specific _Complex float
+| 28 = @complex_double // C99-specific _Complex double
+| 29 = @complex_long_double // C99-specific _Complex long double
+| 30 = @imaginary_float // C99-specific _Imaginary float
+| 31 = @imaginary_double // C99-specific _Imaginary double
+| 32 = @imaginary_long_double // C99-specific _Imaginary long double
+| 33 = @wchar_t // Microsoft-specific
+| 34 = @decltype_nullptr // C++11
+| 35 = @int128 // __int128
+| 36 = @unsigned_int128 // unsigned __int128
+| 37 = @signed_int128 // signed __int128
+| 38 = @float128 // __float128
+| 39 = @complex_float128 // _Complex __float128
+| 40 = @decimal32 // _Decimal32
+| 41 = @decimal64 // _Decimal64
+| 42 = @decimal128 // _Decimal128
+| 43 = @char16_t
+| 44 = @char32_t
+| 45 = @std_float32 // _Float32
+| 46 = @float32x // _Float32x
+| 47 = @std_float64 // _Float64
+| 48 = @float64x // _Float64x
+| 49 = @std_float128 // _Float128
+// ... 50 _Float128x
+| 51 = @char8_t
+| 52 = @float16 // _Float16
+| 53 = @complex_float16 // _Complex _Float16
+| 54 = @fp16 // __fp16
+| 55 = @std_bfloat16 // __bf16
+| 56 = @std_float16 // std::float16_t
+| 57 = @complex_std_float32 // _Complex _Float32
+| 58 = @complex_float32x // _Complex _Float32x
+| 59 = @complex_std_float64 // _Complex _Float64
+| 60 = @complex_float64x // _Complex _Float64x
+| 61 = @complex_std_float128 // _Complex _Float128
+;
+
+builtintypes(
+ unique int id: @builtintype,
+ string name: string ref,
+ int kind: int ref,
+ int size: int ref,
+ int sign: int ref,
+ int alignment: int ref
+);
+
+/**
+ * Derived types are types that are directly derived from existing types and
+ * point to, refer to, transform type data to return a new type.
+ */
+case @derivedtype.kind of
+ 1 = @pointer
+| 2 = @reference
+| 3 = @type_with_specifiers
+| 4 = @array
+| 5 = @gnu_vector
+| 6 = @routineptr
+| 7 = @routinereference
+| 8 = @rvalue_reference // C++11
+// ... 9 type_conforming_to_protocols deprecated
+| 10 = @block
+;
+
+derivedtypes(
+ unique int id: @derivedtype,
+ string name: string ref,
+ int kind: int ref,
+ int type_id: @type ref
+);
+
+pointerishsize(unique int id: @derivedtype ref,
+ int size: int ref,
+ int alignment: int ref);
+
+arraysizes(
+ unique int id: @derivedtype ref,
+ int num_elements: int ref,
+ int bytesize: int ref,
+ int alignment: int ref
+);
+
+typedefbase(
+ unique int id: @usertype ref,
+ int type_id: @type ref
+);
+
+/**
+ * An instance of the C++11 `decltype` operator. For example:
+ * ```
+ * int a;
+ * decltype(1+a) b;
+ * ```
+ * Here `expr` is `1+a`.
+ *
+ * Sometimes an additional pair of parentheses around the expression
+ * would change the semantics of this decltype, e.g.
+ * ```
+ * struct A { double x; };
+ * const A* a = new A();
+ * decltype( a->x ); // type is double
+ * decltype((a->x)); // type is const double&
+ * ```
+ * (Please consult the C++11 standard for more details).
+ * `parentheses_would_change_meaning` is `true` iff that is the case.
+ */
+#keyset[id, expr]
+decltypes(
+ int id: @decltype,
+ int expr: @expr ref,
+ int base_type: @type ref,
+ boolean parentheses_would_change_meaning: boolean ref
+);
+
+/*
+case @usertype.kind of
+ 1 = @struct
+| 2 = @class
+| 3 = @union
+| 4 = @enum
+| 5 = @typedef // classic C: typedef typedef type name
+| 6 = @template
+| 7 = @template_parameter
+| 8 = @template_template_parameter
+| 9 = @proxy_class // a proxy class associated with a template parameter
+// ... 10 objc_class deprecated
+// ... 11 objc_protocol deprecated
+// ... 12 objc_category deprecated
+| 13 = @scoped_enum
+| 14 = @using_alias // a using name = type style typedef
+;
+*/
+
+usertypes(
+ unique int id: @usertype,
+ string name: string ref,
+ int kind: int ref
+);
+
+usertypesize(
+ unique int id: @usertype ref,
+ int size: int ref,
+ int alignment: int ref
+);
+
+usertype_final(unique int id: @usertype ref);
+
+usertype_uuid(
+ unique int id: @usertype ref,
+ string uuid: string ref
+);
+
+mangled_name(
+ unique int id: @declaration ref,
+ int mangled_name : @mangledname,
+ boolean is_complete: boolean ref
+);
+
+is_pod_class(unique int id: @usertype ref);
+is_standard_layout_class(unique int id: @usertype ref);
+
+is_complete(unique int id: @usertype ref);
+
+is_class_template(unique int id: @usertype ref);
+class_instantiation(
+ int to: @usertype ref,
+ int from: @usertype ref
+);
+class_template_argument(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+class_template_argument_value(
+ int type_id: @usertype ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_proxy_class_for(
+ unique int id: @usertype ref,
+ unique int templ_param_id: @usertype ref
+);
+
+type_mentions(
+ unique int id: @type_mention,
+ int type_id: @type ref,
+ int location: @location ref,
+ // a_symbol_reference_kind from the frontend.
+ int kind: int ref
+);
+
+is_function_template(unique int id: @function ref);
+function_instantiation(
+ unique int to: @function ref,
+ int from: @function ref
+);
+function_template_argument(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+function_template_argument_value(
+ int function_id: @function ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+is_variable_template(unique int id: @variable ref);
+variable_instantiation(
+ unique int to: @variable ref,
+ int from: @variable ref
+);
+variable_template_argument(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_type: @type ref
+);
+variable_template_argument_value(
+ int variable_id: @variable ref,
+ int index: int ref,
+ int arg_value: @expr ref
+);
+
+/*
+ Fixed point types
+ precision(1) = short, precision(2) = default, precision(3) = long
+ is_unsigned(1) = unsigned is_unsigned(2) = signed
+ is_fract_type(1) = declared with _Fract
+ saturating(1) = declared with _Sat
+*/
+/* TODO
+fixedpointtypes(
+ unique int id: @fixedpointtype,
+ int precision: int ref,
+ int is_unsigned: int ref,
+ int is_fract_type: int ref,
+ int saturating: int ref);
+*/
+
+routinetypes(
+ unique int id: @routinetype,
+ int return_type: @type ref
+);
+
+routinetypeargs(
+ int routine: @routinetype ref,
+ int index: int ref,
+ int type_id: @type ref
+);
+
+ptrtomembers(
+ unique int id: @ptrtomember,
+ int type_id: @type ref,
+ int class_id: @type ref
+);
+
+/*
+ specifiers for types, functions, and variables
+
+ "public",
+ "protected",
+ "private",
+
+ "const",
+ "volatile",
+ "static",
+
+ "pure",
+ "virtual",
+ "sealed", // Microsoft
+ "__interface", // Microsoft
+ "inline",
+ "explicit",
+
+ "near", // near far extension
+ "far", // near far extension
+ "__ptr32", // Microsoft
+ "__ptr64", // Microsoft
+ "__sptr", // Microsoft
+ "__uptr", // Microsoft
+ "dllimport", // Microsoft
+ "dllexport", // Microsoft
+ "thread", // Microsoft
+ "naked", // Microsoft
+ "microsoft_inline", // Microsoft
+ "forceinline", // Microsoft
+ "selectany", // Microsoft
+ "nothrow", // Microsoft
+ "novtable", // Microsoft
+ "noreturn", // Microsoft
+ "noinline", // Microsoft
+ "noalias", // Microsoft
+ "restrict", // Microsoft
+*/
+
+specifiers(
+ unique int id: @specifier,
+ unique string str: string ref
+);
+
+typespecifiers(
+ int type_id: @type ref,
+ int spec_id: @specifier ref
+);
+
+funspecifiers(
+ int func_id: @function ref,
+ int spec_id: @specifier ref
+);
+
+varspecifiers(
+ int var_id: @accessible ref,
+ int spec_id: @specifier ref
+);
+
+attributes(
+ unique int id: @attribute,
+ int kind: int ref,
+ string name: string ref,
+ string name_space: string ref,
+ int location: @location_default ref
+);
+
+case @attribute.kind of
+ 0 = @gnuattribute
+| 1 = @stdattribute
+| 2 = @declspec
+| 3 = @msattribute
+| 4 = @alignas
+// ... 5 @objc_propertyattribute deprecated
+;
+
+attribute_args(
+ unique int id: @attribute_arg,
+ int kind: int ref,
+ int attribute: @attribute ref,
+ int index: int ref,
+ int location: @location_default ref
+);
+
+case @attribute_arg.kind of
+ 0 = @attribute_arg_empty
+| 1 = @attribute_arg_token
+| 2 = @attribute_arg_constant
+| 3 = @attribute_arg_type
+| 4 = @attribute_arg_constant_expr
+| 5 = @attribute_arg_expr
+;
+
+attribute_arg_value(
+ unique int arg: @attribute_arg ref,
+ string value: string ref
+);
+attribute_arg_type(
+ unique int arg: @attribute_arg ref,
+ int type_id: @type ref
+);
+attribute_arg_constant(
+ unique int arg: @attribute_arg ref,
+ int constant: @expr ref
+)
+attribute_arg_expr(
+ unique int arg: @attribute_arg ref,
+ int expr: @expr ref
+)
+attribute_arg_name(
+ unique int arg: @attribute_arg ref,
+ string name: string ref
+);
+
+typeattributes(
+ int type_id: @type ref,
+ int spec_id: @attribute ref
+);
+
+funcattributes(
+ int func_id: @function ref,
+ int spec_id: @attribute ref
+);
+
+varattributes(
+ int var_id: @accessible ref,
+ int spec_id: @attribute ref
+);
+
+stmtattributes(
+ int stmt_id: @stmt ref,
+ int spec_id: @attribute ref
+);
+
+@type = @builtintype
+ | @derivedtype
+ | @usertype
+ /* TODO | @fixedpointtype */
+ | @routinetype
+ | @ptrtomember
+ | @decltype;
+
+unspecifiedtype(
+ unique int type_id: @type ref,
+ int unspecified_type_id: @type ref
+);
+
+member(
+ int parent: @type ref,
+ int index: int ref,
+ int child: @member ref
+);
+
+@enclosingfunction_child = @usertype | @variable | @namespace
+
+enclosingfunction(
+ unique int child: @enclosingfunction_child ref,
+ int parent: @function ref
+);
+
+derivations(
+ unique int derivation: @derivation,
+ int sub: @type ref,
+ int index: int ref,
+ int super: @type ref,
+ int location: @location_default ref
+);
+
+derspecifiers(
+ int der_id: @derivation ref,
+ int spec_id: @specifier ref
+);
+
+/**
+ * Contains the byte offset of the base class subobject within the derived
+ * class. Only holds for non-virtual base classes, but see table
+ * `virtual_base_offsets` for offsets of virtual base class subobjects.
+ */
+direct_base_offsets(
+ unique int der_id: @derivation ref,
+ int offset: int ref
+);
+
+/**
+ * Contains the byte offset of the virtual base class subobject for class
+ * `super` within a most-derived object of class `sub`. `super` can be either a
+ * direct or indirect base class.
+ */
+#keyset[sub, super]
+virtual_base_offsets(
+ int sub: @usertype ref,
+ int super: @usertype ref,
+ int offset: int ref
+);
+
+frienddecls(
+ unique int id: @frienddecl,
+ int type_id: @type ref,
+ int decl_id: @declaration ref,
+ int location: @location_default ref
+);
+
+@declaredtype = @usertype ;
+
+@declaration = @function
+ | @declaredtype
+ | @variable
+ | @enumconstant
+ | @frienddecl;
+
+@member = @membervariable
+ | @function
+ | @declaredtype
+ | @enumconstant;
+
+@locatable = @diagnostic
+ | @declaration
+ | @ppd_include
+ | @ppd_define
+ | @macroinvocation
+ /*| @funcall*/
+ | @xmllocatable
+ | @attribute
+ | @attribute_arg;
+
+@namedscope = @namespace | @usertype;
+
+@element = @locatable
+ | @file
+ | @folder
+ | @specifier
+ | @type
+ | @expr
+ | @namespace
+ | @initialiser
+ | @stmt
+ | @derivation
+ | @comment
+ | @preprocdirect
+ | @fun_decl
+ | @var_decl
+ | @type_decl
+ | @namespace_decl
+ | @using
+ | @namequalifier
+ | @specialnamequalifyingelement
+ | @static_assert
+ | @type_mention
+ | @lambdacapture;
+
+@exprparent = @element;
+
+comments(
+ unique int id: @comment,
+ string contents: string ref,
+ int location: @location_default ref
+);
+
+commentbinding(
+ int id: @comment ref,
+ int element: @element ref
+);
+
+exprconv(
+ int converted: @expr ref,
+ unique int conversion: @expr ref
+);
+
+compgenerated(unique int id: @element ref);
+
+/**
+ * `destructor_call` destructs the `i`'th entity that should be
+ * destructed following `element`. Note that entities should be
+ * destructed in reverse construction order, so for a given `element`
+ * these should be called from highest to lowest `i`.
+ */
+#keyset[element, destructor_call]
+#keyset[element, i]
+synthetic_destructor_call(
+ int element: @element ref,
+ int i: int ref,
+ int destructor_call: @routineexpr ref
+);
+
+namespaces(
+ unique int id: @namespace,
+ string name: string ref
+);
+
+namespace_inline(
+ unique int id: @namespace ref
+);
+
+namespacembrs(
+ int parentid: @namespace ref,
+ unique int memberid: @namespacembr ref
+);
+
+@namespacembr = @declaration | @namespace;
+
+exprparents(
+ int expr_id: @expr ref,
+ int child_index: int ref,
+ int parent_id: @exprparent ref
+);
+
+expr_isload(unique int expr_id: @expr ref);
+
+@cast = @c_style_cast
+ | @const_cast
+ | @dynamic_cast
+ | @reinterpret_cast
+ | @static_cast
+ ;
+
+/*
+case @conversion.kind of
+ 0 = @simple_conversion // a numeric conversion, qualification conversion, or a reinterpret_cast
+| 1 = @bool_conversion // conversion to 'bool'
+| 2 = @base_class_conversion // a derived-to-base conversion
+| 3 = @derived_class_conversion // a base-to-derived conversion
+| 4 = @pm_base_class_conversion // a derived-to-base conversion of a pointer to member
+| 5 = @pm_derived_class_conversion // a base-to-derived conversion of a pointer to member
+| 6 = @glvalue_adjust // an adjustment of the type of a glvalue
+| 7 = @prvalue_adjust // an adjustment of the type of a prvalue
+;
+*/
+/**
+ * Describes the semantics represented by a cast expression. This is largely
+ * independent of the source syntax of the cast, so it is separate from the
+ * regular expression kind.
+ */
+conversionkinds(
+ unique int expr_id: @cast ref,
+ int kind: int ref
+);
+
+@conversion = @cast
+ | @array_to_pointer
+ | @parexpr
+ | @reference_to
+ | @ref_indirect
+ | @temp_init
+ ;
+
+/*
+case @funbindexpr.kind of
+ 0 = @normal_call // a normal call
+| 1 = @virtual_call // a virtual call
+| 2 = @adl_call // a call whose target is only found by ADL
+;
+*/
+iscall(
+ unique int caller: @funbindexpr ref,
+ int kind: int ref
+);
+
+numtemplatearguments(
+ unique int expr_id: @expr ref,
+ int num: int ref
+);
+
+specialnamequalifyingelements(
+ unique int id: @specialnamequalifyingelement,
+ unique string name: string ref
+);
+
+@namequalifiableelement = @expr | @namequalifier;
+@namequalifyingelement = @namespace
+ | @specialnamequalifyingelement
+ | @usertype;
+
+namequalifiers(
+ unique int id: @namequalifier,
+ unique int qualifiableelement: @namequalifiableelement ref,
+ int qualifyingelement: @namequalifyingelement ref,
+ int location: @location_default ref
+);
+
+varbind(
+ int expr: @varbindexpr ref,
+ int var: @accessible ref
+);
+
+funbind(
+ int expr: @funbindexpr ref,
+ int fun: @function ref
+);
+
+@any_new_expr = @new_expr
+ | @new_array_expr;
+
+@new_or_delete_expr = @any_new_expr
+ | @delete_expr
+ | @delete_array_expr;
+
+@prefix_crement_expr = @preincrexpr | @predecrexpr;
+
+@postfix_crement_expr = @postincrexpr | @postdecrexpr;
+
+@increment_expr = @preincrexpr | @postincrexpr;
+
+@decrement_expr = @predecrexpr | @postdecrexpr;
+
+@crement_expr = @increment_expr | @decrement_expr;
+
+@un_arith_op_expr = @arithnegexpr
+ | @unaryplusexpr
+ | @conjugation
+ | @realpartexpr
+ | @imagpartexpr
+ | @crement_expr
+ ;
+
+@un_bitwise_op_expr = @complementexpr;
+
+@un_log_op_expr = @notexpr;
+
+@un_op_expr = @address_of
+ | @indirect
+ | @un_arith_op_expr
+ | @un_bitwise_op_expr
+ | @builtinaddressof
+ | @vec_fill
+ | @un_log_op_expr
+ | @co_await
+ | @co_yield
+ ;
+
+@bin_log_op_expr = @andlogicalexpr | @orlogicalexpr;
+
+@cmp_op_expr = @eq_op_expr | @rel_op_expr;
+
+@eq_op_expr = @eqexpr | @neexpr;
+
+@rel_op_expr = @gtexpr
+ | @ltexpr
+ | @geexpr
+ | @leexpr
+ | @spaceshipexpr
+ ;
+
+@bin_bitwise_op_expr = @lshiftexpr
+ | @rshiftexpr
+ | @andexpr
+ | @orexpr
+ | @xorexpr
+ ;
+
+@p_arith_op_expr = @paddexpr
+ | @psubexpr
+ | @pdiffexpr
+ ;
+
+@bin_arith_op_expr = @addexpr
+ | @subexpr
+ | @mulexpr
+ | @divexpr
+ | @remexpr
+ | @jmulexpr
+ | @jdivexpr
+ | @fjaddexpr
+ | @jfaddexpr
+ | @fjsubexpr
+ | @jfsubexpr
+ | @minexpr
+ | @maxexpr
+ | @p_arith_op_expr
+ ;
+
+@bin_op_expr = @bin_arith_op_expr
+ | @bin_bitwise_op_expr
+ | @cmp_op_expr
+ | @bin_log_op_expr
+ ;
+
+@op_expr = @un_op_expr
+ | @bin_op_expr
+ | @assign_expr
+ | @conditionalexpr
+ ;
+
+@assign_arith_expr = @assignaddexpr
+ | @assignsubexpr
+ | @assignmulexpr
+ | @assigndivexpr
+ | @assignremexpr
+ ;
+
+@assign_bitwise_expr = @assignandexpr
+ | @assignorexpr
+ | @assignxorexpr
+ | @assignlshiftexpr
+ | @assignrshiftexpr
+ ;
+
+@assign_pointer_expr = @assignpaddexpr
+ | @assignpsubexpr
+ ;
+
+@assign_op_expr = @assign_arith_expr
+ | @assign_bitwise_expr
+ | @assign_pointer_expr
+ ;
+
+@assign_expr = @assignexpr | @assign_op_expr | @blockassignexpr
+
+/*
+ case @allocator.form of
+ 0 = plain
+ | 1 = alignment
+ ;
+*/
+
+/**
+ * The allocator function associated with a `new` or `new[]` expression.
+ * The `form` column specified whether the allocation call contains an alignment
+ * argument.
+ */
+expr_allocator(
+ unique int expr: @any_new_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/*
+ case @deallocator.form of
+ 0 = plain
+ | 1 = size
+ | 2 = alignment
+ | 3 = size_and_alignment
+ ;
+*/
+
+/**
+ * The deallocator function associated with a `delete`, `delete[]`, `new`, or
+ * `new[]` expression. For a `new` or `new[]` expression, the deallocator is the
+ * one used to free memory if the initialization throws an exception.
+ * The `form` column specifies whether the deallocation call contains a size
+ * argument, and alignment argument, or both.
+ */
+expr_deallocator(
+ unique int expr: @new_or_delete_expr ref,
+ int func: @function ref,
+ int form: int ref
+);
+
+/**
+ * Holds if the `@conditionalexpr` is of the two operand form
+ * `guard ? : false`.
+ */
+expr_cond_two_operand(
+ unique int cond: @conditionalexpr ref
+);
+
+/**
+ * The guard of `@conditionalexpr` `guard ? true : false`
+ */
+expr_cond_guard(
+ unique int cond: @conditionalexpr ref,
+ int guard: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` holds. For the two operand form
+ * `guard ?: false` consider using `expr_cond_guard` instead.
+ */
+expr_cond_true(
+ unique int cond: @conditionalexpr ref,
+ int true: @expr ref
+);
+
+/**
+ * The expression used when the guard of `@conditionalexpr`
+ * `guard ? true : false` does not hold.
+ */
+expr_cond_false(
+ unique int cond: @conditionalexpr ref,
+ int false: @expr ref
+);
+
+/** A string representation of the value. */
+values(
+ unique int id: @value,
+ string str: string ref
+);
+
+/** The actual text in the source code for the value, if any. */
+valuetext(
+ unique int id: @value ref,
+ string text: string ref
+);
+
+valuebind(
+ int val: @value ref,
+ unique int expr: @expr ref
+);
+
+fieldoffsets(
+ unique int id: @variable ref,
+ int byteoffset: int ref,
+ int bitoffset: int ref
+);
+
+bitfield(
+ unique int id: @variable ref,
+ int bits: int ref,
+ int declared_bits: int ref
+);
+
+/* TODO
+memberprefix(
+ int member: @expr ref,
+ int prefix: @expr ref
+);
+*/
+
+/*
+ kind(1) = mbrcallexpr
+ kind(2) = mbrptrcallexpr
+ kind(3) = mbrptrmbrcallexpr
+ kind(4) = ptrmbrptrmbrcallexpr
+ kind(5) = mbrreadexpr // x.y
+ kind(6) = mbrptrreadexpr // p->y
+ kind(7) = mbrptrmbrreadexpr // x.*pm
+ kind(8) = mbrptrmbrptrreadexpr // x->*pm
+ kind(9) = staticmbrreadexpr // static x.y
+ kind(10) = staticmbrptrreadexpr // static p->y
+*/
+/* TODO
+memberaccess(
+ int member: @expr ref,
+ int kind: int ref
+);
+*/
+
+initialisers(
+ unique int init: @initialiser,
+ int var: @accessible ref,
+ unique int expr: @expr ref,
+ int location: @location_expr ref
+);
+
+braced_initialisers(
+ int init: @initialiser ref
+);
+
+/**
+ * An ancestor for the expression, for cases in which we cannot
+ * otherwise find the expression's parent.
+ */
+expr_ancestor(
+ int exp: @expr ref,
+ int ancestor: @element ref
+);
+
+exprs(
+ unique int id: @expr,
+ int kind: int ref,
+ int location: @location_expr ref
+);
+
+expr_reuse(
+ int reuse: @expr ref,
+ int original: @expr ref,
+ int value_category: int ref
+)
+
+/*
+ case @value.category of
+ 1 = prval
+ | 2 = xval
+ | 3 = lval
+ ;
+*/
+expr_types(
+ int id: @expr ref,
+ int typeid: @type ref,
+ int value_category: int ref
+);
+
+case @expr.kind of
+ 1 = @errorexpr
+| 2 = @address_of // & AddressOfExpr
+| 3 = @reference_to // ReferenceToExpr (implicit?)
+| 4 = @indirect // * PointerDereferenceExpr
+| 5 = @ref_indirect // ReferenceDereferenceExpr (implicit?)
+// ...
+| 8 = @array_to_pointer // (???)
+| 9 = @vacuous_destructor_call // VacuousDestructorCall
+// ...
+| 11 = @assume // Microsoft
+| 12 = @parexpr
+| 13 = @arithnegexpr
+| 14 = @unaryplusexpr
+| 15 = @complementexpr
+| 16 = @notexpr
+| 17 = @conjugation // GNU ~ operator
+| 18 = @realpartexpr // GNU __real
+| 19 = @imagpartexpr // GNU __imag
+| 20 = @postincrexpr
+| 21 = @postdecrexpr
+| 22 = @preincrexpr
+| 23 = @predecrexpr
+| 24 = @conditionalexpr
+| 25 = @addexpr
+| 26 = @subexpr
+| 27 = @mulexpr
+| 28 = @divexpr
+| 29 = @remexpr
+| 30 = @jmulexpr // C99 mul imaginary
+| 31 = @jdivexpr // C99 div imaginary
+| 32 = @fjaddexpr // C99 add real + imaginary
+| 33 = @jfaddexpr // C99 add imaginary + real
+| 34 = @fjsubexpr // C99 sub real - imaginary
+| 35 = @jfsubexpr // C99 sub imaginary - real
+| 36 = @paddexpr // pointer add (pointer + int or int + pointer)
+| 37 = @psubexpr // pointer sub (pointer - integer)
+| 38 = @pdiffexpr // difference between two pointers
+| 39 = @lshiftexpr
+| 40 = @rshiftexpr
+| 41 = @andexpr
+| 42 = @orexpr
+| 43 = @xorexpr
+| 44 = @eqexpr
+| 45 = @neexpr
+| 46 = @gtexpr
+| 47 = @ltexpr
+| 48 = @geexpr
+| 49 = @leexpr
+| 50 = @minexpr // GNU minimum
+| 51 = @maxexpr // GNU maximum
+| 52 = @assignexpr
+| 53 = @assignaddexpr
+| 54 = @assignsubexpr
+| 55 = @assignmulexpr
+| 56 = @assigndivexpr
+| 57 = @assignremexpr
+| 58 = @assignlshiftexpr
+| 59 = @assignrshiftexpr
+| 60 = @assignandexpr
+| 61 = @assignorexpr
+| 62 = @assignxorexpr
+| 63 = @assignpaddexpr // assign pointer add
+| 64 = @assignpsubexpr // assign pointer sub
+| 65 = @andlogicalexpr
+| 66 = @orlogicalexpr
+| 67 = @commaexpr
+| 68 = @subscriptexpr // access to member of an array, e.g., a[5]
+// ... 69 @objc_subscriptexpr deprecated
+// ... 70 @cmdaccess deprecated
+// ...
+| 73 = @virtfunptrexpr
+| 74 = @callexpr
+// ... 75 @msgexpr_normal deprecated
+// ... 76 @msgexpr_super deprecated
+// ... 77 @atselectorexpr deprecated
+// ... 78 @atprotocolexpr deprecated
+| 79 = @vastartexpr
+| 80 = @vaargexpr
+| 81 = @vaendexpr
+| 82 = @vacopyexpr
+// ... 83 @atencodeexpr deprecated
+| 84 = @varaccess
+| 85 = @thisaccess
+// ... 86 @objc_box_expr deprecated
+| 87 = @new_expr
+| 88 = @delete_expr
+| 89 = @throw_expr
+| 90 = @condition_decl // a variable declared in a condition, e.g., if(int x = y > 2)
+| 91 = @braced_init_list
+| 92 = @type_id
+| 93 = @runtime_sizeof
+| 94 = @runtime_alignof
+| 95 = @sizeof_pack
+| 96 = @expr_stmt // GNU extension
+| 97 = @routineexpr
+| 98 = @type_operand // used to access a type in certain contexts (haven't found any examples yet....)
+| 99 = @offsetofexpr // offsetof ::= type and field
+| 100 = @hasassignexpr // __has_assign ::= type
+| 101 = @hascopyexpr // __has_copy ::= type
+| 102 = @hasnothrowassign // __has_nothrow_assign ::= type
+| 103 = @hasnothrowconstr // __has_nothrow_constructor ::= type
+| 104 = @hasnothrowcopy // __has_nothrow_copy ::= type
+| 105 = @hastrivialassign // __has_trivial_assign ::= type
+| 106 = @hastrivialconstr // __has_trivial_constructor ::= type
+| 107 = @hastrivialcopy // __has_trivial_copy ::= type
+| 108 = @hasuserdestr // __has_user_destructor ::= type
+| 109 = @hasvirtualdestr // __has_virtual_destructor ::= type
+| 110 = @isabstractexpr // __is_abstract ::= type
+| 111 = @isbaseofexpr // __is_base_of ::= type type
+| 112 = @isclassexpr // __is_class ::= type
+| 113 = @isconvtoexpr // __is_convertible_to ::= type type
+| 114 = @isemptyexpr // __is_empty ::= type
+| 115 = @isenumexpr // __is_enum ::= type
+| 116 = @ispodexpr // __is_pod ::= type
+| 117 = @ispolyexpr // __is_polymorphic ::= type
+| 118 = @isunionexpr // __is_union ::= type
+| 119 = @typescompexpr // GNU __builtin_types_compatible ::= type type
+| 120 = @intaddrexpr // frontend internal builtin, used to implement offsetof
+// ...
+| 122 = @hastrivialdestructor // __has_trivial_destructor ::= type
+| 123 = @literal
+| 124 = @uuidof
+| 127 = @aggregateliteral
+| 128 = @delete_array_expr
+| 129 = @new_array_expr
+// ... 130 @objc_array_literal deprecated
+// ... 131 @objc_dictionary_literal deprecated
+| 132 = @foldexpr
+// ...
+| 200 = @ctordirectinit
+| 201 = @ctorvirtualinit
+| 202 = @ctorfieldinit
+| 203 = @ctordelegatinginit
+| 204 = @dtordirectdestruct
+| 205 = @dtorvirtualdestruct
+| 206 = @dtorfielddestruct
+// ...
+| 210 = @static_cast
+| 211 = @reinterpret_cast
+| 212 = @const_cast
+| 213 = @dynamic_cast
+| 214 = @c_style_cast
+| 215 = @lambdaexpr
+| 216 = @param_ref
+| 217 = @noopexpr
+// ...
+| 294 = @istriviallyconstructibleexpr
+| 295 = @isdestructibleexpr
+| 296 = @isnothrowdestructibleexpr
+| 297 = @istriviallydestructibleexpr
+| 298 = @istriviallyassignableexpr
+| 299 = @isnothrowassignableexpr
+| 300 = @istrivialexpr
+| 301 = @isstandardlayoutexpr
+| 302 = @istriviallycopyableexpr
+| 303 = @isliteraltypeexpr
+| 304 = @hastrivialmoveconstructorexpr
+| 305 = @hastrivialmoveassignexpr
+| 306 = @hasnothrowmoveassignexpr
+| 307 = @isconstructibleexpr
+| 308 = @isnothrowconstructibleexpr
+| 309 = @hasfinalizerexpr
+| 310 = @isdelegateexpr
+| 311 = @isinterfaceclassexpr
+| 312 = @isrefarrayexpr
+| 313 = @isrefclassexpr
+| 314 = @issealedexpr
+| 315 = @issimplevalueclassexpr
+| 316 = @isvalueclassexpr
+| 317 = @isfinalexpr
+| 319 = @noexceptexpr
+| 320 = @builtinshufflevector
+| 321 = @builtinchooseexpr
+| 322 = @builtinaddressof
+| 323 = @vec_fill
+| 324 = @builtinconvertvector
+| 325 = @builtincomplex
+| 326 = @spaceshipexpr
+| 327 = @co_await
+| 328 = @co_yield
+| 329 = @temp_init
+| 330 = @isassignable
+| 331 = @isaggregate
+| 332 = @hasuniqueobjectrepresentations
+| 333 = @builtinbitcast
+| 334 = @builtinshuffle
+| 335 = @blockassignexpr
+| 336 = @issame
+| 337 = @isfunction
+| 338 = @islayoutcompatible
+| 339 = @ispointerinterconvertiblebaseof
+| 340 = @isarray
+| 341 = @arrayrank
+| 342 = @arrayextent
+| 343 = @isarithmetic
+| 344 = @iscompletetype
+| 345 = @iscompound
+| 346 = @isconst
+| 347 = @isfloatingpoint
+| 348 = @isfundamental
+| 349 = @isintegral
+| 350 = @islvaluereference
+| 351 = @ismemberfunctionpointer
+| 352 = @ismemberobjectpointer
+| 353 = @ismemberpointer
+| 354 = @isobject
+| 355 = @ispointer
+| 356 = @isreference
+| 357 = @isrvaluereference
+| 358 = @isscalar
+| 359 = @issigned
+| 360 = @isunsigned
+| 361 = @isvoid
+| 362 = @isvolatile
+| 363 = @reuseexpr
+| 364 = @istriviallycopyassignable
+| 365 = @isassignablenopreconditioncheck
+| 366 = @referencebindstotemporary
+| 367 = @issameas
+| 368 = @builtinhasattribute
+| 369 = @ispointerinterconvertiblewithclass
+| 370 = @builtinispointerinterconvertiblewithclass
+| 371 = @iscorrespondingmember
+| 372 = @builtiniscorrespondingmember
+| 373 = @isboundedarray
+| 374 = @isunboundedarray
+| 375 = @isreferenceable
+| 378 = @isnothrowconvertible
+| 379 = @referenceconstructsfromtemporary
+| 380 = @referenceconvertsfromtemporary
+| 381 = @isconvertible
+| 382 = @isvalidwinrttype
+| 383 = @iswinclass
+| 384 = @iswininterface
+;
+
+@var_args_expr = @vastartexpr
+ | @vaendexpr
+ | @vaargexpr
+ | @vacopyexpr
+ ;
+
+@builtin_op = @var_args_expr
+ | @noopexpr
+ | @offsetofexpr
+ | @intaddrexpr
+ | @hasassignexpr
+ | @hascopyexpr
+ | @hasnothrowassign
+ | @hasnothrowconstr
+ | @hasnothrowcopy
+ | @hastrivialassign
+ | @hastrivialconstr
+ | @hastrivialcopy
+ | @hastrivialdestructor
+ | @hasuserdestr
+ | @hasvirtualdestr
+ | @isabstractexpr
+ | @isbaseofexpr
+ | @isclassexpr
+ | @isconvtoexpr
+ | @isemptyexpr
+ | @isenumexpr
+ | @ispodexpr
+ | @ispolyexpr
+ | @isunionexpr
+ | @typescompexpr
+ | @builtinshufflevector
+ | @builtinconvertvector
+ | @builtinaddressof
+ | @istriviallyconstructibleexpr
+ | @isdestructibleexpr
+ | @isnothrowdestructibleexpr
+ | @istriviallydestructibleexpr
+ | @istriviallyassignableexpr
+ | @isnothrowassignableexpr
+ | @istrivialexpr
+ | @isstandardlayoutexpr
+ | @istriviallycopyableexpr
+ | @isliteraltypeexpr
+ | @hastrivialmoveconstructorexpr
+ | @hastrivialmoveassignexpr
+ | @hasnothrowmoveassignexpr
+ | @isconstructibleexpr
+ | @isnothrowconstructibleexpr
+ | @hasfinalizerexpr
+ | @isdelegateexpr
+ | @isinterfaceclassexpr
+ | @isrefarrayexpr
+ | @isrefclassexpr
+ | @issealedexpr
+ | @issimplevalueclassexpr
+ | @isvalueclassexpr
+ | @isfinalexpr
+ | @builtinchooseexpr
+ | @builtincomplex
+ | @isassignable
+ | @isaggregate
+ | @hasuniqueobjectrepresentations
+ | @builtinbitcast
+ | @builtinshuffle
+ | @issame
+ | @isfunction
+ | @islayoutcompatible
+ | @ispointerinterconvertiblebaseof
+ | @isarray
+ | @arrayrank
+ | @arrayextent
+ | @isarithmetic
+ | @iscompletetype
+ | @iscompound
+ | @isconst
+ | @isfloatingpoint
+ | @isfundamental
+ | @isintegral
+ | @islvaluereference
+ | @ismemberfunctionpointer
+ | @ismemberobjectpointer
+ | @ismemberpointer
+ | @isobject
+ | @ispointer
+ | @isreference
+ | @isrvaluereference
+ | @isscalar
+ | @issigned
+ | @isunsigned
+ | @isvoid
+ | @isvolatile
+ | @istriviallycopyassignable
+ | @isassignablenopreconditioncheck
+ | @referencebindstotemporary
+ | @issameas
+ | @builtinhasattribute
+ | @ispointerinterconvertiblewithclass
+ | @builtinispointerinterconvertiblewithclass
+ | @iscorrespondingmember
+ | @builtiniscorrespondingmember
+ | @isboundedarray
+ | @isunboundedarray
+ | @isreferenceable
+ | @isnothrowconvertible
+ | @referenceconstructsfromtemporary
+ | @referenceconvertsfromtemporary
+ | @isconvertible
+ | @isvalidwinrttype
+ | @iswinclass
+ | @iswininterface
+ ;
+
+new_allocated_type(
+ unique int expr: @new_expr ref,
+ int type_id: @type ref
+);
+
+new_array_allocated_type(
+ unique int expr: @new_array_expr ref,
+ int type_id: @type ref
+);
+
+/**
+ * The field being initialized by an initializer expression within an aggregate
+ * initializer for a class/struct/union. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_field_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int field: @membervariable ref,
+ int position: int ref
+);
+
+/**
+ * The index of the element being initialized by an initializer expression
+ * within an aggregate initializer for an array. Position is used to sort repeated initializers.
+ */
+#keyset[aggregate, position]
+aggregate_array_init(
+ int aggregate: @aggregateliteral ref,
+ int initializer: @expr ref,
+ int element_index: int ref,
+ int position: int ref
+);
+
+@ctorinit = @ctordirectinit
+ | @ctorvirtualinit
+ | @ctorfieldinit
+ | @ctordelegatinginit;
+@dtordestruct = @dtordirectdestruct
+ | @dtorvirtualdestruct
+ | @dtorfielddestruct;
+
+
+condition_decl_bind(
+ unique int expr: @condition_decl ref,
+ unique int decl: @declaration ref
+);
+
+typeid_bind(
+ unique int expr: @type_id ref,
+ int type_id: @type ref
+);
+
+uuidof_bind(
+ unique int expr: @uuidof ref,
+ int type_id: @type ref
+);
+
+@runtime_sizeof_or_alignof = @runtime_sizeof | @runtime_alignof;
+
+sizeof_bind(
+ unique int expr: @runtime_sizeof_or_alignof ref,
+ int type_id: @type ref
+);
+
+code_block(
+ unique int block: @literal ref,
+ unique int routine: @function ref
+);
+
+lambdas(
+ unique int expr: @lambdaexpr ref,
+ string default_capture: string ref,
+ boolean has_explicit_return_type: boolean ref
+);
+
+lambda_capture(
+ unique int id: @lambdacapture,
+ int lambda: @lambdaexpr ref,
+ int index: int ref,
+ int field: @membervariable ref,
+ boolean captured_by_reference: boolean ref,
+ boolean is_implicit: boolean ref,
+ int location: @location_default ref
+);
+
+@funbindexpr = @routineexpr
+ | @new_expr
+ | @delete_expr
+ | @delete_array_expr
+ | @ctordirectinit
+ | @ctorvirtualinit
+ | @ctordelegatinginit
+ | @dtordirectdestruct
+ | @dtorvirtualdestruct;
+
+@varbindexpr = @varaccess | @ctorfieldinit | @dtorfielddestruct;
+@addressable = @function | @variable ;
+@accessible = @addressable | @enumconstant ;
+
+@access = @varaccess | @routineexpr ;
+
+fold(
+ int expr: @foldexpr ref,
+ string operator: string ref,
+ boolean is_left_fold: boolean ref
+);
+
+stmts(
+ unique int id: @stmt,
+ int kind: int ref,
+ int location: @location_stmt ref
+);
+
+case @stmt.kind of
+ 1 = @stmt_expr
+| 2 = @stmt_if
+| 3 = @stmt_while
+| 4 = @stmt_goto
+| 5 = @stmt_label
+| 6 = @stmt_return
+| 7 = @stmt_block
+| 8 = @stmt_end_test_while // do { ... } while ( ... )
+| 9 = @stmt_for
+| 10 = @stmt_switch_case
+| 11 = @stmt_switch
+| 13 = @stmt_asm // "asm" statement or the body of an asm function
+| 15 = @stmt_try_block
+| 16 = @stmt_microsoft_try // Microsoft
+| 17 = @stmt_decl
+| 18 = @stmt_set_vla_size // C99
+| 19 = @stmt_vla_decl // C99
+| 25 = @stmt_assigned_goto // GNU
+| 26 = @stmt_empty
+| 27 = @stmt_continue
+| 28 = @stmt_break
+| 29 = @stmt_range_based_for // C++11
+// ... 30 @stmt_at_autoreleasepool_block deprecated
+// ... 31 @stmt_objc_for_in deprecated
+// ... 32 @stmt_at_synchronized deprecated
+| 33 = @stmt_handler
+// ... 34 @stmt_finally_end deprecated
+| 35 = @stmt_constexpr_if
+| 37 = @stmt_co_return
+;
+
+type_vla(
+ int type_id: @type ref,
+ int decl: @stmt_vla_decl ref
+);
+
+variable_vla(
+ int var: @variable ref,
+ int decl: @stmt_vla_decl ref
+);
+
+if_initialization(
+ unique int if_stmt: @stmt_if ref,
+ int init_id: @stmt ref
+);
+
+if_then(
+ unique int if_stmt: @stmt_if ref,
+ int then_id: @stmt ref
+);
+
+if_else(
+ unique int if_stmt: @stmt_if ref,
+ int else_id: @stmt ref
+);
+
+constexpr_if_initialization(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int init_id: @stmt ref
+);
+
+constexpr_if_then(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int then_id: @stmt ref
+);
+
+constexpr_if_else(
+ unique int constexpr_if_stmt: @stmt_constexpr_if ref,
+ int else_id: @stmt ref
+);
+
+while_body(
+ unique int while_stmt: @stmt_while ref,
+ int body_id: @stmt ref
+);
+
+do_body(
+ unique int do_stmt: @stmt_end_test_while ref,
+ int body_id: @stmt ref
+);
+
+switch_initialization(
+ unique int switch_stmt: @stmt_switch ref,
+ int init_id: @stmt ref
+);
+
+#keyset[switch_stmt, index]
+switch_case(
+ int switch_stmt: @stmt_switch ref,
+ int index: int ref,
+ int case_id: @stmt_switch_case ref
+);
+
+switch_body(
+ unique int switch_stmt: @stmt_switch ref,
+ int body_id: @stmt ref
+);
+
+@stmt_for_or_range_based_for = @stmt_for
+ | @stmt_range_based_for;
+
+for_initialization(
+ unique int for_stmt: @stmt_for_or_range_based_for ref,
+ int init_id: @stmt ref
+);
+
+for_condition(
+ unique int for_stmt: @stmt_for ref,
+ int condition_id: @expr ref
+);
+
+for_update(
+ unique int for_stmt: @stmt_for ref,
+ int update_id: @expr ref
+);
+
+for_body(
+ unique int for_stmt: @stmt_for ref,
+ int body_id: @stmt ref
+);
+
+@stmtparent = @stmt | @expr_stmt ;
+stmtparents(
+ unique int id: @stmt ref,
+ int index: int ref,
+ int parent: @stmtparent ref
+);
+
+ishandler(unique int block: @stmt_block ref);
+
+@cfgnode = @stmt | @expr | @function | @initialiser ;
+
+stmt_decl_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl: @declaration ref
+);
+
+stmt_decl_entry_bind(
+ int stmt: @stmt_decl ref,
+ int num: int ref,
+ int decl_entry: @element ref
+);
+
+@functionorblock = @function | @stmt_block;
+
+blockscope(
+ unique int block: @stmt_block ref,
+ int enclosing: @functionorblock ref
+);
+
+@jump = @stmt_goto | @stmt_break | @stmt_continue;
+
+@jumporlabel = @jump | @stmt_label | @literal;
+
+jumpinfo(
+ unique int id: @jumporlabel ref,
+ string str: string ref,
+ int target: @stmt ref
+);
+
+preprocdirects(
+ unique int id: @preprocdirect,
+ int kind: int ref,
+ int location: @location_default ref
+);
+case @preprocdirect.kind of
+ 0 = @ppd_if
+| 1 = @ppd_ifdef
+| 2 = @ppd_ifndef
+| 3 = @ppd_elif
+| 4 = @ppd_else
+| 5 = @ppd_endif
+| 6 = @ppd_plain_include
+| 7 = @ppd_define
+| 8 = @ppd_undef
+| 9 = @ppd_line
+| 10 = @ppd_error
+| 11 = @ppd_pragma
+| 12 = @ppd_objc_import
+| 13 = @ppd_include_next
+| 18 = @ppd_warning
+;
+
+@ppd_include = @ppd_plain_include | @ppd_objc_import | @ppd_include_next;
+
+@ppd_branch = @ppd_if | @ppd_ifdef | @ppd_ifndef | @ppd_elif;
+
+preprocpair(
+ int begin : @ppd_branch ref,
+ int elseelifend : @preprocdirect ref
+);
+
+preproctrue(int branch : @ppd_branch ref);
+preprocfalse(int branch : @ppd_branch ref);
+
+preproctext(
+ unique int id: @preprocdirect ref,
+ string head: string ref,
+ string body: string ref
+);
+
+includes(
+ unique int id: @ppd_include ref,
+ int included: @file ref
+);
+
+link_targets(
+ int id: @link_target,
+ int binary: @file ref
+);
+
+link_parent(
+ int element : @element ref,
+ int link_target : @link_target ref
+);
+
+/* XML Files */
+
+xmlEncoding(unique int id: @file ref, string encoding: string ref);
+
+xmlDTDs(
+ unique int id: @xmldtd,
+ string root: string ref,
+ string publicId: string ref,
+ string systemId: string ref,
+ int fileid: @file ref
+);
+
+xmlElements(
+ unique int id: @xmlelement,
+ string name: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlAttrs(
+ unique int id: @xmlattribute,
+ int elementid: @xmlelement ref,
+ string name: string ref,
+ string value: string ref,
+ int idx: int ref,
+ int fileid: @file ref
+);
+
+xmlNs(
+ int id: @xmlnamespace,
+ string prefixName: string ref,
+ string URI: string ref,
+ int fileid: @file ref
+);
+
+xmlHasNs(
+ int elementId: @xmlnamespaceable ref,
+ int nsId: @xmlnamespace ref,
+ int fileid: @file ref
+);
+
+xmlComments(
+ unique int id: @xmlcomment,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int fileid: @file ref
+);
+
+xmlChars(
+ unique int id: @xmlcharacters,
+ string text: string ref,
+ int parentid: @xmlparent ref,
+ int idx: int ref,
+ int isCDATA: int ref,
+ int fileid: @file ref
+);
+
+@xmlparent = @file | @xmlelement;
+@xmlnamespaceable = @xmlelement | @xmlattribute;
+
+xmllocations(
+ int xmlElement: @xmllocatable ref,
+ int location: @location_default ref
+);
+
+@xmllocatable = @xmlcharacters
+ | @xmlelement
+ | @xmlcomment
+ | @xmlattribute
+ | @xmldtd
+ | @file
+ | @xmlnamespace;
diff --git a/cpp/ql/lib/upgrades/3d35dd6b50edfc540c14c6757e0c7b3c5b7b04dd/upgrade.properties b/cpp/ql/lib/upgrades/3d35dd6b50edfc540c14c6757e0c7b3c5b7b04dd/upgrade.properties
new file mode 100644
index 0000000000000..8516eec182e7d
--- /dev/null
+++ b/cpp/ql/lib/upgrades/3d35dd6b50edfc540c14c6757e0c7b3c5b7b04dd/upgrade.properties
@@ -0,0 +1,3 @@
+description: Support using-enum declarations.
+compatibility: partial
+usings.rel: run usings.qlo
diff --git a/cpp/ql/lib/upgrades/3d35dd6b50edfc540c14c6757e0c7b3c5b7b04dd/usings.ql b/cpp/ql/lib/upgrades/3d35dd6b50edfc540c14c6757e0c7b3c5b7b04dd/usings.ql
new file mode 100644
index 0000000000000..32a830070241e
--- /dev/null
+++ b/cpp/ql/lib/upgrades/3d35dd6b50edfc540c14c6757e0c7b3c5b7b04dd/usings.ql
@@ -0,0 +1,17 @@
+class UsingEntry extends @using {
+ string toString() { none() }
+}
+
+class Element extends @element {
+ string toString() { none() }
+}
+
+class Location extends @location_default {
+ string toString() { none() }
+}
+
+from UsingEntry u, Element target, Location loc, int kind
+where
+ usings(u, target, loc) and
+ if target instanceof @namespace then kind = 2 else kind = 1
+select u, target, loc, kind
diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md
index badaa459be17b..9f10be7db9094 100644
--- a/cpp/ql/src/CHANGELOG.md
+++ b/cpp/ql/src/CHANGELOG.md
@@ -1,3 +1,14 @@
+## 1.1.0
+
+### Query Metadata Changes
+
+* The precision of `cpp/iterator-to-expired-container` ("Iterator to expired container") has been increased to `high`. As a result, it will be run by default as part of the Code Scanning suite.
+* The precision of `cpp/unsafe-strncat` ("Potentially unsafe call to strncat") has been increased to `high`. As a result, it will be run by default as part of the Code Scanning suite.
+
+### Minor Analysis Improvements
+
+* The `cpp/unsigned-difference-expression-compared-zero` ("Unsigned difference expression compared to zero") query now produces fewer false positives.
+
## 1.0.3
No user-facing changes.
diff --git a/cpp/ql/src/Critical/ScanfChecks.qll b/cpp/ql/src/Critical/ScanfChecks.qll
index 6f50172537e40..00c6f482828a3 100644
--- a/cpp/ql/src/Critical/ScanfChecks.qll
+++ b/cpp/ql/src/Critical/ScanfChecks.qll
@@ -38,11 +38,18 @@ private string getEofValue() {
private predicate checkedForEof(ScanfFunctionCall call) {
exists(IRGuardCondition gc |
exists(Instruction i | i.getUnconvertedResultExpression() = call |
- // call == EOF
- gc.comparesEq(valueNumber(i).getAUse(), getEofValue().toInt(), _, _)
+ exists(int val | gc.comparesEq(valueNumber(i).getAUse(), val, _, _) |
+ // call == EOF
+ val = getEofValue().toInt()
+ or
+ // call == [any positive number]
+ val > 0
+ )
or
- // call < 0 (EOF is guaranteed to be negative)
- gc.comparesLt(valueNumber(i).getAUse(), 0, true, _)
+ exists(int val | gc.comparesLt(valueNumber(i).getAUse(), val, true, _) |
+ // call < [any non-negative number] (EOF is guaranteed to be negative)
+ val >= 0
+ )
)
)
}
diff --git a/cpp/ql/src/Critical/SizeCheck2.ql b/cpp/ql/src/Critical/SizeCheck2.ql
index eb3aec9a5fe51..3ce865641993a 100644
--- a/cpp/ql/src/Critical/SizeCheck2.ql
+++ b/cpp/ql/src/Critical/SizeCheck2.ql
@@ -15,6 +15,7 @@
import cpp
import semmle.code.cpp.models.Models
+import semmle.code.cpp.commons.Buffer
predicate baseType(AllocationExpr alloc, Type base) {
exists(PointerType pointer |
@@ -30,7 +31,8 @@ predicate baseType(AllocationExpr alloc, Type base) {
}
predicate decideOnSize(Type t, int size) {
- // If the codebase has more than one type with the same name, it can have more than one size.
+ // If the codebase has more than one type with the same name, it can have more than one size. For
+ // most purposes in this query, we use the smallest.
size = min(t.getSize())
}
@@ -45,7 +47,8 @@ where
size = 0 or
(allocated / size) * size = allocated
) and
- not basesize > allocated // covered by SizeCheck.ql
+ not basesize > allocated and // covered by SizeCheck.ql
+ not memberMayBeVarSize(base.getUnspecifiedType(), _) // exclude variable size types
select alloc,
"Allocated memory (" + allocated.toString() + " bytes) is not a multiple of the size of '" +
base.getName() + "' (" + basesize.toString() + " bytes)."
diff --git a/cpp/ql/src/Security/CWE/CWE-014/MemsetMayBeDeleted.qhelp b/cpp/ql/src/Security/CWE/CWE-014/MemsetMayBeDeleted.qhelp
index 2c087e37eaa8b..15b94a44ec857 100644
--- a/cpp/ql/src/Security/CWE/CWE-014/MemsetMayBeDeleted.qhelp
+++ b/cpp/ql/src/Security/CWE/CWE-014/MemsetMayBeDeleted.qhelp
@@ -10,11 +10,12 @@ contains sensitive data that could somehow be retrieved by an attacker.
-Use alternative platform-supplied functions that will not get optimized away. Examples of such
-functions include memset_s
, SecureZeroMemory
, and bzero_explicit
.
-Alternatively, passing the -fno-builtin-memset
option to the GCC/Clang compiler usually
-also prevents the optimization. Finally, you can use the public-domain secure_memzero
function
-(see references below). This function, however, is not guaranteed to work on all platforms and compilers.
+Use memset_s
(from C11) instead of memset
, as memset_s
will not
+get optimized away. Alternatively use platform-supplied functions such as SecureZeroMemory
or
+bzero_explicit
that make the same guarantee. Passing the -fno-builtin-memset
+option to the GCC/Clang compiler usually also prevents the optimization. Finally, you can use the
+public-domain secure_memzero
function (see references below). This function, however, is not
+guaranteed to work on all platforms and compilers.
diff --git a/cpp/ql/src/Security/CWE/CWE-191/UnsignedDifferenceExpressionComparedZero.ql b/cpp/ql/src/Security/CWE/CWE-191/UnsignedDifferenceExpressionComparedZero.ql
index 61ee5d4cad1d8..02de4223c185c 100644
--- a/cpp/ql/src/Security/CWE/CWE-191/UnsignedDifferenceExpressionComparedZero.ql
+++ b/cpp/ql/src/Security/CWE/CWE-191/UnsignedDifferenceExpressionComparedZero.ql
@@ -5,7 +5,7 @@
* @id cpp/unsigned-difference-expression-compared-zero
* @problem.severity warning
* @security-severity 9.8
- * @precision medium
+ * @precision high
* @tags security
* correctness
* external/cwe/cwe-191
diff --git a/cpp/ql/src/Security/CWE/CWE-311/CleartextStorage.c b/cpp/ql/src/Security/CWE/CWE-311/CleartextStorage.c
index e0600cc4d2f2e..7f7f6186041a5 100644
--- a/cpp/ql/src/Security/CWE/CWE-311/CleartextStorage.c
+++ b/cpp/ql/src/Security/CWE/CWE-311/CleartextStorage.c
@@ -1,12 +1,31 @@
-void writeCredentials() {
- char *password = "cleartext password";
- FILE* file = fopen("credentials.txt", "w");
-
+#include
+#include
+#include
+
+void writeCredentialsBad(FILE *file, const char *cleartextCredentials) {
// BAD: write password to disk in cleartext
- fputs(password, file);
-
- // GOOD: encrypt password first
- char *encrypted = encrypt(password);
- fputs(encrypted, file);
+ fputs(cleartextCredentials, file);
}
+int writeCredentialsGood(FILE *file, const char *cleartextCredentials, const unsigned char *key, const unsigned char *nonce) {
+ size_t credentialsLen = strlen(cleartextCredentials);
+ size_t ciphertext_len = crypto_secretbox_MACBYTES + credentialsLen;
+ unsigned char *ciphertext = malloc(ciphertext_len);
+ if (!ciphertext) {
+ logError();
+ return -1;
+ }
+
+ // encrypt the password first
+ if (crypto_secretbox_easy(ciphertext, (const unsigned char *)cleartextCredentials, credentialsLen, nonce, key) != 0) {
+ free(ciphertext);
+ logError();
+ return -1;
+ }
+
+ // GOOD: write encrypted password to disk
+ fwrite(ciphertext, 1, ciphertext_len, file);
+
+ free(ciphertext);
+ return 0;
+}
diff --git a/cpp/ql/src/Security/CWE/CWE-311/CleartextStorage.inc.qhelp b/cpp/ql/src/Security/CWE/CWE-311/CleartextStorage.inc.qhelp
index f5e978e05cbac..984afdcf28a67 100644
--- a/cpp/ql/src/Security/CWE/CWE-311/CleartextStorage.inc.qhelp
+++ b/cpp/ql/src/Security/CWE/CWE-311/CleartextStorage.inc.qhelp
@@ -19,15 +19,20 @@ cleartext.
The following example shows two ways of storing user credentials in a file. In the 'BAD' case,
-the credentials are simply stored in cleartext. In the 'GOOD' case, the credentials are encrypted before
+the credentials are simply stored in cleartext. In the 'GOOD' case, the credentials are encrypted before
storing them.
+Note that for the 'GOOD' example to work we need to link against an encryption library (in this case libsodium),
+initialize it with a call to sodium_init
, and create the key and nonce with
+crypto_secretbox_keygen
and randombytes_buf
respectively. We also need to store those
+details securely so they can be used for decryption.
+
-M. Dowd, J. McDonald and J. Schuhm, The Art of Software Security Assessment, 1st Edition, Chapter 2 - 'Common Vulnerabilities of Encryption', p. 43. Addison Wesley, 2006.
+M. Dowd, J. McDonald and J. Schuhm, The Art of Software Security Assessment, 1st Edition, Chapter 2 - 'Common Vulnerabilities of Encryption', p. 43. Addison Wesley, 2006.
M. Howard and D. LeBlanc, Writing Secure Code, 2nd Edition, Chapter 9 - 'Protecting Secret Data', p. 299. Microsoft, 2002.
diff --git a/cpp/ql/src/Security/CWE/CWE-313/CleartextSqliteDatabase.c b/cpp/ql/src/Security/CWE/CWE-313/CleartextSqliteDatabase.c
index f92aa8c38684b..8c6a8f439d992 100644
--- a/cpp/ql/src/Security/CWE/CWE-313/CleartextSqliteDatabase.c
+++ b/cpp/ql/src/Security/CWE/CWE-313/CleartextSqliteDatabase.c
@@ -1,6 +1,6 @@
void bad(void) {
- char *password = "cleartext password";
+ const char *password = "cleartext password";
sqlite3 *credentialsDB;
sqlite3_stmt *stmt;
@@ -16,14 +16,15 @@ void bad(void) {
}
}
-void good(void) {
- char *password = "cleartext password";
+void good(const char *secretKey) {
+ const char *password = "cleartext password";
sqlite3 *credentialsDB;
sqlite3_stmt *stmt;
if (sqlite3_open("credentials.db", &credentialsDB) == SQLITE_OK) {
// GOOD: database encryption enabled:
- sqlite3_exec(credentialsDB, "PRAGMA key = 'secretKey!'", NULL, NULL, NULL);
+ std::string setKeyString = std::string("PRAGMA key = '") + secretKey + "'";
+ sqlite3_exec(credentialsDB, setKeyString.c_str(), NULL, NULL, NULL);
sqlite3_exec(credentialsDB, "CREATE TABLE IF NOT EXISTS creds (password TEXT);", NULL, NULL, NULL);
if (sqlite3_prepare_v2(credentialsDB, "INSERT INTO creds(password) VALUES(?)", -1, &stmt, NULL) == SQLITE_OK) {
sqlite3_bind_text(stmt, 1, password, -1, SQLITE_TRANSIENT);
@@ -33,4 +34,3 @@ void good(void) {
}
}
}
-
diff --git a/cpp/ql/src/Security/CWE/CWE-313/CleartextSqliteDatabase.qhelp b/cpp/ql/src/Security/CWE/CWE-313/CleartextSqliteDatabase.qhelp
index c8edcccb92f5a..4047f3b2cdc03 100644
--- a/cpp/ql/src/Security/CWE/CWE-313/CleartextSqliteDatabase.qhelp
+++ b/cpp/ql/src/Security/CWE/CWE-313/CleartextSqliteDatabase.qhelp
@@ -20,10 +20,12 @@ In the 'GOOD' case, the database (and thus the credentials) are encrypted.
+Note that for the 'GOOD' example to work we need to provide a secret key. Secure key generation and storage is required.
+
-M. Dowd, J. McDonald and J. Schuhm, The Art of Software Security Assessment, 1st Edition, Chapter 2 - 'Common Vulnerabilities of Encryption', p. 43. Addison Wesley, 2006.
+M. Dowd, J. McDonald and J. Schuhm, The Art of Software Security Assessment, 1st Edition, Chapter 2 - 'Common Vulnerabilities of Encryption', p. 43. Addison Wesley, 2006.
M. Howard and D. LeBlanc, Writing Secure Code, 2nd Edition, Chapter 9 - 'Protecting Secret Data', p. 299. Microsoft, 2002.
diff --git a/cpp/ql/src/Security/CWE/CWE-570/IncorrectAllocationErrorHandling.ql b/cpp/ql/src/Security/CWE/CWE-570/IncorrectAllocationErrorHandling.ql
index 4b2f1ffcb62f7..7f74c229ceb38 100644
--- a/cpp/ql/src/Security/CWE/CWE-570/IncorrectAllocationErrorHandling.ql
+++ b/cpp/ql/src/Security/CWE/CWE-570/IncorrectAllocationErrorHandling.ql
@@ -232,6 +232,7 @@ predicate nullCheckInThrowingNew(NewOrNewArrayExpr newExpr, GuardCondition guard
from NewOrNewArrayExpr newExpr, Element element, string msg, string elementString
where
not newExpr.isFromUninstantiatedTemplate(_) and
+ not newExpr.isFromTemplateInstantiation(_) and
(
noThrowInTryBlock(newExpr, element) and
msg = "This allocation cannot throw. $@ is unnecessary." and
diff --git a/cpp/ql/src/change-notes/2024-07-08-unsafe-strncat-query.md b/cpp/ql/src/change-notes/2024-07-08-unsafe-strncat-query.md
deleted file mode 100644
index a85958bc6ba8f..0000000000000
--- a/cpp/ql/src/change-notes/2024-07-08-unsafe-strncat-query.md
+++ /dev/null
@@ -1,4 +0,0 @@
----
-category: queryMetadata
----
-* The precision of `cpp/unsafe-strncat` ("Potentially unsafe call to strncat") has been increased to `high`. As a result, it will be run by default as part of the Code Scanning suite.
diff --git a/cpp/ql/src/change-notes/2024-07-11-iterator-to-expired-container-query.md b/cpp/ql/src/change-notes/2024-07-11-iterator-to-expired-container-query.md
deleted file mode 100644
index 37d1f9eda4a91..0000000000000
--- a/cpp/ql/src/change-notes/2024-07-11-iterator-to-expired-container-query.md
+++ /dev/null
@@ -1,4 +0,0 @@
----
-category: queryMetadata
----
-* The precision of `cpp/iterator-to-expired-container` ("Iterator to expired container") has been increased to `high`. As a result, it will be run by default as part of the Code Scanning suite.
diff --git a/cpp/ql/src/change-notes/2024-07-11-unsigned-difference-expression-compared-zero-query.md b/cpp/ql/src/change-notes/2024-07-11-unsigned-difference-expression-compared-zero-query.md
new file mode 100644
index 0000000000000..7a1469464c277
--- /dev/null
+++ b/cpp/ql/src/change-notes/2024-07-11-unsigned-difference-expression-compared-zero-query.md
@@ -0,0 +1,4 @@
+---
+category: queryMetadata
+---
+* The precision of `cpp/unsigned-difference-expression-compared-zero` ("Unsigned difference expression compared to zero") has been increased to `high`. As a result, it will be run by default as part of the Code Scanning suite.
diff --git a/cpp/ql/src/change-notes/2024-07-16-unsigned-difference-expression-compared-zero-.md b/cpp/ql/src/change-notes/2024-07-16-unsigned-difference-expression-compared-zero-.md
deleted file mode 100644
index a4fb27acc4137..0000000000000
--- a/cpp/ql/src/change-notes/2024-07-16-unsigned-difference-expression-compared-zero-.md
+++ /dev/null
@@ -1,4 +0,0 @@
----
-category: minorAnalysis
----
-* The `cpp/unsigned-difference-expression-compared-zero` ("Unsigned difference expression compared to zero") query now produces fewer false positives.
diff --git a/cpp/ql/src/change-notes/2024-07-22-incorrect-allocation-error-handling.md b/cpp/ql/src/change-notes/2024-07-22-incorrect-allocation-error-handling.md
new file mode 100644
index 0000000000000..5e95cd05678ef
--- /dev/null
+++ b/cpp/ql/src/change-notes/2024-07-22-incorrect-allocation-error-handling.md
@@ -0,0 +1,4 @@
+---
+category: minorAnalysis
+---
+* The `cpp/incorrect-allocation-error-handling` ("Incorrect allocation-error handling") query no longer produces occasional false positive results inside template instantiations.
diff --git a/cpp/ql/src/change-notes/2024-07-22-suspicious-allocation-size.md b/cpp/ql/src/change-notes/2024-07-22-suspicious-allocation-size.md
new file mode 100644
index 0000000000000..8b55e61e85a78
--- /dev/null
+++ b/cpp/ql/src/change-notes/2024-07-22-suspicious-allocation-size.md
@@ -0,0 +1,4 @@
+---
+category: minorAnalysis
+---
+* The `cpp/suspicious-allocation-size` ("Not enough memory allocated for array of pointer type") query no longer produces false positives on "variable size" `struct`s.
diff --git a/cpp/ql/src/change-notes/2024-07-23-incorrectly-checked-scanf.md b/cpp/ql/src/change-notes/2024-07-23-incorrectly-checked-scanf.md
new file mode 100644
index 0000000000000..9149c7611f5bb
--- /dev/null
+++ b/cpp/ql/src/change-notes/2024-07-23-incorrectly-checked-scanf.md
@@ -0,0 +1,4 @@
+---
+category: minorAnalysis
+---
+* The `cpp/incorrectly-checked-scanf` ("Incorrect return-value check for a 'scanf'-like function") query now produces fewer false positive results.
diff --git a/cpp/ql/src/change-notes/released/1.1.0.md b/cpp/ql/src/change-notes/released/1.1.0.md
new file mode 100644
index 0000000000000..50e703a5814aa
--- /dev/null
+++ b/cpp/ql/src/change-notes/released/1.1.0.md
@@ -0,0 +1,10 @@
+## 1.1.0
+
+### Query Metadata Changes
+
+* The precision of `cpp/iterator-to-expired-container` ("Iterator to expired container") has been increased to `high`. As a result, it will be run by default as part of the Code Scanning suite.
+* The precision of `cpp/unsafe-strncat` ("Potentially unsafe call to strncat") has been increased to `high`. As a result, it will be run by default as part of the Code Scanning suite.
+
+### Minor Analysis Improvements
+
+* The `cpp/unsigned-difference-expression-compared-zero` ("Unsigned difference expression compared to zero") query now produces fewer false positives.
diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml
index 06fa75b96cbce..2ac15439f561a 100644
--- a/cpp/ql/src/codeql-pack.release.yml
+++ b/cpp/ql/src/codeql-pack.release.yml
@@ -1,2 +1,2 @@
---
-lastReleaseVersion: 1.0.3
+lastReleaseVersion: 1.1.0
diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml
index ec7e9e095edf1..97b40ad7de2d1 100644
--- a/cpp/ql/src/qlpack.yml
+++ b/cpp/ql/src/qlpack.yml
@@ -1,5 +1,5 @@
name: codeql/cpp-queries
-version: 1.0.4-dev
+version: 1.1.1-dev
groups:
- cpp
- queries
diff --git a/cpp/ql/test/library-tests/allocators/allocators.cpp b/cpp/ql/test/library-tests/allocators/allocators.cpp
index 3e4a6cec8dfc7..7db48bc9a8e81 100644
--- a/cpp/ql/test/library-tests/allocators/allocators.cpp
+++ b/cpp/ql/test/library-tests/allocators/allocators.cpp
@@ -1,7 +1,12 @@
-// semmle-extractor-options: -std=c++17
+// semmle-extractor-options: -std=c++20
typedef unsigned long size_t;
namespace std {
enum class align_val_t : size_t {};
+
+ struct destroying_delete_t {
+ explicit destroying_delete_t() = default;
+ };
+ inline constexpr destroying_delete_t destroying_delete{};
}
void* operator new(size_t, float);
@@ -37,6 +42,11 @@ struct SizedDealloc {
void operator delete[](void*, size_t);
};
+struct DestroyingDealloc {
+ void* operator new(size_t);
+ void operator delete(DestroyingDealloc*, std::destroying_delete_t);
+};
+
struct alignas(128) Overaligned {
char a[256];
};
@@ -59,6 +69,7 @@ void OperatorDelete() {
delete static_cast(nullptr); // No destructor
delete static_cast(nullptr); // Non-virtual destructor, with size.
delete static_cast(nullptr); // No destructor, with size.
+ delete static_cast(nullptr); // No destructor, with destroying delete.
delete static_cast(nullptr); // No destructor, with size and alignment.
delete static_cast(nullptr); // Virtual destructor
delete static_cast(nullptr); // Pointer to const
@@ -103,11 +114,20 @@ struct alignas(128) FailedInitOveraligned {
void operator delete[](void*, std::align_val_t, float); // Aligned placement
};
+struct alignas(128) FailedInitDestroyingDelete {
+ FailedInitDestroyingDelete();
+ ~FailedInitDestroyingDelete();
+
+ void* operator new(size_t); // Non-placement
+ void operator delete(FailedInitDestroyingDelete*, std::destroying_delete_t); // Destroying delete
+};
+
void TestFailedInit(int n) {
new FailedInit();
new FailedInit[n];
new(1.0f) FailedInitOveraligned();
new(1.0f) FailedInitOveraligned[10];
+ new FailedInitDestroyingDelete();
}
// --- non-allocating placement new ---
diff --git a/cpp/ql/test/library-tests/allocators/allocators.expected b/cpp/ql/test/library-tests/allocators/allocators.expected
index 8ed64b76dfeb7..2bb436f847b38 100644
--- a/cpp/ql/test/library-tests/allocators/allocators.expected
+++ b/cpp/ql/test/library-tests/allocators/allocators.expected
@@ -1,118 +1,123 @@
newExprs
-| allocators.cpp:49:3:49:9 | new | int | void* operator new(unsigned long) | 4 | 4 | | |
-| allocators.cpp:50:3:50:15 | new | int | void* operator new(size_t, float) | 4 | 4 | | |
-| allocators.cpp:51:3:51:11 | new | int | void* operator new(unsigned long) | 4 | 4 | | |
-| allocators.cpp:52:3:52:14 | new | String | void* operator new(unsigned long) | 8 | 8 | | |
-| allocators.cpp:53:3:53:27 | new | String | void* operator new(size_t, float) | 8 | 8 | | |
-| allocators.cpp:54:3:54:17 | new | Overaligned | void* operator new(unsigned long, std::align_val_t) | 256 | 128 | aligned | |
-| allocators.cpp:55:3:55:25 | new | Overaligned | void* operator new(size_t, std::align_val_t, float) | 256 | 128 | aligned | |
-| allocators.cpp:107:3:107:18 | new | FailedInit | void* FailedInit::operator new(size_t) | 1 | 1 | | |
-| allocators.cpp:109:3:109:35 | new | FailedInitOveraligned | void* FailedInitOveraligned::operator new(size_t, std::align_val_t, float) | 128 | 128 | aligned | |
-| allocators.cpp:129:3:129:21 | new | int | void* operator new(std::size_t, void*) | 4 | 4 | | & ... |
-| allocators.cpp:135:3:135:26 | new | int | void* operator new(std::size_t, std::nothrow_t const&) | 4 | 4 | | |
+| allocators.cpp:59:3:59:9 | new | int | void* operator new(unsigned long) | 4 | 4 | | |
+| allocators.cpp:60:3:60:15 | new | int | void* operator new(size_t, float) | 4 | 4 | | |
+| allocators.cpp:61:3:61:11 | new | int | void* operator new(unsigned long) | 4 | 4 | | |
+| allocators.cpp:62:3:62:14 | new | String | void* operator new(unsigned long) | 8 | 8 | | |
+| allocators.cpp:63:3:63:27 | new | String | void* operator new(size_t, float) | 8 | 8 | | |
+| allocators.cpp:64:3:64:17 | new | Overaligned | void* operator new(unsigned long, std::align_val_t) | 256 | 128 | aligned | |
+| allocators.cpp:65:3:65:25 | new | Overaligned | void* operator new(size_t, std::align_val_t, float) | 256 | 128 | aligned | |
+| allocators.cpp:126:3:126:18 | new | FailedInit | void* FailedInit::operator new(size_t) | 1 | 1 | | |
+| allocators.cpp:128:3:128:35 | new | FailedInitOveraligned | void* FailedInitOveraligned::operator new(size_t, std::align_val_t, float) | 128 | 128 | aligned | |
+| allocators.cpp:130:3:130:34 | new | FailedInitDestroyingDelete | void* FailedInitDestroyingDelete::operator new(size_t) | 128 | 128 | | |
+| allocators.cpp:149:3:149:21 | new | int | void* operator new(std::size_t, void*) | 4 | 4 | | & ... |
+| allocators.cpp:155:3:155:26 | new | int | void* operator new(std::size_t, std::nothrow_t const&) | 4 | 4 | | |
newArrayExprs
-| allocators.cpp:68:3:68:12 | new[] | int[] | int | void* operator new[](unsigned long) | 4 | 4 | | n | |
-| allocators.cpp:69:3:69:18 | new[] | int[] | int | void* operator new[](size_t, float) | 4 | 4 | | n | |
-| allocators.cpp:70:3:70:15 | new[] | String[] | String | void* operator new[](unsigned long) | 8 | 8 | | n | |
-| allocators.cpp:71:3:71:20 | new[] | Overaligned[] | Overaligned | void* operator new[](unsigned long, std::align_val_t) | 256 | 128 | aligned | n | |
-| allocators.cpp:72:3:72:16 | new[] | String[10] | String | void* operator new[](unsigned long) | 8 | 8 | | | |
-| allocators.cpp:108:3:108:19 | new[] | FailedInit[] | FailedInit | void* FailedInit::operator new[](size_t) | 1 | 1 | | n | |
-| allocators.cpp:110:3:110:37 | new[] | FailedInitOveraligned[10] | FailedInitOveraligned | void* FailedInitOveraligned::operator new[](size_t, std::align_val_t, float) | 128 | 128 | aligned | | |
-| allocators.cpp:132:3:132:17 | new[] | int[1] | int | void* operator new[](std::size_t, void*) | 4 | 4 | | | buf |
-| allocators.cpp:136:3:136:26 | new[] | int[2] | int | void* operator new[](std::size_t, std::nothrow_t const&) | 4 | 4 | | | |
-| allocators.cpp:142:13:142:27 | new[] | char[][10] | char[10] | void* operator new[](unsigned long) | 10 | 1 | | x | |
-| allocators.cpp:143:13:143:28 | new[] | char[20][20] | char[20] | void* operator new[](unsigned long) | 20 | 1 | | | |
-| allocators.cpp:144:13:144:31 | new[] | char[][30][30] | char[30][30] | void* operator new[](unsigned long) | 900 | 1 | | x | |
+| allocators.cpp:79:3:79:12 | new[] | int[] | int | void* operator new[](unsigned long) | 4 | 4 | | n | |
+| allocators.cpp:80:3:80:18 | new[] | int[] | int | void* operator new[](size_t, float) | 4 | 4 | | n | |
+| allocators.cpp:81:3:81:15 | new[] | String[] | String | void* operator new[](unsigned long) | 8 | 8 | | n | |
+| allocators.cpp:82:3:82:20 | new[] | Overaligned[] | Overaligned | void* operator new[](unsigned long, std::align_val_t) | 256 | 128 | aligned | n | |
+| allocators.cpp:83:3:83:16 | new[] | String[10] | String | void* operator new[](unsigned long) | 8 | 8 | | | |
+| allocators.cpp:127:3:127:19 | new[] | FailedInit[] | FailedInit | void* FailedInit::operator new[](size_t) | 1 | 1 | | n | |
+| allocators.cpp:129:3:129:37 | new[] | FailedInitOveraligned[10] | FailedInitOveraligned | void* FailedInitOveraligned::operator new[](size_t, std::align_val_t, float) | 128 | 128 | aligned | | |
+| allocators.cpp:152:3:152:17 | new[] | int[1] | int | void* operator new[](std::size_t, void*) | 4 | 4 | | | buf |
+| allocators.cpp:156:3:156:26 | new[] | int[2] | int | void* operator new[](std::size_t, std::nothrow_t const&) | 4 | 4 | | | |
+| allocators.cpp:162:13:162:27 | new[] | char[][10] | char[10] | void* operator new[](unsigned long) | 10 | 1 | | x | |
+| allocators.cpp:163:13:163:28 | new[] | char[20][20] | char[20] | void* operator new[](unsigned long) | 20 | 1 | | | |
+| allocators.cpp:164:13:164:31 | new[] | char[][30][30] | char[30][30] | void* operator new[](unsigned long) | 900 | 1 | | x | |
newExprDeallocators
-| allocators.cpp:52:3:52:14 | new | String | void operator delete(void*, unsigned long) | 8 | 8 | sized |
-| allocators.cpp:53:3:53:27 | new | String | void operator delete(void*, float) | 8 | 8 | |
-| allocators.cpp:107:3:107:18 | new | FailedInit | void FailedInit::operator delete(void*, size_t) | 1 | 1 | sized |
-| allocators.cpp:109:3:109:35 | new | FailedInitOveraligned | void FailedInitOveraligned::operator delete(void*, std::align_val_t, float) | 128 | 128 | aligned |
+| allocators.cpp:62:3:62:14 | new | String | void operator delete(void*, unsigned long) | 8 | 8 | sized |
+| allocators.cpp:63:3:63:27 | new | String | void operator delete(void*, float) | 8 | 8 | |
+| allocators.cpp:126:3:126:18 | new | FailedInit | void FailedInit::operator delete(void*, size_t) | 1 | 1 | sized |
+| allocators.cpp:128:3:128:35 | new | FailedInitOveraligned | void FailedInitOveraligned::operator delete(void*, std::align_val_t, float) | 128 | 128 | aligned |
+| allocators.cpp:130:3:130:34 | new | FailedInitDestroyingDelete | void FailedInitDestroyingDelete::operator delete(FailedInitDestroyingDelete*, std::destroying_delete_t) | 128 | 128 | destroying |
newArrayExprDeallocators
-| allocators.cpp:70:3:70:15 | new[] | String | void operator delete[](void*, unsigned long) | 8 | 8 | sized |
-| allocators.cpp:72:3:72:16 | new[] | String | void operator delete[](void*, unsigned long) | 8 | 8 | sized |
-| allocators.cpp:108:3:108:19 | new[] | FailedInit | void FailedInit::operator delete[](void*, size_t) | 1 | 1 | sized |
-| allocators.cpp:110:3:110:37 | new[] | FailedInitOveraligned | void FailedInitOveraligned::operator delete[](void*, std::align_val_t, float) | 128 | 128 | aligned |
+| allocators.cpp:81:3:81:15 | new[] | String | void operator delete[](void*, unsigned long) | 8 | 8 | sized |
+| allocators.cpp:83:3:83:16 | new[] | String | void operator delete[](void*, unsigned long) | 8 | 8 | sized |
+| allocators.cpp:127:3:127:19 | new[] | FailedInit | void FailedInit::operator delete[](void*, size_t) | 1 | 1 | sized |
+| allocators.cpp:129:3:129:37 | new[] | FailedInitOveraligned | void FailedInitOveraligned::operator delete[](void*, std::align_val_t, float) | 128 | 128 | aligned |
deleteExprs
-| allocators.cpp:59:3:59:35 | delete | int | void operator delete(void*, unsigned long) | 4 | 4 | sized | false |
-| allocators.cpp:60:3:60:38 | delete | String | void operator delete(void*, unsigned long) | 8 | 8 | sized | false |
-| allocators.cpp:61:3:61:44 | delete | SizedDealloc | void SizedDealloc::operator delete(void*, size_t) | 32 | 1 | sized | true |
-| allocators.cpp:62:3:62:43 | delete | Overaligned | void operator delete(void*, unsigned long, std::align_val_t) | 256 | 128 | sized aligned | false |
-| allocators.cpp:64:3:64:44 | delete | const String | void operator delete(void*, unsigned long) | 8 | 8 | sized | false |
+| allocators.cpp:69:3:69:35 | delete | int | void operator delete(void*, unsigned long) | 4 | 4 | sized | false |
+| allocators.cpp:70:3:70:38 | delete | String | void operator delete(void*, unsigned long) | 8 | 8 | sized | false |
+| allocators.cpp:71:3:71:44 | delete | SizedDealloc | void SizedDealloc::operator delete(void*, size_t) | 32 | 1 | sized | true |
+| allocators.cpp:72:3:72:49 | delete | DestroyingDealloc | void DestroyingDealloc::operator delete(DestroyingDealloc*, std::destroying_delete_t) | 1 | 1 | destroying | true |
+| allocators.cpp:73:3:73:43 | delete | Overaligned | void operator delete(void*, unsigned long, std::align_val_t) | 256 | 128 | sized aligned | false |
+| allocators.cpp:75:3:75:44 | delete | const String | void operator delete(void*, unsigned long) | 8 | 8 | sized | false |
deleteArrayExprs
-| allocators.cpp:78:3:78:37 | delete[] | int | void operator delete[](void*, unsigned long) | 4 | 4 | sized |
-| allocators.cpp:79:3:79:40 | delete[] | String | void operator delete[](void*, unsigned long) | 8 | 8 | sized |
-| allocators.cpp:80:3:80:46 | delete[] | SizedDealloc | void SizedDealloc::operator delete[](void*, size_t) | 32 | 1 | sized |
-| allocators.cpp:81:3:81:45 | delete[] | Overaligned | void operator delete[](void*, unsigned long, std::align_val_t) | 256 | 128 | sized aligned |
-| allocators.cpp:82:3:82:49 | delete[] | PolymorphicBase | void operator delete[](void*, unsigned long) | 8 | 8 | sized |
-| allocators.cpp:83:3:83:23 | delete[] | int | void operator delete[](void*, unsigned long) | 4 | 4 | sized |
+| allocators.cpp:89:3:89:37 | delete[] | int | void operator delete[](void*, unsigned long) | 4 | 4 | sized |
+| allocators.cpp:90:3:90:40 | delete[] | String | void operator delete[](void*, unsigned long) | 8 | 8 | sized |
+| allocators.cpp:91:3:91:46 | delete[] | SizedDealloc | void SizedDealloc::operator delete[](void*, size_t) | 32 | 1 | sized |
+| allocators.cpp:92:3:92:45 | delete[] | Overaligned | void operator delete[](void*, unsigned long, std::align_val_t) | 256 | 128 | sized aligned |
+| allocators.cpp:93:3:93:49 | delete[] | PolymorphicBase | void operator delete[](void*, unsigned long) | 8 | 8 | sized |
+| allocators.cpp:94:3:94:23 | delete[] | int | void operator delete[](void*, unsigned long) | 4 | 4 | sized |
allocationFunctions
-| allocators.cpp:7:7:7:18 | operator new | getSizeArg = 0, requiresDealloc |
-| allocators.cpp:8:7:8:20 | operator new[] | getSizeArg = 0, requiresDealloc |
-| allocators.cpp:9:7:9:18 | operator new | getSizeArg = 0, requiresDealloc |
-| allocators.cpp:10:7:10:20 | operator new[] | getSizeArg = 0, requiresDealloc |
-| allocators.cpp:121:7:121:18 | operator new | getPlacementArgument = 1, getSizeArg = 0 |
-| allocators.cpp:122:7:122:20 | operator new[] | getPlacementArgument = 1, getSizeArg = 0 |
-| allocators.cpp:123:7:123:18 | operator new | getSizeArg = 0, requiresDealloc |
-| allocators.cpp:124:7:124:20 | operator new[] | getSizeArg = 0, requiresDealloc |
-| allocators.cpp:153:7:153:12 | malloc | getSizeArg = 0, requiresDealloc |
+| allocators.cpp:12:7:12:18 | operator new | getSizeArg = 0, requiresDealloc |
+| allocators.cpp:13:7:13:20 | operator new[] | getSizeArg = 0, requiresDealloc |
+| allocators.cpp:14:7:14:18 | operator new | getSizeArg = 0, requiresDealloc |
+| allocators.cpp:15:7:15:20 | operator new[] | getSizeArg = 0, requiresDealloc |
+| allocators.cpp:141:7:141:18 | operator new | getPlacementArgument = 1, getSizeArg = 0 |
+| allocators.cpp:142:7:142:20 | operator new[] | getPlacementArgument = 1, getSizeArg = 0 |
+| allocators.cpp:143:7:143:18 | operator new | getSizeArg = 0, requiresDealloc |
+| allocators.cpp:144:7:144:20 | operator new[] | getSizeArg = 0, requiresDealloc |
+| allocators.cpp:173:7:173:12 | malloc | getSizeArg = 0, requiresDealloc |
| file://:0:0:0:0 | operator new | getSizeArg = 0, requiresDealloc |
| file://:0:0:0:0 | operator new | getSizeArg = 0, requiresDealloc |
| file://:0:0:0:0 | operator new[] | getSizeArg = 0, requiresDealloc |
| file://:0:0:0:0 | operator new[] | getSizeArg = 0, requiresDealloc |
allocationExprs
-| allocators.cpp:49:3:49:9 | new | getAllocatedElementType = int, getSizeBytes = 4, requiresDealloc |
-| allocators.cpp:50:3:50:15 | new | getAllocatedElementType = int, getSizeBytes = 4, requiresDealloc |
-| allocators.cpp:51:3:51:11 | new | getAllocatedElementType = int, getSizeBytes = 4, requiresDealloc |
-| allocators.cpp:52:3:52:14 | new | getAllocatedElementType = String, getSizeBytes = 8, requiresDealloc |
-| allocators.cpp:53:3:53:27 | new | getAllocatedElementType = String, getSizeBytes = 8, requiresDealloc |
-| allocators.cpp:54:3:54:17 | new | getAllocatedElementType = Overaligned, getSizeBytes = 256, requiresDealloc |
-| allocators.cpp:55:3:55:25 | new | getAllocatedElementType = Overaligned, getSizeBytes = 256, requiresDealloc |
-| allocators.cpp:68:3:68:12 | new[] | getAllocatedElementType = int, getSizeExpr = n, getSizeMult = 4, requiresDealloc |
-| allocators.cpp:69:3:69:18 | new[] | getAllocatedElementType = int, getSizeExpr = n, getSizeMult = 4, requiresDealloc |
-| allocators.cpp:70:3:70:15 | new[] | getAllocatedElementType = String, getSizeExpr = n, getSizeMult = 8, requiresDealloc |
-| allocators.cpp:71:3:71:20 | new[] | getAllocatedElementType = Overaligned, getSizeExpr = n, getSizeMult = 256, requiresDealloc |
-| allocators.cpp:72:3:72:16 | new[] | getAllocatedElementType = String, getSizeBytes = 80, requiresDealloc |
-| allocators.cpp:107:3:107:18 | new | getAllocatedElementType = FailedInit, getSizeBytes = 1, requiresDealloc |
-| allocators.cpp:108:3:108:19 | new[] | getAllocatedElementType = FailedInit, getSizeExpr = n, getSizeMult = 1, requiresDealloc |
-| allocators.cpp:109:3:109:35 | new | getAllocatedElementType = FailedInitOveraligned, getSizeBytes = 128, requiresDealloc |
-| allocators.cpp:110:3:110:37 | new[] | getAllocatedElementType = FailedInitOveraligned, getSizeBytes = 1280, requiresDealloc |
-| allocators.cpp:129:3:129:21 | new | getAllocatedElementType = int, getSizeBytes = 4 |
-| allocators.cpp:132:3:132:17 | new[] | getAllocatedElementType = int, getSizeBytes = 4 |
-| allocators.cpp:135:3:135:26 | new | getAllocatedElementType = int, getSizeBytes = 4, requiresDealloc |
-| allocators.cpp:136:3:136:26 | new[] | getAllocatedElementType = int, getSizeBytes = 8, requiresDealloc |
-| allocators.cpp:142:13:142:27 | new[] | getAllocatedElementType = char[10], getSizeExpr = x, getSizeMult = 10, requiresDealloc |
-| allocators.cpp:143:13:143:28 | new[] | getAllocatedElementType = char[20], getSizeBytes = 400, requiresDealloc |
-| allocators.cpp:144:13:144:31 | new[] | getAllocatedElementType = char[30][30], getSizeExpr = x, getSizeMult = 900, requiresDealloc |
-| allocators.cpp:149:8:149:19 | call to operator new | getSizeBytes = 4, getSizeExpr = sizeof(int), getSizeMult = 1, requiresDealloc |
-| allocators.cpp:157:50:157:55 | call to malloc | getAllocatedElementType = const volatile int, getSizeBytes = 5, getSizeExpr = 5, getSizeMult = 1, requiresDealloc |
-| allocators.cpp:158:26:158:31 | call to malloc | getAllocatedElementType = int, getSizeBytes = 20, getSizeExpr = 5, getSizeMult = 4, requiresDealloc |
-| allocators.cpp:159:31:159:36 | call to malloc | getAllocatedElementType = volatile long, getSizeExpr = count, getSizeMult = 1, requiresDealloc |
-| allocators.cpp:160:16:160:21 | call to malloc | getAllocatedElementType = volatile long, getSizeExpr = count, getSizeMult = 4, requiresDealloc |
-| allocators.cpp:161:34:161:39 | call to malloc | getAllocatedElementType = const char, getSizeExpr = ... + ..., getSizeMult = 1, requiresDealloc |
-| allocators.cpp:162:23:162:28 | call to malloc | getSizeExpr = count, getSizeMult = 8, requiresDealloc |
-| allocators.cpp:163:3:163:8 | call to malloc | getSizeBytes = 32, getSizeExpr = ... * ..., getSizeMult = 1, requiresDealloc |
+| allocators.cpp:59:3:59:9 | new | getAllocatedElementType = int, getSizeBytes = 4, requiresDealloc |
+| allocators.cpp:60:3:60:15 | new | getAllocatedElementType = int, getSizeBytes = 4, requiresDealloc |
+| allocators.cpp:61:3:61:11 | new | getAllocatedElementType = int, getSizeBytes = 4, requiresDealloc |
+| allocators.cpp:62:3:62:14 | new | getAllocatedElementType = String, getSizeBytes = 8, requiresDealloc |
+| allocators.cpp:63:3:63:27 | new | getAllocatedElementType = String, getSizeBytes = 8, requiresDealloc |
+| allocators.cpp:64:3:64:17 | new | getAllocatedElementType = Overaligned, getSizeBytes = 256, requiresDealloc |
+| allocators.cpp:65:3:65:25 | new | getAllocatedElementType = Overaligned, getSizeBytes = 256, requiresDealloc |
+| allocators.cpp:79:3:79:12 | new[] | getAllocatedElementType = int, getSizeExpr = n, getSizeMult = 4, requiresDealloc |
+| allocators.cpp:80:3:80:18 | new[] | getAllocatedElementType = int, getSizeExpr = n, getSizeMult = 4, requiresDealloc |
+| allocators.cpp:81:3:81:15 | new[] | getAllocatedElementType = String, getSizeExpr = n, getSizeMult = 8, requiresDealloc |
+| allocators.cpp:82:3:82:20 | new[] | getAllocatedElementType = Overaligned, getSizeExpr = n, getSizeMult = 256, requiresDealloc |
+| allocators.cpp:83:3:83:16 | new[] | getAllocatedElementType = String, getSizeBytes = 80, requiresDealloc |
+| allocators.cpp:126:3:126:18 | new | getAllocatedElementType = FailedInit, getSizeBytes = 1, requiresDealloc |
+| allocators.cpp:127:3:127:19 | new[] | getAllocatedElementType = FailedInit, getSizeExpr = n, getSizeMult = 1, requiresDealloc |
+| allocators.cpp:128:3:128:35 | new | getAllocatedElementType = FailedInitOveraligned, getSizeBytes = 128, requiresDealloc |
+| allocators.cpp:129:3:129:37 | new[] | getAllocatedElementType = FailedInitOveraligned, getSizeBytes = 1280, requiresDealloc |
+| allocators.cpp:130:3:130:34 | new | getAllocatedElementType = FailedInitDestroyingDelete, getSizeBytes = 128, requiresDealloc |
+| allocators.cpp:149:3:149:21 | new | getAllocatedElementType = int, getSizeBytes = 4 |
+| allocators.cpp:152:3:152:17 | new[] | getAllocatedElementType = int, getSizeBytes = 4 |
+| allocators.cpp:155:3:155:26 | new | getAllocatedElementType = int, getSizeBytes = 4, requiresDealloc |
+| allocators.cpp:156:3:156:26 | new[] | getAllocatedElementType = int, getSizeBytes = 8, requiresDealloc |
+| allocators.cpp:162:13:162:27 | new[] | getAllocatedElementType = char[10], getSizeExpr = x, getSizeMult = 10, requiresDealloc |
+| allocators.cpp:163:13:163:28 | new[] | getAllocatedElementType = char[20], getSizeBytes = 400, requiresDealloc |
+| allocators.cpp:164:13:164:31 | new[] | getAllocatedElementType = char[30][30], getSizeExpr = x, getSizeMult = 900, requiresDealloc |
+| allocators.cpp:169:8:169:19 | call to operator new | getSizeBytes = 4, getSizeExpr = sizeof(int), getSizeMult = 1, requiresDealloc |
+| allocators.cpp:177:50:177:55 | call to malloc | getAllocatedElementType = const volatile int, getSizeBytes = 5, getSizeExpr = 5, getSizeMult = 1, requiresDealloc |
+| allocators.cpp:178:26:178:31 | call to malloc | getAllocatedElementType = int, getSizeBytes = 20, getSizeExpr = 5, getSizeMult = 4, requiresDealloc |
+| allocators.cpp:179:31:179:36 | call to malloc | getAllocatedElementType = volatile long, getSizeExpr = count, getSizeMult = 1, requiresDealloc |
+| allocators.cpp:180:16:180:21 | call to malloc | getAllocatedElementType = volatile long, getSizeExpr = count, getSizeMult = 4, requiresDealloc |
+| allocators.cpp:181:34:181:39 | call to malloc | getAllocatedElementType = const char, getSizeExpr = ... + ..., getSizeMult = 1, requiresDealloc |
+| allocators.cpp:182:23:182:28 | call to malloc | getSizeExpr = count, getSizeMult = 8, requiresDealloc |
+| allocators.cpp:183:3:183:8 | call to malloc | getSizeBytes = 32, getSizeExpr = ... * ..., getSizeMult = 1, requiresDealloc |
deallocationFunctions
-| allocators.cpp:11:6:11:20 | operator delete | getFreedArg = 0 |
-| allocators.cpp:12:6:12:22 | operator delete[] | getFreedArg = 0 |
-| allocators.cpp:13:6:13:20 | operator delete | getFreedArg = 0 |
-| allocators.cpp:14:6:14:22 | operator delete[] | getFreedArg = 0 |
+| allocators.cpp:16:6:16:20 | operator delete | getFreedArg = 0 |
+| allocators.cpp:17:6:17:22 | operator delete[] | getFreedArg = 0 |
+| allocators.cpp:18:6:18:20 | operator delete | getFreedArg = 0 |
+| allocators.cpp:19:6:19:22 | operator delete[] | getFreedArg = 0 |
| file://:0:0:0:0 | operator delete | getFreedArg = 0 |
| file://:0:0:0:0 | operator delete | getFreedArg = 0 |
| file://:0:0:0:0 | operator delete | getFreedArg = 0 |
| file://:0:0:0:0 | operator delete[] | getFreedArg = 0 |
| file://:0:0:0:0 | operator delete[] | getFreedArg = 0 |
deallocationExprs
-| allocators.cpp:59:3:59:35 | delete | getFreedExpr = 0 |
-| allocators.cpp:60:3:60:38 | delete | getFreedExpr = 0 |
-| allocators.cpp:61:3:61:44 | delete | getFreedExpr = 0 |
-| allocators.cpp:62:3:62:43 | delete | getFreedExpr = 0 |
-| allocators.cpp:63:3:63:47 | delete | getFreedExpr = 0 |
-| allocators.cpp:64:3:64:44 | delete | getFreedExpr = 0 |
-| allocators.cpp:78:3:78:37 | delete[] | getFreedExpr = 0 |
-| allocators.cpp:79:3:79:40 | delete[] | getFreedExpr = 0 |
-| allocators.cpp:80:3:80:46 | delete[] | getFreedExpr = 0 |
-| allocators.cpp:81:3:81:45 | delete[] | getFreedExpr = 0 |
-| allocators.cpp:82:3:82:49 | delete[] | getFreedExpr = 0 |
-| allocators.cpp:83:3:83:23 | delete[] | getFreedExpr = call to GetPointer |
-| allocators.cpp:150:2:150:16 | call to operator delete | getFreedExpr = ptr |
+| allocators.cpp:69:3:69:35 | delete | getFreedExpr = 0 |
+| allocators.cpp:70:3:70:38 | delete | getFreedExpr = 0 |
+| allocators.cpp:71:3:71:44 | delete | getFreedExpr = 0 |
+| allocators.cpp:72:3:72:49 | delete | getFreedExpr = 0 |
+| allocators.cpp:73:3:73:43 | delete | getFreedExpr = 0 |
+| allocators.cpp:74:3:74:47 | delete | getFreedExpr = 0 |
+| allocators.cpp:75:3:75:44 | delete | getFreedExpr = 0 |
+| allocators.cpp:89:3:89:37 | delete[] | getFreedExpr = 0 |
+| allocators.cpp:90:3:90:40 | delete[] | getFreedExpr = 0 |
+| allocators.cpp:91:3:91:46 | delete[] | getFreedExpr = 0 |
+| allocators.cpp:92:3:92:45 | delete[] | getFreedExpr = 0 |
+| allocators.cpp:93:3:93:49 | delete[] | getFreedExpr = 0 |
+| allocators.cpp:94:3:94:23 | delete[] | getFreedExpr = call to GetPointer |
+| allocators.cpp:170:2:170:16 | call to operator delete | getFreedExpr = ptr |
diff --git a/cpp/ql/test/library-tests/allocators/allocators.ql b/cpp/ql/test/library-tests/allocators/allocators.ql
index aba72adf5ba96..acb8e8cba2660 100644
--- a/cpp/ql/test/library-tests/allocators/allocators.ql
+++ b/cpp/ql/test/library-tests/allocators/allocators.ql
@@ -50,10 +50,11 @@ query predicate newExprDeallocators(
type = allocatedType.toString() and
size = allocatedType.getSize() and
alignment = allocatedType.getAlignment() and
- exists(string sized, string aligned |
+ exists(string sized, string aligned, string destroying |
(if expr.hasAlignedDeallocation() then aligned = "aligned" else aligned = "") and
(if expr.hasSizedDeallocation() then sized = "sized" else sized = "") and
- form = sized + " " + aligned
+ (if expr.isDestroyingDeleteDeallocation() then destroying = "destroying" else destroying = "") and
+ form = sized + " " + aligned + " " + destroying
)
)
}
@@ -68,10 +69,11 @@ query predicate newArrayExprDeallocators(
type = elementType.toString() and
size = elementType.getSize() and
alignment = elementType.getAlignment() and
- exists(string sized, string aligned |
+ exists(string sized, string aligned, string destroying |
(if expr.hasAlignedDeallocation() then aligned = "aligned" else aligned = "") and
(if expr.hasSizedDeallocation() then sized = "sized" else sized = "") and
- form = sized + " " + aligned
+ (if expr.isDestroyingDeleteDeallocation() then destroying = "destroying" else destroying = "") and
+ form = sized + " " + aligned + " " + destroying
)
)
}
@@ -87,10 +89,11 @@ query predicate deleteExprs(
type = deletedType.toString() and
size = deletedType.getSize() and
alignment = deletedType.getAlignment() and
- exists(string sized, string aligned |
+ exists(string sized, string aligned, string destroying |
(if expr.hasAlignedDeallocation() then aligned = "aligned" else aligned = "") and
(if expr.hasSizedDeallocation() then sized = "sized" else sized = "") and
- form = sized + " " + aligned
+ (if expr.isDestroyingDeleteDeallocation() then destroying = "destroying" else destroying = "") and
+ form = sized + " " + aligned + " " + destroying
) and
if exists(expr.getDeallocatorCall())
then hasDeallocatorCall = true
@@ -108,10 +111,11 @@ query predicate deleteArrayExprs(
type = elementType.toString() and
size = elementType.getSize() and
alignment = elementType.getAlignment() and
- exists(string sized, string aligned |
+ exists(string sized, string aligned, string destroying |
(if expr.hasAlignedDeallocation() then aligned = "aligned" else aligned = "") and
(if expr.hasSizedDeallocation() then sized = "sized" else sized = "") and
- form = sized + " " + aligned
+ (if expr.isDestroyingDeleteDeallocation() then destroying = "destroying" else destroying = "") and
+ form = sized + " " + aligned + " " + destroying
)
)
}
diff --git a/cpp/ql/test/library-tests/attributes/routine_attributes/arguments.expected b/cpp/ql/test/library-tests/attributes/routine_attributes/arguments.expected
index 363b5ed1c7e6d..2d331cb1532d4 100644
--- a/cpp/ql/test/library-tests/attributes/routine_attributes/arguments.expected
+++ b/cpp/ql/test/library-tests/attributes/routine_attributes/arguments.expected
@@ -1,7 +1,5 @@
| declspec.cpp:4:23:4:43 | Use fatal() instead | declspec.cpp:4:59:4:62 | exit | declspec.cpp:4:12:4:21 | deprecated | Use fatal() instead |
| routine_attributes2.cpp:5:6:5:11 | hidden | routine_attributes2.cpp:5:13:5:21 | a_routine | routine_attributes2.cpp:5:6:5:11 | visibility | hidden |
-| routine_attributes2.cpp:5:6:5:11 | hidden | routine_attributes2.cpp:5:13:5:21 | a_routine | routine_attributes2.cpp:5:6:5:11 | visibility | hidden |
-| routine_attributes2.h:3:6:3:11 | hidden | routine_attributes2.cpp:5:13:5:21 | a_routine | routine_attributes2.h:3:6:3:11 | visibility | hidden |
| routine_attributes2.h:3:6:3:11 | hidden | routine_attributes2.cpp:5:13:5:21 | a_routine | routine_attributes2.h:3:6:3:11 | visibility | hidden |
| routine_attributes.c:3:53:3:59 | dummy | routine_attributes.c:3:12:3:24 | named_weakref | routine_attributes.c:3:44:3:50 | weakref | dummy |
| routine_attributes.c:4:62:4:68 | dummy | routine_attributes.c:4:12:4:26 | aliased_weakref | routine_attributes.c:4:55:4:59 | alias | dummy |
diff --git a/cpp/ql/test/library-tests/attributes/routine_attributes/routine_attributes.expected b/cpp/ql/test/library-tests/attributes/routine_attributes/routine_attributes.expected
index 529b2d5f78c53..e0b906e23d034 100644
--- a/cpp/ql/test/library-tests/attributes/routine_attributes/routine_attributes.expected
+++ b/cpp/ql/test/library-tests/attributes/routine_attributes/routine_attributes.expected
@@ -19,8 +19,6 @@
| header_export.cpp:18:6:18:16 | myFunction5 | header.h:10:2:10:10 | dllexport |
| header_export.cpp:18:6:18:16 | myFunction5 | header.h:10:2:10:10 | dllimport |
| routine_attributes2.cpp:5:13:5:21 | a_routine | routine_attributes2.cpp:5:6:5:11 | visibility |
-| routine_attributes2.cpp:5:13:5:21 | a_routine | routine_attributes2.cpp:5:6:5:11 | visibility |
-| routine_attributes2.cpp:5:13:5:21 | a_routine | routine_attributes2.h:3:6:3:11 | visibility |
| routine_attributes2.cpp:5:13:5:21 | a_routine | routine_attributes2.h:3:6:3:11 | visibility |
| routine_attributes.c:3:12:3:24 | named_weakref | routine_attributes.c:3:44:3:50 | weakref |
| routine_attributes.c:4:12:4:26 | aliased_weakref | routine_attributes.c:4:46:4:52 | weakref |
diff --git a/cpp/ql/test/library-tests/attributes/type_attributes/arguments.expected b/cpp/ql/test/library-tests/attributes/type_attributes/arguments.expected
index bf1fac006103f..8128a19891e3d 100644
--- a/cpp/ql/test/library-tests/attributes/type_attributes/arguments.expected
+++ b/cpp/ql/test/library-tests/attributes/type_attributes/arguments.expected
@@ -1,6 +1,5 @@
| type_attributes2.cpp:5:14:5:20 | a_class | type_attributes2.cpp:5:7:5:12 | visibility | type_attributes2.cpp:5:7:5:12 | hidden |
| type_attributes2.cpp:5:14:5:20 | a_class | type_attributes2.h:3:7:3:12 | visibility | type_attributes2.h:3:7:3:12 | hidden |
-| type_attributes2.cpp:5:14:5:20 | a_class | type_attributes2.h:3:7:3:12 | visibility | type_attributes2.h:3:7:3:12 | hidden |
| type_attributes_ms.cpp:4:67:4:75 | IDispatch | type_attributes_ms.cpp:4:19:4:22 | uuid | type_attributes_ms.cpp:4:24:4:63 | {00020400-0000-0000-c000-000000000046} |
| type_attributes_ms.cpp:5:30:5:33 | Str1 | type_attributes_ms.cpp:5:12:5:16 | align | type_attributes_ms.cpp:5:18:5:19 | 32 |
| type_attributes_ms.cpp:6:55:6:62 | IUnknown | type_attributes_ms.cpp:6:2:6:2 | uuid | type_attributes_ms.cpp:6:2:6:2 | 00000000-0000-0000-c000-000000000046 |
diff --git a/cpp/ql/test/library-tests/attributes/type_attributes/type_attributes.expected b/cpp/ql/test/library-tests/attributes/type_attributes/type_attributes.expected
index d03209b4bfe9f..ba58d7f1fecd5 100644
--- a/cpp/ql/test/library-tests/attributes/type_attributes/type_attributes.expected
+++ b/cpp/ql/test/library-tests/attributes/type_attributes/type_attributes.expected
@@ -1,7 +1,6 @@
| file://:0:0:0:0 | short __attribute((__may_alias__)) | type_attributes.c:25:30:25:42 | may_alias |
| type_attributes2.cpp:5:14:5:20 | a_class | type_attributes2.cpp:5:7:5:12 | visibility |
| type_attributes2.cpp:5:14:5:20 | a_class | type_attributes2.h:3:7:3:12 | visibility |
-| type_attributes2.cpp:5:14:5:20 | a_class | type_attributes2.h:3:7:3:12 | visibility |
| type_attributes.c:5:36:5:51 | my_packed_struct | type_attributes.c:5:23:5:32 | packed |
| type_attributes.c:10:54:10:54 | (unnamed class/struct/union) | type_attributes.c:10:30:10:50 | transparent_union |
| type_attributes.c:16:54:16:54 | (unnamed class/struct/union) | type_attributes.c:16:30:16:50 | transparent_union |
diff --git a/cpp/ql/test/library-tests/attributes/var_attributes/var_attributes.expected b/cpp/ql/test/library-tests/attributes/var_attributes/var_attributes.expected
index 96e2d5defc766..436e275b835c3 100644
--- a/cpp/ql/test/library-tests/attributes/var_attributes/var_attributes.expected
+++ b/cpp/ql/test/library-tests/attributes/var_attributes/var_attributes.expected
@@ -7,8 +7,6 @@
| ms_var_attributes.cpp:20:34:20:37 | pBuf | ms_var_attributes.cpp:20:12:20:12 | SAL_volatile |
| ms_var_attributes.h:5:22:5:27 | myInt3 | ms_var_attributes.h:5:1:5:9 | dllexport |
| var_attributes2.cpp:5:12:5:21 | a_variable | var_attributes2.cpp:5:5:5:10 | visibility |
-| var_attributes2.cpp:5:12:5:21 | a_variable | var_attributes2.cpp:5:5:5:10 | visibility |
-| var_attributes2.cpp:5:12:5:21 | a_variable | var_attributes2.h:3:12:3:17 | visibility |
| var_attributes2.cpp:5:12:5:21 | a_variable | var_attributes2.h:3:12:3:17 | visibility |
| var_attributes.c:1:12:1:19 | weak_var | var_attributes.c:1:36:1:39 | weak |
| var_attributes.c:2:12:2:22 | weakref_var | var_attributes.c:2:39:2:45 | weakref |
diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected
index cba8a74758a2e..7f7a474598204 100644
--- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected
+++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected
@@ -23259,6 +23259,24611 @@ ir.cpp:
# 2686| Value = [CStyleCast] 0
# 2686| ValueCategory = prvalue
# 2687| getStmt(1): [ReturnStmt] return ...
+many-defs-per-use.cpp:
+# 17| [TopLevelFunction] void many_defs_per_use()
+# 17| :
+# 17| getEntryPoint(): [BlockStmt] { ... }
+# 18| getStmt(0): [DoStmt] do (...) ...
+# 20| getCondition(): [Literal] 0
+# 20| Type = [IntType] int
+# 20| Value = [Literal] 0
+# 20| ValueCategory = prvalue
+# 18| getStmt(): [BlockStmt] { ... }
+# 19| getStmt(0): [DeclStmt] declaration
+# 19| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x0
+# 19| Type = [Struct] String
+# 19| getVariable().getInitializer(): [Initializer] initializer for x0
+# 19| getExpr(): [ConstructorCall] call to String
+# 19| Type = [VoidType] void
+# 19| ValueCategory = prvalue
+# 20| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 20| Type = [VoidType] void
+# 20| ValueCategory = prvalue
+# 20| getQualifier(): [VariableAccess] x0
+# 20| Type = [Struct] String
+# 20| ValueCategory = lvalue
+# 20| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 20| Conversion = [BoolConversion] conversion to bool
+# 20| Type = [BoolType] bool
+# 20| Value = [CStyleCast] 0
+# 20| ValueCategory = prvalue
+# 21| getStmt(1): [DoStmt] do (...) ...
+# 23| getCondition(): [Literal] 0
+# 23| Type = [IntType] int
+# 23| Value = [Literal] 0
+# 23| ValueCategory = prvalue
+# 21| getStmt(): [BlockStmt] { ... }
+# 22| getStmt(0): [DeclStmt] declaration
+# 22| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1
+# 22| Type = [Struct] String
+# 22| getVariable().getInitializer(): [Initializer] initializer for x1
+# 22| getExpr(): [ConstructorCall] call to String
+# 22| Type = [VoidType] void
+# 22| ValueCategory = prvalue
+# 23| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 23| Type = [VoidType] void
+# 23| ValueCategory = prvalue
+# 23| getQualifier(): [VariableAccess] x1
+# 23| Type = [Struct] String
+# 23| ValueCategory = lvalue
+# 23| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 23| Conversion = [BoolConversion] conversion to bool
+# 23| Type = [BoolType] bool
+# 23| Value = [CStyleCast] 0
+# 23| ValueCategory = prvalue
+# 24| getStmt(2): [DoStmt] do (...) ...
+# 26| getCondition(): [Literal] 0
+# 26| Type = [IntType] int
+# 26| Value = [Literal] 0
+# 26| ValueCategory = prvalue
+# 24| getStmt(): [BlockStmt] { ... }
+# 25| getStmt(0): [DeclStmt] declaration
+# 25| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x2
+# 25| Type = [Struct] String
+# 25| getVariable().getInitializer(): [Initializer] initializer for x2
+# 25| getExpr(): [ConstructorCall] call to String
+# 25| Type = [VoidType] void
+# 25| ValueCategory = prvalue
+# 26| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 26| Type = [VoidType] void
+# 26| ValueCategory = prvalue
+# 26| getQualifier(): [VariableAccess] x2
+# 26| Type = [Struct] String
+# 26| ValueCategory = lvalue
+# 26| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 26| Conversion = [BoolConversion] conversion to bool
+# 26| Type = [BoolType] bool
+# 26| Value = [CStyleCast] 0
+# 26| ValueCategory = prvalue
+# 27| getStmt(3): [DoStmt] do (...) ...
+# 29| getCondition(): [Literal] 0
+# 29| Type = [IntType] int
+# 29| Value = [Literal] 0
+# 29| ValueCategory = prvalue
+# 27| getStmt(): [BlockStmt] { ... }
+# 28| getStmt(0): [DeclStmt] declaration
+# 28| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x3
+# 28| Type = [Struct] String
+# 28| getVariable().getInitializer(): [Initializer] initializer for x3
+# 28| getExpr(): [ConstructorCall] call to String
+# 28| Type = [VoidType] void
+# 28| ValueCategory = prvalue
+# 29| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 29| Type = [VoidType] void
+# 29| ValueCategory = prvalue
+# 29| getQualifier(): [VariableAccess] x3
+# 29| Type = [Struct] String
+# 29| ValueCategory = lvalue
+# 29| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 29| Conversion = [BoolConversion] conversion to bool
+# 29| Type = [BoolType] bool
+# 29| Value = [CStyleCast] 0
+# 29| ValueCategory = prvalue
+# 30| getStmt(4): [DoStmt] do (...) ...
+# 32| getCondition(): [Literal] 0
+# 32| Type = [IntType] int
+# 32| Value = [Literal] 0
+# 32| ValueCategory = prvalue
+# 30| getStmt(): [BlockStmt] { ... }
+# 31| getStmt(0): [DeclStmt] declaration
+# 31| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x4
+# 31| Type = [Struct] String
+# 31| getVariable().getInitializer(): [Initializer] initializer for x4
+# 31| getExpr(): [ConstructorCall] call to String
+# 31| Type = [VoidType] void
+# 31| ValueCategory = prvalue
+# 32| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 32| Type = [VoidType] void
+# 32| ValueCategory = prvalue
+# 32| getQualifier(): [VariableAccess] x4
+# 32| Type = [Struct] String
+# 32| ValueCategory = lvalue
+# 32| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 32| Conversion = [BoolConversion] conversion to bool
+# 32| Type = [BoolType] bool
+# 32| Value = [CStyleCast] 0
+# 32| ValueCategory = prvalue
+# 33| getStmt(5): [DoStmt] do (...) ...
+# 35| getCondition(): [Literal] 0
+# 35| Type = [IntType] int
+# 35| Value = [Literal] 0
+# 35| ValueCategory = prvalue
+# 33| getStmt(): [BlockStmt] { ... }
+# 34| getStmt(0): [DeclStmt] declaration
+# 34| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x5
+# 34| Type = [Struct] String
+# 34| getVariable().getInitializer(): [Initializer] initializer for x5
+# 34| getExpr(): [ConstructorCall] call to String
+# 34| Type = [VoidType] void
+# 34| ValueCategory = prvalue
+# 35| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 35| Type = [VoidType] void
+# 35| ValueCategory = prvalue
+# 35| getQualifier(): [VariableAccess] x5
+# 35| Type = [Struct] String
+# 35| ValueCategory = lvalue
+# 35| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 35| Conversion = [BoolConversion] conversion to bool
+# 35| Type = [BoolType] bool
+# 35| Value = [CStyleCast] 0
+# 35| ValueCategory = prvalue
+# 36| getStmt(6): [DoStmt] do (...) ...
+# 38| getCondition(): [Literal] 0
+# 38| Type = [IntType] int
+# 38| Value = [Literal] 0
+# 38| ValueCategory = prvalue
+# 36| getStmt(): [BlockStmt] { ... }
+# 37| getStmt(0): [DeclStmt] declaration
+# 37| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x6
+# 37| Type = [Struct] String
+# 37| getVariable().getInitializer(): [Initializer] initializer for x6
+# 37| getExpr(): [ConstructorCall] call to String
+# 37| Type = [VoidType] void
+# 37| ValueCategory = prvalue
+# 38| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 38| Type = [VoidType] void
+# 38| ValueCategory = prvalue
+# 38| getQualifier(): [VariableAccess] x6
+# 38| Type = [Struct] String
+# 38| ValueCategory = lvalue
+# 38| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 38| Conversion = [BoolConversion] conversion to bool
+# 38| Type = [BoolType] bool
+# 38| Value = [CStyleCast] 0
+# 38| ValueCategory = prvalue
+# 39| getStmt(7): [DoStmt] do (...) ...
+# 41| getCondition(): [Literal] 0
+# 41| Type = [IntType] int
+# 41| Value = [Literal] 0
+# 41| ValueCategory = prvalue
+# 39| getStmt(): [BlockStmt] { ... }
+# 40| getStmt(0): [DeclStmt] declaration
+# 40| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x7
+# 40| Type = [Struct] String
+# 40| getVariable().getInitializer(): [Initializer] initializer for x7
+# 40| getExpr(): [ConstructorCall] call to String
+# 40| Type = [VoidType] void
+# 40| ValueCategory = prvalue
+# 41| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 41| Type = [VoidType] void
+# 41| ValueCategory = prvalue
+# 41| getQualifier(): [VariableAccess] x7
+# 41| Type = [Struct] String
+# 41| ValueCategory = lvalue
+# 41| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 41| Conversion = [BoolConversion] conversion to bool
+# 41| Type = [BoolType] bool
+# 41| Value = [CStyleCast] 0
+# 41| ValueCategory = prvalue
+# 42| getStmt(8): [DoStmt] do (...) ...
+# 44| getCondition(): [Literal] 0
+# 44| Type = [IntType] int
+# 44| Value = [Literal] 0
+# 44| ValueCategory = prvalue
+# 42| getStmt(): [BlockStmt] { ... }
+# 43| getStmt(0): [DeclStmt] declaration
+# 43| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x8
+# 43| Type = [Struct] String
+# 43| getVariable().getInitializer(): [Initializer] initializer for x8
+# 43| getExpr(): [ConstructorCall] call to String
+# 43| Type = [VoidType] void
+# 43| ValueCategory = prvalue
+# 44| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 44| Type = [VoidType] void
+# 44| ValueCategory = prvalue
+# 44| getQualifier(): [VariableAccess] x8
+# 44| Type = [Struct] String
+# 44| ValueCategory = lvalue
+# 44| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 44| Conversion = [BoolConversion] conversion to bool
+# 44| Type = [BoolType] bool
+# 44| Value = [CStyleCast] 0
+# 44| ValueCategory = prvalue
+# 45| getStmt(9): [DoStmt] do (...) ...
+# 47| getCondition(): [Literal] 0
+# 47| Type = [IntType] int
+# 47| Value = [Literal] 0
+# 47| ValueCategory = prvalue
+# 45| getStmt(): [BlockStmt] { ... }
+# 46| getStmt(0): [DeclStmt] declaration
+# 46| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x9
+# 46| Type = [Struct] String
+# 46| getVariable().getInitializer(): [Initializer] initializer for x9
+# 46| getExpr(): [ConstructorCall] call to String
+# 46| Type = [VoidType] void
+# 46| ValueCategory = prvalue
+# 47| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 47| Type = [VoidType] void
+# 47| ValueCategory = prvalue
+# 47| getQualifier(): [VariableAccess] x9
+# 47| Type = [Struct] String
+# 47| ValueCategory = lvalue
+# 47| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 47| Conversion = [BoolConversion] conversion to bool
+# 47| Type = [BoolType] bool
+# 47| Value = [CStyleCast] 0
+# 47| ValueCategory = prvalue
+# 48| getStmt(10): [DoStmt] do (...) ...
+# 50| getCondition(): [Literal] 0
+# 50| Type = [IntType] int
+# 50| Value = [Literal] 0
+# 50| ValueCategory = prvalue
+# 48| getStmt(): [BlockStmt] { ... }
+# 49| getStmt(0): [DeclStmt] declaration
+# 49| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x10
+# 49| Type = [Struct] String
+# 49| getVariable().getInitializer(): [Initializer] initializer for x10
+# 49| getExpr(): [ConstructorCall] call to String
+# 49| Type = [VoidType] void
+# 49| ValueCategory = prvalue
+# 50| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 50| Type = [VoidType] void
+# 50| ValueCategory = prvalue
+# 50| getQualifier(): [VariableAccess] x10
+# 50| Type = [Struct] String
+# 50| ValueCategory = lvalue
+# 50| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 50| Conversion = [BoolConversion] conversion to bool
+# 50| Type = [BoolType] bool
+# 50| Value = [CStyleCast] 0
+# 50| ValueCategory = prvalue
+# 51| getStmt(11): [DoStmt] do (...) ...
+# 53| getCondition(): [Literal] 0
+# 53| Type = [IntType] int
+# 53| Value = [Literal] 0
+# 53| ValueCategory = prvalue
+# 51| getStmt(): [BlockStmt] { ... }
+# 52| getStmt(0): [DeclStmt] declaration
+# 52| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x11
+# 52| Type = [Struct] String
+# 52| getVariable().getInitializer(): [Initializer] initializer for x11
+# 52| getExpr(): [ConstructorCall] call to String
+# 52| Type = [VoidType] void
+# 52| ValueCategory = prvalue
+# 53| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 53| Type = [VoidType] void
+# 53| ValueCategory = prvalue
+# 53| getQualifier(): [VariableAccess] x11
+# 53| Type = [Struct] String
+# 53| ValueCategory = lvalue
+# 53| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 53| Conversion = [BoolConversion] conversion to bool
+# 53| Type = [BoolType] bool
+# 53| Value = [CStyleCast] 0
+# 53| ValueCategory = prvalue
+# 54| getStmt(12): [DoStmt] do (...) ...
+# 56| getCondition(): [Literal] 0
+# 56| Type = [IntType] int
+# 56| Value = [Literal] 0
+# 56| ValueCategory = prvalue
+# 54| getStmt(): [BlockStmt] { ... }
+# 55| getStmt(0): [DeclStmt] declaration
+# 55| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x12
+# 55| Type = [Struct] String
+# 55| getVariable().getInitializer(): [Initializer] initializer for x12
+# 55| getExpr(): [ConstructorCall] call to String
+# 55| Type = [VoidType] void
+# 55| ValueCategory = prvalue
+# 56| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 56| Type = [VoidType] void
+# 56| ValueCategory = prvalue
+# 56| getQualifier(): [VariableAccess] x12
+# 56| Type = [Struct] String
+# 56| ValueCategory = lvalue
+# 56| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 56| Conversion = [BoolConversion] conversion to bool
+# 56| Type = [BoolType] bool
+# 56| Value = [CStyleCast] 0
+# 56| ValueCategory = prvalue
+# 57| getStmt(13): [DoStmt] do (...) ...
+# 59| getCondition(): [Literal] 0
+# 59| Type = [IntType] int
+# 59| Value = [Literal] 0
+# 59| ValueCategory = prvalue
+# 57| getStmt(): [BlockStmt] { ... }
+# 58| getStmt(0): [DeclStmt] declaration
+# 58| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x13
+# 58| Type = [Struct] String
+# 58| getVariable().getInitializer(): [Initializer] initializer for x13
+# 58| getExpr(): [ConstructorCall] call to String
+# 58| Type = [VoidType] void
+# 58| ValueCategory = prvalue
+# 59| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 59| Type = [VoidType] void
+# 59| ValueCategory = prvalue
+# 59| getQualifier(): [VariableAccess] x13
+# 59| Type = [Struct] String
+# 59| ValueCategory = lvalue
+# 59| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 59| Conversion = [BoolConversion] conversion to bool
+# 59| Type = [BoolType] bool
+# 59| Value = [CStyleCast] 0
+# 59| ValueCategory = prvalue
+# 60| getStmt(14): [DoStmt] do (...) ...
+# 62| getCondition(): [Literal] 0
+# 62| Type = [IntType] int
+# 62| Value = [Literal] 0
+# 62| ValueCategory = prvalue
+# 60| getStmt(): [BlockStmt] { ... }
+# 61| getStmt(0): [DeclStmt] declaration
+# 61| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x14
+# 61| Type = [Struct] String
+# 61| getVariable().getInitializer(): [Initializer] initializer for x14
+# 61| getExpr(): [ConstructorCall] call to String
+# 61| Type = [VoidType] void
+# 61| ValueCategory = prvalue
+# 62| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 62| Type = [VoidType] void
+# 62| ValueCategory = prvalue
+# 62| getQualifier(): [VariableAccess] x14
+# 62| Type = [Struct] String
+# 62| ValueCategory = lvalue
+# 62| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 62| Conversion = [BoolConversion] conversion to bool
+# 62| Type = [BoolType] bool
+# 62| Value = [CStyleCast] 0
+# 62| ValueCategory = prvalue
+# 63| getStmt(15): [DoStmt] do (...) ...
+# 65| getCondition(): [Literal] 0
+# 65| Type = [IntType] int
+# 65| Value = [Literal] 0
+# 65| ValueCategory = prvalue
+# 63| getStmt(): [BlockStmt] { ... }
+# 64| getStmt(0): [DeclStmt] declaration
+# 64| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x15
+# 64| Type = [Struct] String
+# 64| getVariable().getInitializer(): [Initializer] initializer for x15
+# 64| getExpr(): [ConstructorCall] call to String
+# 64| Type = [VoidType] void
+# 64| ValueCategory = prvalue
+# 65| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 65| Type = [VoidType] void
+# 65| ValueCategory = prvalue
+# 65| getQualifier(): [VariableAccess] x15
+# 65| Type = [Struct] String
+# 65| ValueCategory = lvalue
+# 65| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 65| Conversion = [BoolConversion] conversion to bool
+# 65| Type = [BoolType] bool
+# 65| Value = [CStyleCast] 0
+# 65| ValueCategory = prvalue
+# 66| getStmt(16): [DoStmt] do (...) ...
+# 68| getCondition(): [Literal] 0
+# 68| Type = [IntType] int
+# 68| Value = [Literal] 0
+# 68| ValueCategory = prvalue
+# 66| getStmt(): [BlockStmt] { ... }
+# 67| getStmt(0): [DeclStmt] declaration
+# 67| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x16
+# 67| Type = [Struct] String
+# 67| getVariable().getInitializer(): [Initializer] initializer for x16
+# 67| getExpr(): [ConstructorCall] call to String
+# 67| Type = [VoidType] void
+# 67| ValueCategory = prvalue
+# 68| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 68| Type = [VoidType] void
+# 68| ValueCategory = prvalue
+# 68| getQualifier(): [VariableAccess] x16
+# 68| Type = [Struct] String
+# 68| ValueCategory = lvalue
+# 68| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 68| Conversion = [BoolConversion] conversion to bool
+# 68| Type = [BoolType] bool
+# 68| Value = [CStyleCast] 0
+# 68| ValueCategory = prvalue
+# 69| getStmt(17): [DoStmt] do (...) ...
+# 71| getCondition(): [Literal] 0
+# 71| Type = [IntType] int
+# 71| Value = [Literal] 0
+# 71| ValueCategory = prvalue
+# 69| getStmt(): [BlockStmt] { ... }
+# 70| getStmt(0): [DeclStmt] declaration
+# 70| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x17
+# 70| Type = [Struct] String
+# 70| getVariable().getInitializer(): [Initializer] initializer for x17
+# 70| getExpr(): [ConstructorCall] call to String
+# 70| Type = [VoidType] void
+# 70| ValueCategory = prvalue
+# 71| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 71| Type = [VoidType] void
+# 71| ValueCategory = prvalue
+# 71| getQualifier(): [VariableAccess] x17
+# 71| Type = [Struct] String
+# 71| ValueCategory = lvalue
+# 71| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 71| Conversion = [BoolConversion] conversion to bool
+# 71| Type = [BoolType] bool
+# 71| Value = [CStyleCast] 0
+# 71| ValueCategory = prvalue
+# 72| getStmt(18): [DoStmt] do (...) ...
+# 74| getCondition(): [Literal] 0
+# 74| Type = [IntType] int
+# 74| Value = [Literal] 0
+# 74| ValueCategory = prvalue
+# 72| getStmt(): [BlockStmt] { ... }
+# 73| getStmt(0): [DeclStmt] declaration
+# 73| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x18
+# 73| Type = [Struct] String
+# 73| getVariable().getInitializer(): [Initializer] initializer for x18
+# 73| getExpr(): [ConstructorCall] call to String
+# 73| Type = [VoidType] void
+# 73| ValueCategory = prvalue
+# 74| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 74| Type = [VoidType] void
+# 74| ValueCategory = prvalue
+# 74| getQualifier(): [VariableAccess] x18
+# 74| Type = [Struct] String
+# 74| ValueCategory = lvalue
+# 74| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 74| Conversion = [BoolConversion] conversion to bool
+# 74| Type = [BoolType] bool
+# 74| Value = [CStyleCast] 0
+# 74| ValueCategory = prvalue
+# 75| getStmt(19): [DoStmt] do (...) ...
+# 77| getCondition(): [Literal] 0
+# 77| Type = [IntType] int
+# 77| Value = [Literal] 0
+# 77| ValueCategory = prvalue
+# 75| getStmt(): [BlockStmt] { ... }
+# 76| getStmt(0): [DeclStmt] declaration
+# 76| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x19
+# 76| Type = [Struct] String
+# 76| getVariable().getInitializer(): [Initializer] initializer for x19
+# 76| getExpr(): [ConstructorCall] call to String
+# 76| Type = [VoidType] void
+# 76| ValueCategory = prvalue
+# 77| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 77| Type = [VoidType] void
+# 77| ValueCategory = prvalue
+# 77| getQualifier(): [VariableAccess] x19
+# 77| Type = [Struct] String
+# 77| ValueCategory = lvalue
+# 77| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 77| Conversion = [BoolConversion] conversion to bool
+# 77| Type = [BoolType] bool
+# 77| Value = [CStyleCast] 0
+# 77| ValueCategory = prvalue
+# 78| getStmt(20): [DoStmt] do (...) ...
+# 80| getCondition(): [Literal] 0
+# 80| Type = [IntType] int
+# 80| Value = [Literal] 0
+# 80| ValueCategory = prvalue
+# 78| getStmt(): [BlockStmt] { ... }
+# 79| getStmt(0): [DeclStmt] declaration
+# 79| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x20
+# 79| Type = [Struct] String
+# 79| getVariable().getInitializer(): [Initializer] initializer for x20
+# 79| getExpr(): [ConstructorCall] call to String
+# 79| Type = [VoidType] void
+# 79| ValueCategory = prvalue
+# 80| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 80| Type = [VoidType] void
+# 80| ValueCategory = prvalue
+# 80| getQualifier(): [VariableAccess] x20
+# 80| Type = [Struct] String
+# 80| ValueCategory = lvalue
+# 80| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 80| Conversion = [BoolConversion] conversion to bool
+# 80| Type = [BoolType] bool
+# 80| Value = [CStyleCast] 0
+# 80| ValueCategory = prvalue
+# 81| getStmt(21): [DoStmt] do (...) ...
+# 83| getCondition(): [Literal] 0
+# 83| Type = [IntType] int
+# 83| Value = [Literal] 0
+# 83| ValueCategory = prvalue
+# 81| getStmt(): [BlockStmt] { ... }
+# 82| getStmt(0): [DeclStmt] declaration
+# 82| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x21
+# 82| Type = [Struct] String
+# 82| getVariable().getInitializer(): [Initializer] initializer for x21
+# 82| getExpr(): [ConstructorCall] call to String
+# 82| Type = [VoidType] void
+# 82| ValueCategory = prvalue
+# 83| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 83| Type = [VoidType] void
+# 83| ValueCategory = prvalue
+# 83| getQualifier(): [VariableAccess] x21
+# 83| Type = [Struct] String
+# 83| ValueCategory = lvalue
+# 83| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 83| Conversion = [BoolConversion] conversion to bool
+# 83| Type = [BoolType] bool
+# 83| Value = [CStyleCast] 0
+# 83| ValueCategory = prvalue
+# 84| getStmt(22): [DoStmt] do (...) ...
+# 86| getCondition(): [Literal] 0
+# 86| Type = [IntType] int
+# 86| Value = [Literal] 0
+# 86| ValueCategory = prvalue
+# 84| getStmt(): [BlockStmt] { ... }
+# 85| getStmt(0): [DeclStmt] declaration
+# 85| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x22
+# 85| Type = [Struct] String
+# 85| getVariable().getInitializer(): [Initializer] initializer for x22
+# 85| getExpr(): [ConstructorCall] call to String
+# 85| Type = [VoidType] void
+# 85| ValueCategory = prvalue
+# 86| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 86| Type = [VoidType] void
+# 86| ValueCategory = prvalue
+# 86| getQualifier(): [VariableAccess] x22
+# 86| Type = [Struct] String
+# 86| ValueCategory = lvalue
+# 86| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 86| Conversion = [BoolConversion] conversion to bool
+# 86| Type = [BoolType] bool
+# 86| Value = [CStyleCast] 0
+# 86| ValueCategory = prvalue
+# 87| getStmt(23): [DoStmt] do (...) ...
+# 89| getCondition(): [Literal] 0
+# 89| Type = [IntType] int
+# 89| Value = [Literal] 0
+# 89| ValueCategory = prvalue
+# 87| getStmt(): [BlockStmt] { ... }
+# 88| getStmt(0): [DeclStmt] declaration
+# 88| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x23
+# 88| Type = [Struct] String
+# 88| getVariable().getInitializer(): [Initializer] initializer for x23
+# 88| getExpr(): [ConstructorCall] call to String
+# 88| Type = [VoidType] void
+# 88| ValueCategory = prvalue
+# 89| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 89| Type = [VoidType] void
+# 89| ValueCategory = prvalue
+# 89| getQualifier(): [VariableAccess] x23
+# 89| Type = [Struct] String
+# 89| ValueCategory = lvalue
+# 89| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 89| Conversion = [BoolConversion] conversion to bool
+# 89| Type = [BoolType] bool
+# 89| Value = [CStyleCast] 0
+# 89| ValueCategory = prvalue
+# 90| getStmt(24): [DoStmt] do (...) ...
+# 92| getCondition(): [Literal] 0
+# 92| Type = [IntType] int
+# 92| Value = [Literal] 0
+# 92| ValueCategory = prvalue
+# 90| getStmt(): [BlockStmt] { ... }
+# 91| getStmt(0): [DeclStmt] declaration
+# 91| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x24
+# 91| Type = [Struct] String
+# 91| getVariable().getInitializer(): [Initializer] initializer for x24
+# 91| getExpr(): [ConstructorCall] call to String
+# 91| Type = [VoidType] void
+# 91| ValueCategory = prvalue
+# 92| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 92| Type = [VoidType] void
+# 92| ValueCategory = prvalue
+# 92| getQualifier(): [VariableAccess] x24
+# 92| Type = [Struct] String
+# 92| ValueCategory = lvalue
+# 92| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 92| Conversion = [BoolConversion] conversion to bool
+# 92| Type = [BoolType] bool
+# 92| Value = [CStyleCast] 0
+# 92| ValueCategory = prvalue
+# 93| getStmt(25): [DoStmt] do (...) ...
+# 95| getCondition(): [Literal] 0
+# 95| Type = [IntType] int
+# 95| Value = [Literal] 0
+# 95| ValueCategory = prvalue
+# 93| getStmt(): [BlockStmt] { ... }
+# 94| getStmt(0): [DeclStmt] declaration
+# 94| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x25
+# 94| Type = [Struct] String
+# 94| getVariable().getInitializer(): [Initializer] initializer for x25
+# 94| getExpr(): [ConstructorCall] call to String
+# 94| Type = [VoidType] void
+# 94| ValueCategory = prvalue
+# 95| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 95| Type = [VoidType] void
+# 95| ValueCategory = prvalue
+# 95| getQualifier(): [VariableAccess] x25
+# 95| Type = [Struct] String
+# 95| ValueCategory = lvalue
+# 95| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 95| Conversion = [BoolConversion] conversion to bool
+# 95| Type = [BoolType] bool
+# 95| Value = [CStyleCast] 0
+# 95| ValueCategory = prvalue
+# 96| getStmt(26): [DoStmt] do (...) ...
+# 98| getCondition(): [Literal] 0
+# 98| Type = [IntType] int
+# 98| Value = [Literal] 0
+# 98| ValueCategory = prvalue
+# 96| getStmt(): [BlockStmt] { ... }
+# 97| getStmt(0): [DeclStmt] declaration
+# 97| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x26
+# 97| Type = [Struct] String
+# 97| getVariable().getInitializer(): [Initializer] initializer for x26
+# 97| getExpr(): [ConstructorCall] call to String
+# 97| Type = [VoidType] void
+# 97| ValueCategory = prvalue
+# 98| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 98| Type = [VoidType] void
+# 98| ValueCategory = prvalue
+# 98| getQualifier(): [VariableAccess] x26
+# 98| Type = [Struct] String
+# 98| ValueCategory = lvalue
+# 98| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 98| Conversion = [BoolConversion] conversion to bool
+# 98| Type = [BoolType] bool
+# 98| Value = [CStyleCast] 0
+# 98| ValueCategory = prvalue
+# 99| getStmt(27): [DoStmt] do (...) ...
+# 101| getCondition(): [Literal] 0
+# 101| Type = [IntType] int
+# 101| Value = [Literal] 0
+# 101| ValueCategory = prvalue
+# 99| getStmt(): [BlockStmt] { ... }
+# 100| getStmt(0): [DeclStmt] declaration
+# 100| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x27
+# 100| Type = [Struct] String
+# 100| getVariable().getInitializer(): [Initializer] initializer for x27
+# 100| getExpr(): [ConstructorCall] call to String
+# 100| Type = [VoidType] void
+# 100| ValueCategory = prvalue
+# 101| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 101| Type = [VoidType] void
+# 101| ValueCategory = prvalue
+# 101| getQualifier(): [VariableAccess] x27
+# 101| Type = [Struct] String
+# 101| ValueCategory = lvalue
+# 101| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 101| Conversion = [BoolConversion] conversion to bool
+# 101| Type = [BoolType] bool
+# 101| Value = [CStyleCast] 0
+# 101| ValueCategory = prvalue
+# 102| getStmt(28): [DoStmt] do (...) ...
+# 104| getCondition(): [Literal] 0
+# 104| Type = [IntType] int
+# 104| Value = [Literal] 0
+# 104| ValueCategory = prvalue
+# 102| getStmt(): [BlockStmt] { ... }
+# 103| getStmt(0): [DeclStmt] declaration
+# 103| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x28
+# 103| Type = [Struct] String
+# 103| getVariable().getInitializer(): [Initializer] initializer for x28
+# 103| getExpr(): [ConstructorCall] call to String
+# 103| Type = [VoidType] void
+# 103| ValueCategory = prvalue
+# 104| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 104| Type = [VoidType] void
+# 104| ValueCategory = prvalue
+# 104| getQualifier(): [VariableAccess] x28
+# 104| Type = [Struct] String
+# 104| ValueCategory = lvalue
+# 104| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 104| Conversion = [BoolConversion] conversion to bool
+# 104| Type = [BoolType] bool
+# 104| Value = [CStyleCast] 0
+# 104| ValueCategory = prvalue
+# 105| getStmt(29): [DoStmt] do (...) ...
+# 107| getCondition(): [Literal] 0
+# 107| Type = [IntType] int
+# 107| Value = [Literal] 0
+# 107| ValueCategory = prvalue
+# 105| getStmt(): [BlockStmt] { ... }
+# 106| getStmt(0): [DeclStmt] declaration
+# 106| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x29
+# 106| Type = [Struct] String
+# 106| getVariable().getInitializer(): [Initializer] initializer for x29
+# 106| getExpr(): [ConstructorCall] call to String
+# 106| Type = [VoidType] void
+# 106| ValueCategory = prvalue
+# 107| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 107| Type = [VoidType] void
+# 107| ValueCategory = prvalue
+# 107| getQualifier(): [VariableAccess] x29
+# 107| Type = [Struct] String
+# 107| ValueCategory = lvalue
+# 107| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 107| Conversion = [BoolConversion] conversion to bool
+# 107| Type = [BoolType] bool
+# 107| Value = [CStyleCast] 0
+# 107| ValueCategory = prvalue
+# 108| getStmt(30): [DoStmt] do (...) ...
+# 110| getCondition(): [Literal] 0
+# 110| Type = [IntType] int
+# 110| Value = [Literal] 0
+# 110| ValueCategory = prvalue
+# 108| getStmt(): [BlockStmt] { ... }
+# 109| getStmt(0): [DeclStmt] declaration
+# 109| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x30
+# 109| Type = [Struct] String
+# 109| getVariable().getInitializer(): [Initializer] initializer for x30
+# 109| getExpr(): [ConstructorCall] call to String
+# 109| Type = [VoidType] void
+# 109| ValueCategory = prvalue
+# 110| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 110| Type = [VoidType] void
+# 110| ValueCategory = prvalue
+# 110| getQualifier(): [VariableAccess] x30
+# 110| Type = [Struct] String
+# 110| ValueCategory = lvalue
+# 110| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 110| Conversion = [BoolConversion] conversion to bool
+# 110| Type = [BoolType] bool
+# 110| Value = [CStyleCast] 0
+# 110| ValueCategory = prvalue
+# 111| getStmt(31): [DoStmt] do (...) ...
+# 113| getCondition(): [Literal] 0
+# 113| Type = [IntType] int
+# 113| Value = [Literal] 0
+# 113| ValueCategory = prvalue
+# 111| getStmt(): [BlockStmt] { ... }
+# 112| getStmt(0): [DeclStmt] declaration
+# 112| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x31
+# 112| Type = [Struct] String
+# 112| getVariable().getInitializer(): [Initializer] initializer for x31
+# 112| getExpr(): [ConstructorCall] call to String
+# 112| Type = [VoidType] void
+# 112| ValueCategory = prvalue
+# 113| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 113| Type = [VoidType] void
+# 113| ValueCategory = prvalue
+# 113| getQualifier(): [VariableAccess] x31
+# 113| Type = [Struct] String
+# 113| ValueCategory = lvalue
+# 113| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 113| Conversion = [BoolConversion] conversion to bool
+# 113| Type = [BoolType] bool
+# 113| Value = [CStyleCast] 0
+# 113| ValueCategory = prvalue
+# 114| getStmt(32): [DoStmt] do (...) ...
+# 116| getCondition(): [Literal] 0
+# 116| Type = [IntType] int
+# 116| Value = [Literal] 0
+# 116| ValueCategory = prvalue
+# 114| getStmt(): [BlockStmt] { ... }
+# 115| getStmt(0): [DeclStmt] declaration
+# 115| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x32
+# 115| Type = [Struct] String
+# 115| getVariable().getInitializer(): [Initializer] initializer for x32
+# 115| getExpr(): [ConstructorCall] call to String
+# 115| Type = [VoidType] void
+# 115| ValueCategory = prvalue
+# 116| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 116| Type = [VoidType] void
+# 116| ValueCategory = prvalue
+# 116| getQualifier(): [VariableAccess] x32
+# 116| Type = [Struct] String
+# 116| ValueCategory = lvalue
+# 116| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 116| Conversion = [BoolConversion] conversion to bool
+# 116| Type = [BoolType] bool
+# 116| Value = [CStyleCast] 0
+# 116| ValueCategory = prvalue
+# 117| getStmt(33): [DoStmt] do (...) ...
+# 119| getCondition(): [Literal] 0
+# 119| Type = [IntType] int
+# 119| Value = [Literal] 0
+# 119| ValueCategory = prvalue
+# 117| getStmt(): [BlockStmt] { ... }
+# 118| getStmt(0): [DeclStmt] declaration
+# 118| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x33
+# 118| Type = [Struct] String
+# 118| getVariable().getInitializer(): [Initializer] initializer for x33
+# 118| getExpr(): [ConstructorCall] call to String
+# 118| Type = [VoidType] void
+# 118| ValueCategory = prvalue
+# 119| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 119| Type = [VoidType] void
+# 119| ValueCategory = prvalue
+# 119| getQualifier(): [VariableAccess] x33
+# 119| Type = [Struct] String
+# 119| ValueCategory = lvalue
+# 119| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 119| Conversion = [BoolConversion] conversion to bool
+# 119| Type = [BoolType] bool
+# 119| Value = [CStyleCast] 0
+# 119| ValueCategory = prvalue
+# 120| getStmt(34): [DoStmt] do (...) ...
+# 122| getCondition(): [Literal] 0
+# 122| Type = [IntType] int
+# 122| Value = [Literal] 0
+# 122| ValueCategory = prvalue
+# 120| getStmt(): [BlockStmt] { ... }
+# 121| getStmt(0): [DeclStmt] declaration
+# 121| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x34
+# 121| Type = [Struct] String
+# 121| getVariable().getInitializer(): [Initializer] initializer for x34
+# 121| getExpr(): [ConstructorCall] call to String
+# 121| Type = [VoidType] void
+# 121| ValueCategory = prvalue
+# 122| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 122| Type = [VoidType] void
+# 122| ValueCategory = prvalue
+# 122| getQualifier(): [VariableAccess] x34
+# 122| Type = [Struct] String
+# 122| ValueCategory = lvalue
+# 122| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 122| Conversion = [BoolConversion] conversion to bool
+# 122| Type = [BoolType] bool
+# 122| Value = [CStyleCast] 0
+# 122| ValueCategory = prvalue
+# 123| getStmt(35): [DoStmt] do (...) ...
+# 125| getCondition(): [Literal] 0
+# 125| Type = [IntType] int
+# 125| Value = [Literal] 0
+# 125| ValueCategory = prvalue
+# 123| getStmt(): [BlockStmt] { ... }
+# 124| getStmt(0): [DeclStmt] declaration
+# 124| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x35
+# 124| Type = [Struct] String
+# 124| getVariable().getInitializer(): [Initializer] initializer for x35
+# 124| getExpr(): [ConstructorCall] call to String
+# 124| Type = [VoidType] void
+# 124| ValueCategory = prvalue
+# 125| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 125| Type = [VoidType] void
+# 125| ValueCategory = prvalue
+# 125| getQualifier(): [VariableAccess] x35
+# 125| Type = [Struct] String
+# 125| ValueCategory = lvalue
+# 125| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 125| Conversion = [BoolConversion] conversion to bool
+# 125| Type = [BoolType] bool
+# 125| Value = [CStyleCast] 0
+# 125| ValueCategory = prvalue
+# 126| getStmt(36): [DoStmt] do (...) ...
+# 128| getCondition(): [Literal] 0
+# 128| Type = [IntType] int
+# 128| Value = [Literal] 0
+# 128| ValueCategory = prvalue
+# 126| getStmt(): [BlockStmt] { ... }
+# 127| getStmt(0): [DeclStmt] declaration
+# 127| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x36
+# 127| Type = [Struct] String
+# 127| getVariable().getInitializer(): [Initializer] initializer for x36
+# 127| getExpr(): [ConstructorCall] call to String
+# 127| Type = [VoidType] void
+# 127| ValueCategory = prvalue
+# 128| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 128| Type = [VoidType] void
+# 128| ValueCategory = prvalue
+# 128| getQualifier(): [VariableAccess] x36
+# 128| Type = [Struct] String
+# 128| ValueCategory = lvalue
+# 128| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 128| Conversion = [BoolConversion] conversion to bool
+# 128| Type = [BoolType] bool
+# 128| Value = [CStyleCast] 0
+# 128| ValueCategory = prvalue
+# 129| getStmt(37): [DoStmt] do (...) ...
+# 131| getCondition(): [Literal] 0
+# 131| Type = [IntType] int
+# 131| Value = [Literal] 0
+# 131| ValueCategory = prvalue
+# 129| getStmt(): [BlockStmt] { ... }
+# 130| getStmt(0): [DeclStmt] declaration
+# 130| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x37
+# 130| Type = [Struct] String
+# 130| getVariable().getInitializer(): [Initializer] initializer for x37
+# 130| getExpr(): [ConstructorCall] call to String
+# 130| Type = [VoidType] void
+# 130| ValueCategory = prvalue
+# 131| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 131| Type = [VoidType] void
+# 131| ValueCategory = prvalue
+# 131| getQualifier(): [VariableAccess] x37
+# 131| Type = [Struct] String
+# 131| ValueCategory = lvalue
+# 131| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 131| Conversion = [BoolConversion] conversion to bool
+# 131| Type = [BoolType] bool
+# 131| Value = [CStyleCast] 0
+# 131| ValueCategory = prvalue
+# 132| getStmt(38): [DoStmt] do (...) ...
+# 134| getCondition(): [Literal] 0
+# 134| Type = [IntType] int
+# 134| Value = [Literal] 0
+# 134| ValueCategory = prvalue
+# 132| getStmt(): [BlockStmt] { ... }
+# 133| getStmt(0): [DeclStmt] declaration
+# 133| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x38
+# 133| Type = [Struct] String
+# 133| getVariable().getInitializer(): [Initializer] initializer for x38
+# 133| getExpr(): [ConstructorCall] call to String
+# 133| Type = [VoidType] void
+# 133| ValueCategory = prvalue
+# 134| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 134| Type = [VoidType] void
+# 134| ValueCategory = prvalue
+# 134| getQualifier(): [VariableAccess] x38
+# 134| Type = [Struct] String
+# 134| ValueCategory = lvalue
+# 134| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 134| Conversion = [BoolConversion] conversion to bool
+# 134| Type = [BoolType] bool
+# 134| Value = [CStyleCast] 0
+# 134| ValueCategory = prvalue
+# 135| getStmt(39): [DoStmt] do (...) ...
+# 137| getCondition(): [Literal] 0
+# 137| Type = [IntType] int
+# 137| Value = [Literal] 0
+# 137| ValueCategory = prvalue
+# 135| getStmt(): [BlockStmt] { ... }
+# 136| getStmt(0): [DeclStmt] declaration
+# 136| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x39
+# 136| Type = [Struct] String
+# 136| getVariable().getInitializer(): [Initializer] initializer for x39
+# 136| getExpr(): [ConstructorCall] call to String
+# 136| Type = [VoidType] void
+# 136| ValueCategory = prvalue
+# 137| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 137| Type = [VoidType] void
+# 137| ValueCategory = prvalue
+# 137| getQualifier(): [VariableAccess] x39
+# 137| Type = [Struct] String
+# 137| ValueCategory = lvalue
+# 137| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 137| Conversion = [BoolConversion] conversion to bool
+# 137| Type = [BoolType] bool
+# 137| Value = [CStyleCast] 0
+# 137| ValueCategory = prvalue
+# 138| getStmt(40): [DoStmt] do (...) ...
+# 140| getCondition(): [Literal] 0
+# 140| Type = [IntType] int
+# 140| Value = [Literal] 0
+# 140| ValueCategory = prvalue
+# 138| getStmt(): [BlockStmt] { ... }
+# 139| getStmt(0): [DeclStmt] declaration
+# 139| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x40
+# 139| Type = [Struct] String
+# 139| getVariable().getInitializer(): [Initializer] initializer for x40
+# 139| getExpr(): [ConstructorCall] call to String
+# 139| Type = [VoidType] void
+# 139| ValueCategory = prvalue
+# 140| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 140| Type = [VoidType] void
+# 140| ValueCategory = prvalue
+# 140| getQualifier(): [VariableAccess] x40
+# 140| Type = [Struct] String
+# 140| ValueCategory = lvalue
+# 140| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 140| Conversion = [BoolConversion] conversion to bool
+# 140| Type = [BoolType] bool
+# 140| Value = [CStyleCast] 0
+# 140| ValueCategory = prvalue
+# 141| getStmt(41): [DoStmt] do (...) ...
+# 143| getCondition(): [Literal] 0
+# 143| Type = [IntType] int
+# 143| Value = [Literal] 0
+# 143| ValueCategory = prvalue
+# 141| getStmt(): [BlockStmt] { ... }
+# 142| getStmt(0): [DeclStmt] declaration
+# 142| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x41
+# 142| Type = [Struct] String
+# 142| getVariable().getInitializer(): [Initializer] initializer for x41
+# 142| getExpr(): [ConstructorCall] call to String
+# 142| Type = [VoidType] void
+# 142| ValueCategory = prvalue
+# 143| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 143| Type = [VoidType] void
+# 143| ValueCategory = prvalue
+# 143| getQualifier(): [VariableAccess] x41
+# 143| Type = [Struct] String
+# 143| ValueCategory = lvalue
+# 143| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 143| Conversion = [BoolConversion] conversion to bool
+# 143| Type = [BoolType] bool
+# 143| Value = [CStyleCast] 0
+# 143| ValueCategory = prvalue
+# 144| getStmt(42): [DoStmt] do (...) ...
+# 146| getCondition(): [Literal] 0
+# 146| Type = [IntType] int
+# 146| Value = [Literal] 0
+# 146| ValueCategory = prvalue
+# 144| getStmt(): [BlockStmt] { ... }
+# 145| getStmt(0): [DeclStmt] declaration
+# 145| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x42
+# 145| Type = [Struct] String
+# 145| getVariable().getInitializer(): [Initializer] initializer for x42
+# 145| getExpr(): [ConstructorCall] call to String
+# 145| Type = [VoidType] void
+# 145| ValueCategory = prvalue
+# 146| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 146| Type = [VoidType] void
+# 146| ValueCategory = prvalue
+# 146| getQualifier(): [VariableAccess] x42
+# 146| Type = [Struct] String
+# 146| ValueCategory = lvalue
+# 146| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 146| Conversion = [BoolConversion] conversion to bool
+# 146| Type = [BoolType] bool
+# 146| Value = [CStyleCast] 0
+# 146| ValueCategory = prvalue
+# 147| getStmt(43): [DoStmt] do (...) ...
+# 149| getCondition(): [Literal] 0
+# 149| Type = [IntType] int
+# 149| Value = [Literal] 0
+# 149| ValueCategory = prvalue
+# 147| getStmt(): [BlockStmt] { ... }
+# 148| getStmt(0): [DeclStmt] declaration
+# 148| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x43
+# 148| Type = [Struct] String
+# 148| getVariable().getInitializer(): [Initializer] initializer for x43
+# 148| getExpr(): [ConstructorCall] call to String
+# 148| Type = [VoidType] void
+# 148| ValueCategory = prvalue
+# 149| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 149| Type = [VoidType] void
+# 149| ValueCategory = prvalue
+# 149| getQualifier(): [VariableAccess] x43
+# 149| Type = [Struct] String
+# 149| ValueCategory = lvalue
+# 149| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 149| Conversion = [BoolConversion] conversion to bool
+# 149| Type = [BoolType] bool
+# 149| Value = [CStyleCast] 0
+# 149| ValueCategory = prvalue
+# 150| getStmt(44): [DoStmt] do (...) ...
+# 152| getCondition(): [Literal] 0
+# 152| Type = [IntType] int
+# 152| Value = [Literal] 0
+# 152| ValueCategory = prvalue
+# 150| getStmt(): [BlockStmt] { ... }
+# 151| getStmt(0): [DeclStmt] declaration
+# 151| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x44
+# 151| Type = [Struct] String
+# 151| getVariable().getInitializer(): [Initializer] initializer for x44
+# 151| getExpr(): [ConstructorCall] call to String
+# 151| Type = [VoidType] void
+# 151| ValueCategory = prvalue
+# 152| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 152| Type = [VoidType] void
+# 152| ValueCategory = prvalue
+# 152| getQualifier(): [VariableAccess] x44
+# 152| Type = [Struct] String
+# 152| ValueCategory = lvalue
+# 152| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 152| Conversion = [BoolConversion] conversion to bool
+# 152| Type = [BoolType] bool
+# 152| Value = [CStyleCast] 0
+# 152| ValueCategory = prvalue
+# 153| getStmt(45): [DoStmt] do (...) ...
+# 155| getCondition(): [Literal] 0
+# 155| Type = [IntType] int
+# 155| Value = [Literal] 0
+# 155| ValueCategory = prvalue
+# 153| getStmt(): [BlockStmt] { ... }
+# 154| getStmt(0): [DeclStmt] declaration
+# 154| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x45
+# 154| Type = [Struct] String
+# 154| getVariable().getInitializer(): [Initializer] initializer for x45
+# 154| getExpr(): [ConstructorCall] call to String
+# 154| Type = [VoidType] void
+# 154| ValueCategory = prvalue
+# 155| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 155| Type = [VoidType] void
+# 155| ValueCategory = prvalue
+# 155| getQualifier(): [VariableAccess] x45
+# 155| Type = [Struct] String
+# 155| ValueCategory = lvalue
+# 155| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 155| Conversion = [BoolConversion] conversion to bool
+# 155| Type = [BoolType] bool
+# 155| Value = [CStyleCast] 0
+# 155| ValueCategory = prvalue
+# 156| getStmt(46): [DoStmt] do (...) ...
+# 158| getCondition(): [Literal] 0
+# 158| Type = [IntType] int
+# 158| Value = [Literal] 0
+# 158| ValueCategory = prvalue
+# 156| getStmt(): [BlockStmt] { ... }
+# 157| getStmt(0): [DeclStmt] declaration
+# 157| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x46
+# 157| Type = [Struct] String
+# 157| getVariable().getInitializer(): [Initializer] initializer for x46
+# 157| getExpr(): [ConstructorCall] call to String
+# 157| Type = [VoidType] void
+# 157| ValueCategory = prvalue
+# 158| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 158| Type = [VoidType] void
+# 158| ValueCategory = prvalue
+# 158| getQualifier(): [VariableAccess] x46
+# 158| Type = [Struct] String
+# 158| ValueCategory = lvalue
+# 158| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 158| Conversion = [BoolConversion] conversion to bool
+# 158| Type = [BoolType] bool
+# 158| Value = [CStyleCast] 0
+# 158| ValueCategory = prvalue
+# 159| getStmt(47): [DoStmt] do (...) ...
+# 161| getCondition(): [Literal] 0
+# 161| Type = [IntType] int
+# 161| Value = [Literal] 0
+# 161| ValueCategory = prvalue
+# 159| getStmt(): [BlockStmt] { ... }
+# 160| getStmt(0): [DeclStmt] declaration
+# 160| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x47
+# 160| Type = [Struct] String
+# 160| getVariable().getInitializer(): [Initializer] initializer for x47
+# 160| getExpr(): [ConstructorCall] call to String
+# 160| Type = [VoidType] void
+# 160| ValueCategory = prvalue
+# 161| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 161| Type = [VoidType] void
+# 161| ValueCategory = prvalue
+# 161| getQualifier(): [VariableAccess] x47
+# 161| Type = [Struct] String
+# 161| ValueCategory = lvalue
+# 161| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 161| Conversion = [BoolConversion] conversion to bool
+# 161| Type = [BoolType] bool
+# 161| Value = [CStyleCast] 0
+# 161| ValueCategory = prvalue
+# 162| getStmt(48): [DoStmt] do (...) ...
+# 164| getCondition(): [Literal] 0
+# 164| Type = [IntType] int
+# 164| Value = [Literal] 0
+# 164| ValueCategory = prvalue
+# 162| getStmt(): [BlockStmt] { ... }
+# 163| getStmt(0): [DeclStmt] declaration
+# 163| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x48
+# 163| Type = [Struct] String
+# 163| getVariable().getInitializer(): [Initializer] initializer for x48
+# 163| getExpr(): [ConstructorCall] call to String
+# 163| Type = [VoidType] void
+# 163| ValueCategory = prvalue
+# 164| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 164| Type = [VoidType] void
+# 164| ValueCategory = prvalue
+# 164| getQualifier(): [VariableAccess] x48
+# 164| Type = [Struct] String
+# 164| ValueCategory = lvalue
+# 164| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 164| Conversion = [BoolConversion] conversion to bool
+# 164| Type = [BoolType] bool
+# 164| Value = [CStyleCast] 0
+# 164| ValueCategory = prvalue
+# 165| getStmt(49): [DoStmt] do (...) ...
+# 167| getCondition(): [Literal] 0
+# 167| Type = [IntType] int
+# 167| Value = [Literal] 0
+# 167| ValueCategory = prvalue
+# 165| getStmt(): [BlockStmt] { ... }
+# 166| getStmt(0): [DeclStmt] declaration
+# 166| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x49
+# 166| Type = [Struct] String
+# 166| getVariable().getInitializer(): [Initializer] initializer for x49
+# 166| getExpr(): [ConstructorCall] call to String
+# 166| Type = [VoidType] void
+# 166| ValueCategory = prvalue
+# 167| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 167| Type = [VoidType] void
+# 167| ValueCategory = prvalue
+# 167| getQualifier(): [VariableAccess] x49
+# 167| Type = [Struct] String
+# 167| ValueCategory = lvalue
+# 167| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 167| Conversion = [BoolConversion] conversion to bool
+# 167| Type = [BoolType] bool
+# 167| Value = [CStyleCast] 0
+# 167| ValueCategory = prvalue
+# 168| getStmt(50): [DoStmt] do (...) ...
+# 170| getCondition(): [Literal] 0
+# 170| Type = [IntType] int
+# 170| Value = [Literal] 0
+# 170| ValueCategory = prvalue
+# 168| getStmt(): [BlockStmt] { ... }
+# 169| getStmt(0): [DeclStmt] declaration
+# 169| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x50
+# 169| Type = [Struct] String
+# 169| getVariable().getInitializer(): [Initializer] initializer for x50
+# 169| getExpr(): [ConstructorCall] call to String
+# 169| Type = [VoidType] void
+# 169| ValueCategory = prvalue
+# 170| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 170| Type = [VoidType] void
+# 170| ValueCategory = prvalue
+# 170| getQualifier(): [VariableAccess] x50
+# 170| Type = [Struct] String
+# 170| ValueCategory = lvalue
+# 170| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 170| Conversion = [BoolConversion] conversion to bool
+# 170| Type = [BoolType] bool
+# 170| Value = [CStyleCast] 0
+# 170| ValueCategory = prvalue
+# 171| getStmt(51): [DoStmt] do (...) ...
+# 173| getCondition(): [Literal] 0
+# 173| Type = [IntType] int
+# 173| Value = [Literal] 0
+# 173| ValueCategory = prvalue
+# 171| getStmt(): [BlockStmt] { ... }
+# 172| getStmt(0): [DeclStmt] declaration
+# 172| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x51
+# 172| Type = [Struct] String
+# 172| getVariable().getInitializer(): [Initializer] initializer for x51
+# 172| getExpr(): [ConstructorCall] call to String
+# 172| Type = [VoidType] void
+# 172| ValueCategory = prvalue
+# 173| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 173| Type = [VoidType] void
+# 173| ValueCategory = prvalue
+# 173| getQualifier(): [VariableAccess] x51
+# 173| Type = [Struct] String
+# 173| ValueCategory = lvalue
+# 173| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 173| Conversion = [BoolConversion] conversion to bool
+# 173| Type = [BoolType] bool
+# 173| Value = [CStyleCast] 0
+# 173| ValueCategory = prvalue
+# 174| getStmt(52): [DoStmt] do (...) ...
+# 176| getCondition(): [Literal] 0
+# 176| Type = [IntType] int
+# 176| Value = [Literal] 0
+# 176| ValueCategory = prvalue
+# 174| getStmt(): [BlockStmt] { ... }
+# 175| getStmt(0): [DeclStmt] declaration
+# 175| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x52
+# 175| Type = [Struct] String
+# 175| getVariable().getInitializer(): [Initializer] initializer for x52
+# 175| getExpr(): [ConstructorCall] call to String
+# 175| Type = [VoidType] void
+# 175| ValueCategory = prvalue
+# 176| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 176| Type = [VoidType] void
+# 176| ValueCategory = prvalue
+# 176| getQualifier(): [VariableAccess] x52
+# 176| Type = [Struct] String
+# 176| ValueCategory = lvalue
+# 176| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 176| Conversion = [BoolConversion] conversion to bool
+# 176| Type = [BoolType] bool
+# 176| Value = [CStyleCast] 0
+# 176| ValueCategory = prvalue
+# 177| getStmt(53): [DoStmt] do (...) ...
+# 179| getCondition(): [Literal] 0
+# 179| Type = [IntType] int
+# 179| Value = [Literal] 0
+# 179| ValueCategory = prvalue
+# 177| getStmt(): [BlockStmt] { ... }
+# 178| getStmt(0): [DeclStmt] declaration
+# 178| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x53
+# 178| Type = [Struct] String
+# 178| getVariable().getInitializer(): [Initializer] initializer for x53
+# 178| getExpr(): [ConstructorCall] call to String
+# 178| Type = [VoidType] void
+# 178| ValueCategory = prvalue
+# 179| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 179| Type = [VoidType] void
+# 179| ValueCategory = prvalue
+# 179| getQualifier(): [VariableAccess] x53
+# 179| Type = [Struct] String
+# 179| ValueCategory = lvalue
+# 179| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 179| Conversion = [BoolConversion] conversion to bool
+# 179| Type = [BoolType] bool
+# 179| Value = [CStyleCast] 0
+# 179| ValueCategory = prvalue
+# 180| getStmt(54): [DoStmt] do (...) ...
+# 182| getCondition(): [Literal] 0
+# 182| Type = [IntType] int
+# 182| Value = [Literal] 0
+# 182| ValueCategory = prvalue
+# 180| getStmt(): [BlockStmt] { ... }
+# 181| getStmt(0): [DeclStmt] declaration
+# 181| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x54
+# 181| Type = [Struct] String
+# 181| getVariable().getInitializer(): [Initializer] initializer for x54
+# 181| getExpr(): [ConstructorCall] call to String
+# 181| Type = [VoidType] void
+# 181| ValueCategory = prvalue
+# 182| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 182| Type = [VoidType] void
+# 182| ValueCategory = prvalue
+# 182| getQualifier(): [VariableAccess] x54
+# 182| Type = [Struct] String
+# 182| ValueCategory = lvalue
+# 182| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 182| Conversion = [BoolConversion] conversion to bool
+# 182| Type = [BoolType] bool
+# 182| Value = [CStyleCast] 0
+# 182| ValueCategory = prvalue
+# 183| getStmt(55): [DoStmt] do (...) ...
+# 185| getCondition(): [Literal] 0
+# 185| Type = [IntType] int
+# 185| Value = [Literal] 0
+# 185| ValueCategory = prvalue
+# 183| getStmt(): [BlockStmt] { ... }
+# 184| getStmt(0): [DeclStmt] declaration
+# 184| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x55
+# 184| Type = [Struct] String
+# 184| getVariable().getInitializer(): [Initializer] initializer for x55
+# 184| getExpr(): [ConstructorCall] call to String
+# 184| Type = [VoidType] void
+# 184| ValueCategory = prvalue
+# 185| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 185| Type = [VoidType] void
+# 185| ValueCategory = prvalue
+# 185| getQualifier(): [VariableAccess] x55
+# 185| Type = [Struct] String
+# 185| ValueCategory = lvalue
+# 185| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 185| Conversion = [BoolConversion] conversion to bool
+# 185| Type = [BoolType] bool
+# 185| Value = [CStyleCast] 0
+# 185| ValueCategory = prvalue
+# 186| getStmt(56): [DoStmt] do (...) ...
+# 188| getCondition(): [Literal] 0
+# 188| Type = [IntType] int
+# 188| Value = [Literal] 0
+# 188| ValueCategory = prvalue
+# 186| getStmt(): [BlockStmt] { ... }
+# 187| getStmt(0): [DeclStmt] declaration
+# 187| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x56
+# 187| Type = [Struct] String
+# 187| getVariable().getInitializer(): [Initializer] initializer for x56
+# 187| getExpr(): [ConstructorCall] call to String
+# 187| Type = [VoidType] void
+# 187| ValueCategory = prvalue
+# 188| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 188| Type = [VoidType] void
+# 188| ValueCategory = prvalue
+# 188| getQualifier(): [VariableAccess] x56
+# 188| Type = [Struct] String
+# 188| ValueCategory = lvalue
+# 188| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 188| Conversion = [BoolConversion] conversion to bool
+# 188| Type = [BoolType] bool
+# 188| Value = [CStyleCast] 0
+# 188| ValueCategory = prvalue
+# 189| getStmt(57): [DoStmt] do (...) ...
+# 191| getCondition(): [Literal] 0
+# 191| Type = [IntType] int
+# 191| Value = [Literal] 0
+# 191| ValueCategory = prvalue
+# 189| getStmt(): [BlockStmt] { ... }
+# 190| getStmt(0): [DeclStmt] declaration
+# 190| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x57
+# 190| Type = [Struct] String
+# 190| getVariable().getInitializer(): [Initializer] initializer for x57
+# 190| getExpr(): [ConstructorCall] call to String
+# 190| Type = [VoidType] void
+# 190| ValueCategory = prvalue
+# 191| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 191| Type = [VoidType] void
+# 191| ValueCategory = prvalue
+# 191| getQualifier(): [VariableAccess] x57
+# 191| Type = [Struct] String
+# 191| ValueCategory = lvalue
+# 191| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 191| Conversion = [BoolConversion] conversion to bool
+# 191| Type = [BoolType] bool
+# 191| Value = [CStyleCast] 0
+# 191| ValueCategory = prvalue
+# 192| getStmt(58): [DoStmt] do (...) ...
+# 194| getCondition(): [Literal] 0
+# 194| Type = [IntType] int
+# 194| Value = [Literal] 0
+# 194| ValueCategory = prvalue
+# 192| getStmt(): [BlockStmt] { ... }
+# 193| getStmt(0): [DeclStmt] declaration
+# 193| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x58
+# 193| Type = [Struct] String
+# 193| getVariable().getInitializer(): [Initializer] initializer for x58
+# 193| getExpr(): [ConstructorCall] call to String
+# 193| Type = [VoidType] void
+# 193| ValueCategory = prvalue
+# 194| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 194| Type = [VoidType] void
+# 194| ValueCategory = prvalue
+# 194| getQualifier(): [VariableAccess] x58
+# 194| Type = [Struct] String
+# 194| ValueCategory = lvalue
+# 194| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 194| Conversion = [BoolConversion] conversion to bool
+# 194| Type = [BoolType] bool
+# 194| Value = [CStyleCast] 0
+# 194| ValueCategory = prvalue
+# 195| getStmt(59): [DoStmt] do (...) ...
+# 197| getCondition(): [Literal] 0
+# 197| Type = [IntType] int
+# 197| Value = [Literal] 0
+# 197| ValueCategory = prvalue
+# 195| getStmt(): [BlockStmt] { ... }
+# 196| getStmt(0): [DeclStmt] declaration
+# 196| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x59
+# 196| Type = [Struct] String
+# 196| getVariable().getInitializer(): [Initializer] initializer for x59
+# 196| getExpr(): [ConstructorCall] call to String
+# 196| Type = [VoidType] void
+# 196| ValueCategory = prvalue
+# 197| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 197| Type = [VoidType] void
+# 197| ValueCategory = prvalue
+# 197| getQualifier(): [VariableAccess] x59
+# 197| Type = [Struct] String
+# 197| ValueCategory = lvalue
+# 197| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 197| Conversion = [BoolConversion] conversion to bool
+# 197| Type = [BoolType] bool
+# 197| Value = [CStyleCast] 0
+# 197| ValueCategory = prvalue
+# 198| getStmt(60): [DoStmt] do (...) ...
+# 200| getCondition(): [Literal] 0
+# 200| Type = [IntType] int
+# 200| Value = [Literal] 0
+# 200| ValueCategory = prvalue
+# 198| getStmt(): [BlockStmt] { ... }
+# 199| getStmt(0): [DeclStmt] declaration
+# 199| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x60
+# 199| Type = [Struct] String
+# 199| getVariable().getInitializer(): [Initializer] initializer for x60
+# 199| getExpr(): [ConstructorCall] call to String
+# 199| Type = [VoidType] void
+# 199| ValueCategory = prvalue
+# 200| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 200| Type = [VoidType] void
+# 200| ValueCategory = prvalue
+# 200| getQualifier(): [VariableAccess] x60
+# 200| Type = [Struct] String
+# 200| ValueCategory = lvalue
+# 200| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 200| Conversion = [BoolConversion] conversion to bool
+# 200| Type = [BoolType] bool
+# 200| Value = [CStyleCast] 0
+# 200| ValueCategory = prvalue
+# 201| getStmt(61): [DoStmt] do (...) ...
+# 203| getCondition(): [Literal] 0
+# 203| Type = [IntType] int
+# 203| Value = [Literal] 0
+# 203| ValueCategory = prvalue
+# 201| getStmt(): [BlockStmt] { ... }
+# 202| getStmt(0): [DeclStmt] declaration
+# 202| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x61
+# 202| Type = [Struct] String
+# 202| getVariable().getInitializer(): [Initializer] initializer for x61
+# 202| getExpr(): [ConstructorCall] call to String
+# 202| Type = [VoidType] void
+# 202| ValueCategory = prvalue
+# 203| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 203| Type = [VoidType] void
+# 203| ValueCategory = prvalue
+# 203| getQualifier(): [VariableAccess] x61
+# 203| Type = [Struct] String
+# 203| ValueCategory = lvalue
+# 203| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 203| Conversion = [BoolConversion] conversion to bool
+# 203| Type = [BoolType] bool
+# 203| Value = [CStyleCast] 0
+# 203| ValueCategory = prvalue
+# 204| getStmt(62): [DoStmt] do (...) ...
+# 206| getCondition(): [Literal] 0
+# 206| Type = [IntType] int
+# 206| Value = [Literal] 0
+# 206| ValueCategory = prvalue
+# 204| getStmt(): [BlockStmt] { ... }
+# 205| getStmt(0): [DeclStmt] declaration
+# 205| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x62
+# 205| Type = [Struct] String
+# 205| getVariable().getInitializer(): [Initializer] initializer for x62
+# 205| getExpr(): [ConstructorCall] call to String
+# 205| Type = [VoidType] void
+# 205| ValueCategory = prvalue
+# 206| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 206| Type = [VoidType] void
+# 206| ValueCategory = prvalue
+# 206| getQualifier(): [VariableAccess] x62
+# 206| Type = [Struct] String
+# 206| ValueCategory = lvalue
+# 206| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 206| Conversion = [BoolConversion] conversion to bool
+# 206| Type = [BoolType] bool
+# 206| Value = [CStyleCast] 0
+# 206| ValueCategory = prvalue
+# 207| getStmt(63): [DoStmt] do (...) ...
+# 209| getCondition(): [Literal] 0
+# 209| Type = [IntType] int
+# 209| Value = [Literal] 0
+# 209| ValueCategory = prvalue
+# 207| getStmt(): [BlockStmt] { ... }
+# 208| getStmt(0): [DeclStmt] declaration
+# 208| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x63
+# 208| Type = [Struct] String
+# 208| getVariable().getInitializer(): [Initializer] initializer for x63
+# 208| getExpr(): [ConstructorCall] call to String
+# 208| Type = [VoidType] void
+# 208| ValueCategory = prvalue
+# 209| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 209| Type = [VoidType] void
+# 209| ValueCategory = prvalue
+# 209| getQualifier(): [VariableAccess] x63
+# 209| Type = [Struct] String
+# 209| ValueCategory = lvalue
+# 209| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 209| Conversion = [BoolConversion] conversion to bool
+# 209| Type = [BoolType] bool
+# 209| Value = [CStyleCast] 0
+# 209| ValueCategory = prvalue
+# 210| getStmt(64): [DoStmt] do (...) ...
+# 212| getCondition(): [Literal] 0
+# 212| Type = [IntType] int
+# 212| Value = [Literal] 0
+# 212| ValueCategory = prvalue
+# 210| getStmt(): [BlockStmt] { ... }
+# 211| getStmt(0): [DeclStmt] declaration
+# 211| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x64
+# 211| Type = [Struct] String
+# 211| getVariable().getInitializer(): [Initializer] initializer for x64
+# 211| getExpr(): [ConstructorCall] call to String
+# 211| Type = [VoidType] void
+# 211| ValueCategory = prvalue
+# 212| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 212| Type = [VoidType] void
+# 212| ValueCategory = prvalue
+# 212| getQualifier(): [VariableAccess] x64
+# 212| Type = [Struct] String
+# 212| ValueCategory = lvalue
+# 212| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 212| Conversion = [BoolConversion] conversion to bool
+# 212| Type = [BoolType] bool
+# 212| Value = [CStyleCast] 0
+# 212| ValueCategory = prvalue
+# 213| getStmt(65): [DoStmt] do (...) ...
+# 215| getCondition(): [Literal] 0
+# 215| Type = [IntType] int
+# 215| Value = [Literal] 0
+# 215| ValueCategory = prvalue
+# 213| getStmt(): [BlockStmt] { ... }
+# 214| getStmt(0): [DeclStmt] declaration
+# 214| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x65
+# 214| Type = [Struct] String
+# 214| getVariable().getInitializer(): [Initializer] initializer for x65
+# 214| getExpr(): [ConstructorCall] call to String
+# 214| Type = [VoidType] void
+# 214| ValueCategory = prvalue
+# 215| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 215| Type = [VoidType] void
+# 215| ValueCategory = prvalue
+# 215| getQualifier(): [VariableAccess] x65
+# 215| Type = [Struct] String
+# 215| ValueCategory = lvalue
+# 215| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 215| Conversion = [BoolConversion] conversion to bool
+# 215| Type = [BoolType] bool
+# 215| Value = [CStyleCast] 0
+# 215| ValueCategory = prvalue
+# 216| getStmt(66): [DoStmt] do (...) ...
+# 218| getCondition(): [Literal] 0
+# 218| Type = [IntType] int
+# 218| Value = [Literal] 0
+# 218| ValueCategory = prvalue
+# 216| getStmt(): [BlockStmt] { ... }
+# 217| getStmt(0): [DeclStmt] declaration
+# 217| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x66
+# 217| Type = [Struct] String
+# 217| getVariable().getInitializer(): [Initializer] initializer for x66
+# 217| getExpr(): [ConstructorCall] call to String
+# 217| Type = [VoidType] void
+# 217| ValueCategory = prvalue
+# 218| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 218| Type = [VoidType] void
+# 218| ValueCategory = prvalue
+# 218| getQualifier(): [VariableAccess] x66
+# 218| Type = [Struct] String
+# 218| ValueCategory = lvalue
+# 218| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 218| Conversion = [BoolConversion] conversion to bool
+# 218| Type = [BoolType] bool
+# 218| Value = [CStyleCast] 0
+# 218| ValueCategory = prvalue
+# 219| getStmt(67): [DoStmt] do (...) ...
+# 221| getCondition(): [Literal] 0
+# 221| Type = [IntType] int
+# 221| Value = [Literal] 0
+# 221| ValueCategory = prvalue
+# 219| getStmt(): [BlockStmt] { ... }
+# 220| getStmt(0): [DeclStmt] declaration
+# 220| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x67
+# 220| Type = [Struct] String
+# 220| getVariable().getInitializer(): [Initializer] initializer for x67
+# 220| getExpr(): [ConstructorCall] call to String
+# 220| Type = [VoidType] void
+# 220| ValueCategory = prvalue
+# 221| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 221| Type = [VoidType] void
+# 221| ValueCategory = prvalue
+# 221| getQualifier(): [VariableAccess] x67
+# 221| Type = [Struct] String
+# 221| ValueCategory = lvalue
+# 221| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 221| Conversion = [BoolConversion] conversion to bool
+# 221| Type = [BoolType] bool
+# 221| Value = [CStyleCast] 0
+# 221| ValueCategory = prvalue
+# 222| getStmt(68): [DoStmt] do (...) ...
+# 224| getCondition(): [Literal] 0
+# 224| Type = [IntType] int
+# 224| Value = [Literal] 0
+# 224| ValueCategory = prvalue
+# 222| getStmt(): [BlockStmt] { ... }
+# 223| getStmt(0): [DeclStmt] declaration
+# 223| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x68
+# 223| Type = [Struct] String
+# 223| getVariable().getInitializer(): [Initializer] initializer for x68
+# 223| getExpr(): [ConstructorCall] call to String
+# 223| Type = [VoidType] void
+# 223| ValueCategory = prvalue
+# 224| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 224| Type = [VoidType] void
+# 224| ValueCategory = prvalue
+# 224| getQualifier(): [VariableAccess] x68
+# 224| Type = [Struct] String
+# 224| ValueCategory = lvalue
+# 224| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 224| Conversion = [BoolConversion] conversion to bool
+# 224| Type = [BoolType] bool
+# 224| Value = [CStyleCast] 0
+# 224| ValueCategory = prvalue
+# 225| getStmt(69): [DoStmt] do (...) ...
+# 227| getCondition(): [Literal] 0
+# 227| Type = [IntType] int
+# 227| Value = [Literal] 0
+# 227| ValueCategory = prvalue
+# 225| getStmt(): [BlockStmt] { ... }
+# 226| getStmt(0): [DeclStmt] declaration
+# 226| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x69
+# 226| Type = [Struct] String
+# 226| getVariable().getInitializer(): [Initializer] initializer for x69
+# 226| getExpr(): [ConstructorCall] call to String
+# 226| Type = [VoidType] void
+# 226| ValueCategory = prvalue
+# 227| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 227| Type = [VoidType] void
+# 227| ValueCategory = prvalue
+# 227| getQualifier(): [VariableAccess] x69
+# 227| Type = [Struct] String
+# 227| ValueCategory = lvalue
+# 227| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 227| Conversion = [BoolConversion] conversion to bool
+# 227| Type = [BoolType] bool
+# 227| Value = [CStyleCast] 0
+# 227| ValueCategory = prvalue
+# 228| getStmt(70): [DoStmt] do (...) ...
+# 230| getCondition(): [Literal] 0
+# 230| Type = [IntType] int
+# 230| Value = [Literal] 0
+# 230| ValueCategory = prvalue
+# 228| getStmt(): [BlockStmt] { ... }
+# 229| getStmt(0): [DeclStmt] declaration
+# 229| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x70
+# 229| Type = [Struct] String
+# 229| getVariable().getInitializer(): [Initializer] initializer for x70
+# 229| getExpr(): [ConstructorCall] call to String
+# 229| Type = [VoidType] void
+# 229| ValueCategory = prvalue
+# 230| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 230| Type = [VoidType] void
+# 230| ValueCategory = prvalue
+# 230| getQualifier(): [VariableAccess] x70
+# 230| Type = [Struct] String
+# 230| ValueCategory = lvalue
+# 230| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 230| Conversion = [BoolConversion] conversion to bool
+# 230| Type = [BoolType] bool
+# 230| Value = [CStyleCast] 0
+# 230| ValueCategory = prvalue
+# 231| getStmt(71): [DoStmt] do (...) ...
+# 233| getCondition(): [Literal] 0
+# 233| Type = [IntType] int
+# 233| Value = [Literal] 0
+# 233| ValueCategory = prvalue
+# 231| getStmt(): [BlockStmt] { ... }
+# 232| getStmt(0): [DeclStmt] declaration
+# 232| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x71
+# 232| Type = [Struct] String
+# 232| getVariable().getInitializer(): [Initializer] initializer for x71
+# 232| getExpr(): [ConstructorCall] call to String
+# 232| Type = [VoidType] void
+# 232| ValueCategory = prvalue
+# 233| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 233| Type = [VoidType] void
+# 233| ValueCategory = prvalue
+# 233| getQualifier(): [VariableAccess] x71
+# 233| Type = [Struct] String
+# 233| ValueCategory = lvalue
+# 233| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 233| Conversion = [BoolConversion] conversion to bool
+# 233| Type = [BoolType] bool
+# 233| Value = [CStyleCast] 0
+# 233| ValueCategory = prvalue
+# 234| getStmt(72): [DoStmt] do (...) ...
+# 236| getCondition(): [Literal] 0
+# 236| Type = [IntType] int
+# 236| Value = [Literal] 0
+# 236| ValueCategory = prvalue
+# 234| getStmt(): [BlockStmt] { ... }
+# 235| getStmt(0): [DeclStmt] declaration
+# 235| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x72
+# 235| Type = [Struct] String
+# 235| getVariable().getInitializer(): [Initializer] initializer for x72
+# 235| getExpr(): [ConstructorCall] call to String
+# 235| Type = [VoidType] void
+# 235| ValueCategory = prvalue
+# 236| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 236| Type = [VoidType] void
+# 236| ValueCategory = prvalue
+# 236| getQualifier(): [VariableAccess] x72
+# 236| Type = [Struct] String
+# 236| ValueCategory = lvalue
+# 236| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 236| Conversion = [BoolConversion] conversion to bool
+# 236| Type = [BoolType] bool
+# 236| Value = [CStyleCast] 0
+# 236| ValueCategory = prvalue
+# 237| getStmt(73): [DoStmt] do (...) ...
+# 239| getCondition(): [Literal] 0
+# 239| Type = [IntType] int
+# 239| Value = [Literal] 0
+# 239| ValueCategory = prvalue
+# 237| getStmt(): [BlockStmt] { ... }
+# 238| getStmt(0): [DeclStmt] declaration
+# 238| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x73
+# 238| Type = [Struct] String
+# 238| getVariable().getInitializer(): [Initializer] initializer for x73
+# 238| getExpr(): [ConstructorCall] call to String
+# 238| Type = [VoidType] void
+# 238| ValueCategory = prvalue
+# 239| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 239| Type = [VoidType] void
+# 239| ValueCategory = prvalue
+# 239| getQualifier(): [VariableAccess] x73
+# 239| Type = [Struct] String
+# 239| ValueCategory = lvalue
+# 239| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 239| Conversion = [BoolConversion] conversion to bool
+# 239| Type = [BoolType] bool
+# 239| Value = [CStyleCast] 0
+# 239| ValueCategory = prvalue
+# 240| getStmt(74): [DoStmt] do (...) ...
+# 242| getCondition(): [Literal] 0
+# 242| Type = [IntType] int
+# 242| Value = [Literal] 0
+# 242| ValueCategory = prvalue
+# 240| getStmt(): [BlockStmt] { ... }
+# 241| getStmt(0): [DeclStmt] declaration
+# 241| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x74
+# 241| Type = [Struct] String
+# 241| getVariable().getInitializer(): [Initializer] initializer for x74
+# 241| getExpr(): [ConstructorCall] call to String
+# 241| Type = [VoidType] void
+# 241| ValueCategory = prvalue
+# 242| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 242| Type = [VoidType] void
+# 242| ValueCategory = prvalue
+# 242| getQualifier(): [VariableAccess] x74
+# 242| Type = [Struct] String
+# 242| ValueCategory = lvalue
+# 242| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 242| Conversion = [BoolConversion] conversion to bool
+# 242| Type = [BoolType] bool
+# 242| Value = [CStyleCast] 0
+# 242| ValueCategory = prvalue
+# 243| getStmt(75): [DoStmt] do (...) ...
+# 245| getCondition(): [Literal] 0
+# 245| Type = [IntType] int
+# 245| Value = [Literal] 0
+# 245| ValueCategory = prvalue
+# 243| getStmt(): [BlockStmt] { ... }
+# 244| getStmt(0): [DeclStmt] declaration
+# 244| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x75
+# 244| Type = [Struct] String
+# 244| getVariable().getInitializer(): [Initializer] initializer for x75
+# 244| getExpr(): [ConstructorCall] call to String
+# 244| Type = [VoidType] void
+# 244| ValueCategory = prvalue
+# 245| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 245| Type = [VoidType] void
+# 245| ValueCategory = prvalue
+# 245| getQualifier(): [VariableAccess] x75
+# 245| Type = [Struct] String
+# 245| ValueCategory = lvalue
+# 245| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 245| Conversion = [BoolConversion] conversion to bool
+# 245| Type = [BoolType] bool
+# 245| Value = [CStyleCast] 0
+# 245| ValueCategory = prvalue
+# 246| getStmt(76): [DoStmt] do (...) ...
+# 248| getCondition(): [Literal] 0
+# 248| Type = [IntType] int
+# 248| Value = [Literal] 0
+# 248| ValueCategory = prvalue
+# 246| getStmt(): [BlockStmt] { ... }
+# 247| getStmt(0): [DeclStmt] declaration
+# 247| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x76
+# 247| Type = [Struct] String
+# 247| getVariable().getInitializer(): [Initializer] initializer for x76
+# 247| getExpr(): [ConstructorCall] call to String
+# 247| Type = [VoidType] void
+# 247| ValueCategory = prvalue
+# 248| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 248| Type = [VoidType] void
+# 248| ValueCategory = prvalue
+# 248| getQualifier(): [VariableAccess] x76
+# 248| Type = [Struct] String
+# 248| ValueCategory = lvalue
+# 248| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 248| Conversion = [BoolConversion] conversion to bool
+# 248| Type = [BoolType] bool
+# 248| Value = [CStyleCast] 0
+# 248| ValueCategory = prvalue
+# 249| getStmt(77): [DoStmt] do (...) ...
+# 251| getCondition(): [Literal] 0
+# 251| Type = [IntType] int
+# 251| Value = [Literal] 0
+# 251| ValueCategory = prvalue
+# 249| getStmt(): [BlockStmt] { ... }
+# 250| getStmt(0): [DeclStmt] declaration
+# 250| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x77
+# 250| Type = [Struct] String
+# 250| getVariable().getInitializer(): [Initializer] initializer for x77
+# 250| getExpr(): [ConstructorCall] call to String
+# 250| Type = [VoidType] void
+# 250| ValueCategory = prvalue
+# 251| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 251| Type = [VoidType] void
+# 251| ValueCategory = prvalue
+# 251| getQualifier(): [VariableAccess] x77
+# 251| Type = [Struct] String
+# 251| ValueCategory = lvalue
+# 251| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 251| Conversion = [BoolConversion] conversion to bool
+# 251| Type = [BoolType] bool
+# 251| Value = [CStyleCast] 0
+# 251| ValueCategory = prvalue
+# 252| getStmt(78): [DoStmt] do (...) ...
+# 254| getCondition(): [Literal] 0
+# 254| Type = [IntType] int
+# 254| Value = [Literal] 0
+# 254| ValueCategory = prvalue
+# 252| getStmt(): [BlockStmt] { ... }
+# 253| getStmt(0): [DeclStmt] declaration
+# 253| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x78
+# 253| Type = [Struct] String
+# 253| getVariable().getInitializer(): [Initializer] initializer for x78
+# 253| getExpr(): [ConstructorCall] call to String
+# 253| Type = [VoidType] void
+# 253| ValueCategory = prvalue
+# 254| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 254| Type = [VoidType] void
+# 254| ValueCategory = prvalue
+# 254| getQualifier(): [VariableAccess] x78
+# 254| Type = [Struct] String
+# 254| ValueCategory = lvalue
+# 254| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 254| Conversion = [BoolConversion] conversion to bool
+# 254| Type = [BoolType] bool
+# 254| Value = [CStyleCast] 0
+# 254| ValueCategory = prvalue
+# 255| getStmt(79): [DoStmt] do (...) ...
+# 257| getCondition(): [Literal] 0
+# 257| Type = [IntType] int
+# 257| Value = [Literal] 0
+# 257| ValueCategory = prvalue
+# 255| getStmt(): [BlockStmt] { ... }
+# 256| getStmt(0): [DeclStmt] declaration
+# 256| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x79
+# 256| Type = [Struct] String
+# 256| getVariable().getInitializer(): [Initializer] initializer for x79
+# 256| getExpr(): [ConstructorCall] call to String
+# 256| Type = [VoidType] void
+# 256| ValueCategory = prvalue
+# 257| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 257| Type = [VoidType] void
+# 257| ValueCategory = prvalue
+# 257| getQualifier(): [VariableAccess] x79
+# 257| Type = [Struct] String
+# 257| ValueCategory = lvalue
+# 257| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 257| Conversion = [BoolConversion] conversion to bool
+# 257| Type = [BoolType] bool
+# 257| Value = [CStyleCast] 0
+# 257| ValueCategory = prvalue
+# 258| getStmt(80): [DoStmt] do (...) ...
+# 260| getCondition(): [Literal] 0
+# 260| Type = [IntType] int
+# 260| Value = [Literal] 0
+# 260| ValueCategory = prvalue
+# 258| getStmt(): [BlockStmt] { ... }
+# 259| getStmt(0): [DeclStmt] declaration
+# 259| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x80
+# 259| Type = [Struct] String
+# 259| getVariable().getInitializer(): [Initializer] initializer for x80
+# 259| getExpr(): [ConstructorCall] call to String
+# 259| Type = [VoidType] void
+# 259| ValueCategory = prvalue
+# 260| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 260| Type = [VoidType] void
+# 260| ValueCategory = prvalue
+# 260| getQualifier(): [VariableAccess] x80
+# 260| Type = [Struct] String
+# 260| ValueCategory = lvalue
+# 260| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 260| Conversion = [BoolConversion] conversion to bool
+# 260| Type = [BoolType] bool
+# 260| Value = [CStyleCast] 0
+# 260| ValueCategory = prvalue
+# 261| getStmt(81): [DoStmt] do (...) ...
+# 263| getCondition(): [Literal] 0
+# 263| Type = [IntType] int
+# 263| Value = [Literal] 0
+# 263| ValueCategory = prvalue
+# 261| getStmt(): [BlockStmt] { ... }
+# 262| getStmt(0): [DeclStmt] declaration
+# 262| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x81
+# 262| Type = [Struct] String
+# 262| getVariable().getInitializer(): [Initializer] initializer for x81
+# 262| getExpr(): [ConstructorCall] call to String
+# 262| Type = [VoidType] void
+# 262| ValueCategory = prvalue
+# 263| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 263| Type = [VoidType] void
+# 263| ValueCategory = prvalue
+# 263| getQualifier(): [VariableAccess] x81
+# 263| Type = [Struct] String
+# 263| ValueCategory = lvalue
+# 263| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 263| Conversion = [BoolConversion] conversion to bool
+# 263| Type = [BoolType] bool
+# 263| Value = [CStyleCast] 0
+# 263| ValueCategory = prvalue
+# 264| getStmt(82): [DoStmt] do (...) ...
+# 266| getCondition(): [Literal] 0
+# 266| Type = [IntType] int
+# 266| Value = [Literal] 0
+# 266| ValueCategory = prvalue
+# 264| getStmt(): [BlockStmt] { ... }
+# 265| getStmt(0): [DeclStmt] declaration
+# 265| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x82
+# 265| Type = [Struct] String
+# 265| getVariable().getInitializer(): [Initializer] initializer for x82
+# 265| getExpr(): [ConstructorCall] call to String
+# 265| Type = [VoidType] void
+# 265| ValueCategory = prvalue
+# 266| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 266| Type = [VoidType] void
+# 266| ValueCategory = prvalue
+# 266| getQualifier(): [VariableAccess] x82
+# 266| Type = [Struct] String
+# 266| ValueCategory = lvalue
+# 266| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 266| Conversion = [BoolConversion] conversion to bool
+# 266| Type = [BoolType] bool
+# 266| Value = [CStyleCast] 0
+# 266| ValueCategory = prvalue
+# 267| getStmt(83): [DoStmt] do (...) ...
+# 269| getCondition(): [Literal] 0
+# 269| Type = [IntType] int
+# 269| Value = [Literal] 0
+# 269| ValueCategory = prvalue
+# 267| getStmt(): [BlockStmt] { ... }
+# 268| getStmt(0): [DeclStmt] declaration
+# 268| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x83
+# 268| Type = [Struct] String
+# 268| getVariable().getInitializer(): [Initializer] initializer for x83
+# 268| getExpr(): [ConstructorCall] call to String
+# 268| Type = [VoidType] void
+# 268| ValueCategory = prvalue
+# 269| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 269| Type = [VoidType] void
+# 269| ValueCategory = prvalue
+# 269| getQualifier(): [VariableAccess] x83
+# 269| Type = [Struct] String
+# 269| ValueCategory = lvalue
+# 269| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 269| Conversion = [BoolConversion] conversion to bool
+# 269| Type = [BoolType] bool
+# 269| Value = [CStyleCast] 0
+# 269| ValueCategory = prvalue
+# 270| getStmt(84): [DoStmt] do (...) ...
+# 272| getCondition(): [Literal] 0
+# 272| Type = [IntType] int
+# 272| Value = [Literal] 0
+# 272| ValueCategory = prvalue
+# 270| getStmt(): [BlockStmt] { ... }
+# 271| getStmt(0): [DeclStmt] declaration
+# 271| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x84
+# 271| Type = [Struct] String
+# 271| getVariable().getInitializer(): [Initializer] initializer for x84
+# 271| getExpr(): [ConstructorCall] call to String
+# 271| Type = [VoidType] void
+# 271| ValueCategory = prvalue
+# 272| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 272| Type = [VoidType] void
+# 272| ValueCategory = prvalue
+# 272| getQualifier(): [VariableAccess] x84
+# 272| Type = [Struct] String
+# 272| ValueCategory = lvalue
+# 272| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 272| Conversion = [BoolConversion] conversion to bool
+# 272| Type = [BoolType] bool
+# 272| Value = [CStyleCast] 0
+# 272| ValueCategory = prvalue
+# 273| getStmt(85): [DoStmt] do (...) ...
+# 275| getCondition(): [Literal] 0
+# 275| Type = [IntType] int
+# 275| Value = [Literal] 0
+# 275| ValueCategory = prvalue
+# 273| getStmt(): [BlockStmt] { ... }
+# 274| getStmt(0): [DeclStmt] declaration
+# 274| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x85
+# 274| Type = [Struct] String
+# 274| getVariable().getInitializer(): [Initializer] initializer for x85
+# 274| getExpr(): [ConstructorCall] call to String
+# 274| Type = [VoidType] void
+# 274| ValueCategory = prvalue
+# 275| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 275| Type = [VoidType] void
+# 275| ValueCategory = prvalue
+# 275| getQualifier(): [VariableAccess] x85
+# 275| Type = [Struct] String
+# 275| ValueCategory = lvalue
+# 275| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 275| Conversion = [BoolConversion] conversion to bool
+# 275| Type = [BoolType] bool
+# 275| Value = [CStyleCast] 0
+# 275| ValueCategory = prvalue
+# 276| getStmt(86): [DoStmt] do (...) ...
+# 278| getCondition(): [Literal] 0
+# 278| Type = [IntType] int
+# 278| Value = [Literal] 0
+# 278| ValueCategory = prvalue
+# 276| getStmt(): [BlockStmt] { ... }
+# 277| getStmt(0): [DeclStmt] declaration
+# 277| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x86
+# 277| Type = [Struct] String
+# 277| getVariable().getInitializer(): [Initializer] initializer for x86
+# 277| getExpr(): [ConstructorCall] call to String
+# 277| Type = [VoidType] void
+# 277| ValueCategory = prvalue
+# 278| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 278| Type = [VoidType] void
+# 278| ValueCategory = prvalue
+# 278| getQualifier(): [VariableAccess] x86
+# 278| Type = [Struct] String
+# 278| ValueCategory = lvalue
+# 278| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 278| Conversion = [BoolConversion] conversion to bool
+# 278| Type = [BoolType] bool
+# 278| Value = [CStyleCast] 0
+# 278| ValueCategory = prvalue
+# 279| getStmt(87): [DoStmt] do (...) ...
+# 281| getCondition(): [Literal] 0
+# 281| Type = [IntType] int
+# 281| Value = [Literal] 0
+# 281| ValueCategory = prvalue
+# 279| getStmt(): [BlockStmt] { ... }
+# 280| getStmt(0): [DeclStmt] declaration
+# 280| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x87
+# 280| Type = [Struct] String
+# 280| getVariable().getInitializer(): [Initializer] initializer for x87
+# 280| getExpr(): [ConstructorCall] call to String
+# 280| Type = [VoidType] void
+# 280| ValueCategory = prvalue
+# 281| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 281| Type = [VoidType] void
+# 281| ValueCategory = prvalue
+# 281| getQualifier(): [VariableAccess] x87
+# 281| Type = [Struct] String
+# 281| ValueCategory = lvalue
+# 281| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 281| Conversion = [BoolConversion] conversion to bool
+# 281| Type = [BoolType] bool
+# 281| Value = [CStyleCast] 0
+# 281| ValueCategory = prvalue
+# 282| getStmt(88): [DoStmt] do (...) ...
+# 284| getCondition(): [Literal] 0
+# 284| Type = [IntType] int
+# 284| Value = [Literal] 0
+# 284| ValueCategory = prvalue
+# 282| getStmt(): [BlockStmt] { ... }
+# 283| getStmt(0): [DeclStmt] declaration
+# 283| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x88
+# 283| Type = [Struct] String
+# 283| getVariable().getInitializer(): [Initializer] initializer for x88
+# 283| getExpr(): [ConstructorCall] call to String
+# 283| Type = [VoidType] void
+# 283| ValueCategory = prvalue
+# 284| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 284| Type = [VoidType] void
+# 284| ValueCategory = prvalue
+# 284| getQualifier(): [VariableAccess] x88
+# 284| Type = [Struct] String
+# 284| ValueCategory = lvalue
+# 284| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 284| Conversion = [BoolConversion] conversion to bool
+# 284| Type = [BoolType] bool
+# 284| Value = [CStyleCast] 0
+# 284| ValueCategory = prvalue
+# 285| getStmt(89): [DoStmt] do (...) ...
+# 287| getCondition(): [Literal] 0
+# 287| Type = [IntType] int
+# 287| Value = [Literal] 0
+# 287| ValueCategory = prvalue
+# 285| getStmt(): [BlockStmt] { ... }
+# 286| getStmt(0): [DeclStmt] declaration
+# 286| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x89
+# 286| Type = [Struct] String
+# 286| getVariable().getInitializer(): [Initializer] initializer for x89
+# 286| getExpr(): [ConstructorCall] call to String
+# 286| Type = [VoidType] void
+# 286| ValueCategory = prvalue
+# 287| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 287| Type = [VoidType] void
+# 287| ValueCategory = prvalue
+# 287| getQualifier(): [VariableAccess] x89
+# 287| Type = [Struct] String
+# 287| ValueCategory = lvalue
+# 287| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 287| Conversion = [BoolConversion] conversion to bool
+# 287| Type = [BoolType] bool
+# 287| Value = [CStyleCast] 0
+# 287| ValueCategory = prvalue
+# 288| getStmt(90): [DoStmt] do (...) ...
+# 290| getCondition(): [Literal] 0
+# 290| Type = [IntType] int
+# 290| Value = [Literal] 0
+# 290| ValueCategory = prvalue
+# 288| getStmt(): [BlockStmt] { ... }
+# 289| getStmt(0): [DeclStmt] declaration
+# 289| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x90
+# 289| Type = [Struct] String
+# 289| getVariable().getInitializer(): [Initializer] initializer for x90
+# 289| getExpr(): [ConstructorCall] call to String
+# 289| Type = [VoidType] void
+# 289| ValueCategory = prvalue
+# 290| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 290| Type = [VoidType] void
+# 290| ValueCategory = prvalue
+# 290| getQualifier(): [VariableAccess] x90
+# 290| Type = [Struct] String
+# 290| ValueCategory = lvalue
+# 290| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 290| Conversion = [BoolConversion] conversion to bool
+# 290| Type = [BoolType] bool
+# 290| Value = [CStyleCast] 0
+# 290| ValueCategory = prvalue
+# 291| getStmt(91): [DoStmt] do (...) ...
+# 293| getCondition(): [Literal] 0
+# 293| Type = [IntType] int
+# 293| Value = [Literal] 0
+# 293| ValueCategory = prvalue
+# 291| getStmt(): [BlockStmt] { ... }
+# 292| getStmt(0): [DeclStmt] declaration
+# 292| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x91
+# 292| Type = [Struct] String
+# 292| getVariable().getInitializer(): [Initializer] initializer for x91
+# 292| getExpr(): [ConstructorCall] call to String
+# 292| Type = [VoidType] void
+# 292| ValueCategory = prvalue
+# 293| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 293| Type = [VoidType] void
+# 293| ValueCategory = prvalue
+# 293| getQualifier(): [VariableAccess] x91
+# 293| Type = [Struct] String
+# 293| ValueCategory = lvalue
+# 293| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 293| Conversion = [BoolConversion] conversion to bool
+# 293| Type = [BoolType] bool
+# 293| Value = [CStyleCast] 0
+# 293| ValueCategory = prvalue
+# 294| getStmt(92): [DoStmt] do (...) ...
+# 296| getCondition(): [Literal] 0
+# 296| Type = [IntType] int
+# 296| Value = [Literal] 0
+# 296| ValueCategory = prvalue
+# 294| getStmt(): [BlockStmt] { ... }
+# 295| getStmt(0): [DeclStmt] declaration
+# 295| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x92
+# 295| Type = [Struct] String
+# 295| getVariable().getInitializer(): [Initializer] initializer for x92
+# 295| getExpr(): [ConstructorCall] call to String
+# 295| Type = [VoidType] void
+# 295| ValueCategory = prvalue
+# 296| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 296| Type = [VoidType] void
+# 296| ValueCategory = prvalue
+# 296| getQualifier(): [VariableAccess] x92
+# 296| Type = [Struct] String
+# 296| ValueCategory = lvalue
+# 296| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 296| Conversion = [BoolConversion] conversion to bool
+# 296| Type = [BoolType] bool
+# 296| Value = [CStyleCast] 0
+# 296| ValueCategory = prvalue
+# 297| getStmt(93): [DoStmt] do (...) ...
+# 299| getCondition(): [Literal] 0
+# 299| Type = [IntType] int
+# 299| Value = [Literal] 0
+# 299| ValueCategory = prvalue
+# 297| getStmt(): [BlockStmt] { ... }
+# 298| getStmt(0): [DeclStmt] declaration
+# 298| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x93
+# 298| Type = [Struct] String
+# 298| getVariable().getInitializer(): [Initializer] initializer for x93
+# 298| getExpr(): [ConstructorCall] call to String
+# 298| Type = [VoidType] void
+# 298| ValueCategory = prvalue
+# 299| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 299| Type = [VoidType] void
+# 299| ValueCategory = prvalue
+# 299| getQualifier(): [VariableAccess] x93
+# 299| Type = [Struct] String
+# 299| ValueCategory = lvalue
+# 299| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 299| Conversion = [BoolConversion] conversion to bool
+# 299| Type = [BoolType] bool
+# 299| Value = [CStyleCast] 0
+# 299| ValueCategory = prvalue
+# 300| getStmt(94): [DoStmt] do (...) ...
+# 302| getCondition(): [Literal] 0
+# 302| Type = [IntType] int
+# 302| Value = [Literal] 0
+# 302| ValueCategory = prvalue
+# 300| getStmt(): [BlockStmt] { ... }
+# 301| getStmt(0): [DeclStmt] declaration
+# 301| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x94
+# 301| Type = [Struct] String
+# 301| getVariable().getInitializer(): [Initializer] initializer for x94
+# 301| getExpr(): [ConstructorCall] call to String
+# 301| Type = [VoidType] void
+# 301| ValueCategory = prvalue
+# 302| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 302| Type = [VoidType] void
+# 302| ValueCategory = prvalue
+# 302| getQualifier(): [VariableAccess] x94
+# 302| Type = [Struct] String
+# 302| ValueCategory = lvalue
+# 302| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 302| Conversion = [BoolConversion] conversion to bool
+# 302| Type = [BoolType] bool
+# 302| Value = [CStyleCast] 0
+# 302| ValueCategory = prvalue
+# 303| getStmt(95): [DoStmt] do (...) ...
+# 305| getCondition(): [Literal] 0
+# 305| Type = [IntType] int
+# 305| Value = [Literal] 0
+# 305| ValueCategory = prvalue
+# 303| getStmt(): [BlockStmt] { ... }
+# 304| getStmt(0): [DeclStmt] declaration
+# 304| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x95
+# 304| Type = [Struct] String
+# 304| getVariable().getInitializer(): [Initializer] initializer for x95
+# 304| getExpr(): [ConstructorCall] call to String
+# 304| Type = [VoidType] void
+# 304| ValueCategory = prvalue
+# 305| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 305| Type = [VoidType] void
+# 305| ValueCategory = prvalue
+# 305| getQualifier(): [VariableAccess] x95
+# 305| Type = [Struct] String
+# 305| ValueCategory = lvalue
+# 305| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 305| Conversion = [BoolConversion] conversion to bool
+# 305| Type = [BoolType] bool
+# 305| Value = [CStyleCast] 0
+# 305| ValueCategory = prvalue
+# 306| getStmt(96): [DoStmt] do (...) ...
+# 308| getCondition(): [Literal] 0
+# 308| Type = [IntType] int
+# 308| Value = [Literal] 0
+# 308| ValueCategory = prvalue
+# 306| getStmt(): [BlockStmt] { ... }
+# 307| getStmt(0): [DeclStmt] declaration
+# 307| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x96
+# 307| Type = [Struct] String
+# 307| getVariable().getInitializer(): [Initializer] initializer for x96
+# 307| getExpr(): [ConstructorCall] call to String
+# 307| Type = [VoidType] void
+# 307| ValueCategory = prvalue
+# 308| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 308| Type = [VoidType] void
+# 308| ValueCategory = prvalue
+# 308| getQualifier(): [VariableAccess] x96
+# 308| Type = [Struct] String
+# 308| ValueCategory = lvalue
+# 308| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 308| Conversion = [BoolConversion] conversion to bool
+# 308| Type = [BoolType] bool
+# 308| Value = [CStyleCast] 0
+# 308| ValueCategory = prvalue
+# 309| getStmt(97): [DoStmt] do (...) ...
+# 311| getCondition(): [Literal] 0
+# 311| Type = [IntType] int
+# 311| Value = [Literal] 0
+# 311| ValueCategory = prvalue
+# 309| getStmt(): [BlockStmt] { ... }
+# 310| getStmt(0): [DeclStmt] declaration
+# 310| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x97
+# 310| Type = [Struct] String
+# 310| getVariable().getInitializer(): [Initializer] initializer for x97
+# 310| getExpr(): [ConstructorCall] call to String
+# 310| Type = [VoidType] void
+# 310| ValueCategory = prvalue
+# 311| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 311| Type = [VoidType] void
+# 311| ValueCategory = prvalue
+# 311| getQualifier(): [VariableAccess] x97
+# 311| Type = [Struct] String
+# 311| ValueCategory = lvalue
+# 311| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 311| Conversion = [BoolConversion] conversion to bool
+# 311| Type = [BoolType] bool
+# 311| Value = [CStyleCast] 0
+# 311| ValueCategory = prvalue
+# 312| getStmt(98): [DoStmt] do (...) ...
+# 314| getCondition(): [Literal] 0
+# 314| Type = [IntType] int
+# 314| Value = [Literal] 0
+# 314| ValueCategory = prvalue
+# 312| getStmt(): [BlockStmt] { ... }
+# 313| getStmt(0): [DeclStmt] declaration
+# 313| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x98
+# 313| Type = [Struct] String
+# 313| getVariable().getInitializer(): [Initializer] initializer for x98
+# 313| getExpr(): [ConstructorCall] call to String
+# 313| Type = [VoidType] void
+# 313| ValueCategory = prvalue
+# 314| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 314| Type = [VoidType] void
+# 314| ValueCategory = prvalue
+# 314| getQualifier(): [VariableAccess] x98
+# 314| Type = [Struct] String
+# 314| ValueCategory = lvalue
+# 314| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 314| Conversion = [BoolConversion] conversion to bool
+# 314| Type = [BoolType] bool
+# 314| Value = [CStyleCast] 0
+# 314| ValueCategory = prvalue
+# 315| getStmt(99): [DoStmt] do (...) ...
+# 317| getCondition(): [Literal] 0
+# 317| Type = [IntType] int
+# 317| Value = [Literal] 0
+# 317| ValueCategory = prvalue
+# 315| getStmt(): [BlockStmt] { ... }
+# 316| getStmt(0): [DeclStmt] declaration
+# 316| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x99
+# 316| Type = [Struct] String
+# 316| getVariable().getInitializer(): [Initializer] initializer for x99
+# 316| getExpr(): [ConstructorCall] call to String
+# 316| Type = [VoidType] void
+# 316| ValueCategory = prvalue
+# 317| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 317| Type = [VoidType] void
+# 317| ValueCategory = prvalue
+# 317| getQualifier(): [VariableAccess] x99
+# 317| Type = [Struct] String
+# 317| ValueCategory = lvalue
+# 317| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 317| Conversion = [BoolConversion] conversion to bool
+# 317| Type = [BoolType] bool
+# 317| Value = [CStyleCast] 0
+# 317| ValueCategory = prvalue
+# 318| getStmt(100): [DoStmt] do (...) ...
+# 320| getCondition(): [Literal] 0
+# 320| Type = [IntType] int
+# 320| Value = [Literal] 0
+# 320| ValueCategory = prvalue
+# 318| getStmt(): [BlockStmt] { ... }
+# 319| getStmt(0): [DeclStmt] declaration
+# 319| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x100
+# 319| Type = [Struct] String
+# 319| getVariable().getInitializer(): [Initializer] initializer for x100
+# 319| getExpr(): [ConstructorCall] call to String
+# 319| Type = [VoidType] void
+# 319| ValueCategory = prvalue
+# 320| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 320| Type = [VoidType] void
+# 320| ValueCategory = prvalue
+# 320| getQualifier(): [VariableAccess] x100
+# 320| Type = [Struct] String
+# 320| ValueCategory = lvalue
+# 320| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 320| Conversion = [BoolConversion] conversion to bool
+# 320| Type = [BoolType] bool
+# 320| Value = [CStyleCast] 0
+# 320| ValueCategory = prvalue
+# 321| getStmt(101): [DoStmt] do (...) ...
+# 323| getCondition(): [Literal] 0
+# 323| Type = [IntType] int
+# 323| Value = [Literal] 0
+# 323| ValueCategory = prvalue
+# 321| getStmt(): [BlockStmt] { ... }
+# 322| getStmt(0): [DeclStmt] declaration
+# 322| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x101
+# 322| Type = [Struct] String
+# 322| getVariable().getInitializer(): [Initializer] initializer for x101
+# 322| getExpr(): [ConstructorCall] call to String
+# 322| Type = [VoidType] void
+# 322| ValueCategory = prvalue
+# 323| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 323| Type = [VoidType] void
+# 323| ValueCategory = prvalue
+# 323| getQualifier(): [VariableAccess] x101
+# 323| Type = [Struct] String
+# 323| ValueCategory = lvalue
+# 323| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 323| Conversion = [BoolConversion] conversion to bool
+# 323| Type = [BoolType] bool
+# 323| Value = [CStyleCast] 0
+# 323| ValueCategory = prvalue
+# 324| getStmt(102): [DoStmt] do (...) ...
+# 326| getCondition(): [Literal] 0
+# 326| Type = [IntType] int
+# 326| Value = [Literal] 0
+# 326| ValueCategory = prvalue
+# 324| getStmt(): [BlockStmt] { ... }
+# 325| getStmt(0): [DeclStmt] declaration
+# 325| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x102
+# 325| Type = [Struct] String
+# 325| getVariable().getInitializer(): [Initializer] initializer for x102
+# 325| getExpr(): [ConstructorCall] call to String
+# 325| Type = [VoidType] void
+# 325| ValueCategory = prvalue
+# 326| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 326| Type = [VoidType] void
+# 326| ValueCategory = prvalue
+# 326| getQualifier(): [VariableAccess] x102
+# 326| Type = [Struct] String
+# 326| ValueCategory = lvalue
+# 326| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 326| Conversion = [BoolConversion] conversion to bool
+# 326| Type = [BoolType] bool
+# 326| Value = [CStyleCast] 0
+# 326| ValueCategory = prvalue
+# 327| getStmt(103): [DoStmt] do (...) ...
+# 329| getCondition(): [Literal] 0
+# 329| Type = [IntType] int
+# 329| Value = [Literal] 0
+# 329| ValueCategory = prvalue
+# 327| getStmt(): [BlockStmt] { ... }
+# 328| getStmt(0): [DeclStmt] declaration
+# 328| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x103
+# 328| Type = [Struct] String
+# 328| getVariable().getInitializer(): [Initializer] initializer for x103
+# 328| getExpr(): [ConstructorCall] call to String
+# 328| Type = [VoidType] void
+# 328| ValueCategory = prvalue
+# 329| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 329| Type = [VoidType] void
+# 329| ValueCategory = prvalue
+# 329| getQualifier(): [VariableAccess] x103
+# 329| Type = [Struct] String
+# 329| ValueCategory = lvalue
+# 329| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 329| Conversion = [BoolConversion] conversion to bool
+# 329| Type = [BoolType] bool
+# 329| Value = [CStyleCast] 0
+# 329| ValueCategory = prvalue
+# 330| getStmt(104): [DoStmt] do (...) ...
+# 332| getCondition(): [Literal] 0
+# 332| Type = [IntType] int
+# 332| Value = [Literal] 0
+# 332| ValueCategory = prvalue
+# 330| getStmt(): [BlockStmt] { ... }
+# 331| getStmt(0): [DeclStmt] declaration
+# 331| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x104
+# 331| Type = [Struct] String
+# 331| getVariable().getInitializer(): [Initializer] initializer for x104
+# 331| getExpr(): [ConstructorCall] call to String
+# 331| Type = [VoidType] void
+# 331| ValueCategory = prvalue
+# 332| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 332| Type = [VoidType] void
+# 332| ValueCategory = prvalue
+# 332| getQualifier(): [VariableAccess] x104
+# 332| Type = [Struct] String
+# 332| ValueCategory = lvalue
+# 332| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 332| Conversion = [BoolConversion] conversion to bool
+# 332| Type = [BoolType] bool
+# 332| Value = [CStyleCast] 0
+# 332| ValueCategory = prvalue
+# 333| getStmt(105): [DoStmt] do (...) ...
+# 335| getCondition(): [Literal] 0
+# 335| Type = [IntType] int
+# 335| Value = [Literal] 0
+# 335| ValueCategory = prvalue
+# 333| getStmt(): [BlockStmt] { ... }
+# 334| getStmt(0): [DeclStmt] declaration
+# 334| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x105
+# 334| Type = [Struct] String
+# 334| getVariable().getInitializer(): [Initializer] initializer for x105
+# 334| getExpr(): [ConstructorCall] call to String
+# 334| Type = [VoidType] void
+# 334| ValueCategory = prvalue
+# 335| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 335| Type = [VoidType] void
+# 335| ValueCategory = prvalue
+# 335| getQualifier(): [VariableAccess] x105
+# 335| Type = [Struct] String
+# 335| ValueCategory = lvalue
+# 335| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 335| Conversion = [BoolConversion] conversion to bool
+# 335| Type = [BoolType] bool
+# 335| Value = [CStyleCast] 0
+# 335| ValueCategory = prvalue
+# 336| getStmt(106): [DoStmt] do (...) ...
+# 338| getCondition(): [Literal] 0
+# 338| Type = [IntType] int
+# 338| Value = [Literal] 0
+# 338| ValueCategory = prvalue
+# 336| getStmt(): [BlockStmt] { ... }
+# 337| getStmt(0): [DeclStmt] declaration
+# 337| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x106
+# 337| Type = [Struct] String
+# 337| getVariable().getInitializer(): [Initializer] initializer for x106
+# 337| getExpr(): [ConstructorCall] call to String
+# 337| Type = [VoidType] void
+# 337| ValueCategory = prvalue
+# 338| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 338| Type = [VoidType] void
+# 338| ValueCategory = prvalue
+# 338| getQualifier(): [VariableAccess] x106
+# 338| Type = [Struct] String
+# 338| ValueCategory = lvalue
+# 338| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 338| Conversion = [BoolConversion] conversion to bool
+# 338| Type = [BoolType] bool
+# 338| Value = [CStyleCast] 0
+# 338| ValueCategory = prvalue
+# 339| getStmt(107): [DoStmt] do (...) ...
+# 341| getCondition(): [Literal] 0
+# 341| Type = [IntType] int
+# 341| Value = [Literal] 0
+# 341| ValueCategory = prvalue
+# 339| getStmt(): [BlockStmt] { ... }
+# 340| getStmt(0): [DeclStmt] declaration
+# 340| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x107
+# 340| Type = [Struct] String
+# 340| getVariable().getInitializer(): [Initializer] initializer for x107
+# 340| getExpr(): [ConstructorCall] call to String
+# 340| Type = [VoidType] void
+# 340| ValueCategory = prvalue
+# 341| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 341| Type = [VoidType] void
+# 341| ValueCategory = prvalue
+# 341| getQualifier(): [VariableAccess] x107
+# 341| Type = [Struct] String
+# 341| ValueCategory = lvalue
+# 341| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 341| Conversion = [BoolConversion] conversion to bool
+# 341| Type = [BoolType] bool
+# 341| Value = [CStyleCast] 0
+# 341| ValueCategory = prvalue
+# 342| getStmt(108): [DoStmt] do (...) ...
+# 344| getCondition(): [Literal] 0
+# 344| Type = [IntType] int
+# 344| Value = [Literal] 0
+# 344| ValueCategory = prvalue
+# 342| getStmt(): [BlockStmt] { ... }
+# 343| getStmt(0): [DeclStmt] declaration
+# 343| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x108
+# 343| Type = [Struct] String
+# 343| getVariable().getInitializer(): [Initializer] initializer for x108
+# 343| getExpr(): [ConstructorCall] call to String
+# 343| Type = [VoidType] void
+# 343| ValueCategory = prvalue
+# 344| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 344| Type = [VoidType] void
+# 344| ValueCategory = prvalue
+# 344| getQualifier(): [VariableAccess] x108
+# 344| Type = [Struct] String
+# 344| ValueCategory = lvalue
+# 344| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 344| Conversion = [BoolConversion] conversion to bool
+# 344| Type = [BoolType] bool
+# 344| Value = [CStyleCast] 0
+# 344| ValueCategory = prvalue
+# 345| getStmt(109): [DoStmt] do (...) ...
+# 347| getCondition(): [Literal] 0
+# 347| Type = [IntType] int
+# 347| Value = [Literal] 0
+# 347| ValueCategory = prvalue
+# 345| getStmt(): [BlockStmt] { ... }
+# 346| getStmt(0): [DeclStmt] declaration
+# 346| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x109
+# 346| Type = [Struct] String
+# 346| getVariable().getInitializer(): [Initializer] initializer for x109
+# 346| getExpr(): [ConstructorCall] call to String
+# 346| Type = [VoidType] void
+# 346| ValueCategory = prvalue
+# 347| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 347| Type = [VoidType] void
+# 347| ValueCategory = prvalue
+# 347| getQualifier(): [VariableAccess] x109
+# 347| Type = [Struct] String
+# 347| ValueCategory = lvalue
+# 347| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 347| Conversion = [BoolConversion] conversion to bool
+# 347| Type = [BoolType] bool
+# 347| Value = [CStyleCast] 0
+# 347| ValueCategory = prvalue
+# 348| getStmt(110): [DoStmt] do (...) ...
+# 350| getCondition(): [Literal] 0
+# 350| Type = [IntType] int
+# 350| Value = [Literal] 0
+# 350| ValueCategory = prvalue
+# 348| getStmt(): [BlockStmt] { ... }
+# 349| getStmt(0): [DeclStmt] declaration
+# 349| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x110
+# 349| Type = [Struct] String
+# 349| getVariable().getInitializer(): [Initializer] initializer for x110
+# 349| getExpr(): [ConstructorCall] call to String
+# 349| Type = [VoidType] void
+# 349| ValueCategory = prvalue
+# 350| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 350| Type = [VoidType] void
+# 350| ValueCategory = prvalue
+# 350| getQualifier(): [VariableAccess] x110
+# 350| Type = [Struct] String
+# 350| ValueCategory = lvalue
+# 350| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 350| Conversion = [BoolConversion] conversion to bool
+# 350| Type = [BoolType] bool
+# 350| Value = [CStyleCast] 0
+# 350| ValueCategory = prvalue
+# 351| getStmt(111): [DoStmt] do (...) ...
+# 353| getCondition(): [Literal] 0
+# 353| Type = [IntType] int
+# 353| Value = [Literal] 0
+# 353| ValueCategory = prvalue
+# 351| getStmt(): [BlockStmt] { ... }
+# 352| getStmt(0): [DeclStmt] declaration
+# 352| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x111
+# 352| Type = [Struct] String
+# 352| getVariable().getInitializer(): [Initializer] initializer for x111
+# 352| getExpr(): [ConstructorCall] call to String
+# 352| Type = [VoidType] void
+# 352| ValueCategory = prvalue
+# 353| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 353| Type = [VoidType] void
+# 353| ValueCategory = prvalue
+# 353| getQualifier(): [VariableAccess] x111
+# 353| Type = [Struct] String
+# 353| ValueCategory = lvalue
+# 353| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 353| Conversion = [BoolConversion] conversion to bool
+# 353| Type = [BoolType] bool
+# 353| Value = [CStyleCast] 0
+# 353| ValueCategory = prvalue
+# 354| getStmt(112): [DoStmt] do (...) ...
+# 356| getCondition(): [Literal] 0
+# 356| Type = [IntType] int
+# 356| Value = [Literal] 0
+# 356| ValueCategory = prvalue
+# 354| getStmt(): [BlockStmt] { ... }
+# 355| getStmt(0): [DeclStmt] declaration
+# 355| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x112
+# 355| Type = [Struct] String
+# 355| getVariable().getInitializer(): [Initializer] initializer for x112
+# 355| getExpr(): [ConstructorCall] call to String
+# 355| Type = [VoidType] void
+# 355| ValueCategory = prvalue
+# 356| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 356| Type = [VoidType] void
+# 356| ValueCategory = prvalue
+# 356| getQualifier(): [VariableAccess] x112
+# 356| Type = [Struct] String
+# 356| ValueCategory = lvalue
+# 356| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 356| Conversion = [BoolConversion] conversion to bool
+# 356| Type = [BoolType] bool
+# 356| Value = [CStyleCast] 0
+# 356| ValueCategory = prvalue
+# 357| getStmt(113): [DoStmt] do (...) ...
+# 359| getCondition(): [Literal] 0
+# 359| Type = [IntType] int
+# 359| Value = [Literal] 0
+# 359| ValueCategory = prvalue
+# 357| getStmt(): [BlockStmt] { ... }
+# 358| getStmt(0): [DeclStmt] declaration
+# 358| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x113
+# 358| Type = [Struct] String
+# 358| getVariable().getInitializer(): [Initializer] initializer for x113
+# 358| getExpr(): [ConstructorCall] call to String
+# 358| Type = [VoidType] void
+# 358| ValueCategory = prvalue
+# 359| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 359| Type = [VoidType] void
+# 359| ValueCategory = prvalue
+# 359| getQualifier(): [VariableAccess] x113
+# 359| Type = [Struct] String
+# 359| ValueCategory = lvalue
+# 359| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 359| Conversion = [BoolConversion] conversion to bool
+# 359| Type = [BoolType] bool
+# 359| Value = [CStyleCast] 0
+# 359| ValueCategory = prvalue
+# 360| getStmt(114): [DoStmt] do (...) ...
+# 362| getCondition(): [Literal] 0
+# 362| Type = [IntType] int
+# 362| Value = [Literal] 0
+# 362| ValueCategory = prvalue
+# 360| getStmt(): [BlockStmt] { ... }
+# 361| getStmt(0): [DeclStmt] declaration
+# 361| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x114
+# 361| Type = [Struct] String
+# 361| getVariable().getInitializer(): [Initializer] initializer for x114
+# 361| getExpr(): [ConstructorCall] call to String
+# 361| Type = [VoidType] void
+# 361| ValueCategory = prvalue
+# 362| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 362| Type = [VoidType] void
+# 362| ValueCategory = prvalue
+# 362| getQualifier(): [VariableAccess] x114
+# 362| Type = [Struct] String
+# 362| ValueCategory = lvalue
+# 362| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 362| Conversion = [BoolConversion] conversion to bool
+# 362| Type = [BoolType] bool
+# 362| Value = [CStyleCast] 0
+# 362| ValueCategory = prvalue
+# 363| getStmt(115): [DoStmt] do (...) ...
+# 365| getCondition(): [Literal] 0
+# 365| Type = [IntType] int
+# 365| Value = [Literal] 0
+# 365| ValueCategory = prvalue
+# 363| getStmt(): [BlockStmt] { ... }
+# 364| getStmt(0): [DeclStmt] declaration
+# 364| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x115
+# 364| Type = [Struct] String
+# 364| getVariable().getInitializer(): [Initializer] initializer for x115
+# 364| getExpr(): [ConstructorCall] call to String
+# 364| Type = [VoidType] void
+# 364| ValueCategory = prvalue
+# 365| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 365| Type = [VoidType] void
+# 365| ValueCategory = prvalue
+# 365| getQualifier(): [VariableAccess] x115
+# 365| Type = [Struct] String
+# 365| ValueCategory = lvalue
+# 365| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 365| Conversion = [BoolConversion] conversion to bool
+# 365| Type = [BoolType] bool
+# 365| Value = [CStyleCast] 0
+# 365| ValueCategory = prvalue
+# 366| getStmt(116): [DoStmt] do (...) ...
+# 368| getCondition(): [Literal] 0
+# 368| Type = [IntType] int
+# 368| Value = [Literal] 0
+# 368| ValueCategory = prvalue
+# 366| getStmt(): [BlockStmt] { ... }
+# 367| getStmt(0): [DeclStmt] declaration
+# 367| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x116
+# 367| Type = [Struct] String
+# 367| getVariable().getInitializer(): [Initializer] initializer for x116
+# 367| getExpr(): [ConstructorCall] call to String
+# 367| Type = [VoidType] void
+# 367| ValueCategory = prvalue
+# 368| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 368| Type = [VoidType] void
+# 368| ValueCategory = prvalue
+# 368| getQualifier(): [VariableAccess] x116
+# 368| Type = [Struct] String
+# 368| ValueCategory = lvalue
+# 368| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 368| Conversion = [BoolConversion] conversion to bool
+# 368| Type = [BoolType] bool
+# 368| Value = [CStyleCast] 0
+# 368| ValueCategory = prvalue
+# 369| getStmt(117): [DoStmt] do (...) ...
+# 371| getCondition(): [Literal] 0
+# 371| Type = [IntType] int
+# 371| Value = [Literal] 0
+# 371| ValueCategory = prvalue
+# 369| getStmt(): [BlockStmt] { ... }
+# 370| getStmt(0): [DeclStmt] declaration
+# 370| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x117
+# 370| Type = [Struct] String
+# 370| getVariable().getInitializer(): [Initializer] initializer for x117
+# 370| getExpr(): [ConstructorCall] call to String
+# 370| Type = [VoidType] void
+# 370| ValueCategory = prvalue
+# 371| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 371| Type = [VoidType] void
+# 371| ValueCategory = prvalue
+# 371| getQualifier(): [VariableAccess] x117
+# 371| Type = [Struct] String
+# 371| ValueCategory = lvalue
+# 371| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 371| Conversion = [BoolConversion] conversion to bool
+# 371| Type = [BoolType] bool
+# 371| Value = [CStyleCast] 0
+# 371| ValueCategory = prvalue
+# 372| getStmt(118): [DoStmt] do (...) ...
+# 374| getCondition(): [Literal] 0
+# 374| Type = [IntType] int
+# 374| Value = [Literal] 0
+# 374| ValueCategory = prvalue
+# 372| getStmt(): [BlockStmt] { ... }
+# 373| getStmt(0): [DeclStmt] declaration
+# 373| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x118
+# 373| Type = [Struct] String
+# 373| getVariable().getInitializer(): [Initializer] initializer for x118
+# 373| getExpr(): [ConstructorCall] call to String
+# 373| Type = [VoidType] void
+# 373| ValueCategory = prvalue
+# 374| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 374| Type = [VoidType] void
+# 374| ValueCategory = prvalue
+# 374| getQualifier(): [VariableAccess] x118
+# 374| Type = [Struct] String
+# 374| ValueCategory = lvalue
+# 374| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 374| Conversion = [BoolConversion] conversion to bool
+# 374| Type = [BoolType] bool
+# 374| Value = [CStyleCast] 0
+# 374| ValueCategory = prvalue
+# 375| getStmt(119): [DoStmt] do (...) ...
+# 377| getCondition(): [Literal] 0
+# 377| Type = [IntType] int
+# 377| Value = [Literal] 0
+# 377| ValueCategory = prvalue
+# 375| getStmt(): [BlockStmt] { ... }
+# 376| getStmt(0): [DeclStmt] declaration
+# 376| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x119
+# 376| Type = [Struct] String
+# 376| getVariable().getInitializer(): [Initializer] initializer for x119
+# 376| getExpr(): [ConstructorCall] call to String
+# 376| Type = [VoidType] void
+# 376| ValueCategory = prvalue
+# 377| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 377| Type = [VoidType] void
+# 377| ValueCategory = prvalue
+# 377| getQualifier(): [VariableAccess] x119
+# 377| Type = [Struct] String
+# 377| ValueCategory = lvalue
+# 377| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 377| Conversion = [BoolConversion] conversion to bool
+# 377| Type = [BoolType] bool
+# 377| Value = [CStyleCast] 0
+# 377| ValueCategory = prvalue
+# 378| getStmt(120): [DoStmt] do (...) ...
+# 380| getCondition(): [Literal] 0
+# 380| Type = [IntType] int
+# 380| Value = [Literal] 0
+# 380| ValueCategory = prvalue
+# 378| getStmt(): [BlockStmt] { ... }
+# 379| getStmt(0): [DeclStmt] declaration
+# 379| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x120
+# 379| Type = [Struct] String
+# 379| getVariable().getInitializer(): [Initializer] initializer for x120
+# 379| getExpr(): [ConstructorCall] call to String
+# 379| Type = [VoidType] void
+# 379| ValueCategory = prvalue
+# 380| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 380| Type = [VoidType] void
+# 380| ValueCategory = prvalue
+# 380| getQualifier(): [VariableAccess] x120
+# 380| Type = [Struct] String
+# 380| ValueCategory = lvalue
+# 380| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 380| Conversion = [BoolConversion] conversion to bool
+# 380| Type = [BoolType] bool
+# 380| Value = [CStyleCast] 0
+# 380| ValueCategory = prvalue
+# 381| getStmt(121): [DoStmt] do (...) ...
+# 383| getCondition(): [Literal] 0
+# 383| Type = [IntType] int
+# 383| Value = [Literal] 0
+# 383| ValueCategory = prvalue
+# 381| getStmt(): [BlockStmt] { ... }
+# 382| getStmt(0): [DeclStmt] declaration
+# 382| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x121
+# 382| Type = [Struct] String
+# 382| getVariable().getInitializer(): [Initializer] initializer for x121
+# 382| getExpr(): [ConstructorCall] call to String
+# 382| Type = [VoidType] void
+# 382| ValueCategory = prvalue
+# 383| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 383| Type = [VoidType] void
+# 383| ValueCategory = prvalue
+# 383| getQualifier(): [VariableAccess] x121
+# 383| Type = [Struct] String
+# 383| ValueCategory = lvalue
+# 383| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 383| Conversion = [BoolConversion] conversion to bool
+# 383| Type = [BoolType] bool
+# 383| Value = [CStyleCast] 0
+# 383| ValueCategory = prvalue
+# 384| getStmt(122): [DoStmt] do (...) ...
+# 386| getCondition(): [Literal] 0
+# 386| Type = [IntType] int
+# 386| Value = [Literal] 0
+# 386| ValueCategory = prvalue
+# 384| getStmt(): [BlockStmt] { ... }
+# 385| getStmt(0): [DeclStmt] declaration
+# 385| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x122
+# 385| Type = [Struct] String
+# 385| getVariable().getInitializer(): [Initializer] initializer for x122
+# 385| getExpr(): [ConstructorCall] call to String
+# 385| Type = [VoidType] void
+# 385| ValueCategory = prvalue
+# 386| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 386| Type = [VoidType] void
+# 386| ValueCategory = prvalue
+# 386| getQualifier(): [VariableAccess] x122
+# 386| Type = [Struct] String
+# 386| ValueCategory = lvalue
+# 386| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 386| Conversion = [BoolConversion] conversion to bool
+# 386| Type = [BoolType] bool
+# 386| Value = [CStyleCast] 0
+# 386| ValueCategory = prvalue
+# 387| getStmt(123): [DoStmt] do (...) ...
+# 389| getCondition(): [Literal] 0
+# 389| Type = [IntType] int
+# 389| Value = [Literal] 0
+# 389| ValueCategory = prvalue
+# 387| getStmt(): [BlockStmt] { ... }
+# 388| getStmt(0): [DeclStmt] declaration
+# 388| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x123
+# 388| Type = [Struct] String
+# 388| getVariable().getInitializer(): [Initializer] initializer for x123
+# 388| getExpr(): [ConstructorCall] call to String
+# 388| Type = [VoidType] void
+# 388| ValueCategory = prvalue
+# 389| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 389| Type = [VoidType] void
+# 389| ValueCategory = prvalue
+# 389| getQualifier(): [VariableAccess] x123
+# 389| Type = [Struct] String
+# 389| ValueCategory = lvalue
+# 389| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 389| Conversion = [BoolConversion] conversion to bool
+# 389| Type = [BoolType] bool
+# 389| Value = [CStyleCast] 0
+# 389| ValueCategory = prvalue
+# 390| getStmt(124): [DoStmt] do (...) ...
+# 392| getCondition(): [Literal] 0
+# 392| Type = [IntType] int
+# 392| Value = [Literal] 0
+# 392| ValueCategory = prvalue
+# 390| getStmt(): [BlockStmt] { ... }
+# 391| getStmt(0): [DeclStmt] declaration
+# 391| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x124
+# 391| Type = [Struct] String
+# 391| getVariable().getInitializer(): [Initializer] initializer for x124
+# 391| getExpr(): [ConstructorCall] call to String
+# 391| Type = [VoidType] void
+# 391| ValueCategory = prvalue
+# 392| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 392| Type = [VoidType] void
+# 392| ValueCategory = prvalue
+# 392| getQualifier(): [VariableAccess] x124
+# 392| Type = [Struct] String
+# 392| ValueCategory = lvalue
+# 392| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 392| Conversion = [BoolConversion] conversion to bool
+# 392| Type = [BoolType] bool
+# 392| Value = [CStyleCast] 0
+# 392| ValueCategory = prvalue
+# 393| getStmt(125): [DoStmt] do (...) ...
+# 395| getCondition(): [Literal] 0
+# 395| Type = [IntType] int
+# 395| Value = [Literal] 0
+# 395| ValueCategory = prvalue
+# 393| getStmt(): [BlockStmt] { ... }
+# 394| getStmt(0): [DeclStmt] declaration
+# 394| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x125
+# 394| Type = [Struct] String
+# 394| getVariable().getInitializer(): [Initializer] initializer for x125
+# 394| getExpr(): [ConstructorCall] call to String
+# 394| Type = [VoidType] void
+# 394| ValueCategory = prvalue
+# 395| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 395| Type = [VoidType] void
+# 395| ValueCategory = prvalue
+# 395| getQualifier(): [VariableAccess] x125
+# 395| Type = [Struct] String
+# 395| ValueCategory = lvalue
+# 395| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 395| Conversion = [BoolConversion] conversion to bool
+# 395| Type = [BoolType] bool
+# 395| Value = [CStyleCast] 0
+# 395| ValueCategory = prvalue
+# 396| getStmt(126): [DoStmt] do (...) ...
+# 398| getCondition(): [Literal] 0
+# 398| Type = [IntType] int
+# 398| Value = [Literal] 0
+# 398| ValueCategory = prvalue
+# 396| getStmt(): [BlockStmt] { ... }
+# 397| getStmt(0): [DeclStmt] declaration
+# 397| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x126
+# 397| Type = [Struct] String
+# 397| getVariable().getInitializer(): [Initializer] initializer for x126
+# 397| getExpr(): [ConstructorCall] call to String
+# 397| Type = [VoidType] void
+# 397| ValueCategory = prvalue
+# 398| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 398| Type = [VoidType] void
+# 398| ValueCategory = prvalue
+# 398| getQualifier(): [VariableAccess] x126
+# 398| Type = [Struct] String
+# 398| ValueCategory = lvalue
+# 398| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 398| Conversion = [BoolConversion] conversion to bool
+# 398| Type = [BoolType] bool
+# 398| Value = [CStyleCast] 0
+# 398| ValueCategory = prvalue
+# 399| getStmt(127): [DoStmt] do (...) ...
+# 401| getCondition(): [Literal] 0
+# 401| Type = [IntType] int
+# 401| Value = [Literal] 0
+# 401| ValueCategory = prvalue
+# 399| getStmt(): [BlockStmt] { ... }
+# 400| getStmt(0): [DeclStmt] declaration
+# 400| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x127
+# 400| Type = [Struct] String
+# 400| getVariable().getInitializer(): [Initializer] initializer for x127
+# 400| getExpr(): [ConstructorCall] call to String
+# 400| Type = [VoidType] void
+# 400| ValueCategory = prvalue
+# 401| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 401| Type = [VoidType] void
+# 401| ValueCategory = prvalue
+# 401| getQualifier(): [VariableAccess] x127
+# 401| Type = [Struct] String
+# 401| ValueCategory = lvalue
+# 401| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 401| Conversion = [BoolConversion] conversion to bool
+# 401| Type = [BoolType] bool
+# 401| Value = [CStyleCast] 0
+# 401| ValueCategory = prvalue
+# 402| getStmt(128): [DoStmt] do (...) ...
+# 404| getCondition(): [Literal] 0
+# 404| Type = [IntType] int
+# 404| Value = [Literal] 0
+# 404| ValueCategory = prvalue
+# 402| getStmt(): [BlockStmt] { ... }
+# 403| getStmt(0): [DeclStmt] declaration
+# 403| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x128
+# 403| Type = [Struct] String
+# 403| getVariable().getInitializer(): [Initializer] initializer for x128
+# 403| getExpr(): [ConstructorCall] call to String
+# 403| Type = [VoidType] void
+# 403| ValueCategory = prvalue
+# 404| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 404| Type = [VoidType] void
+# 404| ValueCategory = prvalue
+# 404| getQualifier(): [VariableAccess] x128
+# 404| Type = [Struct] String
+# 404| ValueCategory = lvalue
+# 404| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 404| Conversion = [BoolConversion] conversion to bool
+# 404| Type = [BoolType] bool
+# 404| Value = [CStyleCast] 0
+# 404| ValueCategory = prvalue
+# 405| getStmt(129): [DoStmt] do (...) ...
+# 407| getCondition(): [Literal] 0
+# 407| Type = [IntType] int
+# 407| Value = [Literal] 0
+# 407| ValueCategory = prvalue
+# 405| getStmt(): [BlockStmt] { ... }
+# 406| getStmt(0): [DeclStmt] declaration
+# 406| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x129
+# 406| Type = [Struct] String
+# 406| getVariable().getInitializer(): [Initializer] initializer for x129
+# 406| getExpr(): [ConstructorCall] call to String
+# 406| Type = [VoidType] void
+# 406| ValueCategory = prvalue
+# 407| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 407| Type = [VoidType] void
+# 407| ValueCategory = prvalue
+# 407| getQualifier(): [VariableAccess] x129
+# 407| Type = [Struct] String
+# 407| ValueCategory = lvalue
+# 407| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 407| Conversion = [BoolConversion] conversion to bool
+# 407| Type = [BoolType] bool
+# 407| Value = [CStyleCast] 0
+# 407| ValueCategory = prvalue
+# 408| getStmt(130): [DoStmt] do (...) ...
+# 410| getCondition(): [Literal] 0
+# 410| Type = [IntType] int
+# 410| Value = [Literal] 0
+# 410| ValueCategory = prvalue
+# 408| getStmt(): [BlockStmt] { ... }
+# 409| getStmt(0): [DeclStmt] declaration
+# 409| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x130
+# 409| Type = [Struct] String
+# 409| getVariable().getInitializer(): [Initializer] initializer for x130
+# 409| getExpr(): [ConstructorCall] call to String
+# 409| Type = [VoidType] void
+# 409| ValueCategory = prvalue
+# 410| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 410| Type = [VoidType] void
+# 410| ValueCategory = prvalue
+# 410| getQualifier(): [VariableAccess] x130
+# 410| Type = [Struct] String
+# 410| ValueCategory = lvalue
+# 410| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 410| Conversion = [BoolConversion] conversion to bool
+# 410| Type = [BoolType] bool
+# 410| Value = [CStyleCast] 0
+# 410| ValueCategory = prvalue
+# 411| getStmt(131): [DoStmt] do (...) ...
+# 413| getCondition(): [Literal] 0
+# 413| Type = [IntType] int
+# 413| Value = [Literal] 0
+# 413| ValueCategory = prvalue
+# 411| getStmt(): [BlockStmt] { ... }
+# 412| getStmt(0): [DeclStmt] declaration
+# 412| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x131
+# 412| Type = [Struct] String
+# 412| getVariable().getInitializer(): [Initializer] initializer for x131
+# 412| getExpr(): [ConstructorCall] call to String
+# 412| Type = [VoidType] void
+# 412| ValueCategory = prvalue
+# 413| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 413| Type = [VoidType] void
+# 413| ValueCategory = prvalue
+# 413| getQualifier(): [VariableAccess] x131
+# 413| Type = [Struct] String
+# 413| ValueCategory = lvalue
+# 413| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 413| Conversion = [BoolConversion] conversion to bool
+# 413| Type = [BoolType] bool
+# 413| Value = [CStyleCast] 0
+# 413| ValueCategory = prvalue
+# 414| getStmt(132): [DoStmt] do (...) ...
+# 416| getCondition(): [Literal] 0
+# 416| Type = [IntType] int
+# 416| Value = [Literal] 0
+# 416| ValueCategory = prvalue
+# 414| getStmt(): [BlockStmt] { ... }
+# 415| getStmt(0): [DeclStmt] declaration
+# 415| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x132
+# 415| Type = [Struct] String
+# 415| getVariable().getInitializer(): [Initializer] initializer for x132
+# 415| getExpr(): [ConstructorCall] call to String
+# 415| Type = [VoidType] void
+# 415| ValueCategory = prvalue
+# 416| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 416| Type = [VoidType] void
+# 416| ValueCategory = prvalue
+# 416| getQualifier(): [VariableAccess] x132
+# 416| Type = [Struct] String
+# 416| ValueCategory = lvalue
+# 416| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 416| Conversion = [BoolConversion] conversion to bool
+# 416| Type = [BoolType] bool
+# 416| Value = [CStyleCast] 0
+# 416| ValueCategory = prvalue
+# 417| getStmt(133): [DoStmt] do (...) ...
+# 419| getCondition(): [Literal] 0
+# 419| Type = [IntType] int
+# 419| Value = [Literal] 0
+# 419| ValueCategory = prvalue
+# 417| getStmt(): [BlockStmt] { ... }
+# 418| getStmt(0): [DeclStmt] declaration
+# 418| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x133
+# 418| Type = [Struct] String
+# 418| getVariable().getInitializer(): [Initializer] initializer for x133
+# 418| getExpr(): [ConstructorCall] call to String
+# 418| Type = [VoidType] void
+# 418| ValueCategory = prvalue
+# 419| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 419| Type = [VoidType] void
+# 419| ValueCategory = prvalue
+# 419| getQualifier(): [VariableAccess] x133
+# 419| Type = [Struct] String
+# 419| ValueCategory = lvalue
+# 419| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 419| Conversion = [BoolConversion] conversion to bool
+# 419| Type = [BoolType] bool
+# 419| Value = [CStyleCast] 0
+# 419| ValueCategory = prvalue
+# 420| getStmt(134): [DoStmt] do (...) ...
+# 422| getCondition(): [Literal] 0
+# 422| Type = [IntType] int
+# 422| Value = [Literal] 0
+# 422| ValueCategory = prvalue
+# 420| getStmt(): [BlockStmt] { ... }
+# 421| getStmt(0): [DeclStmt] declaration
+# 421| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x134
+# 421| Type = [Struct] String
+# 421| getVariable().getInitializer(): [Initializer] initializer for x134
+# 421| getExpr(): [ConstructorCall] call to String
+# 421| Type = [VoidType] void
+# 421| ValueCategory = prvalue
+# 422| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 422| Type = [VoidType] void
+# 422| ValueCategory = prvalue
+# 422| getQualifier(): [VariableAccess] x134
+# 422| Type = [Struct] String
+# 422| ValueCategory = lvalue
+# 422| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 422| Conversion = [BoolConversion] conversion to bool
+# 422| Type = [BoolType] bool
+# 422| Value = [CStyleCast] 0
+# 422| ValueCategory = prvalue
+# 423| getStmt(135): [DoStmt] do (...) ...
+# 425| getCondition(): [Literal] 0
+# 425| Type = [IntType] int
+# 425| Value = [Literal] 0
+# 425| ValueCategory = prvalue
+# 423| getStmt(): [BlockStmt] { ... }
+# 424| getStmt(0): [DeclStmt] declaration
+# 424| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x135
+# 424| Type = [Struct] String
+# 424| getVariable().getInitializer(): [Initializer] initializer for x135
+# 424| getExpr(): [ConstructorCall] call to String
+# 424| Type = [VoidType] void
+# 424| ValueCategory = prvalue
+# 425| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 425| Type = [VoidType] void
+# 425| ValueCategory = prvalue
+# 425| getQualifier(): [VariableAccess] x135
+# 425| Type = [Struct] String
+# 425| ValueCategory = lvalue
+# 425| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 425| Conversion = [BoolConversion] conversion to bool
+# 425| Type = [BoolType] bool
+# 425| Value = [CStyleCast] 0
+# 425| ValueCategory = prvalue
+# 426| getStmt(136): [DoStmt] do (...) ...
+# 428| getCondition(): [Literal] 0
+# 428| Type = [IntType] int
+# 428| Value = [Literal] 0
+# 428| ValueCategory = prvalue
+# 426| getStmt(): [BlockStmt] { ... }
+# 427| getStmt(0): [DeclStmt] declaration
+# 427| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x136
+# 427| Type = [Struct] String
+# 427| getVariable().getInitializer(): [Initializer] initializer for x136
+# 427| getExpr(): [ConstructorCall] call to String
+# 427| Type = [VoidType] void
+# 427| ValueCategory = prvalue
+# 428| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 428| Type = [VoidType] void
+# 428| ValueCategory = prvalue
+# 428| getQualifier(): [VariableAccess] x136
+# 428| Type = [Struct] String
+# 428| ValueCategory = lvalue
+# 428| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 428| Conversion = [BoolConversion] conversion to bool
+# 428| Type = [BoolType] bool
+# 428| Value = [CStyleCast] 0
+# 428| ValueCategory = prvalue
+# 429| getStmt(137): [DoStmt] do (...) ...
+# 431| getCondition(): [Literal] 0
+# 431| Type = [IntType] int
+# 431| Value = [Literal] 0
+# 431| ValueCategory = prvalue
+# 429| getStmt(): [BlockStmt] { ... }
+# 430| getStmt(0): [DeclStmt] declaration
+# 430| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x137
+# 430| Type = [Struct] String
+# 430| getVariable().getInitializer(): [Initializer] initializer for x137
+# 430| getExpr(): [ConstructorCall] call to String
+# 430| Type = [VoidType] void
+# 430| ValueCategory = prvalue
+# 431| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 431| Type = [VoidType] void
+# 431| ValueCategory = prvalue
+# 431| getQualifier(): [VariableAccess] x137
+# 431| Type = [Struct] String
+# 431| ValueCategory = lvalue
+# 431| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 431| Conversion = [BoolConversion] conversion to bool
+# 431| Type = [BoolType] bool
+# 431| Value = [CStyleCast] 0
+# 431| ValueCategory = prvalue
+# 432| getStmt(138): [DoStmt] do (...) ...
+# 434| getCondition(): [Literal] 0
+# 434| Type = [IntType] int
+# 434| Value = [Literal] 0
+# 434| ValueCategory = prvalue
+# 432| getStmt(): [BlockStmt] { ... }
+# 433| getStmt(0): [DeclStmt] declaration
+# 433| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x138
+# 433| Type = [Struct] String
+# 433| getVariable().getInitializer(): [Initializer] initializer for x138
+# 433| getExpr(): [ConstructorCall] call to String
+# 433| Type = [VoidType] void
+# 433| ValueCategory = prvalue
+# 434| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 434| Type = [VoidType] void
+# 434| ValueCategory = prvalue
+# 434| getQualifier(): [VariableAccess] x138
+# 434| Type = [Struct] String
+# 434| ValueCategory = lvalue
+# 434| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 434| Conversion = [BoolConversion] conversion to bool
+# 434| Type = [BoolType] bool
+# 434| Value = [CStyleCast] 0
+# 434| ValueCategory = prvalue
+# 435| getStmt(139): [DoStmt] do (...) ...
+# 437| getCondition(): [Literal] 0
+# 437| Type = [IntType] int
+# 437| Value = [Literal] 0
+# 437| ValueCategory = prvalue
+# 435| getStmt(): [BlockStmt] { ... }
+# 436| getStmt(0): [DeclStmt] declaration
+# 436| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x139
+# 436| Type = [Struct] String
+# 436| getVariable().getInitializer(): [Initializer] initializer for x139
+# 436| getExpr(): [ConstructorCall] call to String
+# 436| Type = [VoidType] void
+# 436| ValueCategory = prvalue
+# 437| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 437| Type = [VoidType] void
+# 437| ValueCategory = prvalue
+# 437| getQualifier(): [VariableAccess] x139
+# 437| Type = [Struct] String
+# 437| ValueCategory = lvalue
+# 437| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 437| Conversion = [BoolConversion] conversion to bool
+# 437| Type = [BoolType] bool
+# 437| Value = [CStyleCast] 0
+# 437| ValueCategory = prvalue
+# 438| getStmt(140): [DoStmt] do (...) ...
+# 440| getCondition(): [Literal] 0
+# 440| Type = [IntType] int
+# 440| Value = [Literal] 0
+# 440| ValueCategory = prvalue
+# 438| getStmt(): [BlockStmt] { ... }
+# 439| getStmt(0): [DeclStmt] declaration
+# 439| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x140
+# 439| Type = [Struct] String
+# 439| getVariable().getInitializer(): [Initializer] initializer for x140
+# 439| getExpr(): [ConstructorCall] call to String
+# 439| Type = [VoidType] void
+# 439| ValueCategory = prvalue
+# 440| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 440| Type = [VoidType] void
+# 440| ValueCategory = prvalue
+# 440| getQualifier(): [VariableAccess] x140
+# 440| Type = [Struct] String
+# 440| ValueCategory = lvalue
+# 440| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 440| Conversion = [BoolConversion] conversion to bool
+# 440| Type = [BoolType] bool
+# 440| Value = [CStyleCast] 0
+# 440| ValueCategory = prvalue
+# 441| getStmt(141): [DoStmt] do (...) ...
+# 443| getCondition(): [Literal] 0
+# 443| Type = [IntType] int
+# 443| Value = [Literal] 0
+# 443| ValueCategory = prvalue
+# 441| getStmt(): [BlockStmt] { ... }
+# 442| getStmt(0): [DeclStmt] declaration
+# 442| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x141
+# 442| Type = [Struct] String
+# 442| getVariable().getInitializer(): [Initializer] initializer for x141
+# 442| getExpr(): [ConstructorCall] call to String
+# 442| Type = [VoidType] void
+# 442| ValueCategory = prvalue
+# 443| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 443| Type = [VoidType] void
+# 443| ValueCategory = prvalue
+# 443| getQualifier(): [VariableAccess] x141
+# 443| Type = [Struct] String
+# 443| ValueCategory = lvalue
+# 443| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 443| Conversion = [BoolConversion] conversion to bool
+# 443| Type = [BoolType] bool
+# 443| Value = [CStyleCast] 0
+# 443| ValueCategory = prvalue
+# 444| getStmt(142): [DoStmt] do (...) ...
+# 446| getCondition(): [Literal] 0
+# 446| Type = [IntType] int
+# 446| Value = [Literal] 0
+# 446| ValueCategory = prvalue
+# 444| getStmt(): [BlockStmt] { ... }
+# 445| getStmt(0): [DeclStmt] declaration
+# 445| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x142
+# 445| Type = [Struct] String
+# 445| getVariable().getInitializer(): [Initializer] initializer for x142
+# 445| getExpr(): [ConstructorCall] call to String
+# 445| Type = [VoidType] void
+# 445| ValueCategory = prvalue
+# 446| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 446| Type = [VoidType] void
+# 446| ValueCategory = prvalue
+# 446| getQualifier(): [VariableAccess] x142
+# 446| Type = [Struct] String
+# 446| ValueCategory = lvalue
+# 446| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 446| Conversion = [BoolConversion] conversion to bool
+# 446| Type = [BoolType] bool
+# 446| Value = [CStyleCast] 0
+# 446| ValueCategory = prvalue
+# 447| getStmt(143): [DoStmt] do (...) ...
+# 449| getCondition(): [Literal] 0
+# 449| Type = [IntType] int
+# 449| Value = [Literal] 0
+# 449| ValueCategory = prvalue
+# 447| getStmt(): [BlockStmt] { ... }
+# 448| getStmt(0): [DeclStmt] declaration
+# 448| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x143
+# 448| Type = [Struct] String
+# 448| getVariable().getInitializer(): [Initializer] initializer for x143
+# 448| getExpr(): [ConstructorCall] call to String
+# 448| Type = [VoidType] void
+# 448| ValueCategory = prvalue
+# 449| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 449| Type = [VoidType] void
+# 449| ValueCategory = prvalue
+# 449| getQualifier(): [VariableAccess] x143
+# 449| Type = [Struct] String
+# 449| ValueCategory = lvalue
+# 449| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 449| Conversion = [BoolConversion] conversion to bool
+# 449| Type = [BoolType] bool
+# 449| Value = [CStyleCast] 0
+# 449| ValueCategory = prvalue
+# 450| getStmt(144): [DoStmt] do (...) ...
+# 452| getCondition(): [Literal] 0
+# 452| Type = [IntType] int
+# 452| Value = [Literal] 0
+# 452| ValueCategory = prvalue
+# 450| getStmt(): [BlockStmt] { ... }
+# 451| getStmt(0): [DeclStmt] declaration
+# 451| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x144
+# 451| Type = [Struct] String
+# 451| getVariable().getInitializer(): [Initializer] initializer for x144
+# 451| getExpr(): [ConstructorCall] call to String
+# 451| Type = [VoidType] void
+# 451| ValueCategory = prvalue
+# 452| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 452| Type = [VoidType] void
+# 452| ValueCategory = prvalue
+# 452| getQualifier(): [VariableAccess] x144
+# 452| Type = [Struct] String
+# 452| ValueCategory = lvalue
+# 452| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 452| Conversion = [BoolConversion] conversion to bool
+# 452| Type = [BoolType] bool
+# 452| Value = [CStyleCast] 0
+# 452| ValueCategory = prvalue
+# 453| getStmt(145): [DoStmt] do (...) ...
+# 455| getCondition(): [Literal] 0
+# 455| Type = [IntType] int
+# 455| Value = [Literal] 0
+# 455| ValueCategory = prvalue
+# 453| getStmt(): [BlockStmt] { ... }
+# 454| getStmt(0): [DeclStmt] declaration
+# 454| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x145
+# 454| Type = [Struct] String
+# 454| getVariable().getInitializer(): [Initializer] initializer for x145
+# 454| getExpr(): [ConstructorCall] call to String
+# 454| Type = [VoidType] void
+# 454| ValueCategory = prvalue
+# 455| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 455| Type = [VoidType] void
+# 455| ValueCategory = prvalue
+# 455| getQualifier(): [VariableAccess] x145
+# 455| Type = [Struct] String
+# 455| ValueCategory = lvalue
+# 455| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 455| Conversion = [BoolConversion] conversion to bool
+# 455| Type = [BoolType] bool
+# 455| Value = [CStyleCast] 0
+# 455| ValueCategory = prvalue
+# 456| getStmt(146): [DoStmt] do (...) ...
+# 458| getCondition(): [Literal] 0
+# 458| Type = [IntType] int
+# 458| Value = [Literal] 0
+# 458| ValueCategory = prvalue
+# 456| getStmt(): [BlockStmt] { ... }
+# 457| getStmt(0): [DeclStmt] declaration
+# 457| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x146
+# 457| Type = [Struct] String
+# 457| getVariable().getInitializer(): [Initializer] initializer for x146
+# 457| getExpr(): [ConstructorCall] call to String
+# 457| Type = [VoidType] void
+# 457| ValueCategory = prvalue
+# 458| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 458| Type = [VoidType] void
+# 458| ValueCategory = prvalue
+# 458| getQualifier(): [VariableAccess] x146
+# 458| Type = [Struct] String
+# 458| ValueCategory = lvalue
+# 458| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 458| Conversion = [BoolConversion] conversion to bool
+# 458| Type = [BoolType] bool
+# 458| Value = [CStyleCast] 0
+# 458| ValueCategory = prvalue
+# 459| getStmt(147): [DoStmt] do (...) ...
+# 461| getCondition(): [Literal] 0
+# 461| Type = [IntType] int
+# 461| Value = [Literal] 0
+# 461| ValueCategory = prvalue
+# 459| getStmt(): [BlockStmt] { ... }
+# 460| getStmt(0): [DeclStmt] declaration
+# 460| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x147
+# 460| Type = [Struct] String
+# 460| getVariable().getInitializer(): [Initializer] initializer for x147
+# 460| getExpr(): [ConstructorCall] call to String
+# 460| Type = [VoidType] void
+# 460| ValueCategory = prvalue
+# 461| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 461| Type = [VoidType] void
+# 461| ValueCategory = prvalue
+# 461| getQualifier(): [VariableAccess] x147
+# 461| Type = [Struct] String
+# 461| ValueCategory = lvalue
+# 461| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 461| Conversion = [BoolConversion] conversion to bool
+# 461| Type = [BoolType] bool
+# 461| Value = [CStyleCast] 0
+# 461| ValueCategory = prvalue
+# 462| getStmt(148): [DoStmt] do (...) ...
+# 464| getCondition(): [Literal] 0
+# 464| Type = [IntType] int
+# 464| Value = [Literal] 0
+# 464| ValueCategory = prvalue
+# 462| getStmt(): [BlockStmt] { ... }
+# 463| getStmt(0): [DeclStmt] declaration
+# 463| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x148
+# 463| Type = [Struct] String
+# 463| getVariable().getInitializer(): [Initializer] initializer for x148
+# 463| getExpr(): [ConstructorCall] call to String
+# 463| Type = [VoidType] void
+# 463| ValueCategory = prvalue
+# 464| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 464| Type = [VoidType] void
+# 464| ValueCategory = prvalue
+# 464| getQualifier(): [VariableAccess] x148
+# 464| Type = [Struct] String
+# 464| ValueCategory = lvalue
+# 464| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 464| Conversion = [BoolConversion] conversion to bool
+# 464| Type = [BoolType] bool
+# 464| Value = [CStyleCast] 0
+# 464| ValueCategory = prvalue
+# 465| getStmt(149): [DoStmt] do (...) ...
+# 467| getCondition(): [Literal] 0
+# 467| Type = [IntType] int
+# 467| Value = [Literal] 0
+# 467| ValueCategory = prvalue
+# 465| getStmt(): [BlockStmt] { ... }
+# 466| getStmt(0): [DeclStmt] declaration
+# 466| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x149
+# 466| Type = [Struct] String
+# 466| getVariable().getInitializer(): [Initializer] initializer for x149
+# 466| getExpr(): [ConstructorCall] call to String
+# 466| Type = [VoidType] void
+# 466| ValueCategory = prvalue
+# 467| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 467| Type = [VoidType] void
+# 467| ValueCategory = prvalue
+# 467| getQualifier(): [VariableAccess] x149
+# 467| Type = [Struct] String
+# 467| ValueCategory = lvalue
+# 467| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 467| Conversion = [BoolConversion] conversion to bool
+# 467| Type = [BoolType] bool
+# 467| Value = [CStyleCast] 0
+# 467| ValueCategory = prvalue
+# 468| getStmt(150): [DoStmt] do (...) ...
+# 470| getCondition(): [Literal] 0
+# 470| Type = [IntType] int
+# 470| Value = [Literal] 0
+# 470| ValueCategory = prvalue
+# 468| getStmt(): [BlockStmt] { ... }
+# 469| getStmt(0): [DeclStmt] declaration
+# 469| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x150
+# 469| Type = [Struct] String
+# 469| getVariable().getInitializer(): [Initializer] initializer for x150
+# 469| getExpr(): [ConstructorCall] call to String
+# 469| Type = [VoidType] void
+# 469| ValueCategory = prvalue
+# 470| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 470| Type = [VoidType] void
+# 470| ValueCategory = prvalue
+# 470| getQualifier(): [VariableAccess] x150
+# 470| Type = [Struct] String
+# 470| ValueCategory = lvalue
+# 470| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 470| Conversion = [BoolConversion] conversion to bool
+# 470| Type = [BoolType] bool
+# 470| Value = [CStyleCast] 0
+# 470| ValueCategory = prvalue
+# 471| getStmt(151): [DoStmt] do (...) ...
+# 473| getCondition(): [Literal] 0
+# 473| Type = [IntType] int
+# 473| Value = [Literal] 0
+# 473| ValueCategory = prvalue
+# 471| getStmt(): [BlockStmt] { ... }
+# 472| getStmt(0): [DeclStmt] declaration
+# 472| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x151
+# 472| Type = [Struct] String
+# 472| getVariable().getInitializer(): [Initializer] initializer for x151
+# 472| getExpr(): [ConstructorCall] call to String
+# 472| Type = [VoidType] void
+# 472| ValueCategory = prvalue
+# 473| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 473| Type = [VoidType] void
+# 473| ValueCategory = prvalue
+# 473| getQualifier(): [VariableAccess] x151
+# 473| Type = [Struct] String
+# 473| ValueCategory = lvalue
+# 473| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 473| Conversion = [BoolConversion] conversion to bool
+# 473| Type = [BoolType] bool
+# 473| Value = [CStyleCast] 0
+# 473| ValueCategory = prvalue
+# 474| getStmt(152): [DoStmt] do (...) ...
+# 476| getCondition(): [Literal] 0
+# 476| Type = [IntType] int
+# 476| Value = [Literal] 0
+# 476| ValueCategory = prvalue
+# 474| getStmt(): [BlockStmt] { ... }
+# 475| getStmt(0): [DeclStmt] declaration
+# 475| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x152
+# 475| Type = [Struct] String
+# 475| getVariable().getInitializer(): [Initializer] initializer for x152
+# 475| getExpr(): [ConstructorCall] call to String
+# 475| Type = [VoidType] void
+# 475| ValueCategory = prvalue
+# 476| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 476| Type = [VoidType] void
+# 476| ValueCategory = prvalue
+# 476| getQualifier(): [VariableAccess] x152
+# 476| Type = [Struct] String
+# 476| ValueCategory = lvalue
+# 476| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 476| Conversion = [BoolConversion] conversion to bool
+# 476| Type = [BoolType] bool
+# 476| Value = [CStyleCast] 0
+# 476| ValueCategory = prvalue
+# 477| getStmt(153): [DoStmt] do (...) ...
+# 479| getCondition(): [Literal] 0
+# 479| Type = [IntType] int
+# 479| Value = [Literal] 0
+# 479| ValueCategory = prvalue
+# 477| getStmt(): [BlockStmt] { ... }
+# 478| getStmt(0): [DeclStmt] declaration
+# 478| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x153
+# 478| Type = [Struct] String
+# 478| getVariable().getInitializer(): [Initializer] initializer for x153
+# 478| getExpr(): [ConstructorCall] call to String
+# 478| Type = [VoidType] void
+# 478| ValueCategory = prvalue
+# 479| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 479| Type = [VoidType] void
+# 479| ValueCategory = prvalue
+# 479| getQualifier(): [VariableAccess] x153
+# 479| Type = [Struct] String
+# 479| ValueCategory = lvalue
+# 479| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 479| Conversion = [BoolConversion] conversion to bool
+# 479| Type = [BoolType] bool
+# 479| Value = [CStyleCast] 0
+# 479| ValueCategory = prvalue
+# 480| getStmt(154): [DoStmt] do (...) ...
+# 482| getCondition(): [Literal] 0
+# 482| Type = [IntType] int
+# 482| Value = [Literal] 0
+# 482| ValueCategory = prvalue
+# 480| getStmt(): [BlockStmt] { ... }
+# 481| getStmt(0): [DeclStmt] declaration
+# 481| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x154
+# 481| Type = [Struct] String
+# 481| getVariable().getInitializer(): [Initializer] initializer for x154
+# 481| getExpr(): [ConstructorCall] call to String
+# 481| Type = [VoidType] void
+# 481| ValueCategory = prvalue
+# 482| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 482| Type = [VoidType] void
+# 482| ValueCategory = prvalue
+# 482| getQualifier(): [VariableAccess] x154
+# 482| Type = [Struct] String
+# 482| ValueCategory = lvalue
+# 482| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 482| Conversion = [BoolConversion] conversion to bool
+# 482| Type = [BoolType] bool
+# 482| Value = [CStyleCast] 0
+# 482| ValueCategory = prvalue
+# 483| getStmt(155): [DoStmt] do (...) ...
+# 485| getCondition(): [Literal] 0
+# 485| Type = [IntType] int
+# 485| Value = [Literal] 0
+# 485| ValueCategory = prvalue
+# 483| getStmt(): [BlockStmt] { ... }
+# 484| getStmt(0): [DeclStmt] declaration
+# 484| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x155
+# 484| Type = [Struct] String
+# 484| getVariable().getInitializer(): [Initializer] initializer for x155
+# 484| getExpr(): [ConstructorCall] call to String
+# 484| Type = [VoidType] void
+# 484| ValueCategory = prvalue
+# 485| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 485| Type = [VoidType] void
+# 485| ValueCategory = prvalue
+# 485| getQualifier(): [VariableAccess] x155
+# 485| Type = [Struct] String
+# 485| ValueCategory = lvalue
+# 485| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 485| Conversion = [BoolConversion] conversion to bool
+# 485| Type = [BoolType] bool
+# 485| Value = [CStyleCast] 0
+# 485| ValueCategory = prvalue
+# 486| getStmt(156): [DoStmt] do (...) ...
+# 488| getCondition(): [Literal] 0
+# 488| Type = [IntType] int
+# 488| Value = [Literal] 0
+# 488| ValueCategory = prvalue
+# 486| getStmt(): [BlockStmt] { ... }
+# 487| getStmt(0): [DeclStmt] declaration
+# 487| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x156
+# 487| Type = [Struct] String
+# 487| getVariable().getInitializer(): [Initializer] initializer for x156
+# 487| getExpr(): [ConstructorCall] call to String
+# 487| Type = [VoidType] void
+# 487| ValueCategory = prvalue
+# 488| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 488| Type = [VoidType] void
+# 488| ValueCategory = prvalue
+# 488| getQualifier(): [VariableAccess] x156
+# 488| Type = [Struct] String
+# 488| ValueCategory = lvalue
+# 488| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 488| Conversion = [BoolConversion] conversion to bool
+# 488| Type = [BoolType] bool
+# 488| Value = [CStyleCast] 0
+# 488| ValueCategory = prvalue
+# 489| getStmt(157): [DoStmt] do (...) ...
+# 491| getCondition(): [Literal] 0
+# 491| Type = [IntType] int
+# 491| Value = [Literal] 0
+# 491| ValueCategory = prvalue
+# 489| getStmt(): [BlockStmt] { ... }
+# 490| getStmt(0): [DeclStmt] declaration
+# 490| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x157
+# 490| Type = [Struct] String
+# 490| getVariable().getInitializer(): [Initializer] initializer for x157
+# 490| getExpr(): [ConstructorCall] call to String
+# 490| Type = [VoidType] void
+# 490| ValueCategory = prvalue
+# 491| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 491| Type = [VoidType] void
+# 491| ValueCategory = prvalue
+# 491| getQualifier(): [VariableAccess] x157
+# 491| Type = [Struct] String
+# 491| ValueCategory = lvalue
+# 491| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 491| Conversion = [BoolConversion] conversion to bool
+# 491| Type = [BoolType] bool
+# 491| Value = [CStyleCast] 0
+# 491| ValueCategory = prvalue
+# 492| getStmt(158): [DoStmt] do (...) ...
+# 494| getCondition(): [Literal] 0
+# 494| Type = [IntType] int
+# 494| Value = [Literal] 0
+# 494| ValueCategory = prvalue
+# 492| getStmt(): [BlockStmt] { ... }
+# 493| getStmt(0): [DeclStmt] declaration
+# 493| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x158
+# 493| Type = [Struct] String
+# 493| getVariable().getInitializer(): [Initializer] initializer for x158
+# 493| getExpr(): [ConstructorCall] call to String
+# 493| Type = [VoidType] void
+# 493| ValueCategory = prvalue
+# 494| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 494| Type = [VoidType] void
+# 494| ValueCategory = prvalue
+# 494| getQualifier(): [VariableAccess] x158
+# 494| Type = [Struct] String
+# 494| ValueCategory = lvalue
+# 494| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 494| Conversion = [BoolConversion] conversion to bool
+# 494| Type = [BoolType] bool
+# 494| Value = [CStyleCast] 0
+# 494| ValueCategory = prvalue
+# 495| getStmt(159): [DoStmt] do (...) ...
+# 497| getCondition(): [Literal] 0
+# 497| Type = [IntType] int
+# 497| Value = [Literal] 0
+# 497| ValueCategory = prvalue
+# 495| getStmt(): [BlockStmt] { ... }
+# 496| getStmt(0): [DeclStmt] declaration
+# 496| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x159
+# 496| Type = [Struct] String
+# 496| getVariable().getInitializer(): [Initializer] initializer for x159
+# 496| getExpr(): [ConstructorCall] call to String
+# 496| Type = [VoidType] void
+# 496| ValueCategory = prvalue
+# 497| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 497| Type = [VoidType] void
+# 497| ValueCategory = prvalue
+# 497| getQualifier(): [VariableAccess] x159
+# 497| Type = [Struct] String
+# 497| ValueCategory = lvalue
+# 497| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 497| Conversion = [BoolConversion] conversion to bool
+# 497| Type = [BoolType] bool
+# 497| Value = [CStyleCast] 0
+# 497| ValueCategory = prvalue
+# 498| getStmt(160): [DoStmt] do (...) ...
+# 500| getCondition(): [Literal] 0
+# 500| Type = [IntType] int
+# 500| Value = [Literal] 0
+# 500| ValueCategory = prvalue
+# 498| getStmt(): [BlockStmt] { ... }
+# 499| getStmt(0): [DeclStmt] declaration
+# 499| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x160
+# 499| Type = [Struct] String
+# 499| getVariable().getInitializer(): [Initializer] initializer for x160
+# 499| getExpr(): [ConstructorCall] call to String
+# 499| Type = [VoidType] void
+# 499| ValueCategory = prvalue
+# 500| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 500| Type = [VoidType] void
+# 500| ValueCategory = prvalue
+# 500| getQualifier(): [VariableAccess] x160
+# 500| Type = [Struct] String
+# 500| ValueCategory = lvalue
+# 500| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 500| Conversion = [BoolConversion] conversion to bool
+# 500| Type = [BoolType] bool
+# 500| Value = [CStyleCast] 0
+# 500| ValueCategory = prvalue
+# 501| getStmt(161): [DoStmt] do (...) ...
+# 503| getCondition(): [Literal] 0
+# 503| Type = [IntType] int
+# 503| Value = [Literal] 0
+# 503| ValueCategory = prvalue
+# 501| getStmt(): [BlockStmt] { ... }
+# 502| getStmt(0): [DeclStmt] declaration
+# 502| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x161
+# 502| Type = [Struct] String
+# 502| getVariable().getInitializer(): [Initializer] initializer for x161
+# 502| getExpr(): [ConstructorCall] call to String
+# 502| Type = [VoidType] void
+# 502| ValueCategory = prvalue
+# 503| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 503| Type = [VoidType] void
+# 503| ValueCategory = prvalue
+# 503| getQualifier(): [VariableAccess] x161
+# 503| Type = [Struct] String
+# 503| ValueCategory = lvalue
+# 503| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 503| Conversion = [BoolConversion] conversion to bool
+# 503| Type = [BoolType] bool
+# 503| Value = [CStyleCast] 0
+# 503| ValueCategory = prvalue
+# 504| getStmt(162): [DoStmt] do (...) ...
+# 506| getCondition(): [Literal] 0
+# 506| Type = [IntType] int
+# 506| Value = [Literal] 0
+# 506| ValueCategory = prvalue
+# 504| getStmt(): [BlockStmt] { ... }
+# 505| getStmt(0): [DeclStmt] declaration
+# 505| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x162
+# 505| Type = [Struct] String
+# 505| getVariable().getInitializer(): [Initializer] initializer for x162
+# 505| getExpr(): [ConstructorCall] call to String
+# 505| Type = [VoidType] void
+# 505| ValueCategory = prvalue
+# 506| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 506| Type = [VoidType] void
+# 506| ValueCategory = prvalue
+# 506| getQualifier(): [VariableAccess] x162
+# 506| Type = [Struct] String
+# 506| ValueCategory = lvalue
+# 506| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 506| Conversion = [BoolConversion] conversion to bool
+# 506| Type = [BoolType] bool
+# 506| Value = [CStyleCast] 0
+# 506| ValueCategory = prvalue
+# 507| getStmt(163): [DoStmt] do (...) ...
+# 509| getCondition(): [Literal] 0
+# 509| Type = [IntType] int
+# 509| Value = [Literal] 0
+# 509| ValueCategory = prvalue
+# 507| getStmt(): [BlockStmt] { ... }
+# 508| getStmt(0): [DeclStmt] declaration
+# 508| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x163
+# 508| Type = [Struct] String
+# 508| getVariable().getInitializer(): [Initializer] initializer for x163
+# 508| getExpr(): [ConstructorCall] call to String
+# 508| Type = [VoidType] void
+# 508| ValueCategory = prvalue
+# 509| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 509| Type = [VoidType] void
+# 509| ValueCategory = prvalue
+# 509| getQualifier(): [VariableAccess] x163
+# 509| Type = [Struct] String
+# 509| ValueCategory = lvalue
+# 509| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 509| Conversion = [BoolConversion] conversion to bool
+# 509| Type = [BoolType] bool
+# 509| Value = [CStyleCast] 0
+# 509| ValueCategory = prvalue
+# 510| getStmt(164): [DoStmt] do (...) ...
+# 512| getCondition(): [Literal] 0
+# 512| Type = [IntType] int
+# 512| Value = [Literal] 0
+# 512| ValueCategory = prvalue
+# 510| getStmt(): [BlockStmt] { ... }
+# 511| getStmt(0): [DeclStmt] declaration
+# 511| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x164
+# 511| Type = [Struct] String
+# 511| getVariable().getInitializer(): [Initializer] initializer for x164
+# 511| getExpr(): [ConstructorCall] call to String
+# 511| Type = [VoidType] void
+# 511| ValueCategory = prvalue
+# 512| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 512| Type = [VoidType] void
+# 512| ValueCategory = prvalue
+# 512| getQualifier(): [VariableAccess] x164
+# 512| Type = [Struct] String
+# 512| ValueCategory = lvalue
+# 512| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 512| Conversion = [BoolConversion] conversion to bool
+# 512| Type = [BoolType] bool
+# 512| Value = [CStyleCast] 0
+# 512| ValueCategory = prvalue
+# 513| getStmt(165): [DoStmt] do (...) ...
+# 515| getCondition(): [Literal] 0
+# 515| Type = [IntType] int
+# 515| Value = [Literal] 0
+# 515| ValueCategory = prvalue
+# 513| getStmt(): [BlockStmt] { ... }
+# 514| getStmt(0): [DeclStmt] declaration
+# 514| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x165
+# 514| Type = [Struct] String
+# 514| getVariable().getInitializer(): [Initializer] initializer for x165
+# 514| getExpr(): [ConstructorCall] call to String
+# 514| Type = [VoidType] void
+# 514| ValueCategory = prvalue
+# 515| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 515| Type = [VoidType] void
+# 515| ValueCategory = prvalue
+# 515| getQualifier(): [VariableAccess] x165
+# 515| Type = [Struct] String
+# 515| ValueCategory = lvalue
+# 515| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 515| Conversion = [BoolConversion] conversion to bool
+# 515| Type = [BoolType] bool
+# 515| Value = [CStyleCast] 0
+# 515| ValueCategory = prvalue
+# 516| getStmt(166): [DoStmt] do (...) ...
+# 518| getCondition(): [Literal] 0
+# 518| Type = [IntType] int
+# 518| Value = [Literal] 0
+# 518| ValueCategory = prvalue
+# 516| getStmt(): [BlockStmt] { ... }
+# 517| getStmt(0): [DeclStmt] declaration
+# 517| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x166
+# 517| Type = [Struct] String
+# 517| getVariable().getInitializer(): [Initializer] initializer for x166
+# 517| getExpr(): [ConstructorCall] call to String
+# 517| Type = [VoidType] void
+# 517| ValueCategory = prvalue
+# 518| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 518| Type = [VoidType] void
+# 518| ValueCategory = prvalue
+# 518| getQualifier(): [VariableAccess] x166
+# 518| Type = [Struct] String
+# 518| ValueCategory = lvalue
+# 518| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 518| Conversion = [BoolConversion] conversion to bool
+# 518| Type = [BoolType] bool
+# 518| Value = [CStyleCast] 0
+# 518| ValueCategory = prvalue
+# 519| getStmt(167): [DoStmt] do (...) ...
+# 521| getCondition(): [Literal] 0
+# 521| Type = [IntType] int
+# 521| Value = [Literal] 0
+# 521| ValueCategory = prvalue
+# 519| getStmt(): [BlockStmt] { ... }
+# 520| getStmt(0): [DeclStmt] declaration
+# 520| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x167
+# 520| Type = [Struct] String
+# 520| getVariable().getInitializer(): [Initializer] initializer for x167
+# 520| getExpr(): [ConstructorCall] call to String
+# 520| Type = [VoidType] void
+# 520| ValueCategory = prvalue
+# 521| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 521| Type = [VoidType] void
+# 521| ValueCategory = prvalue
+# 521| getQualifier(): [VariableAccess] x167
+# 521| Type = [Struct] String
+# 521| ValueCategory = lvalue
+# 521| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 521| Conversion = [BoolConversion] conversion to bool
+# 521| Type = [BoolType] bool
+# 521| Value = [CStyleCast] 0
+# 521| ValueCategory = prvalue
+# 522| getStmt(168): [DoStmt] do (...) ...
+# 524| getCondition(): [Literal] 0
+# 524| Type = [IntType] int
+# 524| Value = [Literal] 0
+# 524| ValueCategory = prvalue
+# 522| getStmt(): [BlockStmt] { ... }
+# 523| getStmt(0): [DeclStmt] declaration
+# 523| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x168
+# 523| Type = [Struct] String
+# 523| getVariable().getInitializer(): [Initializer] initializer for x168
+# 523| getExpr(): [ConstructorCall] call to String
+# 523| Type = [VoidType] void
+# 523| ValueCategory = prvalue
+# 524| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 524| Type = [VoidType] void
+# 524| ValueCategory = prvalue
+# 524| getQualifier(): [VariableAccess] x168
+# 524| Type = [Struct] String
+# 524| ValueCategory = lvalue
+# 524| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 524| Conversion = [BoolConversion] conversion to bool
+# 524| Type = [BoolType] bool
+# 524| Value = [CStyleCast] 0
+# 524| ValueCategory = prvalue
+# 525| getStmt(169): [DoStmt] do (...) ...
+# 527| getCondition(): [Literal] 0
+# 527| Type = [IntType] int
+# 527| Value = [Literal] 0
+# 527| ValueCategory = prvalue
+# 525| getStmt(): [BlockStmt] { ... }
+# 526| getStmt(0): [DeclStmt] declaration
+# 526| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x169
+# 526| Type = [Struct] String
+# 526| getVariable().getInitializer(): [Initializer] initializer for x169
+# 526| getExpr(): [ConstructorCall] call to String
+# 526| Type = [VoidType] void
+# 526| ValueCategory = prvalue
+# 527| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 527| Type = [VoidType] void
+# 527| ValueCategory = prvalue
+# 527| getQualifier(): [VariableAccess] x169
+# 527| Type = [Struct] String
+# 527| ValueCategory = lvalue
+# 527| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 527| Conversion = [BoolConversion] conversion to bool
+# 527| Type = [BoolType] bool
+# 527| Value = [CStyleCast] 0
+# 527| ValueCategory = prvalue
+# 528| getStmt(170): [DoStmt] do (...) ...
+# 530| getCondition(): [Literal] 0
+# 530| Type = [IntType] int
+# 530| Value = [Literal] 0
+# 530| ValueCategory = prvalue
+# 528| getStmt(): [BlockStmt] { ... }
+# 529| getStmt(0): [DeclStmt] declaration
+# 529| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x170
+# 529| Type = [Struct] String
+# 529| getVariable().getInitializer(): [Initializer] initializer for x170
+# 529| getExpr(): [ConstructorCall] call to String
+# 529| Type = [VoidType] void
+# 529| ValueCategory = prvalue
+# 530| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 530| Type = [VoidType] void
+# 530| ValueCategory = prvalue
+# 530| getQualifier(): [VariableAccess] x170
+# 530| Type = [Struct] String
+# 530| ValueCategory = lvalue
+# 530| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 530| Conversion = [BoolConversion] conversion to bool
+# 530| Type = [BoolType] bool
+# 530| Value = [CStyleCast] 0
+# 530| ValueCategory = prvalue
+# 531| getStmt(171): [DoStmt] do (...) ...
+# 533| getCondition(): [Literal] 0
+# 533| Type = [IntType] int
+# 533| Value = [Literal] 0
+# 533| ValueCategory = prvalue
+# 531| getStmt(): [BlockStmt] { ... }
+# 532| getStmt(0): [DeclStmt] declaration
+# 532| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x171
+# 532| Type = [Struct] String
+# 532| getVariable().getInitializer(): [Initializer] initializer for x171
+# 532| getExpr(): [ConstructorCall] call to String
+# 532| Type = [VoidType] void
+# 532| ValueCategory = prvalue
+# 533| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 533| Type = [VoidType] void
+# 533| ValueCategory = prvalue
+# 533| getQualifier(): [VariableAccess] x171
+# 533| Type = [Struct] String
+# 533| ValueCategory = lvalue
+# 533| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 533| Conversion = [BoolConversion] conversion to bool
+# 533| Type = [BoolType] bool
+# 533| Value = [CStyleCast] 0
+# 533| ValueCategory = prvalue
+# 534| getStmt(172): [DoStmt] do (...) ...
+# 536| getCondition(): [Literal] 0
+# 536| Type = [IntType] int
+# 536| Value = [Literal] 0
+# 536| ValueCategory = prvalue
+# 534| getStmt(): [BlockStmt] { ... }
+# 535| getStmt(0): [DeclStmt] declaration
+# 535| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x172
+# 535| Type = [Struct] String
+# 535| getVariable().getInitializer(): [Initializer] initializer for x172
+# 535| getExpr(): [ConstructorCall] call to String
+# 535| Type = [VoidType] void
+# 535| ValueCategory = prvalue
+# 536| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 536| Type = [VoidType] void
+# 536| ValueCategory = prvalue
+# 536| getQualifier(): [VariableAccess] x172
+# 536| Type = [Struct] String
+# 536| ValueCategory = lvalue
+# 536| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 536| Conversion = [BoolConversion] conversion to bool
+# 536| Type = [BoolType] bool
+# 536| Value = [CStyleCast] 0
+# 536| ValueCategory = prvalue
+# 537| getStmt(173): [DoStmt] do (...) ...
+# 539| getCondition(): [Literal] 0
+# 539| Type = [IntType] int
+# 539| Value = [Literal] 0
+# 539| ValueCategory = prvalue
+# 537| getStmt(): [BlockStmt] { ... }
+# 538| getStmt(0): [DeclStmt] declaration
+# 538| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x173
+# 538| Type = [Struct] String
+# 538| getVariable().getInitializer(): [Initializer] initializer for x173
+# 538| getExpr(): [ConstructorCall] call to String
+# 538| Type = [VoidType] void
+# 538| ValueCategory = prvalue
+# 539| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 539| Type = [VoidType] void
+# 539| ValueCategory = prvalue
+# 539| getQualifier(): [VariableAccess] x173
+# 539| Type = [Struct] String
+# 539| ValueCategory = lvalue
+# 539| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 539| Conversion = [BoolConversion] conversion to bool
+# 539| Type = [BoolType] bool
+# 539| Value = [CStyleCast] 0
+# 539| ValueCategory = prvalue
+# 540| getStmt(174): [DoStmt] do (...) ...
+# 542| getCondition(): [Literal] 0
+# 542| Type = [IntType] int
+# 542| Value = [Literal] 0
+# 542| ValueCategory = prvalue
+# 540| getStmt(): [BlockStmt] { ... }
+# 541| getStmt(0): [DeclStmt] declaration
+# 541| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x174
+# 541| Type = [Struct] String
+# 541| getVariable().getInitializer(): [Initializer] initializer for x174
+# 541| getExpr(): [ConstructorCall] call to String
+# 541| Type = [VoidType] void
+# 541| ValueCategory = prvalue
+# 542| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 542| Type = [VoidType] void
+# 542| ValueCategory = prvalue
+# 542| getQualifier(): [VariableAccess] x174
+# 542| Type = [Struct] String
+# 542| ValueCategory = lvalue
+# 542| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 542| Conversion = [BoolConversion] conversion to bool
+# 542| Type = [BoolType] bool
+# 542| Value = [CStyleCast] 0
+# 542| ValueCategory = prvalue
+# 543| getStmt(175): [DoStmt] do (...) ...
+# 545| getCondition(): [Literal] 0
+# 545| Type = [IntType] int
+# 545| Value = [Literal] 0
+# 545| ValueCategory = prvalue
+# 543| getStmt(): [BlockStmt] { ... }
+# 544| getStmt(0): [DeclStmt] declaration
+# 544| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x175
+# 544| Type = [Struct] String
+# 544| getVariable().getInitializer(): [Initializer] initializer for x175
+# 544| getExpr(): [ConstructorCall] call to String
+# 544| Type = [VoidType] void
+# 544| ValueCategory = prvalue
+# 545| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 545| Type = [VoidType] void
+# 545| ValueCategory = prvalue
+# 545| getQualifier(): [VariableAccess] x175
+# 545| Type = [Struct] String
+# 545| ValueCategory = lvalue
+# 545| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 545| Conversion = [BoolConversion] conversion to bool
+# 545| Type = [BoolType] bool
+# 545| Value = [CStyleCast] 0
+# 545| ValueCategory = prvalue
+# 546| getStmt(176): [DoStmt] do (...) ...
+# 548| getCondition(): [Literal] 0
+# 548| Type = [IntType] int
+# 548| Value = [Literal] 0
+# 548| ValueCategory = prvalue
+# 546| getStmt(): [BlockStmt] { ... }
+# 547| getStmt(0): [DeclStmt] declaration
+# 547| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x176
+# 547| Type = [Struct] String
+# 547| getVariable().getInitializer(): [Initializer] initializer for x176
+# 547| getExpr(): [ConstructorCall] call to String
+# 547| Type = [VoidType] void
+# 547| ValueCategory = prvalue
+# 548| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 548| Type = [VoidType] void
+# 548| ValueCategory = prvalue
+# 548| getQualifier(): [VariableAccess] x176
+# 548| Type = [Struct] String
+# 548| ValueCategory = lvalue
+# 548| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 548| Conversion = [BoolConversion] conversion to bool
+# 548| Type = [BoolType] bool
+# 548| Value = [CStyleCast] 0
+# 548| ValueCategory = prvalue
+# 549| getStmt(177): [DoStmt] do (...) ...
+# 551| getCondition(): [Literal] 0
+# 551| Type = [IntType] int
+# 551| Value = [Literal] 0
+# 551| ValueCategory = prvalue
+# 549| getStmt(): [BlockStmt] { ... }
+# 550| getStmt(0): [DeclStmt] declaration
+# 550| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x177
+# 550| Type = [Struct] String
+# 550| getVariable().getInitializer(): [Initializer] initializer for x177
+# 550| getExpr(): [ConstructorCall] call to String
+# 550| Type = [VoidType] void
+# 550| ValueCategory = prvalue
+# 551| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 551| Type = [VoidType] void
+# 551| ValueCategory = prvalue
+# 551| getQualifier(): [VariableAccess] x177
+# 551| Type = [Struct] String
+# 551| ValueCategory = lvalue
+# 551| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 551| Conversion = [BoolConversion] conversion to bool
+# 551| Type = [BoolType] bool
+# 551| Value = [CStyleCast] 0
+# 551| ValueCategory = prvalue
+# 552| getStmt(178): [DoStmt] do (...) ...
+# 554| getCondition(): [Literal] 0
+# 554| Type = [IntType] int
+# 554| Value = [Literal] 0
+# 554| ValueCategory = prvalue
+# 552| getStmt(): [BlockStmt] { ... }
+# 553| getStmt(0): [DeclStmt] declaration
+# 553| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x178
+# 553| Type = [Struct] String
+# 553| getVariable().getInitializer(): [Initializer] initializer for x178
+# 553| getExpr(): [ConstructorCall] call to String
+# 553| Type = [VoidType] void
+# 553| ValueCategory = prvalue
+# 554| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 554| Type = [VoidType] void
+# 554| ValueCategory = prvalue
+# 554| getQualifier(): [VariableAccess] x178
+# 554| Type = [Struct] String
+# 554| ValueCategory = lvalue
+# 554| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 554| Conversion = [BoolConversion] conversion to bool
+# 554| Type = [BoolType] bool
+# 554| Value = [CStyleCast] 0
+# 554| ValueCategory = prvalue
+# 555| getStmt(179): [DoStmt] do (...) ...
+# 557| getCondition(): [Literal] 0
+# 557| Type = [IntType] int
+# 557| Value = [Literal] 0
+# 557| ValueCategory = prvalue
+# 555| getStmt(): [BlockStmt] { ... }
+# 556| getStmt(0): [DeclStmt] declaration
+# 556| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x179
+# 556| Type = [Struct] String
+# 556| getVariable().getInitializer(): [Initializer] initializer for x179
+# 556| getExpr(): [ConstructorCall] call to String
+# 556| Type = [VoidType] void
+# 556| ValueCategory = prvalue
+# 557| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 557| Type = [VoidType] void
+# 557| ValueCategory = prvalue
+# 557| getQualifier(): [VariableAccess] x179
+# 557| Type = [Struct] String
+# 557| ValueCategory = lvalue
+# 557| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 557| Conversion = [BoolConversion] conversion to bool
+# 557| Type = [BoolType] bool
+# 557| Value = [CStyleCast] 0
+# 557| ValueCategory = prvalue
+# 558| getStmt(180): [DoStmt] do (...) ...
+# 560| getCondition(): [Literal] 0
+# 560| Type = [IntType] int
+# 560| Value = [Literal] 0
+# 560| ValueCategory = prvalue
+# 558| getStmt(): [BlockStmt] { ... }
+# 559| getStmt(0): [DeclStmt] declaration
+# 559| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x180
+# 559| Type = [Struct] String
+# 559| getVariable().getInitializer(): [Initializer] initializer for x180
+# 559| getExpr(): [ConstructorCall] call to String
+# 559| Type = [VoidType] void
+# 559| ValueCategory = prvalue
+# 560| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 560| Type = [VoidType] void
+# 560| ValueCategory = prvalue
+# 560| getQualifier(): [VariableAccess] x180
+# 560| Type = [Struct] String
+# 560| ValueCategory = lvalue
+# 560| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 560| Conversion = [BoolConversion] conversion to bool
+# 560| Type = [BoolType] bool
+# 560| Value = [CStyleCast] 0
+# 560| ValueCategory = prvalue
+# 561| getStmt(181): [DoStmt] do (...) ...
+# 563| getCondition(): [Literal] 0
+# 563| Type = [IntType] int
+# 563| Value = [Literal] 0
+# 563| ValueCategory = prvalue
+# 561| getStmt(): [BlockStmt] { ... }
+# 562| getStmt(0): [DeclStmt] declaration
+# 562| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x181
+# 562| Type = [Struct] String
+# 562| getVariable().getInitializer(): [Initializer] initializer for x181
+# 562| getExpr(): [ConstructorCall] call to String
+# 562| Type = [VoidType] void
+# 562| ValueCategory = prvalue
+# 563| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 563| Type = [VoidType] void
+# 563| ValueCategory = prvalue
+# 563| getQualifier(): [VariableAccess] x181
+# 563| Type = [Struct] String
+# 563| ValueCategory = lvalue
+# 563| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 563| Conversion = [BoolConversion] conversion to bool
+# 563| Type = [BoolType] bool
+# 563| Value = [CStyleCast] 0
+# 563| ValueCategory = prvalue
+# 564| getStmt(182): [DoStmt] do (...) ...
+# 566| getCondition(): [Literal] 0
+# 566| Type = [IntType] int
+# 566| Value = [Literal] 0
+# 566| ValueCategory = prvalue
+# 564| getStmt(): [BlockStmt] { ... }
+# 565| getStmt(0): [DeclStmt] declaration
+# 565| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x182
+# 565| Type = [Struct] String
+# 565| getVariable().getInitializer(): [Initializer] initializer for x182
+# 565| getExpr(): [ConstructorCall] call to String
+# 565| Type = [VoidType] void
+# 565| ValueCategory = prvalue
+# 566| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 566| Type = [VoidType] void
+# 566| ValueCategory = prvalue
+# 566| getQualifier(): [VariableAccess] x182
+# 566| Type = [Struct] String
+# 566| ValueCategory = lvalue
+# 566| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 566| Conversion = [BoolConversion] conversion to bool
+# 566| Type = [BoolType] bool
+# 566| Value = [CStyleCast] 0
+# 566| ValueCategory = prvalue
+# 567| getStmt(183): [DoStmt] do (...) ...
+# 569| getCondition(): [Literal] 0
+# 569| Type = [IntType] int
+# 569| Value = [Literal] 0
+# 569| ValueCategory = prvalue
+# 567| getStmt(): [BlockStmt] { ... }
+# 568| getStmt(0): [DeclStmt] declaration
+# 568| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x183
+# 568| Type = [Struct] String
+# 568| getVariable().getInitializer(): [Initializer] initializer for x183
+# 568| getExpr(): [ConstructorCall] call to String
+# 568| Type = [VoidType] void
+# 568| ValueCategory = prvalue
+# 569| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 569| Type = [VoidType] void
+# 569| ValueCategory = prvalue
+# 569| getQualifier(): [VariableAccess] x183
+# 569| Type = [Struct] String
+# 569| ValueCategory = lvalue
+# 569| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 569| Conversion = [BoolConversion] conversion to bool
+# 569| Type = [BoolType] bool
+# 569| Value = [CStyleCast] 0
+# 569| ValueCategory = prvalue
+# 570| getStmt(184): [DoStmt] do (...) ...
+# 572| getCondition(): [Literal] 0
+# 572| Type = [IntType] int
+# 572| Value = [Literal] 0
+# 572| ValueCategory = prvalue
+# 570| getStmt(): [BlockStmt] { ... }
+# 571| getStmt(0): [DeclStmt] declaration
+# 571| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x184
+# 571| Type = [Struct] String
+# 571| getVariable().getInitializer(): [Initializer] initializer for x184
+# 571| getExpr(): [ConstructorCall] call to String
+# 571| Type = [VoidType] void
+# 571| ValueCategory = prvalue
+# 572| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 572| Type = [VoidType] void
+# 572| ValueCategory = prvalue
+# 572| getQualifier(): [VariableAccess] x184
+# 572| Type = [Struct] String
+# 572| ValueCategory = lvalue
+# 572| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 572| Conversion = [BoolConversion] conversion to bool
+# 572| Type = [BoolType] bool
+# 572| Value = [CStyleCast] 0
+# 572| ValueCategory = prvalue
+# 573| getStmt(185): [DoStmt] do (...) ...
+# 575| getCondition(): [Literal] 0
+# 575| Type = [IntType] int
+# 575| Value = [Literal] 0
+# 575| ValueCategory = prvalue
+# 573| getStmt(): [BlockStmt] { ... }
+# 574| getStmt(0): [DeclStmt] declaration
+# 574| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x185
+# 574| Type = [Struct] String
+# 574| getVariable().getInitializer(): [Initializer] initializer for x185
+# 574| getExpr(): [ConstructorCall] call to String
+# 574| Type = [VoidType] void
+# 574| ValueCategory = prvalue
+# 575| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 575| Type = [VoidType] void
+# 575| ValueCategory = prvalue
+# 575| getQualifier(): [VariableAccess] x185
+# 575| Type = [Struct] String
+# 575| ValueCategory = lvalue
+# 575| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 575| Conversion = [BoolConversion] conversion to bool
+# 575| Type = [BoolType] bool
+# 575| Value = [CStyleCast] 0
+# 575| ValueCategory = prvalue
+# 576| getStmt(186): [DoStmt] do (...) ...
+# 578| getCondition(): [Literal] 0
+# 578| Type = [IntType] int
+# 578| Value = [Literal] 0
+# 578| ValueCategory = prvalue
+# 576| getStmt(): [BlockStmt] { ... }
+# 577| getStmt(0): [DeclStmt] declaration
+# 577| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x186
+# 577| Type = [Struct] String
+# 577| getVariable().getInitializer(): [Initializer] initializer for x186
+# 577| getExpr(): [ConstructorCall] call to String
+# 577| Type = [VoidType] void
+# 577| ValueCategory = prvalue
+# 578| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 578| Type = [VoidType] void
+# 578| ValueCategory = prvalue
+# 578| getQualifier(): [VariableAccess] x186
+# 578| Type = [Struct] String
+# 578| ValueCategory = lvalue
+# 578| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 578| Conversion = [BoolConversion] conversion to bool
+# 578| Type = [BoolType] bool
+# 578| Value = [CStyleCast] 0
+# 578| ValueCategory = prvalue
+# 579| getStmt(187): [DoStmt] do (...) ...
+# 581| getCondition(): [Literal] 0
+# 581| Type = [IntType] int
+# 581| Value = [Literal] 0
+# 581| ValueCategory = prvalue
+# 579| getStmt(): [BlockStmt] { ... }
+# 580| getStmt(0): [DeclStmt] declaration
+# 580| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x187
+# 580| Type = [Struct] String
+# 580| getVariable().getInitializer(): [Initializer] initializer for x187
+# 580| getExpr(): [ConstructorCall] call to String
+# 580| Type = [VoidType] void
+# 580| ValueCategory = prvalue
+# 581| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 581| Type = [VoidType] void
+# 581| ValueCategory = prvalue
+# 581| getQualifier(): [VariableAccess] x187
+# 581| Type = [Struct] String
+# 581| ValueCategory = lvalue
+# 581| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 581| Conversion = [BoolConversion] conversion to bool
+# 581| Type = [BoolType] bool
+# 581| Value = [CStyleCast] 0
+# 581| ValueCategory = prvalue
+# 582| getStmt(188): [DoStmt] do (...) ...
+# 584| getCondition(): [Literal] 0
+# 584| Type = [IntType] int
+# 584| Value = [Literal] 0
+# 584| ValueCategory = prvalue
+# 582| getStmt(): [BlockStmt] { ... }
+# 583| getStmt(0): [DeclStmt] declaration
+# 583| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x188
+# 583| Type = [Struct] String
+# 583| getVariable().getInitializer(): [Initializer] initializer for x188
+# 583| getExpr(): [ConstructorCall] call to String
+# 583| Type = [VoidType] void
+# 583| ValueCategory = prvalue
+# 584| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 584| Type = [VoidType] void
+# 584| ValueCategory = prvalue
+# 584| getQualifier(): [VariableAccess] x188
+# 584| Type = [Struct] String
+# 584| ValueCategory = lvalue
+# 584| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 584| Conversion = [BoolConversion] conversion to bool
+# 584| Type = [BoolType] bool
+# 584| Value = [CStyleCast] 0
+# 584| ValueCategory = prvalue
+# 585| getStmt(189): [DoStmt] do (...) ...
+# 587| getCondition(): [Literal] 0
+# 587| Type = [IntType] int
+# 587| Value = [Literal] 0
+# 587| ValueCategory = prvalue
+# 585| getStmt(): [BlockStmt] { ... }
+# 586| getStmt(0): [DeclStmt] declaration
+# 586| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x189
+# 586| Type = [Struct] String
+# 586| getVariable().getInitializer(): [Initializer] initializer for x189
+# 586| getExpr(): [ConstructorCall] call to String
+# 586| Type = [VoidType] void
+# 586| ValueCategory = prvalue
+# 587| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 587| Type = [VoidType] void
+# 587| ValueCategory = prvalue
+# 587| getQualifier(): [VariableAccess] x189
+# 587| Type = [Struct] String
+# 587| ValueCategory = lvalue
+# 587| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 587| Conversion = [BoolConversion] conversion to bool
+# 587| Type = [BoolType] bool
+# 587| Value = [CStyleCast] 0
+# 587| ValueCategory = prvalue
+# 588| getStmt(190): [DoStmt] do (...) ...
+# 590| getCondition(): [Literal] 0
+# 590| Type = [IntType] int
+# 590| Value = [Literal] 0
+# 590| ValueCategory = prvalue
+# 588| getStmt(): [BlockStmt] { ... }
+# 589| getStmt(0): [DeclStmt] declaration
+# 589| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x190
+# 589| Type = [Struct] String
+# 589| getVariable().getInitializer(): [Initializer] initializer for x190
+# 589| getExpr(): [ConstructorCall] call to String
+# 589| Type = [VoidType] void
+# 589| ValueCategory = prvalue
+# 590| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 590| Type = [VoidType] void
+# 590| ValueCategory = prvalue
+# 590| getQualifier(): [VariableAccess] x190
+# 590| Type = [Struct] String
+# 590| ValueCategory = lvalue
+# 590| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 590| Conversion = [BoolConversion] conversion to bool
+# 590| Type = [BoolType] bool
+# 590| Value = [CStyleCast] 0
+# 590| ValueCategory = prvalue
+# 591| getStmt(191): [DoStmt] do (...) ...
+# 593| getCondition(): [Literal] 0
+# 593| Type = [IntType] int
+# 593| Value = [Literal] 0
+# 593| ValueCategory = prvalue
+# 591| getStmt(): [BlockStmt] { ... }
+# 592| getStmt(0): [DeclStmt] declaration
+# 592| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x191
+# 592| Type = [Struct] String
+# 592| getVariable().getInitializer(): [Initializer] initializer for x191
+# 592| getExpr(): [ConstructorCall] call to String
+# 592| Type = [VoidType] void
+# 592| ValueCategory = prvalue
+# 593| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 593| Type = [VoidType] void
+# 593| ValueCategory = prvalue
+# 593| getQualifier(): [VariableAccess] x191
+# 593| Type = [Struct] String
+# 593| ValueCategory = lvalue
+# 593| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 593| Conversion = [BoolConversion] conversion to bool
+# 593| Type = [BoolType] bool
+# 593| Value = [CStyleCast] 0
+# 593| ValueCategory = prvalue
+# 594| getStmt(192): [DoStmt] do (...) ...
+# 596| getCondition(): [Literal] 0
+# 596| Type = [IntType] int
+# 596| Value = [Literal] 0
+# 596| ValueCategory = prvalue
+# 594| getStmt(): [BlockStmt] { ... }
+# 595| getStmt(0): [DeclStmt] declaration
+# 595| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x192
+# 595| Type = [Struct] String
+# 595| getVariable().getInitializer(): [Initializer] initializer for x192
+# 595| getExpr(): [ConstructorCall] call to String
+# 595| Type = [VoidType] void
+# 595| ValueCategory = prvalue
+# 596| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 596| Type = [VoidType] void
+# 596| ValueCategory = prvalue
+# 596| getQualifier(): [VariableAccess] x192
+# 596| Type = [Struct] String
+# 596| ValueCategory = lvalue
+# 596| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 596| Conversion = [BoolConversion] conversion to bool
+# 596| Type = [BoolType] bool
+# 596| Value = [CStyleCast] 0
+# 596| ValueCategory = prvalue
+# 597| getStmt(193): [DoStmt] do (...) ...
+# 599| getCondition(): [Literal] 0
+# 599| Type = [IntType] int
+# 599| Value = [Literal] 0
+# 599| ValueCategory = prvalue
+# 597| getStmt(): [BlockStmt] { ... }
+# 598| getStmt(0): [DeclStmt] declaration
+# 598| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x193
+# 598| Type = [Struct] String
+# 598| getVariable().getInitializer(): [Initializer] initializer for x193
+# 598| getExpr(): [ConstructorCall] call to String
+# 598| Type = [VoidType] void
+# 598| ValueCategory = prvalue
+# 599| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 599| Type = [VoidType] void
+# 599| ValueCategory = prvalue
+# 599| getQualifier(): [VariableAccess] x193
+# 599| Type = [Struct] String
+# 599| ValueCategory = lvalue
+# 599| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 599| Conversion = [BoolConversion] conversion to bool
+# 599| Type = [BoolType] bool
+# 599| Value = [CStyleCast] 0
+# 599| ValueCategory = prvalue
+# 600| getStmt(194): [DoStmt] do (...) ...
+# 602| getCondition(): [Literal] 0
+# 602| Type = [IntType] int
+# 602| Value = [Literal] 0
+# 602| ValueCategory = prvalue
+# 600| getStmt(): [BlockStmt] { ... }
+# 601| getStmt(0): [DeclStmt] declaration
+# 601| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x194
+# 601| Type = [Struct] String
+# 601| getVariable().getInitializer(): [Initializer] initializer for x194
+# 601| getExpr(): [ConstructorCall] call to String
+# 601| Type = [VoidType] void
+# 601| ValueCategory = prvalue
+# 602| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 602| Type = [VoidType] void
+# 602| ValueCategory = prvalue
+# 602| getQualifier(): [VariableAccess] x194
+# 602| Type = [Struct] String
+# 602| ValueCategory = lvalue
+# 602| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 602| Conversion = [BoolConversion] conversion to bool
+# 602| Type = [BoolType] bool
+# 602| Value = [CStyleCast] 0
+# 602| ValueCategory = prvalue
+# 603| getStmt(195): [DoStmt] do (...) ...
+# 605| getCondition(): [Literal] 0
+# 605| Type = [IntType] int
+# 605| Value = [Literal] 0
+# 605| ValueCategory = prvalue
+# 603| getStmt(): [BlockStmt] { ... }
+# 604| getStmt(0): [DeclStmt] declaration
+# 604| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x195
+# 604| Type = [Struct] String
+# 604| getVariable().getInitializer(): [Initializer] initializer for x195
+# 604| getExpr(): [ConstructorCall] call to String
+# 604| Type = [VoidType] void
+# 604| ValueCategory = prvalue
+# 605| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 605| Type = [VoidType] void
+# 605| ValueCategory = prvalue
+# 605| getQualifier(): [VariableAccess] x195
+# 605| Type = [Struct] String
+# 605| ValueCategory = lvalue
+# 605| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 605| Conversion = [BoolConversion] conversion to bool
+# 605| Type = [BoolType] bool
+# 605| Value = [CStyleCast] 0
+# 605| ValueCategory = prvalue
+# 606| getStmt(196): [DoStmt] do (...) ...
+# 608| getCondition(): [Literal] 0
+# 608| Type = [IntType] int
+# 608| Value = [Literal] 0
+# 608| ValueCategory = prvalue
+# 606| getStmt(): [BlockStmt] { ... }
+# 607| getStmt(0): [DeclStmt] declaration
+# 607| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x196
+# 607| Type = [Struct] String
+# 607| getVariable().getInitializer(): [Initializer] initializer for x196
+# 607| getExpr(): [ConstructorCall] call to String
+# 607| Type = [VoidType] void
+# 607| ValueCategory = prvalue
+# 608| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 608| Type = [VoidType] void
+# 608| ValueCategory = prvalue
+# 608| getQualifier(): [VariableAccess] x196
+# 608| Type = [Struct] String
+# 608| ValueCategory = lvalue
+# 608| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 608| Conversion = [BoolConversion] conversion to bool
+# 608| Type = [BoolType] bool
+# 608| Value = [CStyleCast] 0
+# 608| ValueCategory = prvalue
+# 609| getStmt(197): [DoStmt] do (...) ...
+# 611| getCondition(): [Literal] 0
+# 611| Type = [IntType] int
+# 611| Value = [Literal] 0
+# 611| ValueCategory = prvalue
+# 609| getStmt(): [BlockStmt] { ... }
+# 610| getStmt(0): [DeclStmt] declaration
+# 610| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x197
+# 610| Type = [Struct] String
+# 610| getVariable().getInitializer(): [Initializer] initializer for x197
+# 610| getExpr(): [ConstructorCall] call to String
+# 610| Type = [VoidType] void
+# 610| ValueCategory = prvalue
+# 611| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 611| Type = [VoidType] void
+# 611| ValueCategory = prvalue
+# 611| getQualifier(): [VariableAccess] x197
+# 611| Type = [Struct] String
+# 611| ValueCategory = lvalue
+# 611| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 611| Conversion = [BoolConversion] conversion to bool
+# 611| Type = [BoolType] bool
+# 611| Value = [CStyleCast] 0
+# 611| ValueCategory = prvalue
+# 612| getStmt(198): [DoStmt] do (...) ...
+# 614| getCondition(): [Literal] 0
+# 614| Type = [IntType] int
+# 614| Value = [Literal] 0
+# 614| ValueCategory = prvalue
+# 612| getStmt(): [BlockStmt] { ... }
+# 613| getStmt(0): [DeclStmt] declaration
+# 613| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x198
+# 613| Type = [Struct] String
+# 613| getVariable().getInitializer(): [Initializer] initializer for x198
+# 613| getExpr(): [ConstructorCall] call to String
+# 613| Type = [VoidType] void
+# 613| ValueCategory = prvalue
+# 614| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 614| Type = [VoidType] void
+# 614| ValueCategory = prvalue
+# 614| getQualifier(): [VariableAccess] x198
+# 614| Type = [Struct] String
+# 614| ValueCategory = lvalue
+# 614| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 614| Conversion = [BoolConversion] conversion to bool
+# 614| Type = [BoolType] bool
+# 614| Value = [CStyleCast] 0
+# 614| ValueCategory = prvalue
+# 615| getStmt(199): [DoStmt] do (...) ...
+# 617| getCondition(): [Literal] 0
+# 617| Type = [IntType] int
+# 617| Value = [Literal] 0
+# 617| ValueCategory = prvalue
+# 615| getStmt(): [BlockStmt] { ... }
+# 616| getStmt(0): [DeclStmt] declaration
+# 616| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x199
+# 616| Type = [Struct] String
+# 616| getVariable().getInitializer(): [Initializer] initializer for x199
+# 616| getExpr(): [ConstructorCall] call to String
+# 616| Type = [VoidType] void
+# 616| ValueCategory = prvalue
+# 617| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 617| Type = [VoidType] void
+# 617| ValueCategory = prvalue
+# 617| getQualifier(): [VariableAccess] x199
+# 617| Type = [Struct] String
+# 617| ValueCategory = lvalue
+# 617| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 617| Conversion = [BoolConversion] conversion to bool
+# 617| Type = [BoolType] bool
+# 617| Value = [CStyleCast] 0
+# 617| ValueCategory = prvalue
+# 618| getStmt(200): [DoStmt] do (...) ...
+# 620| getCondition(): [Literal] 0
+# 620| Type = [IntType] int
+# 620| Value = [Literal] 0
+# 620| ValueCategory = prvalue
+# 618| getStmt(): [BlockStmt] { ... }
+# 619| getStmt(0): [DeclStmt] declaration
+# 619| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x200
+# 619| Type = [Struct] String
+# 619| getVariable().getInitializer(): [Initializer] initializer for x200
+# 619| getExpr(): [ConstructorCall] call to String
+# 619| Type = [VoidType] void
+# 619| ValueCategory = prvalue
+# 620| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 620| Type = [VoidType] void
+# 620| ValueCategory = prvalue
+# 620| getQualifier(): [VariableAccess] x200
+# 620| Type = [Struct] String
+# 620| ValueCategory = lvalue
+# 620| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 620| Conversion = [BoolConversion] conversion to bool
+# 620| Type = [BoolType] bool
+# 620| Value = [CStyleCast] 0
+# 620| ValueCategory = prvalue
+# 621| getStmt(201): [DoStmt] do (...) ...
+# 623| getCondition(): [Literal] 0
+# 623| Type = [IntType] int
+# 623| Value = [Literal] 0
+# 623| ValueCategory = prvalue
+# 621| getStmt(): [BlockStmt] { ... }
+# 622| getStmt(0): [DeclStmt] declaration
+# 622| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x201
+# 622| Type = [Struct] String
+# 622| getVariable().getInitializer(): [Initializer] initializer for x201
+# 622| getExpr(): [ConstructorCall] call to String
+# 622| Type = [VoidType] void
+# 622| ValueCategory = prvalue
+# 623| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 623| Type = [VoidType] void
+# 623| ValueCategory = prvalue
+# 623| getQualifier(): [VariableAccess] x201
+# 623| Type = [Struct] String
+# 623| ValueCategory = lvalue
+# 623| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 623| Conversion = [BoolConversion] conversion to bool
+# 623| Type = [BoolType] bool
+# 623| Value = [CStyleCast] 0
+# 623| ValueCategory = prvalue
+# 624| getStmt(202): [DoStmt] do (...) ...
+# 626| getCondition(): [Literal] 0
+# 626| Type = [IntType] int
+# 626| Value = [Literal] 0
+# 626| ValueCategory = prvalue
+# 624| getStmt(): [BlockStmt] { ... }
+# 625| getStmt(0): [DeclStmt] declaration
+# 625| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x202
+# 625| Type = [Struct] String
+# 625| getVariable().getInitializer(): [Initializer] initializer for x202
+# 625| getExpr(): [ConstructorCall] call to String
+# 625| Type = [VoidType] void
+# 625| ValueCategory = prvalue
+# 626| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 626| Type = [VoidType] void
+# 626| ValueCategory = prvalue
+# 626| getQualifier(): [VariableAccess] x202
+# 626| Type = [Struct] String
+# 626| ValueCategory = lvalue
+# 626| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 626| Conversion = [BoolConversion] conversion to bool
+# 626| Type = [BoolType] bool
+# 626| Value = [CStyleCast] 0
+# 626| ValueCategory = prvalue
+# 627| getStmt(203): [DoStmt] do (...) ...
+# 629| getCondition(): [Literal] 0
+# 629| Type = [IntType] int
+# 629| Value = [Literal] 0
+# 629| ValueCategory = prvalue
+# 627| getStmt(): [BlockStmt] { ... }
+# 628| getStmt(0): [DeclStmt] declaration
+# 628| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x203
+# 628| Type = [Struct] String
+# 628| getVariable().getInitializer(): [Initializer] initializer for x203
+# 628| getExpr(): [ConstructorCall] call to String
+# 628| Type = [VoidType] void
+# 628| ValueCategory = prvalue
+# 629| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 629| Type = [VoidType] void
+# 629| ValueCategory = prvalue
+# 629| getQualifier(): [VariableAccess] x203
+# 629| Type = [Struct] String
+# 629| ValueCategory = lvalue
+# 629| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 629| Conversion = [BoolConversion] conversion to bool
+# 629| Type = [BoolType] bool
+# 629| Value = [CStyleCast] 0
+# 629| ValueCategory = prvalue
+# 630| getStmt(204): [DoStmt] do (...) ...
+# 632| getCondition(): [Literal] 0
+# 632| Type = [IntType] int
+# 632| Value = [Literal] 0
+# 632| ValueCategory = prvalue
+# 630| getStmt(): [BlockStmt] { ... }
+# 631| getStmt(0): [DeclStmt] declaration
+# 631| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x204
+# 631| Type = [Struct] String
+# 631| getVariable().getInitializer(): [Initializer] initializer for x204
+# 631| getExpr(): [ConstructorCall] call to String
+# 631| Type = [VoidType] void
+# 631| ValueCategory = prvalue
+# 632| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 632| Type = [VoidType] void
+# 632| ValueCategory = prvalue
+# 632| getQualifier(): [VariableAccess] x204
+# 632| Type = [Struct] String
+# 632| ValueCategory = lvalue
+# 632| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 632| Conversion = [BoolConversion] conversion to bool
+# 632| Type = [BoolType] bool
+# 632| Value = [CStyleCast] 0
+# 632| ValueCategory = prvalue
+# 633| getStmt(205): [DoStmt] do (...) ...
+# 635| getCondition(): [Literal] 0
+# 635| Type = [IntType] int
+# 635| Value = [Literal] 0
+# 635| ValueCategory = prvalue
+# 633| getStmt(): [BlockStmt] { ... }
+# 634| getStmt(0): [DeclStmt] declaration
+# 634| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x205
+# 634| Type = [Struct] String
+# 634| getVariable().getInitializer(): [Initializer] initializer for x205
+# 634| getExpr(): [ConstructorCall] call to String
+# 634| Type = [VoidType] void
+# 634| ValueCategory = prvalue
+# 635| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 635| Type = [VoidType] void
+# 635| ValueCategory = prvalue
+# 635| getQualifier(): [VariableAccess] x205
+# 635| Type = [Struct] String
+# 635| ValueCategory = lvalue
+# 635| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 635| Conversion = [BoolConversion] conversion to bool
+# 635| Type = [BoolType] bool
+# 635| Value = [CStyleCast] 0
+# 635| ValueCategory = prvalue
+# 636| getStmt(206): [DoStmt] do (...) ...
+# 638| getCondition(): [Literal] 0
+# 638| Type = [IntType] int
+# 638| Value = [Literal] 0
+# 638| ValueCategory = prvalue
+# 636| getStmt(): [BlockStmt] { ... }
+# 637| getStmt(0): [DeclStmt] declaration
+# 637| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x206
+# 637| Type = [Struct] String
+# 637| getVariable().getInitializer(): [Initializer] initializer for x206
+# 637| getExpr(): [ConstructorCall] call to String
+# 637| Type = [VoidType] void
+# 637| ValueCategory = prvalue
+# 638| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 638| Type = [VoidType] void
+# 638| ValueCategory = prvalue
+# 638| getQualifier(): [VariableAccess] x206
+# 638| Type = [Struct] String
+# 638| ValueCategory = lvalue
+# 638| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 638| Conversion = [BoolConversion] conversion to bool
+# 638| Type = [BoolType] bool
+# 638| Value = [CStyleCast] 0
+# 638| ValueCategory = prvalue
+# 639| getStmt(207): [DoStmt] do (...) ...
+# 641| getCondition(): [Literal] 0
+# 641| Type = [IntType] int
+# 641| Value = [Literal] 0
+# 641| ValueCategory = prvalue
+# 639| getStmt(): [BlockStmt] { ... }
+# 640| getStmt(0): [DeclStmt] declaration
+# 640| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x207
+# 640| Type = [Struct] String
+# 640| getVariable().getInitializer(): [Initializer] initializer for x207
+# 640| getExpr(): [ConstructorCall] call to String
+# 640| Type = [VoidType] void
+# 640| ValueCategory = prvalue
+# 641| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 641| Type = [VoidType] void
+# 641| ValueCategory = prvalue
+# 641| getQualifier(): [VariableAccess] x207
+# 641| Type = [Struct] String
+# 641| ValueCategory = lvalue
+# 641| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 641| Conversion = [BoolConversion] conversion to bool
+# 641| Type = [BoolType] bool
+# 641| Value = [CStyleCast] 0
+# 641| ValueCategory = prvalue
+# 642| getStmt(208): [DoStmt] do (...) ...
+# 644| getCondition(): [Literal] 0
+# 644| Type = [IntType] int
+# 644| Value = [Literal] 0
+# 644| ValueCategory = prvalue
+# 642| getStmt(): [BlockStmt] { ... }
+# 643| getStmt(0): [DeclStmt] declaration
+# 643| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x208
+# 643| Type = [Struct] String
+# 643| getVariable().getInitializer(): [Initializer] initializer for x208
+# 643| getExpr(): [ConstructorCall] call to String
+# 643| Type = [VoidType] void
+# 643| ValueCategory = prvalue
+# 644| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 644| Type = [VoidType] void
+# 644| ValueCategory = prvalue
+# 644| getQualifier(): [VariableAccess] x208
+# 644| Type = [Struct] String
+# 644| ValueCategory = lvalue
+# 644| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 644| Conversion = [BoolConversion] conversion to bool
+# 644| Type = [BoolType] bool
+# 644| Value = [CStyleCast] 0
+# 644| ValueCategory = prvalue
+# 645| getStmt(209): [DoStmt] do (...) ...
+# 647| getCondition(): [Literal] 0
+# 647| Type = [IntType] int
+# 647| Value = [Literal] 0
+# 647| ValueCategory = prvalue
+# 645| getStmt(): [BlockStmt] { ... }
+# 646| getStmt(0): [DeclStmt] declaration
+# 646| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x209
+# 646| Type = [Struct] String
+# 646| getVariable().getInitializer(): [Initializer] initializer for x209
+# 646| getExpr(): [ConstructorCall] call to String
+# 646| Type = [VoidType] void
+# 646| ValueCategory = prvalue
+# 647| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 647| Type = [VoidType] void
+# 647| ValueCategory = prvalue
+# 647| getQualifier(): [VariableAccess] x209
+# 647| Type = [Struct] String
+# 647| ValueCategory = lvalue
+# 647| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 647| Conversion = [BoolConversion] conversion to bool
+# 647| Type = [BoolType] bool
+# 647| Value = [CStyleCast] 0
+# 647| ValueCategory = prvalue
+# 648| getStmt(210): [DoStmt] do (...) ...
+# 650| getCondition(): [Literal] 0
+# 650| Type = [IntType] int
+# 650| Value = [Literal] 0
+# 650| ValueCategory = prvalue
+# 648| getStmt(): [BlockStmt] { ... }
+# 649| getStmt(0): [DeclStmt] declaration
+# 649| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x210
+# 649| Type = [Struct] String
+# 649| getVariable().getInitializer(): [Initializer] initializer for x210
+# 649| getExpr(): [ConstructorCall] call to String
+# 649| Type = [VoidType] void
+# 649| ValueCategory = prvalue
+# 650| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 650| Type = [VoidType] void
+# 650| ValueCategory = prvalue
+# 650| getQualifier(): [VariableAccess] x210
+# 650| Type = [Struct] String
+# 650| ValueCategory = lvalue
+# 650| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 650| Conversion = [BoolConversion] conversion to bool
+# 650| Type = [BoolType] bool
+# 650| Value = [CStyleCast] 0
+# 650| ValueCategory = prvalue
+# 651| getStmt(211): [DoStmt] do (...) ...
+# 653| getCondition(): [Literal] 0
+# 653| Type = [IntType] int
+# 653| Value = [Literal] 0
+# 653| ValueCategory = prvalue
+# 651| getStmt(): [BlockStmt] { ... }
+# 652| getStmt(0): [DeclStmt] declaration
+# 652| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x211
+# 652| Type = [Struct] String
+# 652| getVariable().getInitializer(): [Initializer] initializer for x211
+# 652| getExpr(): [ConstructorCall] call to String
+# 652| Type = [VoidType] void
+# 652| ValueCategory = prvalue
+# 653| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 653| Type = [VoidType] void
+# 653| ValueCategory = prvalue
+# 653| getQualifier(): [VariableAccess] x211
+# 653| Type = [Struct] String
+# 653| ValueCategory = lvalue
+# 653| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 653| Conversion = [BoolConversion] conversion to bool
+# 653| Type = [BoolType] bool
+# 653| Value = [CStyleCast] 0
+# 653| ValueCategory = prvalue
+# 654| getStmt(212): [DoStmt] do (...) ...
+# 656| getCondition(): [Literal] 0
+# 656| Type = [IntType] int
+# 656| Value = [Literal] 0
+# 656| ValueCategory = prvalue
+# 654| getStmt(): [BlockStmt] { ... }
+# 655| getStmt(0): [DeclStmt] declaration
+# 655| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x212
+# 655| Type = [Struct] String
+# 655| getVariable().getInitializer(): [Initializer] initializer for x212
+# 655| getExpr(): [ConstructorCall] call to String
+# 655| Type = [VoidType] void
+# 655| ValueCategory = prvalue
+# 656| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 656| Type = [VoidType] void
+# 656| ValueCategory = prvalue
+# 656| getQualifier(): [VariableAccess] x212
+# 656| Type = [Struct] String
+# 656| ValueCategory = lvalue
+# 656| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 656| Conversion = [BoolConversion] conversion to bool
+# 656| Type = [BoolType] bool
+# 656| Value = [CStyleCast] 0
+# 656| ValueCategory = prvalue
+# 657| getStmt(213): [DoStmt] do (...) ...
+# 659| getCondition(): [Literal] 0
+# 659| Type = [IntType] int
+# 659| Value = [Literal] 0
+# 659| ValueCategory = prvalue
+# 657| getStmt(): [BlockStmt] { ... }
+# 658| getStmt(0): [DeclStmt] declaration
+# 658| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x213
+# 658| Type = [Struct] String
+# 658| getVariable().getInitializer(): [Initializer] initializer for x213
+# 658| getExpr(): [ConstructorCall] call to String
+# 658| Type = [VoidType] void
+# 658| ValueCategory = prvalue
+# 659| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 659| Type = [VoidType] void
+# 659| ValueCategory = prvalue
+# 659| getQualifier(): [VariableAccess] x213
+# 659| Type = [Struct] String
+# 659| ValueCategory = lvalue
+# 659| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 659| Conversion = [BoolConversion] conversion to bool
+# 659| Type = [BoolType] bool
+# 659| Value = [CStyleCast] 0
+# 659| ValueCategory = prvalue
+# 660| getStmt(214): [DoStmt] do (...) ...
+# 662| getCondition(): [Literal] 0
+# 662| Type = [IntType] int
+# 662| Value = [Literal] 0
+# 662| ValueCategory = prvalue
+# 660| getStmt(): [BlockStmt] { ... }
+# 661| getStmt(0): [DeclStmt] declaration
+# 661| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x214
+# 661| Type = [Struct] String
+# 661| getVariable().getInitializer(): [Initializer] initializer for x214
+# 661| getExpr(): [ConstructorCall] call to String
+# 661| Type = [VoidType] void
+# 661| ValueCategory = prvalue
+# 662| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 662| Type = [VoidType] void
+# 662| ValueCategory = prvalue
+# 662| getQualifier(): [VariableAccess] x214
+# 662| Type = [Struct] String
+# 662| ValueCategory = lvalue
+# 662| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 662| Conversion = [BoolConversion] conversion to bool
+# 662| Type = [BoolType] bool
+# 662| Value = [CStyleCast] 0
+# 662| ValueCategory = prvalue
+# 663| getStmt(215): [DoStmt] do (...) ...
+# 665| getCondition(): [Literal] 0
+# 665| Type = [IntType] int
+# 665| Value = [Literal] 0
+# 665| ValueCategory = prvalue
+# 663| getStmt(): [BlockStmt] { ... }
+# 664| getStmt(0): [DeclStmt] declaration
+# 664| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x215
+# 664| Type = [Struct] String
+# 664| getVariable().getInitializer(): [Initializer] initializer for x215
+# 664| getExpr(): [ConstructorCall] call to String
+# 664| Type = [VoidType] void
+# 664| ValueCategory = prvalue
+# 665| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 665| Type = [VoidType] void
+# 665| ValueCategory = prvalue
+# 665| getQualifier(): [VariableAccess] x215
+# 665| Type = [Struct] String
+# 665| ValueCategory = lvalue
+# 665| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 665| Conversion = [BoolConversion] conversion to bool
+# 665| Type = [BoolType] bool
+# 665| Value = [CStyleCast] 0
+# 665| ValueCategory = prvalue
+# 666| getStmt(216): [DoStmt] do (...) ...
+# 668| getCondition(): [Literal] 0
+# 668| Type = [IntType] int
+# 668| Value = [Literal] 0
+# 668| ValueCategory = prvalue
+# 666| getStmt(): [BlockStmt] { ... }
+# 667| getStmt(0): [DeclStmt] declaration
+# 667| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x216
+# 667| Type = [Struct] String
+# 667| getVariable().getInitializer(): [Initializer] initializer for x216
+# 667| getExpr(): [ConstructorCall] call to String
+# 667| Type = [VoidType] void
+# 667| ValueCategory = prvalue
+# 668| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 668| Type = [VoidType] void
+# 668| ValueCategory = prvalue
+# 668| getQualifier(): [VariableAccess] x216
+# 668| Type = [Struct] String
+# 668| ValueCategory = lvalue
+# 668| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 668| Conversion = [BoolConversion] conversion to bool
+# 668| Type = [BoolType] bool
+# 668| Value = [CStyleCast] 0
+# 668| ValueCategory = prvalue
+# 669| getStmt(217): [DoStmt] do (...) ...
+# 671| getCondition(): [Literal] 0
+# 671| Type = [IntType] int
+# 671| Value = [Literal] 0
+# 671| ValueCategory = prvalue
+# 669| getStmt(): [BlockStmt] { ... }
+# 670| getStmt(0): [DeclStmt] declaration
+# 670| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x217
+# 670| Type = [Struct] String
+# 670| getVariable().getInitializer(): [Initializer] initializer for x217
+# 670| getExpr(): [ConstructorCall] call to String
+# 670| Type = [VoidType] void
+# 670| ValueCategory = prvalue
+# 671| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 671| Type = [VoidType] void
+# 671| ValueCategory = prvalue
+# 671| getQualifier(): [VariableAccess] x217
+# 671| Type = [Struct] String
+# 671| ValueCategory = lvalue
+# 671| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 671| Conversion = [BoolConversion] conversion to bool
+# 671| Type = [BoolType] bool
+# 671| Value = [CStyleCast] 0
+# 671| ValueCategory = prvalue
+# 672| getStmt(218): [DoStmt] do (...) ...
+# 674| getCondition(): [Literal] 0
+# 674| Type = [IntType] int
+# 674| Value = [Literal] 0
+# 674| ValueCategory = prvalue
+# 672| getStmt(): [BlockStmt] { ... }
+# 673| getStmt(0): [DeclStmt] declaration
+# 673| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x218
+# 673| Type = [Struct] String
+# 673| getVariable().getInitializer(): [Initializer] initializer for x218
+# 673| getExpr(): [ConstructorCall] call to String
+# 673| Type = [VoidType] void
+# 673| ValueCategory = prvalue
+# 674| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 674| Type = [VoidType] void
+# 674| ValueCategory = prvalue
+# 674| getQualifier(): [VariableAccess] x218
+# 674| Type = [Struct] String
+# 674| ValueCategory = lvalue
+# 674| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 674| Conversion = [BoolConversion] conversion to bool
+# 674| Type = [BoolType] bool
+# 674| Value = [CStyleCast] 0
+# 674| ValueCategory = prvalue
+# 675| getStmt(219): [DoStmt] do (...) ...
+# 677| getCondition(): [Literal] 0
+# 677| Type = [IntType] int
+# 677| Value = [Literal] 0
+# 677| ValueCategory = prvalue
+# 675| getStmt(): [BlockStmt] { ... }
+# 676| getStmt(0): [DeclStmt] declaration
+# 676| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x219
+# 676| Type = [Struct] String
+# 676| getVariable().getInitializer(): [Initializer] initializer for x219
+# 676| getExpr(): [ConstructorCall] call to String
+# 676| Type = [VoidType] void
+# 676| ValueCategory = prvalue
+# 677| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 677| Type = [VoidType] void
+# 677| ValueCategory = prvalue
+# 677| getQualifier(): [VariableAccess] x219
+# 677| Type = [Struct] String
+# 677| ValueCategory = lvalue
+# 677| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 677| Conversion = [BoolConversion] conversion to bool
+# 677| Type = [BoolType] bool
+# 677| Value = [CStyleCast] 0
+# 677| ValueCategory = prvalue
+# 678| getStmt(220): [DoStmt] do (...) ...
+# 680| getCondition(): [Literal] 0
+# 680| Type = [IntType] int
+# 680| Value = [Literal] 0
+# 680| ValueCategory = prvalue
+# 678| getStmt(): [BlockStmt] { ... }
+# 679| getStmt(0): [DeclStmt] declaration
+# 679| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x220
+# 679| Type = [Struct] String
+# 679| getVariable().getInitializer(): [Initializer] initializer for x220
+# 679| getExpr(): [ConstructorCall] call to String
+# 679| Type = [VoidType] void
+# 679| ValueCategory = prvalue
+# 680| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 680| Type = [VoidType] void
+# 680| ValueCategory = prvalue
+# 680| getQualifier(): [VariableAccess] x220
+# 680| Type = [Struct] String
+# 680| ValueCategory = lvalue
+# 680| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 680| Conversion = [BoolConversion] conversion to bool
+# 680| Type = [BoolType] bool
+# 680| Value = [CStyleCast] 0
+# 680| ValueCategory = prvalue
+# 681| getStmt(221): [DoStmt] do (...) ...
+# 683| getCondition(): [Literal] 0
+# 683| Type = [IntType] int
+# 683| Value = [Literal] 0
+# 683| ValueCategory = prvalue
+# 681| getStmt(): [BlockStmt] { ... }
+# 682| getStmt(0): [DeclStmt] declaration
+# 682| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x221
+# 682| Type = [Struct] String
+# 682| getVariable().getInitializer(): [Initializer] initializer for x221
+# 682| getExpr(): [ConstructorCall] call to String
+# 682| Type = [VoidType] void
+# 682| ValueCategory = prvalue
+# 683| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 683| Type = [VoidType] void
+# 683| ValueCategory = prvalue
+# 683| getQualifier(): [VariableAccess] x221
+# 683| Type = [Struct] String
+# 683| ValueCategory = lvalue
+# 683| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 683| Conversion = [BoolConversion] conversion to bool
+# 683| Type = [BoolType] bool
+# 683| Value = [CStyleCast] 0
+# 683| ValueCategory = prvalue
+# 684| getStmt(222): [DoStmt] do (...) ...
+# 686| getCondition(): [Literal] 0
+# 686| Type = [IntType] int
+# 686| Value = [Literal] 0
+# 686| ValueCategory = prvalue
+# 684| getStmt(): [BlockStmt] { ... }
+# 685| getStmt(0): [DeclStmt] declaration
+# 685| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x222
+# 685| Type = [Struct] String
+# 685| getVariable().getInitializer(): [Initializer] initializer for x222
+# 685| getExpr(): [ConstructorCall] call to String
+# 685| Type = [VoidType] void
+# 685| ValueCategory = prvalue
+# 686| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 686| Type = [VoidType] void
+# 686| ValueCategory = prvalue
+# 686| getQualifier(): [VariableAccess] x222
+# 686| Type = [Struct] String
+# 686| ValueCategory = lvalue
+# 686| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 686| Conversion = [BoolConversion] conversion to bool
+# 686| Type = [BoolType] bool
+# 686| Value = [CStyleCast] 0
+# 686| ValueCategory = prvalue
+# 687| getStmt(223): [DoStmt] do (...) ...
+# 689| getCondition(): [Literal] 0
+# 689| Type = [IntType] int
+# 689| Value = [Literal] 0
+# 689| ValueCategory = prvalue
+# 687| getStmt(): [BlockStmt] { ... }
+# 688| getStmt(0): [DeclStmt] declaration
+# 688| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x223
+# 688| Type = [Struct] String
+# 688| getVariable().getInitializer(): [Initializer] initializer for x223
+# 688| getExpr(): [ConstructorCall] call to String
+# 688| Type = [VoidType] void
+# 688| ValueCategory = prvalue
+# 689| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 689| Type = [VoidType] void
+# 689| ValueCategory = prvalue
+# 689| getQualifier(): [VariableAccess] x223
+# 689| Type = [Struct] String
+# 689| ValueCategory = lvalue
+# 689| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 689| Conversion = [BoolConversion] conversion to bool
+# 689| Type = [BoolType] bool
+# 689| Value = [CStyleCast] 0
+# 689| ValueCategory = prvalue
+# 690| getStmt(224): [DoStmt] do (...) ...
+# 692| getCondition(): [Literal] 0
+# 692| Type = [IntType] int
+# 692| Value = [Literal] 0
+# 692| ValueCategory = prvalue
+# 690| getStmt(): [BlockStmt] { ... }
+# 691| getStmt(0): [DeclStmt] declaration
+# 691| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x224
+# 691| Type = [Struct] String
+# 691| getVariable().getInitializer(): [Initializer] initializer for x224
+# 691| getExpr(): [ConstructorCall] call to String
+# 691| Type = [VoidType] void
+# 691| ValueCategory = prvalue
+# 692| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 692| Type = [VoidType] void
+# 692| ValueCategory = prvalue
+# 692| getQualifier(): [VariableAccess] x224
+# 692| Type = [Struct] String
+# 692| ValueCategory = lvalue
+# 692| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 692| Conversion = [BoolConversion] conversion to bool
+# 692| Type = [BoolType] bool
+# 692| Value = [CStyleCast] 0
+# 692| ValueCategory = prvalue
+# 693| getStmt(225): [DoStmt] do (...) ...
+# 695| getCondition(): [Literal] 0
+# 695| Type = [IntType] int
+# 695| Value = [Literal] 0
+# 695| ValueCategory = prvalue
+# 693| getStmt(): [BlockStmt] { ... }
+# 694| getStmt(0): [DeclStmt] declaration
+# 694| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x225
+# 694| Type = [Struct] String
+# 694| getVariable().getInitializer(): [Initializer] initializer for x225
+# 694| getExpr(): [ConstructorCall] call to String
+# 694| Type = [VoidType] void
+# 694| ValueCategory = prvalue
+# 695| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 695| Type = [VoidType] void
+# 695| ValueCategory = prvalue
+# 695| getQualifier(): [VariableAccess] x225
+# 695| Type = [Struct] String
+# 695| ValueCategory = lvalue
+# 695| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 695| Conversion = [BoolConversion] conversion to bool
+# 695| Type = [BoolType] bool
+# 695| Value = [CStyleCast] 0
+# 695| ValueCategory = prvalue
+# 696| getStmt(226): [DoStmt] do (...) ...
+# 698| getCondition(): [Literal] 0
+# 698| Type = [IntType] int
+# 698| Value = [Literal] 0
+# 698| ValueCategory = prvalue
+# 696| getStmt(): [BlockStmt] { ... }
+# 697| getStmt(0): [DeclStmt] declaration
+# 697| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x226
+# 697| Type = [Struct] String
+# 697| getVariable().getInitializer(): [Initializer] initializer for x226
+# 697| getExpr(): [ConstructorCall] call to String
+# 697| Type = [VoidType] void
+# 697| ValueCategory = prvalue
+# 698| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 698| Type = [VoidType] void
+# 698| ValueCategory = prvalue
+# 698| getQualifier(): [VariableAccess] x226
+# 698| Type = [Struct] String
+# 698| ValueCategory = lvalue
+# 698| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 698| Conversion = [BoolConversion] conversion to bool
+# 698| Type = [BoolType] bool
+# 698| Value = [CStyleCast] 0
+# 698| ValueCategory = prvalue
+# 699| getStmt(227): [DoStmt] do (...) ...
+# 701| getCondition(): [Literal] 0
+# 701| Type = [IntType] int
+# 701| Value = [Literal] 0
+# 701| ValueCategory = prvalue
+# 699| getStmt(): [BlockStmt] { ... }
+# 700| getStmt(0): [DeclStmt] declaration
+# 700| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x227
+# 700| Type = [Struct] String
+# 700| getVariable().getInitializer(): [Initializer] initializer for x227
+# 700| getExpr(): [ConstructorCall] call to String
+# 700| Type = [VoidType] void
+# 700| ValueCategory = prvalue
+# 701| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 701| Type = [VoidType] void
+# 701| ValueCategory = prvalue
+# 701| getQualifier(): [VariableAccess] x227
+# 701| Type = [Struct] String
+# 701| ValueCategory = lvalue
+# 701| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 701| Conversion = [BoolConversion] conversion to bool
+# 701| Type = [BoolType] bool
+# 701| Value = [CStyleCast] 0
+# 701| ValueCategory = prvalue
+# 702| getStmt(228): [DoStmt] do (...) ...
+# 704| getCondition(): [Literal] 0
+# 704| Type = [IntType] int
+# 704| Value = [Literal] 0
+# 704| ValueCategory = prvalue
+# 702| getStmt(): [BlockStmt] { ... }
+# 703| getStmt(0): [DeclStmt] declaration
+# 703| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x228
+# 703| Type = [Struct] String
+# 703| getVariable().getInitializer(): [Initializer] initializer for x228
+# 703| getExpr(): [ConstructorCall] call to String
+# 703| Type = [VoidType] void
+# 703| ValueCategory = prvalue
+# 704| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 704| Type = [VoidType] void
+# 704| ValueCategory = prvalue
+# 704| getQualifier(): [VariableAccess] x228
+# 704| Type = [Struct] String
+# 704| ValueCategory = lvalue
+# 704| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 704| Conversion = [BoolConversion] conversion to bool
+# 704| Type = [BoolType] bool
+# 704| Value = [CStyleCast] 0
+# 704| ValueCategory = prvalue
+# 705| getStmt(229): [DoStmt] do (...) ...
+# 707| getCondition(): [Literal] 0
+# 707| Type = [IntType] int
+# 707| Value = [Literal] 0
+# 707| ValueCategory = prvalue
+# 705| getStmt(): [BlockStmt] { ... }
+# 706| getStmt(0): [DeclStmt] declaration
+# 706| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x229
+# 706| Type = [Struct] String
+# 706| getVariable().getInitializer(): [Initializer] initializer for x229
+# 706| getExpr(): [ConstructorCall] call to String
+# 706| Type = [VoidType] void
+# 706| ValueCategory = prvalue
+# 707| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 707| Type = [VoidType] void
+# 707| ValueCategory = prvalue
+# 707| getQualifier(): [VariableAccess] x229
+# 707| Type = [Struct] String
+# 707| ValueCategory = lvalue
+# 707| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 707| Conversion = [BoolConversion] conversion to bool
+# 707| Type = [BoolType] bool
+# 707| Value = [CStyleCast] 0
+# 707| ValueCategory = prvalue
+# 708| getStmt(230): [DoStmt] do (...) ...
+# 710| getCondition(): [Literal] 0
+# 710| Type = [IntType] int
+# 710| Value = [Literal] 0
+# 710| ValueCategory = prvalue
+# 708| getStmt(): [BlockStmt] { ... }
+# 709| getStmt(0): [DeclStmt] declaration
+# 709| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x230
+# 709| Type = [Struct] String
+# 709| getVariable().getInitializer(): [Initializer] initializer for x230
+# 709| getExpr(): [ConstructorCall] call to String
+# 709| Type = [VoidType] void
+# 709| ValueCategory = prvalue
+# 710| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 710| Type = [VoidType] void
+# 710| ValueCategory = prvalue
+# 710| getQualifier(): [VariableAccess] x230
+# 710| Type = [Struct] String
+# 710| ValueCategory = lvalue
+# 710| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 710| Conversion = [BoolConversion] conversion to bool
+# 710| Type = [BoolType] bool
+# 710| Value = [CStyleCast] 0
+# 710| ValueCategory = prvalue
+# 711| getStmt(231): [DoStmt] do (...) ...
+# 713| getCondition(): [Literal] 0
+# 713| Type = [IntType] int
+# 713| Value = [Literal] 0
+# 713| ValueCategory = prvalue
+# 711| getStmt(): [BlockStmt] { ... }
+# 712| getStmt(0): [DeclStmt] declaration
+# 712| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x231
+# 712| Type = [Struct] String
+# 712| getVariable().getInitializer(): [Initializer] initializer for x231
+# 712| getExpr(): [ConstructorCall] call to String
+# 712| Type = [VoidType] void
+# 712| ValueCategory = prvalue
+# 713| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 713| Type = [VoidType] void
+# 713| ValueCategory = prvalue
+# 713| getQualifier(): [VariableAccess] x231
+# 713| Type = [Struct] String
+# 713| ValueCategory = lvalue
+# 713| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 713| Conversion = [BoolConversion] conversion to bool
+# 713| Type = [BoolType] bool
+# 713| Value = [CStyleCast] 0
+# 713| ValueCategory = prvalue
+# 714| getStmt(232): [DoStmt] do (...) ...
+# 716| getCondition(): [Literal] 0
+# 716| Type = [IntType] int
+# 716| Value = [Literal] 0
+# 716| ValueCategory = prvalue
+# 714| getStmt(): [BlockStmt] { ... }
+# 715| getStmt(0): [DeclStmt] declaration
+# 715| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x232
+# 715| Type = [Struct] String
+# 715| getVariable().getInitializer(): [Initializer] initializer for x232
+# 715| getExpr(): [ConstructorCall] call to String
+# 715| Type = [VoidType] void
+# 715| ValueCategory = prvalue
+# 716| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 716| Type = [VoidType] void
+# 716| ValueCategory = prvalue
+# 716| getQualifier(): [VariableAccess] x232
+# 716| Type = [Struct] String
+# 716| ValueCategory = lvalue
+# 716| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 716| Conversion = [BoolConversion] conversion to bool
+# 716| Type = [BoolType] bool
+# 716| Value = [CStyleCast] 0
+# 716| ValueCategory = prvalue
+# 717| getStmt(233): [DoStmt] do (...) ...
+# 719| getCondition(): [Literal] 0
+# 719| Type = [IntType] int
+# 719| Value = [Literal] 0
+# 719| ValueCategory = prvalue
+# 717| getStmt(): [BlockStmt] { ... }
+# 718| getStmt(0): [DeclStmt] declaration
+# 718| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x233
+# 718| Type = [Struct] String
+# 718| getVariable().getInitializer(): [Initializer] initializer for x233
+# 718| getExpr(): [ConstructorCall] call to String
+# 718| Type = [VoidType] void
+# 718| ValueCategory = prvalue
+# 719| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 719| Type = [VoidType] void
+# 719| ValueCategory = prvalue
+# 719| getQualifier(): [VariableAccess] x233
+# 719| Type = [Struct] String
+# 719| ValueCategory = lvalue
+# 719| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 719| Conversion = [BoolConversion] conversion to bool
+# 719| Type = [BoolType] bool
+# 719| Value = [CStyleCast] 0
+# 719| ValueCategory = prvalue
+# 720| getStmt(234): [DoStmt] do (...) ...
+# 722| getCondition(): [Literal] 0
+# 722| Type = [IntType] int
+# 722| Value = [Literal] 0
+# 722| ValueCategory = prvalue
+# 720| getStmt(): [BlockStmt] { ... }
+# 721| getStmt(0): [DeclStmt] declaration
+# 721| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x234
+# 721| Type = [Struct] String
+# 721| getVariable().getInitializer(): [Initializer] initializer for x234
+# 721| getExpr(): [ConstructorCall] call to String
+# 721| Type = [VoidType] void
+# 721| ValueCategory = prvalue
+# 722| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 722| Type = [VoidType] void
+# 722| ValueCategory = prvalue
+# 722| getQualifier(): [VariableAccess] x234
+# 722| Type = [Struct] String
+# 722| ValueCategory = lvalue
+# 722| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 722| Conversion = [BoolConversion] conversion to bool
+# 722| Type = [BoolType] bool
+# 722| Value = [CStyleCast] 0
+# 722| ValueCategory = prvalue
+# 723| getStmt(235): [DoStmt] do (...) ...
+# 725| getCondition(): [Literal] 0
+# 725| Type = [IntType] int
+# 725| Value = [Literal] 0
+# 725| ValueCategory = prvalue
+# 723| getStmt(): [BlockStmt] { ... }
+# 724| getStmt(0): [DeclStmt] declaration
+# 724| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x235
+# 724| Type = [Struct] String
+# 724| getVariable().getInitializer(): [Initializer] initializer for x235
+# 724| getExpr(): [ConstructorCall] call to String
+# 724| Type = [VoidType] void
+# 724| ValueCategory = prvalue
+# 725| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 725| Type = [VoidType] void
+# 725| ValueCategory = prvalue
+# 725| getQualifier(): [VariableAccess] x235
+# 725| Type = [Struct] String
+# 725| ValueCategory = lvalue
+# 725| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 725| Conversion = [BoolConversion] conversion to bool
+# 725| Type = [BoolType] bool
+# 725| Value = [CStyleCast] 0
+# 725| ValueCategory = prvalue
+# 726| getStmt(236): [DoStmt] do (...) ...
+# 728| getCondition(): [Literal] 0
+# 728| Type = [IntType] int
+# 728| Value = [Literal] 0
+# 728| ValueCategory = prvalue
+# 726| getStmt(): [BlockStmt] { ... }
+# 727| getStmt(0): [DeclStmt] declaration
+# 727| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x236
+# 727| Type = [Struct] String
+# 727| getVariable().getInitializer(): [Initializer] initializer for x236
+# 727| getExpr(): [ConstructorCall] call to String
+# 727| Type = [VoidType] void
+# 727| ValueCategory = prvalue
+# 728| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 728| Type = [VoidType] void
+# 728| ValueCategory = prvalue
+# 728| getQualifier(): [VariableAccess] x236
+# 728| Type = [Struct] String
+# 728| ValueCategory = lvalue
+# 728| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 728| Conversion = [BoolConversion] conversion to bool
+# 728| Type = [BoolType] bool
+# 728| Value = [CStyleCast] 0
+# 728| ValueCategory = prvalue
+# 729| getStmt(237): [DoStmt] do (...) ...
+# 731| getCondition(): [Literal] 0
+# 731| Type = [IntType] int
+# 731| Value = [Literal] 0
+# 731| ValueCategory = prvalue
+# 729| getStmt(): [BlockStmt] { ... }
+# 730| getStmt(0): [DeclStmt] declaration
+# 730| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x237
+# 730| Type = [Struct] String
+# 730| getVariable().getInitializer(): [Initializer] initializer for x237
+# 730| getExpr(): [ConstructorCall] call to String
+# 730| Type = [VoidType] void
+# 730| ValueCategory = prvalue
+# 731| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 731| Type = [VoidType] void
+# 731| ValueCategory = prvalue
+# 731| getQualifier(): [VariableAccess] x237
+# 731| Type = [Struct] String
+# 731| ValueCategory = lvalue
+# 731| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 731| Conversion = [BoolConversion] conversion to bool
+# 731| Type = [BoolType] bool
+# 731| Value = [CStyleCast] 0
+# 731| ValueCategory = prvalue
+# 732| getStmt(238): [DoStmt] do (...) ...
+# 734| getCondition(): [Literal] 0
+# 734| Type = [IntType] int
+# 734| Value = [Literal] 0
+# 734| ValueCategory = prvalue
+# 732| getStmt(): [BlockStmt] { ... }
+# 733| getStmt(0): [DeclStmt] declaration
+# 733| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x238
+# 733| Type = [Struct] String
+# 733| getVariable().getInitializer(): [Initializer] initializer for x238
+# 733| getExpr(): [ConstructorCall] call to String
+# 733| Type = [VoidType] void
+# 733| ValueCategory = prvalue
+# 734| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 734| Type = [VoidType] void
+# 734| ValueCategory = prvalue
+# 734| getQualifier(): [VariableAccess] x238
+# 734| Type = [Struct] String
+# 734| ValueCategory = lvalue
+# 734| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 734| Conversion = [BoolConversion] conversion to bool
+# 734| Type = [BoolType] bool
+# 734| Value = [CStyleCast] 0
+# 734| ValueCategory = prvalue
+# 735| getStmt(239): [DoStmt] do (...) ...
+# 737| getCondition(): [Literal] 0
+# 737| Type = [IntType] int
+# 737| Value = [Literal] 0
+# 737| ValueCategory = prvalue
+# 735| getStmt(): [BlockStmt] { ... }
+# 736| getStmt(0): [DeclStmt] declaration
+# 736| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x239
+# 736| Type = [Struct] String
+# 736| getVariable().getInitializer(): [Initializer] initializer for x239
+# 736| getExpr(): [ConstructorCall] call to String
+# 736| Type = [VoidType] void
+# 736| ValueCategory = prvalue
+# 737| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 737| Type = [VoidType] void
+# 737| ValueCategory = prvalue
+# 737| getQualifier(): [VariableAccess] x239
+# 737| Type = [Struct] String
+# 737| ValueCategory = lvalue
+# 737| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 737| Conversion = [BoolConversion] conversion to bool
+# 737| Type = [BoolType] bool
+# 737| Value = [CStyleCast] 0
+# 737| ValueCategory = prvalue
+# 738| getStmt(240): [DoStmt] do (...) ...
+# 740| getCondition(): [Literal] 0
+# 740| Type = [IntType] int
+# 740| Value = [Literal] 0
+# 740| ValueCategory = prvalue
+# 738| getStmt(): [BlockStmt] { ... }
+# 739| getStmt(0): [DeclStmt] declaration
+# 739| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x240
+# 739| Type = [Struct] String
+# 739| getVariable().getInitializer(): [Initializer] initializer for x240
+# 739| getExpr(): [ConstructorCall] call to String
+# 739| Type = [VoidType] void
+# 739| ValueCategory = prvalue
+# 740| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 740| Type = [VoidType] void
+# 740| ValueCategory = prvalue
+# 740| getQualifier(): [VariableAccess] x240
+# 740| Type = [Struct] String
+# 740| ValueCategory = lvalue
+# 740| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 740| Conversion = [BoolConversion] conversion to bool
+# 740| Type = [BoolType] bool
+# 740| Value = [CStyleCast] 0
+# 740| ValueCategory = prvalue
+# 741| getStmt(241): [DoStmt] do (...) ...
+# 743| getCondition(): [Literal] 0
+# 743| Type = [IntType] int
+# 743| Value = [Literal] 0
+# 743| ValueCategory = prvalue
+# 741| getStmt(): [BlockStmt] { ... }
+# 742| getStmt(0): [DeclStmt] declaration
+# 742| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x241
+# 742| Type = [Struct] String
+# 742| getVariable().getInitializer(): [Initializer] initializer for x241
+# 742| getExpr(): [ConstructorCall] call to String
+# 742| Type = [VoidType] void
+# 742| ValueCategory = prvalue
+# 743| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 743| Type = [VoidType] void
+# 743| ValueCategory = prvalue
+# 743| getQualifier(): [VariableAccess] x241
+# 743| Type = [Struct] String
+# 743| ValueCategory = lvalue
+# 743| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 743| Conversion = [BoolConversion] conversion to bool
+# 743| Type = [BoolType] bool
+# 743| Value = [CStyleCast] 0
+# 743| ValueCategory = prvalue
+# 744| getStmt(242): [DoStmt] do (...) ...
+# 746| getCondition(): [Literal] 0
+# 746| Type = [IntType] int
+# 746| Value = [Literal] 0
+# 746| ValueCategory = prvalue
+# 744| getStmt(): [BlockStmt] { ... }
+# 745| getStmt(0): [DeclStmt] declaration
+# 745| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x242
+# 745| Type = [Struct] String
+# 745| getVariable().getInitializer(): [Initializer] initializer for x242
+# 745| getExpr(): [ConstructorCall] call to String
+# 745| Type = [VoidType] void
+# 745| ValueCategory = prvalue
+# 746| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 746| Type = [VoidType] void
+# 746| ValueCategory = prvalue
+# 746| getQualifier(): [VariableAccess] x242
+# 746| Type = [Struct] String
+# 746| ValueCategory = lvalue
+# 746| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 746| Conversion = [BoolConversion] conversion to bool
+# 746| Type = [BoolType] bool
+# 746| Value = [CStyleCast] 0
+# 746| ValueCategory = prvalue
+# 747| getStmt(243): [DoStmt] do (...) ...
+# 749| getCondition(): [Literal] 0
+# 749| Type = [IntType] int
+# 749| Value = [Literal] 0
+# 749| ValueCategory = prvalue
+# 747| getStmt(): [BlockStmt] { ... }
+# 748| getStmt(0): [DeclStmt] declaration
+# 748| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x243
+# 748| Type = [Struct] String
+# 748| getVariable().getInitializer(): [Initializer] initializer for x243
+# 748| getExpr(): [ConstructorCall] call to String
+# 748| Type = [VoidType] void
+# 748| ValueCategory = prvalue
+# 749| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 749| Type = [VoidType] void
+# 749| ValueCategory = prvalue
+# 749| getQualifier(): [VariableAccess] x243
+# 749| Type = [Struct] String
+# 749| ValueCategory = lvalue
+# 749| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 749| Conversion = [BoolConversion] conversion to bool
+# 749| Type = [BoolType] bool
+# 749| Value = [CStyleCast] 0
+# 749| ValueCategory = prvalue
+# 750| getStmt(244): [DoStmt] do (...) ...
+# 752| getCondition(): [Literal] 0
+# 752| Type = [IntType] int
+# 752| Value = [Literal] 0
+# 752| ValueCategory = prvalue
+# 750| getStmt(): [BlockStmt] { ... }
+# 751| getStmt(0): [DeclStmt] declaration
+# 751| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x244
+# 751| Type = [Struct] String
+# 751| getVariable().getInitializer(): [Initializer] initializer for x244
+# 751| getExpr(): [ConstructorCall] call to String
+# 751| Type = [VoidType] void
+# 751| ValueCategory = prvalue
+# 752| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 752| Type = [VoidType] void
+# 752| ValueCategory = prvalue
+# 752| getQualifier(): [VariableAccess] x244
+# 752| Type = [Struct] String
+# 752| ValueCategory = lvalue
+# 752| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 752| Conversion = [BoolConversion] conversion to bool
+# 752| Type = [BoolType] bool
+# 752| Value = [CStyleCast] 0
+# 752| ValueCategory = prvalue
+# 753| getStmt(245): [DoStmt] do (...) ...
+# 755| getCondition(): [Literal] 0
+# 755| Type = [IntType] int
+# 755| Value = [Literal] 0
+# 755| ValueCategory = prvalue
+# 753| getStmt(): [BlockStmt] { ... }
+# 754| getStmt(0): [DeclStmt] declaration
+# 754| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x245
+# 754| Type = [Struct] String
+# 754| getVariable().getInitializer(): [Initializer] initializer for x245
+# 754| getExpr(): [ConstructorCall] call to String
+# 754| Type = [VoidType] void
+# 754| ValueCategory = prvalue
+# 755| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 755| Type = [VoidType] void
+# 755| ValueCategory = prvalue
+# 755| getQualifier(): [VariableAccess] x245
+# 755| Type = [Struct] String
+# 755| ValueCategory = lvalue
+# 755| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 755| Conversion = [BoolConversion] conversion to bool
+# 755| Type = [BoolType] bool
+# 755| Value = [CStyleCast] 0
+# 755| ValueCategory = prvalue
+# 756| getStmt(246): [DoStmt] do (...) ...
+# 758| getCondition(): [Literal] 0
+# 758| Type = [IntType] int
+# 758| Value = [Literal] 0
+# 758| ValueCategory = prvalue
+# 756| getStmt(): [BlockStmt] { ... }
+# 757| getStmt(0): [DeclStmt] declaration
+# 757| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x246
+# 757| Type = [Struct] String
+# 757| getVariable().getInitializer(): [Initializer] initializer for x246
+# 757| getExpr(): [ConstructorCall] call to String
+# 757| Type = [VoidType] void
+# 757| ValueCategory = prvalue
+# 758| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 758| Type = [VoidType] void
+# 758| ValueCategory = prvalue
+# 758| getQualifier(): [VariableAccess] x246
+# 758| Type = [Struct] String
+# 758| ValueCategory = lvalue
+# 758| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 758| Conversion = [BoolConversion] conversion to bool
+# 758| Type = [BoolType] bool
+# 758| Value = [CStyleCast] 0
+# 758| ValueCategory = prvalue
+# 759| getStmt(247): [DoStmt] do (...) ...
+# 761| getCondition(): [Literal] 0
+# 761| Type = [IntType] int
+# 761| Value = [Literal] 0
+# 761| ValueCategory = prvalue
+# 759| getStmt(): [BlockStmt] { ... }
+# 760| getStmt(0): [DeclStmt] declaration
+# 760| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x247
+# 760| Type = [Struct] String
+# 760| getVariable().getInitializer(): [Initializer] initializer for x247
+# 760| getExpr(): [ConstructorCall] call to String
+# 760| Type = [VoidType] void
+# 760| ValueCategory = prvalue
+# 761| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 761| Type = [VoidType] void
+# 761| ValueCategory = prvalue
+# 761| getQualifier(): [VariableAccess] x247
+# 761| Type = [Struct] String
+# 761| ValueCategory = lvalue
+# 761| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 761| Conversion = [BoolConversion] conversion to bool
+# 761| Type = [BoolType] bool
+# 761| Value = [CStyleCast] 0
+# 761| ValueCategory = prvalue
+# 762| getStmt(248): [DoStmt] do (...) ...
+# 764| getCondition(): [Literal] 0
+# 764| Type = [IntType] int
+# 764| Value = [Literal] 0
+# 764| ValueCategory = prvalue
+# 762| getStmt(): [BlockStmt] { ... }
+# 763| getStmt(0): [DeclStmt] declaration
+# 763| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x248
+# 763| Type = [Struct] String
+# 763| getVariable().getInitializer(): [Initializer] initializer for x248
+# 763| getExpr(): [ConstructorCall] call to String
+# 763| Type = [VoidType] void
+# 763| ValueCategory = prvalue
+# 764| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 764| Type = [VoidType] void
+# 764| ValueCategory = prvalue
+# 764| getQualifier(): [VariableAccess] x248
+# 764| Type = [Struct] String
+# 764| ValueCategory = lvalue
+# 764| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 764| Conversion = [BoolConversion] conversion to bool
+# 764| Type = [BoolType] bool
+# 764| Value = [CStyleCast] 0
+# 764| ValueCategory = prvalue
+# 765| getStmt(249): [DoStmt] do (...) ...
+# 767| getCondition(): [Literal] 0
+# 767| Type = [IntType] int
+# 767| Value = [Literal] 0
+# 767| ValueCategory = prvalue
+# 765| getStmt(): [BlockStmt] { ... }
+# 766| getStmt(0): [DeclStmt] declaration
+# 766| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x249
+# 766| Type = [Struct] String
+# 766| getVariable().getInitializer(): [Initializer] initializer for x249
+# 766| getExpr(): [ConstructorCall] call to String
+# 766| Type = [VoidType] void
+# 766| ValueCategory = prvalue
+# 767| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 767| Type = [VoidType] void
+# 767| ValueCategory = prvalue
+# 767| getQualifier(): [VariableAccess] x249
+# 767| Type = [Struct] String
+# 767| ValueCategory = lvalue
+# 767| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 767| Conversion = [BoolConversion] conversion to bool
+# 767| Type = [BoolType] bool
+# 767| Value = [CStyleCast] 0
+# 767| ValueCategory = prvalue
+# 768| getStmt(250): [DoStmt] do (...) ...
+# 770| getCondition(): [Literal] 0
+# 770| Type = [IntType] int
+# 770| Value = [Literal] 0
+# 770| ValueCategory = prvalue
+# 768| getStmt(): [BlockStmt] { ... }
+# 769| getStmt(0): [DeclStmt] declaration
+# 769| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x250
+# 769| Type = [Struct] String
+# 769| getVariable().getInitializer(): [Initializer] initializer for x250
+# 769| getExpr(): [ConstructorCall] call to String
+# 769| Type = [VoidType] void
+# 769| ValueCategory = prvalue
+# 770| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 770| Type = [VoidType] void
+# 770| ValueCategory = prvalue
+# 770| getQualifier(): [VariableAccess] x250
+# 770| Type = [Struct] String
+# 770| ValueCategory = lvalue
+# 770| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 770| Conversion = [BoolConversion] conversion to bool
+# 770| Type = [BoolType] bool
+# 770| Value = [CStyleCast] 0
+# 770| ValueCategory = prvalue
+# 771| getStmt(251): [DoStmt] do (...) ...
+# 773| getCondition(): [Literal] 0
+# 773| Type = [IntType] int
+# 773| Value = [Literal] 0
+# 773| ValueCategory = prvalue
+# 771| getStmt(): [BlockStmt] { ... }
+# 772| getStmt(0): [DeclStmt] declaration
+# 772| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x251
+# 772| Type = [Struct] String
+# 772| getVariable().getInitializer(): [Initializer] initializer for x251
+# 772| getExpr(): [ConstructorCall] call to String
+# 772| Type = [VoidType] void
+# 772| ValueCategory = prvalue
+# 773| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 773| Type = [VoidType] void
+# 773| ValueCategory = prvalue
+# 773| getQualifier(): [VariableAccess] x251
+# 773| Type = [Struct] String
+# 773| ValueCategory = lvalue
+# 773| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 773| Conversion = [BoolConversion] conversion to bool
+# 773| Type = [BoolType] bool
+# 773| Value = [CStyleCast] 0
+# 773| ValueCategory = prvalue
+# 774| getStmt(252): [DoStmt] do (...) ...
+# 776| getCondition(): [Literal] 0
+# 776| Type = [IntType] int
+# 776| Value = [Literal] 0
+# 776| ValueCategory = prvalue
+# 774| getStmt(): [BlockStmt] { ... }
+# 775| getStmt(0): [DeclStmt] declaration
+# 775| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x252
+# 775| Type = [Struct] String
+# 775| getVariable().getInitializer(): [Initializer] initializer for x252
+# 775| getExpr(): [ConstructorCall] call to String
+# 775| Type = [VoidType] void
+# 775| ValueCategory = prvalue
+# 776| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 776| Type = [VoidType] void
+# 776| ValueCategory = prvalue
+# 776| getQualifier(): [VariableAccess] x252
+# 776| Type = [Struct] String
+# 776| ValueCategory = lvalue
+# 776| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 776| Conversion = [BoolConversion] conversion to bool
+# 776| Type = [BoolType] bool
+# 776| Value = [CStyleCast] 0
+# 776| ValueCategory = prvalue
+# 777| getStmt(253): [DoStmt] do (...) ...
+# 779| getCondition(): [Literal] 0
+# 779| Type = [IntType] int
+# 779| Value = [Literal] 0
+# 779| ValueCategory = prvalue
+# 777| getStmt(): [BlockStmt] { ... }
+# 778| getStmt(0): [DeclStmt] declaration
+# 778| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x253
+# 778| Type = [Struct] String
+# 778| getVariable().getInitializer(): [Initializer] initializer for x253
+# 778| getExpr(): [ConstructorCall] call to String
+# 778| Type = [VoidType] void
+# 778| ValueCategory = prvalue
+# 779| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 779| Type = [VoidType] void
+# 779| ValueCategory = prvalue
+# 779| getQualifier(): [VariableAccess] x253
+# 779| Type = [Struct] String
+# 779| ValueCategory = lvalue
+# 779| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 779| Conversion = [BoolConversion] conversion to bool
+# 779| Type = [BoolType] bool
+# 779| Value = [CStyleCast] 0
+# 779| ValueCategory = prvalue
+# 780| getStmt(254): [DoStmt] do (...) ...
+# 782| getCondition(): [Literal] 0
+# 782| Type = [IntType] int
+# 782| Value = [Literal] 0
+# 782| ValueCategory = prvalue
+# 780| getStmt(): [BlockStmt] { ... }
+# 781| getStmt(0): [DeclStmt] declaration
+# 781| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x254
+# 781| Type = [Struct] String
+# 781| getVariable().getInitializer(): [Initializer] initializer for x254
+# 781| getExpr(): [ConstructorCall] call to String
+# 781| Type = [VoidType] void
+# 781| ValueCategory = prvalue
+# 782| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 782| Type = [VoidType] void
+# 782| ValueCategory = prvalue
+# 782| getQualifier(): [VariableAccess] x254
+# 782| Type = [Struct] String
+# 782| ValueCategory = lvalue
+# 782| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 782| Conversion = [BoolConversion] conversion to bool
+# 782| Type = [BoolType] bool
+# 782| Value = [CStyleCast] 0
+# 782| ValueCategory = prvalue
+# 783| getStmt(255): [DoStmt] do (...) ...
+# 785| getCondition(): [Literal] 0
+# 785| Type = [IntType] int
+# 785| Value = [Literal] 0
+# 785| ValueCategory = prvalue
+# 783| getStmt(): [BlockStmt] { ... }
+# 784| getStmt(0): [DeclStmt] declaration
+# 784| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x255
+# 784| Type = [Struct] String
+# 784| getVariable().getInitializer(): [Initializer] initializer for x255
+# 784| getExpr(): [ConstructorCall] call to String
+# 784| Type = [VoidType] void
+# 784| ValueCategory = prvalue
+# 785| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 785| Type = [VoidType] void
+# 785| ValueCategory = prvalue
+# 785| getQualifier(): [VariableAccess] x255
+# 785| Type = [Struct] String
+# 785| ValueCategory = lvalue
+# 785| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 785| Conversion = [BoolConversion] conversion to bool
+# 785| Type = [BoolType] bool
+# 785| Value = [CStyleCast] 0
+# 785| ValueCategory = prvalue
+# 786| getStmt(256): [DoStmt] do (...) ...
+# 788| getCondition(): [Literal] 0
+# 788| Type = [IntType] int
+# 788| Value = [Literal] 0
+# 788| ValueCategory = prvalue
+# 786| getStmt(): [BlockStmt] { ... }
+# 787| getStmt(0): [DeclStmt] declaration
+# 787| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x256
+# 787| Type = [Struct] String
+# 787| getVariable().getInitializer(): [Initializer] initializer for x256
+# 787| getExpr(): [ConstructorCall] call to String
+# 787| Type = [VoidType] void
+# 787| ValueCategory = prvalue
+# 788| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 788| Type = [VoidType] void
+# 788| ValueCategory = prvalue
+# 788| getQualifier(): [VariableAccess] x256
+# 788| Type = [Struct] String
+# 788| ValueCategory = lvalue
+# 788| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 788| Conversion = [BoolConversion] conversion to bool
+# 788| Type = [BoolType] bool
+# 788| Value = [CStyleCast] 0
+# 788| ValueCategory = prvalue
+# 789| getStmt(257): [DoStmt] do (...) ...
+# 791| getCondition(): [Literal] 0
+# 791| Type = [IntType] int
+# 791| Value = [Literal] 0
+# 791| ValueCategory = prvalue
+# 789| getStmt(): [BlockStmt] { ... }
+# 790| getStmt(0): [DeclStmt] declaration
+# 790| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x257
+# 790| Type = [Struct] String
+# 790| getVariable().getInitializer(): [Initializer] initializer for x257
+# 790| getExpr(): [ConstructorCall] call to String
+# 790| Type = [VoidType] void
+# 790| ValueCategory = prvalue
+# 791| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 791| Type = [VoidType] void
+# 791| ValueCategory = prvalue
+# 791| getQualifier(): [VariableAccess] x257
+# 791| Type = [Struct] String
+# 791| ValueCategory = lvalue
+# 791| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 791| Conversion = [BoolConversion] conversion to bool
+# 791| Type = [BoolType] bool
+# 791| Value = [CStyleCast] 0
+# 791| ValueCategory = prvalue
+# 792| getStmt(258): [DoStmt] do (...) ...
+# 794| getCondition(): [Literal] 0
+# 794| Type = [IntType] int
+# 794| Value = [Literal] 0
+# 794| ValueCategory = prvalue
+# 792| getStmt(): [BlockStmt] { ... }
+# 793| getStmt(0): [DeclStmt] declaration
+# 793| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x258
+# 793| Type = [Struct] String
+# 793| getVariable().getInitializer(): [Initializer] initializer for x258
+# 793| getExpr(): [ConstructorCall] call to String
+# 793| Type = [VoidType] void
+# 793| ValueCategory = prvalue
+# 794| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 794| Type = [VoidType] void
+# 794| ValueCategory = prvalue
+# 794| getQualifier(): [VariableAccess] x258
+# 794| Type = [Struct] String
+# 794| ValueCategory = lvalue
+# 794| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 794| Conversion = [BoolConversion] conversion to bool
+# 794| Type = [BoolType] bool
+# 794| Value = [CStyleCast] 0
+# 794| ValueCategory = prvalue
+# 795| getStmt(259): [DoStmt] do (...) ...
+# 797| getCondition(): [Literal] 0
+# 797| Type = [IntType] int
+# 797| Value = [Literal] 0
+# 797| ValueCategory = prvalue
+# 795| getStmt(): [BlockStmt] { ... }
+# 796| getStmt(0): [DeclStmt] declaration
+# 796| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x259
+# 796| Type = [Struct] String
+# 796| getVariable().getInitializer(): [Initializer] initializer for x259
+# 796| getExpr(): [ConstructorCall] call to String
+# 796| Type = [VoidType] void
+# 796| ValueCategory = prvalue
+# 797| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 797| Type = [VoidType] void
+# 797| ValueCategory = prvalue
+# 797| getQualifier(): [VariableAccess] x259
+# 797| Type = [Struct] String
+# 797| ValueCategory = lvalue
+# 797| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 797| Conversion = [BoolConversion] conversion to bool
+# 797| Type = [BoolType] bool
+# 797| Value = [CStyleCast] 0
+# 797| ValueCategory = prvalue
+# 798| getStmt(260): [DoStmt] do (...) ...
+# 800| getCondition(): [Literal] 0
+# 800| Type = [IntType] int
+# 800| Value = [Literal] 0
+# 800| ValueCategory = prvalue
+# 798| getStmt(): [BlockStmt] { ... }
+# 799| getStmt(0): [DeclStmt] declaration
+# 799| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x260
+# 799| Type = [Struct] String
+# 799| getVariable().getInitializer(): [Initializer] initializer for x260
+# 799| getExpr(): [ConstructorCall] call to String
+# 799| Type = [VoidType] void
+# 799| ValueCategory = prvalue
+# 800| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 800| Type = [VoidType] void
+# 800| ValueCategory = prvalue
+# 800| getQualifier(): [VariableAccess] x260
+# 800| Type = [Struct] String
+# 800| ValueCategory = lvalue
+# 800| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 800| Conversion = [BoolConversion] conversion to bool
+# 800| Type = [BoolType] bool
+# 800| Value = [CStyleCast] 0
+# 800| ValueCategory = prvalue
+# 801| getStmt(261): [DoStmt] do (...) ...
+# 803| getCondition(): [Literal] 0
+# 803| Type = [IntType] int
+# 803| Value = [Literal] 0
+# 803| ValueCategory = prvalue
+# 801| getStmt(): [BlockStmt] { ... }
+# 802| getStmt(0): [DeclStmt] declaration
+# 802| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x261
+# 802| Type = [Struct] String
+# 802| getVariable().getInitializer(): [Initializer] initializer for x261
+# 802| getExpr(): [ConstructorCall] call to String
+# 802| Type = [VoidType] void
+# 802| ValueCategory = prvalue
+# 803| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 803| Type = [VoidType] void
+# 803| ValueCategory = prvalue
+# 803| getQualifier(): [VariableAccess] x261
+# 803| Type = [Struct] String
+# 803| ValueCategory = lvalue
+# 803| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 803| Conversion = [BoolConversion] conversion to bool
+# 803| Type = [BoolType] bool
+# 803| Value = [CStyleCast] 0
+# 803| ValueCategory = prvalue
+# 804| getStmt(262): [DoStmt] do (...) ...
+# 806| getCondition(): [Literal] 0
+# 806| Type = [IntType] int
+# 806| Value = [Literal] 0
+# 806| ValueCategory = prvalue
+# 804| getStmt(): [BlockStmt] { ... }
+# 805| getStmt(0): [DeclStmt] declaration
+# 805| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x262
+# 805| Type = [Struct] String
+# 805| getVariable().getInitializer(): [Initializer] initializer for x262
+# 805| getExpr(): [ConstructorCall] call to String
+# 805| Type = [VoidType] void
+# 805| ValueCategory = prvalue
+# 806| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 806| Type = [VoidType] void
+# 806| ValueCategory = prvalue
+# 806| getQualifier(): [VariableAccess] x262
+# 806| Type = [Struct] String
+# 806| ValueCategory = lvalue
+# 806| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 806| Conversion = [BoolConversion] conversion to bool
+# 806| Type = [BoolType] bool
+# 806| Value = [CStyleCast] 0
+# 806| ValueCategory = prvalue
+# 807| getStmt(263): [DoStmt] do (...) ...
+# 809| getCondition(): [Literal] 0
+# 809| Type = [IntType] int
+# 809| Value = [Literal] 0
+# 809| ValueCategory = prvalue
+# 807| getStmt(): [BlockStmt] { ... }
+# 808| getStmt(0): [DeclStmt] declaration
+# 808| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x263
+# 808| Type = [Struct] String
+# 808| getVariable().getInitializer(): [Initializer] initializer for x263
+# 808| getExpr(): [ConstructorCall] call to String
+# 808| Type = [VoidType] void
+# 808| ValueCategory = prvalue
+# 809| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 809| Type = [VoidType] void
+# 809| ValueCategory = prvalue
+# 809| getQualifier(): [VariableAccess] x263
+# 809| Type = [Struct] String
+# 809| ValueCategory = lvalue
+# 809| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 809| Conversion = [BoolConversion] conversion to bool
+# 809| Type = [BoolType] bool
+# 809| Value = [CStyleCast] 0
+# 809| ValueCategory = prvalue
+# 810| getStmt(264): [DoStmt] do (...) ...
+# 812| getCondition(): [Literal] 0
+# 812| Type = [IntType] int
+# 812| Value = [Literal] 0
+# 812| ValueCategory = prvalue
+# 810| getStmt(): [BlockStmt] { ... }
+# 811| getStmt(0): [DeclStmt] declaration
+# 811| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x264
+# 811| Type = [Struct] String
+# 811| getVariable().getInitializer(): [Initializer] initializer for x264
+# 811| getExpr(): [ConstructorCall] call to String
+# 811| Type = [VoidType] void
+# 811| ValueCategory = prvalue
+# 812| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 812| Type = [VoidType] void
+# 812| ValueCategory = prvalue
+# 812| getQualifier(): [VariableAccess] x264
+# 812| Type = [Struct] String
+# 812| ValueCategory = lvalue
+# 812| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 812| Conversion = [BoolConversion] conversion to bool
+# 812| Type = [BoolType] bool
+# 812| Value = [CStyleCast] 0
+# 812| ValueCategory = prvalue
+# 813| getStmt(265): [DoStmt] do (...) ...
+# 815| getCondition(): [Literal] 0
+# 815| Type = [IntType] int
+# 815| Value = [Literal] 0
+# 815| ValueCategory = prvalue
+# 813| getStmt(): [BlockStmt] { ... }
+# 814| getStmt(0): [DeclStmt] declaration
+# 814| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x265
+# 814| Type = [Struct] String
+# 814| getVariable().getInitializer(): [Initializer] initializer for x265
+# 814| getExpr(): [ConstructorCall] call to String
+# 814| Type = [VoidType] void
+# 814| ValueCategory = prvalue
+# 815| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 815| Type = [VoidType] void
+# 815| ValueCategory = prvalue
+# 815| getQualifier(): [VariableAccess] x265
+# 815| Type = [Struct] String
+# 815| ValueCategory = lvalue
+# 815| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 815| Conversion = [BoolConversion] conversion to bool
+# 815| Type = [BoolType] bool
+# 815| Value = [CStyleCast] 0
+# 815| ValueCategory = prvalue
+# 816| getStmt(266): [DoStmt] do (...) ...
+# 818| getCondition(): [Literal] 0
+# 818| Type = [IntType] int
+# 818| Value = [Literal] 0
+# 818| ValueCategory = prvalue
+# 816| getStmt(): [BlockStmt] { ... }
+# 817| getStmt(0): [DeclStmt] declaration
+# 817| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x266
+# 817| Type = [Struct] String
+# 817| getVariable().getInitializer(): [Initializer] initializer for x266
+# 817| getExpr(): [ConstructorCall] call to String
+# 817| Type = [VoidType] void
+# 817| ValueCategory = prvalue
+# 818| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 818| Type = [VoidType] void
+# 818| ValueCategory = prvalue
+# 818| getQualifier(): [VariableAccess] x266
+# 818| Type = [Struct] String
+# 818| ValueCategory = lvalue
+# 818| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 818| Conversion = [BoolConversion] conversion to bool
+# 818| Type = [BoolType] bool
+# 818| Value = [CStyleCast] 0
+# 818| ValueCategory = prvalue
+# 819| getStmt(267): [DoStmt] do (...) ...
+# 821| getCondition(): [Literal] 0
+# 821| Type = [IntType] int
+# 821| Value = [Literal] 0
+# 821| ValueCategory = prvalue
+# 819| getStmt(): [BlockStmt] { ... }
+# 820| getStmt(0): [DeclStmt] declaration
+# 820| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x267
+# 820| Type = [Struct] String
+# 820| getVariable().getInitializer(): [Initializer] initializer for x267
+# 820| getExpr(): [ConstructorCall] call to String
+# 820| Type = [VoidType] void
+# 820| ValueCategory = prvalue
+# 821| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 821| Type = [VoidType] void
+# 821| ValueCategory = prvalue
+# 821| getQualifier(): [VariableAccess] x267
+# 821| Type = [Struct] String
+# 821| ValueCategory = lvalue
+# 821| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 821| Conversion = [BoolConversion] conversion to bool
+# 821| Type = [BoolType] bool
+# 821| Value = [CStyleCast] 0
+# 821| ValueCategory = prvalue
+# 822| getStmt(268): [DoStmt] do (...) ...
+# 824| getCondition(): [Literal] 0
+# 824| Type = [IntType] int
+# 824| Value = [Literal] 0
+# 824| ValueCategory = prvalue
+# 822| getStmt(): [BlockStmt] { ... }
+# 823| getStmt(0): [DeclStmt] declaration
+# 823| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x268
+# 823| Type = [Struct] String
+# 823| getVariable().getInitializer(): [Initializer] initializer for x268
+# 823| getExpr(): [ConstructorCall] call to String
+# 823| Type = [VoidType] void
+# 823| ValueCategory = prvalue
+# 824| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 824| Type = [VoidType] void
+# 824| ValueCategory = prvalue
+# 824| getQualifier(): [VariableAccess] x268
+# 824| Type = [Struct] String
+# 824| ValueCategory = lvalue
+# 824| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 824| Conversion = [BoolConversion] conversion to bool
+# 824| Type = [BoolType] bool
+# 824| Value = [CStyleCast] 0
+# 824| ValueCategory = prvalue
+# 825| getStmt(269): [DoStmt] do (...) ...
+# 827| getCondition(): [Literal] 0
+# 827| Type = [IntType] int
+# 827| Value = [Literal] 0
+# 827| ValueCategory = prvalue
+# 825| getStmt(): [BlockStmt] { ... }
+# 826| getStmt(0): [DeclStmt] declaration
+# 826| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x269
+# 826| Type = [Struct] String
+# 826| getVariable().getInitializer(): [Initializer] initializer for x269
+# 826| getExpr(): [ConstructorCall] call to String
+# 826| Type = [VoidType] void
+# 826| ValueCategory = prvalue
+# 827| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 827| Type = [VoidType] void
+# 827| ValueCategory = prvalue
+# 827| getQualifier(): [VariableAccess] x269
+# 827| Type = [Struct] String
+# 827| ValueCategory = lvalue
+# 827| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 827| Conversion = [BoolConversion] conversion to bool
+# 827| Type = [BoolType] bool
+# 827| Value = [CStyleCast] 0
+# 827| ValueCategory = prvalue
+# 828| getStmt(270): [DoStmt] do (...) ...
+# 830| getCondition(): [Literal] 0
+# 830| Type = [IntType] int
+# 830| Value = [Literal] 0
+# 830| ValueCategory = prvalue
+# 828| getStmt(): [BlockStmt] { ... }
+# 829| getStmt(0): [DeclStmt] declaration
+# 829| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x270
+# 829| Type = [Struct] String
+# 829| getVariable().getInitializer(): [Initializer] initializer for x270
+# 829| getExpr(): [ConstructorCall] call to String
+# 829| Type = [VoidType] void
+# 829| ValueCategory = prvalue
+# 830| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 830| Type = [VoidType] void
+# 830| ValueCategory = prvalue
+# 830| getQualifier(): [VariableAccess] x270
+# 830| Type = [Struct] String
+# 830| ValueCategory = lvalue
+# 830| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 830| Conversion = [BoolConversion] conversion to bool
+# 830| Type = [BoolType] bool
+# 830| Value = [CStyleCast] 0
+# 830| ValueCategory = prvalue
+# 831| getStmt(271): [DoStmt] do (...) ...
+# 833| getCondition(): [Literal] 0
+# 833| Type = [IntType] int
+# 833| Value = [Literal] 0
+# 833| ValueCategory = prvalue
+# 831| getStmt(): [BlockStmt] { ... }
+# 832| getStmt(0): [DeclStmt] declaration
+# 832| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x271
+# 832| Type = [Struct] String
+# 832| getVariable().getInitializer(): [Initializer] initializer for x271
+# 832| getExpr(): [ConstructorCall] call to String
+# 832| Type = [VoidType] void
+# 832| ValueCategory = prvalue
+# 833| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 833| Type = [VoidType] void
+# 833| ValueCategory = prvalue
+# 833| getQualifier(): [VariableAccess] x271
+# 833| Type = [Struct] String
+# 833| ValueCategory = lvalue
+# 833| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 833| Conversion = [BoolConversion] conversion to bool
+# 833| Type = [BoolType] bool
+# 833| Value = [CStyleCast] 0
+# 833| ValueCategory = prvalue
+# 834| getStmt(272): [DoStmt] do (...) ...
+# 836| getCondition(): [Literal] 0
+# 836| Type = [IntType] int
+# 836| Value = [Literal] 0
+# 836| ValueCategory = prvalue
+# 834| getStmt(): [BlockStmt] { ... }
+# 835| getStmt(0): [DeclStmt] declaration
+# 835| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x272
+# 835| Type = [Struct] String
+# 835| getVariable().getInitializer(): [Initializer] initializer for x272
+# 835| getExpr(): [ConstructorCall] call to String
+# 835| Type = [VoidType] void
+# 835| ValueCategory = prvalue
+# 836| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 836| Type = [VoidType] void
+# 836| ValueCategory = prvalue
+# 836| getQualifier(): [VariableAccess] x272
+# 836| Type = [Struct] String
+# 836| ValueCategory = lvalue
+# 836| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 836| Conversion = [BoolConversion] conversion to bool
+# 836| Type = [BoolType] bool
+# 836| Value = [CStyleCast] 0
+# 836| ValueCategory = prvalue
+# 837| getStmt(273): [DoStmt] do (...) ...
+# 839| getCondition(): [Literal] 0
+# 839| Type = [IntType] int
+# 839| Value = [Literal] 0
+# 839| ValueCategory = prvalue
+# 837| getStmt(): [BlockStmt] { ... }
+# 838| getStmt(0): [DeclStmt] declaration
+# 838| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x273
+# 838| Type = [Struct] String
+# 838| getVariable().getInitializer(): [Initializer] initializer for x273
+# 838| getExpr(): [ConstructorCall] call to String
+# 838| Type = [VoidType] void
+# 838| ValueCategory = prvalue
+# 839| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 839| Type = [VoidType] void
+# 839| ValueCategory = prvalue
+# 839| getQualifier(): [VariableAccess] x273
+# 839| Type = [Struct] String
+# 839| ValueCategory = lvalue
+# 839| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 839| Conversion = [BoolConversion] conversion to bool
+# 839| Type = [BoolType] bool
+# 839| Value = [CStyleCast] 0
+# 839| ValueCategory = prvalue
+# 840| getStmt(274): [DoStmt] do (...) ...
+# 842| getCondition(): [Literal] 0
+# 842| Type = [IntType] int
+# 842| Value = [Literal] 0
+# 842| ValueCategory = prvalue
+# 840| getStmt(): [BlockStmt] { ... }
+# 841| getStmt(0): [DeclStmt] declaration
+# 841| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x274
+# 841| Type = [Struct] String
+# 841| getVariable().getInitializer(): [Initializer] initializer for x274
+# 841| getExpr(): [ConstructorCall] call to String
+# 841| Type = [VoidType] void
+# 841| ValueCategory = prvalue
+# 842| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 842| Type = [VoidType] void
+# 842| ValueCategory = prvalue
+# 842| getQualifier(): [VariableAccess] x274
+# 842| Type = [Struct] String
+# 842| ValueCategory = lvalue
+# 842| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 842| Conversion = [BoolConversion] conversion to bool
+# 842| Type = [BoolType] bool
+# 842| Value = [CStyleCast] 0
+# 842| ValueCategory = prvalue
+# 843| getStmt(275): [DoStmt] do (...) ...
+# 845| getCondition(): [Literal] 0
+# 845| Type = [IntType] int
+# 845| Value = [Literal] 0
+# 845| ValueCategory = prvalue
+# 843| getStmt(): [BlockStmt] { ... }
+# 844| getStmt(0): [DeclStmt] declaration
+# 844| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x275
+# 844| Type = [Struct] String
+# 844| getVariable().getInitializer(): [Initializer] initializer for x275
+# 844| getExpr(): [ConstructorCall] call to String
+# 844| Type = [VoidType] void
+# 844| ValueCategory = prvalue
+# 845| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 845| Type = [VoidType] void
+# 845| ValueCategory = prvalue
+# 845| getQualifier(): [VariableAccess] x275
+# 845| Type = [Struct] String
+# 845| ValueCategory = lvalue
+# 845| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 845| Conversion = [BoolConversion] conversion to bool
+# 845| Type = [BoolType] bool
+# 845| Value = [CStyleCast] 0
+# 845| ValueCategory = prvalue
+# 846| getStmt(276): [DoStmt] do (...) ...
+# 848| getCondition(): [Literal] 0
+# 848| Type = [IntType] int
+# 848| Value = [Literal] 0
+# 848| ValueCategory = prvalue
+# 846| getStmt(): [BlockStmt] { ... }
+# 847| getStmt(0): [DeclStmt] declaration
+# 847| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x276
+# 847| Type = [Struct] String
+# 847| getVariable().getInitializer(): [Initializer] initializer for x276
+# 847| getExpr(): [ConstructorCall] call to String
+# 847| Type = [VoidType] void
+# 847| ValueCategory = prvalue
+# 848| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 848| Type = [VoidType] void
+# 848| ValueCategory = prvalue
+# 848| getQualifier(): [VariableAccess] x276
+# 848| Type = [Struct] String
+# 848| ValueCategory = lvalue
+# 848| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 848| Conversion = [BoolConversion] conversion to bool
+# 848| Type = [BoolType] bool
+# 848| Value = [CStyleCast] 0
+# 848| ValueCategory = prvalue
+# 849| getStmt(277): [DoStmt] do (...) ...
+# 851| getCondition(): [Literal] 0
+# 851| Type = [IntType] int
+# 851| Value = [Literal] 0
+# 851| ValueCategory = prvalue
+# 849| getStmt(): [BlockStmt] { ... }
+# 850| getStmt(0): [DeclStmt] declaration
+# 850| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x277
+# 850| Type = [Struct] String
+# 850| getVariable().getInitializer(): [Initializer] initializer for x277
+# 850| getExpr(): [ConstructorCall] call to String
+# 850| Type = [VoidType] void
+# 850| ValueCategory = prvalue
+# 851| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 851| Type = [VoidType] void
+# 851| ValueCategory = prvalue
+# 851| getQualifier(): [VariableAccess] x277
+# 851| Type = [Struct] String
+# 851| ValueCategory = lvalue
+# 851| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 851| Conversion = [BoolConversion] conversion to bool
+# 851| Type = [BoolType] bool
+# 851| Value = [CStyleCast] 0
+# 851| ValueCategory = prvalue
+# 852| getStmt(278): [DoStmt] do (...) ...
+# 854| getCondition(): [Literal] 0
+# 854| Type = [IntType] int
+# 854| Value = [Literal] 0
+# 854| ValueCategory = prvalue
+# 852| getStmt(): [BlockStmt] { ... }
+# 853| getStmt(0): [DeclStmt] declaration
+# 853| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x278
+# 853| Type = [Struct] String
+# 853| getVariable().getInitializer(): [Initializer] initializer for x278
+# 853| getExpr(): [ConstructorCall] call to String
+# 853| Type = [VoidType] void
+# 853| ValueCategory = prvalue
+# 854| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 854| Type = [VoidType] void
+# 854| ValueCategory = prvalue
+# 854| getQualifier(): [VariableAccess] x278
+# 854| Type = [Struct] String
+# 854| ValueCategory = lvalue
+# 854| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 854| Conversion = [BoolConversion] conversion to bool
+# 854| Type = [BoolType] bool
+# 854| Value = [CStyleCast] 0
+# 854| ValueCategory = prvalue
+# 855| getStmt(279): [DoStmt] do (...) ...
+# 857| getCondition(): [Literal] 0
+# 857| Type = [IntType] int
+# 857| Value = [Literal] 0
+# 857| ValueCategory = prvalue
+# 855| getStmt(): [BlockStmt] { ... }
+# 856| getStmt(0): [DeclStmt] declaration
+# 856| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x279
+# 856| Type = [Struct] String
+# 856| getVariable().getInitializer(): [Initializer] initializer for x279
+# 856| getExpr(): [ConstructorCall] call to String
+# 856| Type = [VoidType] void
+# 856| ValueCategory = prvalue
+# 857| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 857| Type = [VoidType] void
+# 857| ValueCategory = prvalue
+# 857| getQualifier(): [VariableAccess] x279
+# 857| Type = [Struct] String
+# 857| ValueCategory = lvalue
+# 857| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 857| Conversion = [BoolConversion] conversion to bool
+# 857| Type = [BoolType] bool
+# 857| Value = [CStyleCast] 0
+# 857| ValueCategory = prvalue
+# 858| getStmt(280): [DoStmt] do (...) ...
+# 860| getCondition(): [Literal] 0
+# 860| Type = [IntType] int
+# 860| Value = [Literal] 0
+# 860| ValueCategory = prvalue
+# 858| getStmt(): [BlockStmt] { ... }
+# 859| getStmt(0): [DeclStmt] declaration
+# 859| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x280
+# 859| Type = [Struct] String
+# 859| getVariable().getInitializer(): [Initializer] initializer for x280
+# 859| getExpr(): [ConstructorCall] call to String
+# 859| Type = [VoidType] void
+# 859| ValueCategory = prvalue
+# 860| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 860| Type = [VoidType] void
+# 860| ValueCategory = prvalue
+# 860| getQualifier(): [VariableAccess] x280
+# 860| Type = [Struct] String
+# 860| ValueCategory = lvalue
+# 860| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 860| Conversion = [BoolConversion] conversion to bool
+# 860| Type = [BoolType] bool
+# 860| Value = [CStyleCast] 0
+# 860| ValueCategory = prvalue
+# 861| getStmt(281): [DoStmt] do (...) ...
+# 863| getCondition(): [Literal] 0
+# 863| Type = [IntType] int
+# 863| Value = [Literal] 0
+# 863| ValueCategory = prvalue
+# 861| getStmt(): [BlockStmt] { ... }
+# 862| getStmt(0): [DeclStmt] declaration
+# 862| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x281
+# 862| Type = [Struct] String
+# 862| getVariable().getInitializer(): [Initializer] initializer for x281
+# 862| getExpr(): [ConstructorCall] call to String
+# 862| Type = [VoidType] void
+# 862| ValueCategory = prvalue
+# 863| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 863| Type = [VoidType] void
+# 863| ValueCategory = prvalue
+# 863| getQualifier(): [VariableAccess] x281
+# 863| Type = [Struct] String
+# 863| ValueCategory = lvalue
+# 863| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 863| Conversion = [BoolConversion] conversion to bool
+# 863| Type = [BoolType] bool
+# 863| Value = [CStyleCast] 0
+# 863| ValueCategory = prvalue
+# 864| getStmt(282): [DoStmt] do (...) ...
+# 866| getCondition(): [Literal] 0
+# 866| Type = [IntType] int
+# 866| Value = [Literal] 0
+# 866| ValueCategory = prvalue
+# 864| getStmt(): [BlockStmt] { ... }
+# 865| getStmt(0): [DeclStmt] declaration
+# 865| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x282
+# 865| Type = [Struct] String
+# 865| getVariable().getInitializer(): [Initializer] initializer for x282
+# 865| getExpr(): [ConstructorCall] call to String
+# 865| Type = [VoidType] void
+# 865| ValueCategory = prvalue
+# 866| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 866| Type = [VoidType] void
+# 866| ValueCategory = prvalue
+# 866| getQualifier(): [VariableAccess] x282
+# 866| Type = [Struct] String
+# 866| ValueCategory = lvalue
+# 866| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 866| Conversion = [BoolConversion] conversion to bool
+# 866| Type = [BoolType] bool
+# 866| Value = [CStyleCast] 0
+# 866| ValueCategory = prvalue
+# 867| getStmt(283): [DoStmt] do (...) ...
+# 869| getCondition(): [Literal] 0
+# 869| Type = [IntType] int
+# 869| Value = [Literal] 0
+# 869| ValueCategory = prvalue
+# 867| getStmt(): [BlockStmt] { ... }
+# 868| getStmt(0): [DeclStmt] declaration
+# 868| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x283
+# 868| Type = [Struct] String
+# 868| getVariable().getInitializer(): [Initializer] initializer for x283
+# 868| getExpr(): [ConstructorCall] call to String
+# 868| Type = [VoidType] void
+# 868| ValueCategory = prvalue
+# 869| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 869| Type = [VoidType] void
+# 869| ValueCategory = prvalue
+# 869| getQualifier(): [VariableAccess] x283
+# 869| Type = [Struct] String
+# 869| ValueCategory = lvalue
+# 869| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 869| Conversion = [BoolConversion] conversion to bool
+# 869| Type = [BoolType] bool
+# 869| Value = [CStyleCast] 0
+# 869| ValueCategory = prvalue
+# 870| getStmt(284): [DoStmt] do (...) ...
+# 872| getCondition(): [Literal] 0
+# 872| Type = [IntType] int
+# 872| Value = [Literal] 0
+# 872| ValueCategory = prvalue
+# 870| getStmt(): [BlockStmt] { ... }
+# 871| getStmt(0): [DeclStmt] declaration
+# 871| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x284
+# 871| Type = [Struct] String
+# 871| getVariable().getInitializer(): [Initializer] initializer for x284
+# 871| getExpr(): [ConstructorCall] call to String
+# 871| Type = [VoidType] void
+# 871| ValueCategory = prvalue
+# 872| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 872| Type = [VoidType] void
+# 872| ValueCategory = prvalue
+# 872| getQualifier(): [VariableAccess] x284
+# 872| Type = [Struct] String
+# 872| ValueCategory = lvalue
+# 872| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 872| Conversion = [BoolConversion] conversion to bool
+# 872| Type = [BoolType] bool
+# 872| Value = [CStyleCast] 0
+# 872| ValueCategory = prvalue
+# 873| getStmt(285): [DoStmt] do (...) ...
+# 875| getCondition(): [Literal] 0
+# 875| Type = [IntType] int
+# 875| Value = [Literal] 0
+# 875| ValueCategory = prvalue
+# 873| getStmt(): [BlockStmt] { ... }
+# 874| getStmt(0): [DeclStmt] declaration
+# 874| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x285
+# 874| Type = [Struct] String
+# 874| getVariable().getInitializer(): [Initializer] initializer for x285
+# 874| getExpr(): [ConstructorCall] call to String
+# 874| Type = [VoidType] void
+# 874| ValueCategory = prvalue
+# 875| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 875| Type = [VoidType] void
+# 875| ValueCategory = prvalue
+# 875| getQualifier(): [VariableAccess] x285
+# 875| Type = [Struct] String
+# 875| ValueCategory = lvalue
+# 875| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 875| Conversion = [BoolConversion] conversion to bool
+# 875| Type = [BoolType] bool
+# 875| Value = [CStyleCast] 0
+# 875| ValueCategory = prvalue
+# 876| getStmt(286): [DoStmt] do (...) ...
+# 878| getCondition(): [Literal] 0
+# 878| Type = [IntType] int
+# 878| Value = [Literal] 0
+# 878| ValueCategory = prvalue
+# 876| getStmt(): [BlockStmt] { ... }
+# 877| getStmt(0): [DeclStmt] declaration
+# 877| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x286
+# 877| Type = [Struct] String
+# 877| getVariable().getInitializer(): [Initializer] initializer for x286
+# 877| getExpr(): [ConstructorCall] call to String
+# 877| Type = [VoidType] void
+# 877| ValueCategory = prvalue
+# 878| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 878| Type = [VoidType] void
+# 878| ValueCategory = prvalue
+# 878| getQualifier(): [VariableAccess] x286
+# 878| Type = [Struct] String
+# 878| ValueCategory = lvalue
+# 878| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 878| Conversion = [BoolConversion] conversion to bool
+# 878| Type = [BoolType] bool
+# 878| Value = [CStyleCast] 0
+# 878| ValueCategory = prvalue
+# 879| getStmt(287): [DoStmt] do (...) ...
+# 881| getCondition(): [Literal] 0
+# 881| Type = [IntType] int
+# 881| Value = [Literal] 0
+# 881| ValueCategory = prvalue
+# 879| getStmt(): [BlockStmt] { ... }
+# 880| getStmt(0): [DeclStmt] declaration
+# 880| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x287
+# 880| Type = [Struct] String
+# 880| getVariable().getInitializer(): [Initializer] initializer for x287
+# 880| getExpr(): [ConstructorCall] call to String
+# 880| Type = [VoidType] void
+# 880| ValueCategory = prvalue
+# 881| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 881| Type = [VoidType] void
+# 881| ValueCategory = prvalue
+# 881| getQualifier(): [VariableAccess] x287
+# 881| Type = [Struct] String
+# 881| ValueCategory = lvalue
+# 881| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 881| Conversion = [BoolConversion] conversion to bool
+# 881| Type = [BoolType] bool
+# 881| Value = [CStyleCast] 0
+# 881| ValueCategory = prvalue
+# 882| getStmt(288): [DoStmt] do (...) ...
+# 884| getCondition(): [Literal] 0
+# 884| Type = [IntType] int
+# 884| Value = [Literal] 0
+# 884| ValueCategory = prvalue
+# 882| getStmt(): [BlockStmt] { ... }
+# 883| getStmt(0): [DeclStmt] declaration
+# 883| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x288
+# 883| Type = [Struct] String
+# 883| getVariable().getInitializer(): [Initializer] initializer for x288
+# 883| getExpr(): [ConstructorCall] call to String
+# 883| Type = [VoidType] void
+# 883| ValueCategory = prvalue
+# 884| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 884| Type = [VoidType] void
+# 884| ValueCategory = prvalue
+# 884| getQualifier(): [VariableAccess] x288
+# 884| Type = [Struct] String
+# 884| ValueCategory = lvalue
+# 884| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 884| Conversion = [BoolConversion] conversion to bool
+# 884| Type = [BoolType] bool
+# 884| Value = [CStyleCast] 0
+# 884| ValueCategory = prvalue
+# 885| getStmt(289): [DoStmt] do (...) ...
+# 887| getCondition(): [Literal] 0
+# 887| Type = [IntType] int
+# 887| Value = [Literal] 0
+# 887| ValueCategory = prvalue
+# 885| getStmt(): [BlockStmt] { ... }
+# 886| getStmt(0): [DeclStmt] declaration
+# 886| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x289
+# 886| Type = [Struct] String
+# 886| getVariable().getInitializer(): [Initializer] initializer for x289
+# 886| getExpr(): [ConstructorCall] call to String
+# 886| Type = [VoidType] void
+# 886| ValueCategory = prvalue
+# 887| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 887| Type = [VoidType] void
+# 887| ValueCategory = prvalue
+# 887| getQualifier(): [VariableAccess] x289
+# 887| Type = [Struct] String
+# 887| ValueCategory = lvalue
+# 887| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 887| Conversion = [BoolConversion] conversion to bool
+# 887| Type = [BoolType] bool
+# 887| Value = [CStyleCast] 0
+# 887| ValueCategory = prvalue
+# 888| getStmt(290): [DoStmt] do (...) ...
+# 890| getCondition(): [Literal] 0
+# 890| Type = [IntType] int
+# 890| Value = [Literal] 0
+# 890| ValueCategory = prvalue
+# 888| getStmt(): [BlockStmt] { ... }
+# 889| getStmt(0): [DeclStmt] declaration
+# 889| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x290
+# 889| Type = [Struct] String
+# 889| getVariable().getInitializer(): [Initializer] initializer for x290
+# 889| getExpr(): [ConstructorCall] call to String
+# 889| Type = [VoidType] void
+# 889| ValueCategory = prvalue
+# 890| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 890| Type = [VoidType] void
+# 890| ValueCategory = prvalue
+# 890| getQualifier(): [VariableAccess] x290
+# 890| Type = [Struct] String
+# 890| ValueCategory = lvalue
+# 890| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 890| Conversion = [BoolConversion] conversion to bool
+# 890| Type = [BoolType] bool
+# 890| Value = [CStyleCast] 0
+# 890| ValueCategory = prvalue
+# 891| getStmt(291): [DoStmt] do (...) ...
+# 893| getCondition(): [Literal] 0
+# 893| Type = [IntType] int
+# 893| Value = [Literal] 0
+# 893| ValueCategory = prvalue
+# 891| getStmt(): [BlockStmt] { ... }
+# 892| getStmt(0): [DeclStmt] declaration
+# 892| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x291
+# 892| Type = [Struct] String
+# 892| getVariable().getInitializer(): [Initializer] initializer for x291
+# 892| getExpr(): [ConstructorCall] call to String
+# 892| Type = [VoidType] void
+# 892| ValueCategory = prvalue
+# 893| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 893| Type = [VoidType] void
+# 893| ValueCategory = prvalue
+# 893| getQualifier(): [VariableAccess] x291
+# 893| Type = [Struct] String
+# 893| ValueCategory = lvalue
+# 893| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 893| Conversion = [BoolConversion] conversion to bool
+# 893| Type = [BoolType] bool
+# 893| Value = [CStyleCast] 0
+# 893| ValueCategory = prvalue
+# 894| getStmt(292): [DoStmt] do (...) ...
+# 896| getCondition(): [Literal] 0
+# 896| Type = [IntType] int
+# 896| Value = [Literal] 0
+# 896| ValueCategory = prvalue
+# 894| getStmt(): [BlockStmt] { ... }
+# 895| getStmt(0): [DeclStmt] declaration
+# 895| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x292
+# 895| Type = [Struct] String
+# 895| getVariable().getInitializer(): [Initializer] initializer for x292
+# 895| getExpr(): [ConstructorCall] call to String
+# 895| Type = [VoidType] void
+# 895| ValueCategory = prvalue
+# 896| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 896| Type = [VoidType] void
+# 896| ValueCategory = prvalue
+# 896| getQualifier(): [VariableAccess] x292
+# 896| Type = [Struct] String
+# 896| ValueCategory = lvalue
+# 896| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 896| Conversion = [BoolConversion] conversion to bool
+# 896| Type = [BoolType] bool
+# 896| Value = [CStyleCast] 0
+# 896| ValueCategory = prvalue
+# 897| getStmt(293): [DoStmt] do (...) ...
+# 899| getCondition(): [Literal] 0
+# 899| Type = [IntType] int
+# 899| Value = [Literal] 0
+# 899| ValueCategory = prvalue
+# 897| getStmt(): [BlockStmt] { ... }
+# 898| getStmt(0): [DeclStmt] declaration
+# 898| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x293
+# 898| Type = [Struct] String
+# 898| getVariable().getInitializer(): [Initializer] initializer for x293
+# 898| getExpr(): [ConstructorCall] call to String
+# 898| Type = [VoidType] void
+# 898| ValueCategory = prvalue
+# 899| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 899| Type = [VoidType] void
+# 899| ValueCategory = prvalue
+# 899| getQualifier(): [VariableAccess] x293
+# 899| Type = [Struct] String
+# 899| ValueCategory = lvalue
+# 899| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 899| Conversion = [BoolConversion] conversion to bool
+# 899| Type = [BoolType] bool
+# 899| Value = [CStyleCast] 0
+# 899| ValueCategory = prvalue
+# 900| getStmt(294): [DoStmt] do (...) ...
+# 902| getCondition(): [Literal] 0
+# 902| Type = [IntType] int
+# 902| Value = [Literal] 0
+# 902| ValueCategory = prvalue
+# 900| getStmt(): [BlockStmt] { ... }
+# 901| getStmt(0): [DeclStmt] declaration
+# 901| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x294
+# 901| Type = [Struct] String
+# 901| getVariable().getInitializer(): [Initializer] initializer for x294
+# 901| getExpr(): [ConstructorCall] call to String
+# 901| Type = [VoidType] void
+# 901| ValueCategory = prvalue
+# 902| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 902| Type = [VoidType] void
+# 902| ValueCategory = prvalue
+# 902| getQualifier(): [VariableAccess] x294
+# 902| Type = [Struct] String
+# 902| ValueCategory = lvalue
+# 902| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 902| Conversion = [BoolConversion] conversion to bool
+# 902| Type = [BoolType] bool
+# 902| Value = [CStyleCast] 0
+# 902| ValueCategory = prvalue
+# 903| getStmt(295): [DoStmt] do (...) ...
+# 905| getCondition(): [Literal] 0
+# 905| Type = [IntType] int
+# 905| Value = [Literal] 0
+# 905| ValueCategory = prvalue
+# 903| getStmt(): [BlockStmt] { ... }
+# 904| getStmt(0): [DeclStmt] declaration
+# 904| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x295
+# 904| Type = [Struct] String
+# 904| getVariable().getInitializer(): [Initializer] initializer for x295
+# 904| getExpr(): [ConstructorCall] call to String
+# 904| Type = [VoidType] void
+# 904| ValueCategory = prvalue
+# 905| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 905| Type = [VoidType] void
+# 905| ValueCategory = prvalue
+# 905| getQualifier(): [VariableAccess] x295
+# 905| Type = [Struct] String
+# 905| ValueCategory = lvalue
+# 905| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 905| Conversion = [BoolConversion] conversion to bool
+# 905| Type = [BoolType] bool
+# 905| Value = [CStyleCast] 0
+# 905| ValueCategory = prvalue
+# 906| getStmt(296): [DoStmt] do (...) ...
+# 908| getCondition(): [Literal] 0
+# 908| Type = [IntType] int
+# 908| Value = [Literal] 0
+# 908| ValueCategory = prvalue
+# 906| getStmt(): [BlockStmt] { ... }
+# 907| getStmt(0): [DeclStmt] declaration
+# 907| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x296
+# 907| Type = [Struct] String
+# 907| getVariable().getInitializer(): [Initializer] initializer for x296
+# 907| getExpr(): [ConstructorCall] call to String
+# 907| Type = [VoidType] void
+# 907| ValueCategory = prvalue
+# 908| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 908| Type = [VoidType] void
+# 908| ValueCategory = prvalue
+# 908| getQualifier(): [VariableAccess] x296
+# 908| Type = [Struct] String
+# 908| ValueCategory = lvalue
+# 908| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 908| Conversion = [BoolConversion] conversion to bool
+# 908| Type = [BoolType] bool
+# 908| Value = [CStyleCast] 0
+# 908| ValueCategory = prvalue
+# 909| getStmt(297): [DoStmt] do (...) ...
+# 911| getCondition(): [Literal] 0
+# 911| Type = [IntType] int
+# 911| Value = [Literal] 0
+# 911| ValueCategory = prvalue
+# 909| getStmt(): [BlockStmt] { ... }
+# 910| getStmt(0): [DeclStmt] declaration
+# 910| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x297
+# 910| Type = [Struct] String
+# 910| getVariable().getInitializer(): [Initializer] initializer for x297
+# 910| getExpr(): [ConstructorCall] call to String
+# 910| Type = [VoidType] void
+# 910| ValueCategory = prvalue
+# 911| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 911| Type = [VoidType] void
+# 911| ValueCategory = prvalue
+# 911| getQualifier(): [VariableAccess] x297
+# 911| Type = [Struct] String
+# 911| ValueCategory = lvalue
+# 911| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 911| Conversion = [BoolConversion] conversion to bool
+# 911| Type = [BoolType] bool
+# 911| Value = [CStyleCast] 0
+# 911| ValueCategory = prvalue
+# 912| getStmt(298): [DoStmt] do (...) ...
+# 914| getCondition(): [Literal] 0
+# 914| Type = [IntType] int
+# 914| Value = [Literal] 0
+# 914| ValueCategory = prvalue
+# 912| getStmt(): [BlockStmt] { ... }
+# 913| getStmt(0): [DeclStmt] declaration
+# 913| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x298
+# 913| Type = [Struct] String
+# 913| getVariable().getInitializer(): [Initializer] initializer for x298
+# 913| getExpr(): [ConstructorCall] call to String
+# 913| Type = [VoidType] void
+# 913| ValueCategory = prvalue
+# 914| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 914| Type = [VoidType] void
+# 914| ValueCategory = prvalue
+# 914| getQualifier(): [VariableAccess] x298
+# 914| Type = [Struct] String
+# 914| ValueCategory = lvalue
+# 914| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 914| Conversion = [BoolConversion] conversion to bool
+# 914| Type = [BoolType] bool
+# 914| Value = [CStyleCast] 0
+# 914| ValueCategory = prvalue
+# 915| getStmt(299): [DoStmt] do (...) ...
+# 917| getCondition(): [Literal] 0
+# 917| Type = [IntType] int
+# 917| Value = [Literal] 0
+# 917| ValueCategory = prvalue
+# 915| getStmt(): [BlockStmt] { ... }
+# 916| getStmt(0): [DeclStmt] declaration
+# 916| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x299
+# 916| Type = [Struct] String
+# 916| getVariable().getInitializer(): [Initializer] initializer for x299
+# 916| getExpr(): [ConstructorCall] call to String
+# 916| Type = [VoidType] void
+# 916| ValueCategory = prvalue
+# 917| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 917| Type = [VoidType] void
+# 917| ValueCategory = prvalue
+# 917| getQualifier(): [VariableAccess] x299
+# 917| Type = [Struct] String
+# 917| ValueCategory = lvalue
+# 917| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 917| Conversion = [BoolConversion] conversion to bool
+# 917| Type = [BoolType] bool
+# 917| Value = [CStyleCast] 0
+# 917| ValueCategory = prvalue
+# 918| getStmt(300): [DoStmt] do (...) ...
+# 920| getCondition(): [Literal] 0
+# 920| Type = [IntType] int
+# 920| Value = [Literal] 0
+# 920| ValueCategory = prvalue
+# 918| getStmt(): [BlockStmt] { ... }
+# 919| getStmt(0): [DeclStmt] declaration
+# 919| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x300
+# 919| Type = [Struct] String
+# 919| getVariable().getInitializer(): [Initializer] initializer for x300
+# 919| getExpr(): [ConstructorCall] call to String
+# 919| Type = [VoidType] void
+# 919| ValueCategory = prvalue
+# 920| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 920| Type = [VoidType] void
+# 920| ValueCategory = prvalue
+# 920| getQualifier(): [VariableAccess] x300
+# 920| Type = [Struct] String
+# 920| ValueCategory = lvalue
+# 920| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 920| Conversion = [BoolConversion] conversion to bool
+# 920| Type = [BoolType] bool
+# 920| Value = [CStyleCast] 0
+# 920| ValueCategory = prvalue
+# 921| getStmt(301): [DoStmt] do (...) ...
+# 923| getCondition(): [Literal] 0
+# 923| Type = [IntType] int
+# 923| Value = [Literal] 0
+# 923| ValueCategory = prvalue
+# 921| getStmt(): [BlockStmt] { ... }
+# 922| getStmt(0): [DeclStmt] declaration
+# 922| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x301
+# 922| Type = [Struct] String
+# 922| getVariable().getInitializer(): [Initializer] initializer for x301
+# 922| getExpr(): [ConstructorCall] call to String
+# 922| Type = [VoidType] void
+# 922| ValueCategory = prvalue
+# 923| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 923| Type = [VoidType] void
+# 923| ValueCategory = prvalue
+# 923| getQualifier(): [VariableAccess] x301
+# 923| Type = [Struct] String
+# 923| ValueCategory = lvalue
+# 923| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 923| Conversion = [BoolConversion] conversion to bool
+# 923| Type = [BoolType] bool
+# 923| Value = [CStyleCast] 0
+# 923| ValueCategory = prvalue
+# 924| getStmt(302): [DoStmt] do (...) ...
+# 926| getCondition(): [Literal] 0
+# 926| Type = [IntType] int
+# 926| Value = [Literal] 0
+# 926| ValueCategory = prvalue
+# 924| getStmt(): [BlockStmt] { ... }
+# 925| getStmt(0): [DeclStmt] declaration
+# 925| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x302
+# 925| Type = [Struct] String
+# 925| getVariable().getInitializer(): [Initializer] initializer for x302
+# 925| getExpr(): [ConstructorCall] call to String
+# 925| Type = [VoidType] void
+# 925| ValueCategory = prvalue
+# 926| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 926| Type = [VoidType] void
+# 926| ValueCategory = prvalue
+# 926| getQualifier(): [VariableAccess] x302
+# 926| Type = [Struct] String
+# 926| ValueCategory = lvalue
+# 926| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 926| Conversion = [BoolConversion] conversion to bool
+# 926| Type = [BoolType] bool
+# 926| Value = [CStyleCast] 0
+# 926| ValueCategory = prvalue
+# 927| getStmt(303): [DoStmt] do (...) ...
+# 929| getCondition(): [Literal] 0
+# 929| Type = [IntType] int
+# 929| Value = [Literal] 0
+# 929| ValueCategory = prvalue
+# 927| getStmt(): [BlockStmt] { ... }
+# 928| getStmt(0): [DeclStmt] declaration
+# 928| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x303
+# 928| Type = [Struct] String
+# 928| getVariable().getInitializer(): [Initializer] initializer for x303
+# 928| getExpr(): [ConstructorCall] call to String
+# 928| Type = [VoidType] void
+# 928| ValueCategory = prvalue
+# 929| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 929| Type = [VoidType] void
+# 929| ValueCategory = prvalue
+# 929| getQualifier(): [VariableAccess] x303
+# 929| Type = [Struct] String
+# 929| ValueCategory = lvalue
+# 929| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 929| Conversion = [BoolConversion] conversion to bool
+# 929| Type = [BoolType] bool
+# 929| Value = [CStyleCast] 0
+# 929| ValueCategory = prvalue
+# 930| getStmt(304): [DoStmt] do (...) ...
+# 932| getCondition(): [Literal] 0
+# 932| Type = [IntType] int
+# 932| Value = [Literal] 0
+# 932| ValueCategory = prvalue
+# 930| getStmt(): [BlockStmt] { ... }
+# 931| getStmt(0): [DeclStmt] declaration
+# 931| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x304
+# 931| Type = [Struct] String
+# 931| getVariable().getInitializer(): [Initializer] initializer for x304
+# 931| getExpr(): [ConstructorCall] call to String
+# 931| Type = [VoidType] void
+# 931| ValueCategory = prvalue
+# 932| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 932| Type = [VoidType] void
+# 932| ValueCategory = prvalue
+# 932| getQualifier(): [VariableAccess] x304
+# 932| Type = [Struct] String
+# 932| ValueCategory = lvalue
+# 932| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 932| Conversion = [BoolConversion] conversion to bool
+# 932| Type = [BoolType] bool
+# 932| Value = [CStyleCast] 0
+# 932| ValueCategory = prvalue
+# 933| getStmt(305): [DoStmt] do (...) ...
+# 935| getCondition(): [Literal] 0
+# 935| Type = [IntType] int
+# 935| Value = [Literal] 0
+# 935| ValueCategory = prvalue
+# 933| getStmt(): [BlockStmt] { ... }
+# 934| getStmt(0): [DeclStmt] declaration
+# 934| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x305
+# 934| Type = [Struct] String
+# 934| getVariable().getInitializer(): [Initializer] initializer for x305
+# 934| getExpr(): [ConstructorCall] call to String
+# 934| Type = [VoidType] void
+# 934| ValueCategory = prvalue
+# 935| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 935| Type = [VoidType] void
+# 935| ValueCategory = prvalue
+# 935| getQualifier(): [VariableAccess] x305
+# 935| Type = [Struct] String
+# 935| ValueCategory = lvalue
+# 935| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 935| Conversion = [BoolConversion] conversion to bool
+# 935| Type = [BoolType] bool
+# 935| Value = [CStyleCast] 0
+# 935| ValueCategory = prvalue
+# 936| getStmt(306): [DoStmt] do (...) ...
+# 938| getCondition(): [Literal] 0
+# 938| Type = [IntType] int
+# 938| Value = [Literal] 0
+# 938| ValueCategory = prvalue
+# 936| getStmt(): [BlockStmt] { ... }
+# 937| getStmt(0): [DeclStmt] declaration
+# 937| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x306
+# 937| Type = [Struct] String
+# 937| getVariable().getInitializer(): [Initializer] initializer for x306
+# 937| getExpr(): [ConstructorCall] call to String
+# 937| Type = [VoidType] void
+# 937| ValueCategory = prvalue
+# 938| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 938| Type = [VoidType] void
+# 938| ValueCategory = prvalue
+# 938| getQualifier(): [VariableAccess] x306
+# 938| Type = [Struct] String
+# 938| ValueCategory = lvalue
+# 938| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 938| Conversion = [BoolConversion] conversion to bool
+# 938| Type = [BoolType] bool
+# 938| Value = [CStyleCast] 0
+# 938| ValueCategory = prvalue
+# 939| getStmt(307): [DoStmt] do (...) ...
+# 941| getCondition(): [Literal] 0
+# 941| Type = [IntType] int
+# 941| Value = [Literal] 0
+# 941| ValueCategory = prvalue
+# 939| getStmt(): [BlockStmt] { ... }
+# 940| getStmt(0): [DeclStmt] declaration
+# 940| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x307
+# 940| Type = [Struct] String
+# 940| getVariable().getInitializer(): [Initializer] initializer for x307
+# 940| getExpr(): [ConstructorCall] call to String
+# 940| Type = [VoidType] void
+# 940| ValueCategory = prvalue
+# 941| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 941| Type = [VoidType] void
+# 941| ValueCategory = prvalue
+# 941| getQualifier(): [VariableAccess] x307
+# 941| Type = [Struct] String
+# 941| ValueCategory = lvalue
+# 941| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 941| Conversion = [BoolConversion] conversion to bool
+# 941| Type = [BoolType] bool
+# 941| Value = [CStyleCast] 0
+# 941| ValueCategory = prvalue
+# 942| getStmt(308): [DoStmt] do (...) ...
+# 944| getCondition(): [Literal] 0
+# 944| Type = [IntType] int
+# 944| Value = [Literal] 0
+# 944| ValueCategory = prvalue
+# 942| getStmt(): [BlockStmt] { ... }
+# 943| getStmt(0): [DeclStmt] declaration
+# 943| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x308
+# 943| Type = [Struct] String
+# 943| getVariable().getInitializer(): [Initializer] initializer for x308
+# 943| getExpr(): [ConstructorCall] call to String
+# 943| Type = [VoidType] void
+# 943| ValueCategory = prvalue
+# 944| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 944| Type = [VoidType] void
+# 944| ValueCategory = prvalue
+# 944| getQualifier(): [VariableAccess] x308
+# 944| Type = [Struct] String
+# 944| ValueCategory = lvalue
+# 944| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 944| Conversion = [BoolConversion] conversion to bool
+# 944| Type = [BoolType] bool
+# 944| Value = [CStyleCast] 0
+# 944| ValueCategory = prvalue
+# 945| getStmt(309): [DoStmt] do (...) ...
+# 947| getCondition(): [Literal] 0
+# 947| Type = [IntType] int
+# 947| Value = [Literal] 0
+# 947| ValueCategory = prvalue
+# 945| getStmt(): [BlockStmt] { ... }
+# 946| getStmt(0): [DeclStmt] declaration
+# 946| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x309
+# 946| Type = [Struct] String
+# 946| getVariable().getInitializer(): [Initializer] initializer for x309
+# 946| getExpr(): [ConstructorCall] call to String
+# 946| Type = [VoidType] void
+# 946| ValueCategory = prvalue
+# 947| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 947| Type = [VoidType] void
+# 947| ValueCategory = prvalue
+# 947| getQualifier(): [VariableAccess] x309
+# 947| Type = [Struct] String
+# 947| ValueCategory = lvalue
+# 947| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 947| Conversion = [BoolConversion] conversion to bool
+# 947| Type = [BoolType] bool
+# 947| Value = [CStyleCast] 0
+# 947| ValueCategory = prvalue
+# 948| getStmt(310): [DoStmt] do (...) ...
+# 950| getCondition(): [Literal] 0
+# 950| Type = [IntType] int
+# 950| Value = [Literal] 0
+# 950| ValueCategory = prvalue
+# 948| getStmt(): [BlockStmt] { ... }
+# 949| getStmt(0): [DeclStmt] declaration
+# 949| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x310
+# 949| Type = [Struct] String
+# 949| getVariable().getInitializer(): [Initializer] initializer for x310
+# 949| getExpr(): [ConstructorCall] call to String
+# 949| Type = [VoidType] void
+# 949| ValueCategory = prvalue
+# 950| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 950| Type = [VoidType] void
+# 950| ValueCategory = prvalue
+# 950| getQualifier(): [VariableAccess] x310
+# 950| Type = [Struct] String
+# 950| ValueCategory = lvalue
+# 950| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 950| Conversion = [BoolConversion] conversion to bool
+# 950| Type = [BoolType] bool
+# 950| Value = [CStyleCast] 0
+# 950| ValueCategory = prvalue
+# 951| getStmt(311): [DoStmt] do (...) ...
+# 953| getCondition(): [Literal] 0
+# 953| Type = [IntType] int
+# 953| Value = [Literal] 0
+# 953| ValueCategory = prvalue
+# 951| getStmt(): [BlockStmt] { ... }
+# 952| getStmt(0): [DeclStmt] declaration
+# 952| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x311
+# 952| Type = [Struct] String
+# 952| getVariable().getInitializer(): [Initializer] initializer for x311
+# 952| getExpr(): [ConstructorCall] call to String
+# 952| Type = [VoidType] void
+# 952| ValueCategory = prvalue
+# 953| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 953| Type = [VoidType] void
+# 953| ValueCategory = prvalue
+# 953| getQualifier(): [VariableAccess] x311
+# 953| Type = [Struct] String
+# 953| ValueCategory = lvalue
+# 953| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 953| Conversion = [BoolConversion] conversion to bool
+# 953| Type = [BoolType] bool
+# 953| Value = [CStyleCast] 0
+# 953| ValueCategory = prvalue
+# 954| getStmt(312): [DoStmt] do (...) ...
+# 956| getCondition(): [Literal] 0
+# 956| Type = [IntType] int
+# 956| Value = [Literal] 0
+# 956| ValueCategory = prvalue
+# 954| getStmt(): [BlockStmt] { ... }
+# 955| getStmt(0): [DeclStmt] declaration
+# 955| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x312
+# 955| Type = [Struct] String
+# 955| getVariable().getInitializer(): [Initializer] initializer for x312
+# 955| getExpr(): [ConstructorCall] call to String
+# 955| Type = [VoidType] void
+# 955| ValueCategory = prvalue
+# 956| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 956| Type = [VoidType] void
+# 956| ValueCategory = prvalue
+# 956| getQualifier(): [VariableAccess] x312
+# 956| Type = [Struct] String
+# 956| ValueCategory = lvalue
+# 956| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 956| Conversion = [BoolConversion] conversion to bool
+# 956| Type = [BoolType] bool
+# 956| Value = [CStyleCast] 0
+# 956| ValueCategory = prvalue
+# 957| getStmt(313): [DoStmt] do (...) ...
+# 959| getCondition(): [Literal] 0
+# 959| Type = [IntType] int
+# 959| Value = [Literal] 0
+# 959| ValueCategory = prvalue
+# 957| getStmt(): [BlockStmt] { ... }
+# 958| getStmt(0): [DeclStmt] declaration
+# 958| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x313
+# 958| Type = [Struct] String
+# 958| getVariable().getInitializer(): [Initializer] initializer for x313
+# 958| getExpr(): [ConstructorCall] call to String
+# 958| Type = [VoidType] void
+# 958| ValueCategory = prvalue
+# 959| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 959| Type = [VoidType] void
+# 959| ValueCategory = prvalue
+# 959| getQualifier(): [VariableAccess] x313
+# 959| Type = [Struct] String
+# 959| ValueCategory = lvalue
+# 959| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 959| Conversion = [BoolConversion] conversion to bool
+# 959| Type = [BoolType] bool
+# 959| Value = [CStyleCast] 0
+# 959| ValueCategory = prvalue
+# 960| getStmt(314): [DoStmt] do (...) ...
+# 962| getCondition(): [Literal] 0
+# 962| Type = [IntType] int
+# 962| Value = [Literal] 0
+# 962| ValueCategory = prvalue
+# 960| getStmt(): [BlockStmt] { ... }
+# 961| getStmt(0): [DeclStmt] declaration
+# 961| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x314
+# 961| Type = [Struct] String
+# 961| getVariable().getInitializer(): [Initializer] initializer for x314
+# 961| getExpr(): [ConstructorCall] call to String
+# 961| Type = [VoidType] void
+# 961| ValueCategory = prvalue
+# 962| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 962| Type = [VoidType] void
+# 962| ValueCategory = prvalue
+# 962| getQualifier(): [VariableAccess] x314
+# 962| Type = [Struct] String
+# 962| ValueCategory = lvalue
+# 962| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 962| Conversion = [BoolConversion] conversion to bool
+# 962| Type = [BoolType] bool
+# 962| Value = [CStyleCast] 0
+# 962| ValueCategory = prvalue
+# 963| getStmt(315): [DoStmt] do (...) ...
+# 965| getCondition(): [Literal] 0
+# 965| Type = [IntType] int
+# 965| Value = [Literal] 0
+# 965| ValueCategory = prvalue
+# 963| getStmt(): [BlockStmt] { ... }
+# 964| getStmt(0): [DeclStmt] declaration
+# 964| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x315
+# 964| Type = [Struct] String
+# 964| getVariable().getInitializer(): [Initializer] initializer for x315
+# 964| getExpr(): [ConstructorCall] call to String
+# 964| Type = [VoidType] void
+# 964| ValueCategory = prvalue
+# 965| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 965| Type = [VoidType] void
+# 965| ValueCategory = prvalue
+# 965| getQualifier(): [VariableAccess] x315
+# 965| Type = [Struct] String
+# 965| ValueCategory = lvalue
+# 965| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 965| Conversion = [BoolConversion] conversion to bool
+# 965| Type = [BoolType] bool
+# 965| Value = [CStyleCast] 0
+# 965| ValueCategory = prvalue
+# 966| getStmt(316): [DoStmt] do (...) ...
+# 968| getCondition(): [Literal] 0
+# 968| Type = [IntType] int
+# 968| Value = [Literal] 0
+# 968| ValueCategory = prvalue
+# 966| getStmt(): [BlockStmt] { ... }
+# 967| getStmt(0): [DeclStmt] declaration
+# 967| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x316
+# 967| Type = [Struct] String
+# 967| getVariable().getInitializer(): [Initializer] initializer for x316
+# 967| getExpr(): [ConstructorCall] call to String
+# 967| Type = [VoidType] void
+# 967| ValueCategory = prvalue
+# 968| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 968| Type = [VoidType] void
+# 968| ValueCategory = prvalue
+# 968| getQualifier(): [VariableAccess] x316
+# 968| Type = [Struct] String
+# 968| ValueCategory = lvalue
+# 968| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 968| Conversion = [BoolConversion] conversion to bool
+# 968| Type = [BoolType] bool
+# 968| Value = [CStyleCast] 0
+# 968| ValueCategory = prvalue
+# 969| getStmt(317): [DoStmt] do (...) ...
+# 971| getCondition(): [Literal] 0
+# 971| Type = [IntType] int
+# 971| Value = [Literal] 0
+# 971| ValueCategory = prvalue
+# 969| getStmt(): [BlockStmt] { ... }
+# 970| getStmt(0): [DeclStmt] declaration
+# 970| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x317
+# 970| Type = [Struct] String
+# 970| getVariable().getInitializer(): [Initializer] initializer for x317
+# 970| getExpr(): [ConstructorCall] call to String
+# 970| Type = [VoidType] void
+# 970| ValueCategory = prvalue
+# 971| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 971| Type = [VoidType] void
+# 971| ValueCategory = prvalue
+# 971| getQualifier(): [VariableAccess] x317
+# 971| Type = [Struct] String
+# 971| ValueCategory = lvalue
+# 971| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 971| Conversion = [BoolConversion] conversion to bool
+# 971| Type = [BoolType] bool
+# 971| Value = [CStyleCast] 0
+# 971| ValueCategory = prvalue
+# 972| getStmt(318): [DoStmt] do (...) ...
+# 974| getCondition(): [Literal] 0
+# 974| Type = [IntType] int
+# 974| Value = [Literal] 0
+# 974| ValueCategory = prvalue
+# 972| getStmt(): [BlockStmt] { ... }
+# 973| getStmt(0): [DeclStmt] declaration
+# 973| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x318
+# 973| Type = [Struct] String
+# 973| getVariable().getInitializer(): [Initializer] initializer for x318
+# 973| getExpr(): [ConstructorCall] call to String
+# 973| Type = [VoidType] void
+# 973| ValueCategory = prvalue
+# 974| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 974| Type = [VoidType] void
+# 974| ValueCategory = prvalue
+# 974| getQualifier(): [VariableAccess] x318
+# 974| Type = [Struct] String
+# 974| ValueCategory = lvalue
+# 974| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 974| Conversion = [BoolConversion] conversion to bool
+# 974| Type = [BoolType] bool
+# 974| Value = [CStyleCast] 0
+# 974| ValueCategory = prvalue
+# 975| getStmt(319): [DoStmt] do (...) ...
+# 977| getCondition(): [Literal] 0
+# 977| Type = [IntType] int
+# 977| Value = [Literal] 0
+# 977| ValueCategory = prvalue
+# 975| getStmt(): [BlockStmt] { ... }
+# 976| getStmt(0): [DeclStmt] declaration
+# 976| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x319
+# 976| Type = [Struct] String
+# 976| getVariable().getInitializer(): [Initializer] initializer for x319
+# 976| getExpr(): [ConstructorCall] call to String
+# 976| Type = [VoidType] void
+# 976| ValueCategory = prvalue
+# 977| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 977| Type = [VoidType] void
+# 977| ValueCategory = prvalue
+# 977| getQualifier(): [VariableAccess] x319
+# 977| Type = [Struct] String
+# 977| ValueCategory = lvalue
+# 977| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 977| Conversion = [BoolConversion] conversion to bool
+# 977| Type = [BoolType] bool
+# 977| Value = [CStyleCast] 0
+# 977| ValueCategory = prvalue
+# 978| getStmt(320): [DoStmt] do (...) ...
+# 980| getCondition(): [Literal] 0
+# 980| Type = [IntType] int
+# 980| Value = [Literal] 0
+# 980| ValueCategory = prvalue
+# 978| getStmt(): [BlockStmt] { ... }
+# 979| getStmt(0): [DeclStmt] declaration
+# 979| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x320
+# 979| Type = [Struct] String
+# 979| getVariable().getInitializer(): [Initializer] initializer for x320
+# 979| getExpr(): [ConstructorCall] call to String
+# 979| Type = [VoidType] void
+# 979| ValueCategory = prvalue
+# 980| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 980| Type = [VoidType] void
+# 980| ValueCategory = prvalue
+# 980| getQualifier(): [VariableAccess] x320
+# 980| Type = [Struct] String
+# 980| ValueCategory = lvalue
+# 980| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 980| Conversion = [BoolConversion] conversion to bool
+# 980| Type = [BoolType] bool
+# 980| Value = [CStyleCast] 0
+# 980| ValueCategory = prvalue
+# 981| getStmt(321): [DoStmt] do (...) ...
+# 983| getCondition(): [Literal] 0
+# 983| Type = [IntType] int
+# 983| Value = [Literal] 0
+# 983| ValueCategory = prvalue
+# 981| getStmt(): [BlockStmt] { ... }
+# 982| getStmt(0): [DeclStmt] declaration
+# 982| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x321
+# 982| Type = [Struct] String
+# 982| getVariable().getInitializer(): [Initializer] initializer for x321
+# 982| getExpr(): [ConstructorCall] call to String
+# 982| Type = [VoidType] void
+# 982| ValueCategory = prvalue
+# 983| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 983| Type = [VoidType] void
+# 983| ValueCategory = prvalue
+# 983| getQualifier(): [VariableAccess] x321
+# 983| Type = [Struct] String
+# 983| ValueCategory = lvalue
+# 983| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 983| Conversion = [BoolConversion] conversion to bool
+# 983| Type = [BoolType] bool
+# 983| Value = [CStyleCast] 0
+# 983| ValueCategory = prvalue
+# 984| getStmt(322): [DoStmt] do (...) ...
+# 986| getCondition(): [Literal] 0
+# 986| Type = [IntType] int
+# 986| Value = [Literal] 0
+# 986| ValueCategory = prvalue
+# 984| getStmt(): [BlockStmt] { ... }
+# 985| getStmt(0): [DeclStmt] declaration
+# 985| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x322
+# 985| Type = [Struct] String
+# 985| getVariable().getInitializer(): [Initializer] initializer for x322
+# 985| getExpr(): [ConstructorCall] call to String
+# 985| Type = [VoidType] void
+# 985| ValueCategory = prvalue
+# 986| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 986| Type = [VoidType] void
+# 986| ValueCategory = prvalue
+# 986| getQualifier(): [VariableAccess] x322
+# 986| Type = [Struct] String
+# 986| ValueCategory = lvalue
+# 986| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 986| Conversion = [BoolConversion] conversion to bool
+# 986| Type = [BoolType] bool
+# 986| Value = [CStyleCast] 0
+# 986| ValueCategory = prvalue
+# 987| getStmt(323): [DoStmt] do (...) ...
+# 989| getCondition(): [Literal] 0
+# 989| Type = [IntType] int
+# 989| Value = [Literal] 0
+# 989| ValueCategory = prvalue
+# 987| getStmt(): [BlockStmt] { ... }
+# 988| getStmt(0): [DeclStmt] declaration
+# 988| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x323
+# 988| Type = [Struct] String
+# 988| getVariable().getInitializer(): [Initializer] initializer for x323
+# 988| getExpr(): [ConstructorCall] call to String
+# 988| Type = [VoidType] void
+# 988| ValueCategory = prvalue
+# 989| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 989| Type = [VoidType] void
+# 989| ValueCategory = prvalue
+# 989| getQualifier(): [VariableAccess] x323
+# 989| Type = [Struct] String
+# 989| ValueCategory = lvalue
+# 989| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 989| Conversion = [BoolConversion] conversion to bool
+# 989| Type = [BoolType] bool
+# 989| Value = [CStyleCast] 0
+# 989| ValueCategory = prvalue
+# 990| getStmt(324): [DoStmt] do (...) ...
+# 992| getCondition(): [Literal] 0
+# 992| Type = [IntType] int
+# 992| Value = [Literal] 0
+# 992| ValueCategory = prvalue
+# 990| getStmt(): [BlockStmt] { ... }
+# 991| getStmt(0): [DeclStmt] declaration
+# 991| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x324
+# 991| Type = [Struct] String
+# 991| getVariable().getInitializer(): [Initializer] initializer for x324
+# 991| getExpr(): [ConstructorCall] call to String
+# 991| Type = [VoidType] void
+# 991| ValueCategory = prvalue
+# 992| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 992| Type = [VoidType] void
+# 992| ValueCategory = prvalue
+# 992| getQualifier(): [VariableAccess] x324
+# 992| Type = [Struct] String
+# 992| ValueCategory = lvalue
+# 992| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 992| Conversion = [BoolConversion] conversion to bool
+# 992| Type = [BoolType] bool
+# 992| Value = [CStyleCast] 0
+# 992| ValueCategory = prvalue
+# 993| getStmt(325): [DoStmt] do (...) ...
+# 995| getCondition(): [Literal] 0
+# 995| Type = [IntType] int
+# 995| Value = [Literal] 0
+# 995| ValueCategory = prvalue
+# 993| getStmt(): [BlockStmt] { ... }
+# 994| getStmt(0): [DeclStmt] declaration
+# 994| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x325
+# 994| Type = [Struct] String
+# 994| getVariable().getInitializer(): [Initializer] initializer for x325
+# 994| getExpr(): [ConstructorCall] call to String
+# 994| Type = [VoidType] void
+# 994| ValueCategory = prvalue
+# 995| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 995| Type = [VoidType] void
+# 995| ValueCategory = prvalue
+# 995| getQualifier(): [VariableAccess] x325
+# 995| Type = [Struct] String
+# 995| ValueCategory = lvalue
+# 995| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 995| Conversion = [BoolConversion] conversion to bool
+# 995| Type = [BoolType] bool
+# 995| Value = [CStyleCast] 0
+# 995| ValueCategory = prvalue
+# 996| getStmt(326): [DoStmt] do (...) ...
+# 998| getCondition(): [Literal] 0
+# 998| Type = [IntType] int
+# 998| Value = [Literal] 0
+# 998| ValueCategory = prvalue
+# 996| getStmt(): [BlockStmt] { ... }
+# 997| getStmt(0): [DeclStmt] declaration
+# 997| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x326
+# 997| Type = [Struct] String
+# 997| getVariable().getInitializer(): [Initializer] initializer for x326
+# 997| getExpr(): [ConstructorCall] call to String
+# 997| Type = [VoidType] void
+# 997| ValueCategory = prvalue
+# 998| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 998| Type = [VoidType] void
+# 998| ValueCategory = prvalue
+# 998| getQualifier(): [VariableAccess] x326
+# 998| Type = [Struct] String
+# 998| ValueCategory = lvalue
+# 998| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 998| Conversion = [BoolConversion] conversion to bool
+# 998| Type = [BoolType] bool
+# 998| Value = [CStyleCast] 0
+# 998| ValueCategory = prvalue
+# 999| getStmt(327): [DoStmt] do (...) ...
+# 1001| getCondition(): [Literal] 0
+# 1001| Type = [IntType] int
+# 1001| Value = [Literal] 0
+# 1001| ValueCategory = prvalue
+# 999| getStmt(): [BlockStmt] { ... }
+# 1000| getStmt(0): [DeclStmt] declaration
+# 1000| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x327
+# 1000| Type = [Struct] String
+# 1000| getVariable().getInitializer(): [Initializer] initializer for x327
+# 1000| getExpr(): [ConstructorCall] call to String
+# 1000| Type = [VoidType] void
+# 1000| ValueCategory = prvalue
+# 1001| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1001| Type = [VoidType] void
+# 1001| ValueCategory = prvalue
+# 1001| getQualifier(): [VariableAccess] x327
+# 1001| Type = [Struct] String
+# 1001| ValueCategory = lvalue
+# 1001| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1001| Conversion = [BoolConversion] conversion to bool
+# 1001| Type = [BoolType] bool
+# 1001| Value = [CStyleCast] 0
+# 1001| ValueCategory = prvalue
+# 1002| getStmt(328): [DoStmt] do (...) ...
+# 1004| getCondition(): [Literal] 0
+# 1004| Type = [IntType] int
+# 1004| Value = [Literal] 0
+# 1004| ValueCategory = prvalue
+# 1002| getStmt(): [BlockStmt] { ... }
+# 1003| getStmt(0): [DeclStmt] declaration
+# 1003| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x328
+# 1003| Type = [Struct] String
+# 1003| getVariable().getInitializer(): [Initializer] initializer for x328
+# 1003| getExpr(): [ConstructorCall] call to String
+# 1003| Type = [VoidType] void
+# 1003| ValueCategory = prvalue
+# 1004| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1004| Type = [VoidType] void
+# 1004| ValueCategory = prvalue
+# 1004| getQualifier(): [VariableAccess] x328
+# 1004| Type = [Struct] String
+# 1004| ValueCategory = lvalue
+# 1004| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1004| Conversion = [BoolConversion] conversion to bool
+# 1004| Type = [BoolType] bool
+# 1004| Value = [CStyleCast] 0
+# 1004| ValueCategory = prvalue
+# 1005| getStmt(329): [DoStmt] do (...) ...
+# 1007| getCondition(): [Literal] 0
+# 1007| Type = [IntType] int
+# 1007| Value = [Literal] 0
+# 1007| ValueCategory = prvalue
+# 1005| getStmt(): [BlockStmt] { ... }
+# 1006| getStmt(0): [DeclStmt] declaration
+# 1006| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x329
+# 1006| Type = [Struct] String
+# 1006| getVariable().getInitializer(): [Initializer] initializer for x329
+# 1006| getExpr(): [ConstructorCall] call to String
+# 1006| Type = [VoidType] void
+# 1006| ValueCategory = prvalue
+# 1007| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1007| Type = [VoidType] void
+# 1007| ValueCategory = prvalue
+# 1007| getQualifier(): [VariableAccess] x329
+# 1007| Type = [Struct] String
+# 1007| ValueCategory = lvalue
+# 1007| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1007| Conversion = [BoolConversion] conversion to bool
+# 1007| Type = [BoolType] bool
+# 1007| Value = [CStyleCast] 0
+# 1007| ValueCategory = prvalue
+# 1008| getStmt(330): [DoStmt] do (...) ...
+# 1010| getCondition(): [Literal] 0
+# 1010| Type = [IntType] int
+# 1010| Value = [Literal] 0
+# 1010| ValueCategory = prvalue
+# 1008| getStmt(): [BlockStmt] { ... }
+# 1009| getStmt(0): [DeclStmt] declaration
+# 1009| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x330
+# 1009| Type = [Struct] String
+# 1009| getVariable().getInitializer(): [Initializer] initializer for x330
+# 1009| getExpr(): [ConstructorCall] call to String
+# 1009| Type = [VoidType] void
+# 1009| ValueCategory = prvalue
+# 1010| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1010| Type = [VoidType] void
+# 1010| ValueCategory = prvalue
+# 1010| getQualifier(): [VariableAccess] x330
+# 1010| Type = [Struct] String
+# 1010| ValueCategory = lvalue
+# 1010| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1010| Conversion = [BoolConversion] conversion to bool
+# 1010| Type = [BoolType] bool
+# 1010| Value = [CStyleCast] 0
+# 1010| ValueCategory = prvalue
+# 1011| getStmt(331): [DoStmt] do (...) ...
+# 1013| getCondition(): [Literal] 0
+# 1013| Type = [IntType] int
+# 1013| Value = [Literal] 0
+# 1013| ValueCategory = prvalue
+# 1011| getStmt(): [BlockStmt] { ... }
+# 1012| getStmt(0): [DeclStmt] declaration
+# 1012| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x331
+# 1012| Type = [Struct] String
+# 1012| getVariable().getInitializer(): [Initializer] initializer for x331
+# 1012| getExpr(): [ConstructorCall] call to String
+# 1012| Type = [VoidType] void
+# 1012| ValueCategory = prvalue
+# 1013| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1013| Type = [VoidType] void
+# 1013| ValueCategory = prvalue
+# 1013| getQualifier(): [VariableAccess] x331
+# 1013| Type = [Struct] String
+# 1013| ValueCategory = lvalue
+# 1013| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1013| Conversion = [BoolConversion] conversion to bool
+# 1013| Type = [BoolType] bool
+# 1013| Value = [CStyleCast] 0
+# 1013| ValueCategory = prvalue
+# 1014| getStmt(332): [DoStmt] do (...) ...
+# 1016| getCondition(): [Literal] 0
+# 1016| Type = [IntType] int
+# 1016| Value = [Literal] 0
+# 1016| ValueCategory = prvalue
+# 1014| getStmt(): [BlockStmt] { ... }
+# 1015| getStmt(0): [DeclStmt] declaration
+# 1015| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x332
+# 1015| Type = [Struct] String
+# 1015| getVariable().getInitializer(): [Initializer] initializer for x332
+# 1015| getExpr(): [ConstructorCall] call to String
+# 1015| Type = [VoidType] void
+# 1015| ValueCategory = prvalue
+# 1016| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1016| Type = [VoidType] void
+# 1016| ValueCategory = prvalue
+# 1016| getQualifier(): [VariableAccess] x332
+# 1016| Type = [Struct] String
+# 1016| ValueCategory = lvalue
+# 1016| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1016| Conversion = [BoolConversion] conversion to bool
+# 1016| Type = [BoolType] bool
+# 1016| Value = [CStyleCast] 0
+# 1016| ValueCategory = prvalue
+# 1017| getStmt(333): [DoStmt] do (...) ...
+# 1019| getCondition(): [Literal] 0
+# 1019| Type = [IntType] int
+# 1019| Value = [Literal] 0
+# 1019| ValueCategory = prvalue
+# 1017| getStmt(): [BlockStmt] { ... }
+# 1018| getStmt(0): [DeclStmt] declaration
+# 1018| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x333
+# 1018| Type = [Struct] String
+# 1018| getVariable().getInitializer(): [Initializer] initializer for x333
+# 1018| getExpr(): [ConstructorCall] call to String
+# 1018| Type = [VoidType] void
+# 1018| ValueCategory = prvalue
+# 1019| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1019| Type = [VoidType] void
+# 1019| ValueCategory = prvalue
+# 1019| getQualifier(): [VariableAccess] x333
+# 1019| Type = [Struct] String
+# 1019| ValueCategory = lvalue
+# 1019| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1019| Conversion = [BoolConversion] conversion to bool
+# 1019| Type = [BoolType] bool
+# 1019| Value = [CStyleCast] 0
+# 1019| ValueCategory = prvalue
+# 1020| getStmt(334): [DoStmt] do (...) ...
+# 1022| getCondition(): [Literal] 0
+# 1022| Type = [IntType] int
+# 1022| Value = [Literal] 0
+# 1022| ValueCategory = prvalue
+# 1020| getStmt(): [BlockStmt] { ... }
+# 1021| getStmt(0): [DeclStmt] declaration
+# 1021| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x334
+# 1021| Type = [Struct] String
+# 1021| getVariable().getInitializer(): [Initializer] initializer for x334
+# 1021| getExpr(): [ConstructorCall] call to String
+# 1021| Type = [VoidType] void
+# 1021| ValueCategory = prvalue
+# 1022| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1022| Type = [VoidType] void
+# 1022| ValueCategory = prvalue
+# 1022| getQualifier(): [VariableAccess] x334
+# 1022| Type = [Struct] String
+# 1022| ValueCategory = lvalue
+# 1022| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1022| Conversion = [BoolConversion] conversion to bool
+# 1022| Type = [BoolType] bool
+# 1022| Value = [CStyleCast] 0
+# 1022| ValueCategory = prvalue
+# 1023| getStmt(335): [DoStmt] do (...) ...
+# 1025| getCondition(): [Literal] 0
+# 1025| Type = [IntType] int
+# 1025| Value = [Literal] 0
+# 1025| ValueCategory = prvalue
+# 1023| getStmt(): [BlockStmt] { ... }
+# 1024| getStmt(0): [DeclStmt] declaration
+# 1024| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x335
+# 1024| Type = [Struct] String
+# 1024| getVariable().getInitializer(): [Initializer] initializer for x335
+# 1024| getExpr(): [ConstructorCall] call to String
+# 1024| Type = [VoidType] void
+# 1024| ValueCategory = prvalue
+# 1025| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1025| Type = [VoidType] void
+# 1025| ValueCategory = prvalue
+# 1025| getQualifier(): [VariableAccess] x335
+# 1025| Type = [Struct] String
+# 1025| ValueCategory = lvalue
+# 1025| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1025| Conversion = [BoolConversion] conversion to bool
+# 1025| Type = [BoolType] bool
+# 1025| Value = [CStyleCast] 0
+# 1025| ValueCategory = prvalue
+# 1026| getStmt(336): [DoStmt] do (...) ...
+# 1028| getCondition(): [Literal] 0
+# 1028| Type = [IntType] int
+# 1028| Value = [Literal] 0
+# 1028| ValueCategory = prvalue
+# 1026| getStmt(): [BlockStmt] { ... }
+# 1027| getStmt(0): [DeclStmt] declaration
+# 1027| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x336
+# 1027| Type = [Struct] String
+# 1027| getVariable().getInitializer(): [Initializer] initializer for x336
+# 1027| getExpr(): [ConstructorCall] call to String
+# 1027| Type = [VoidType] void
+# 1027| ValueCategory = prvalue
+# 1028| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1028| Type = [VoidType] void
+# 1028| ValueCategory = prvalue
+# 1028| getQualifier(): [VariableAccess] x336
+# 1028| Type = [Struct] String
+# 1028| ValueCategory = lvalue
+# 1028| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1028| Conversion = [BoolConversion] conversion to bool
+# 1028| Type = [BoolType] bool
+# 1028| Value = [CStyleCast] 0
+# 1028| ValueCategory = prvalue
+# 1029| getStmt(337): [DoStmt] do (...) ...
+# 1031| getCondition(): [Literal] 0
+# 1031| Type = [IntType] int
+# 1031| Value = [Literal] 0
+# 1031| ValueCategory = prvalue
+# 1029| getStmt(): [BlockStmt] { ... }
+# 1030| getStmt(0): [DeclStmt] declaration
+# 1030| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x337
+# 1030| Type = [Struct] String
+# 1030| getVariable().getInitializer(): [Initializer] initializer for x337
+# 1030| getExpr(): [ConstructorCall] call to String
+# 1030| Type = [VoidType] void
+# 1030| ValueCategory = prvalue
+# 1031| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1031| Type = [VoidType] void
+# 1031| ValueCategory = prvalue
+# 1031| getQualifier(): [VariableAccess] x337
+# 1031| Type = [Struct] String
+# 1031| ValueCategory = lvalue
+# 1031| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1031| Conversion = [BoolConversion] conversion to bool
+# 1031| Type = [BoolType] bool
+# 1031| Value = [CStyleCast] 0
+# 1031| ValueCategory = prvalue
+# 1032| getStmt(338): [DoStmt] do (...) ...
+# 1034| getCondition(): [Literal] 0
+# 1034| Type = [IntType] int
+# 1034| Value = [Literal] 0
+# 1034| ValueCategory = prvalue
+# 1032| getStmt(): [BlockStmt] { ... }
+# 1033| getStmt(0): [DeclStmt] declaration
+# 1033| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x338
+# 1033| Type = [Struct] String
+# 1033| getVariable().getInitializer(): [Initializer] initializer for x338
+# 1033| getExpr(): [ConstructorCall] call to String
+# 1033| Type = [VoidType] void
+# 1033| ValueCategory = prvalue
+# 1034| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1034| Type = [VoidType] void
+# 1034| ValueCategory = prvalue
+# 1034| getQualifier(): [VariableAccess] x338
+# 1034| Type = [Struct] String
+# 1034| ValueCategory = lvalue
+# 1034| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1034| Conversion = [BoolConversion] conversion to bool
+# 1034| Type = [BoolType] bool
+# 1034| Value = [CStyleCast] 0
+# 1034| ValueCategory = prvalue
+# 1035| getStmt(339): [DoStmt] do (...) ...
+# 1037| getCondition(): [Literal] 0
+# 1037| Type = [IntType] int
+# 1037| Value = [Literal] 0
+# 1037| ValueCategory = prvalue
+# 1035| getStmt(): [BlockStmt] { ... }
+# 1036| getStmt(0): [DeclStmt] declaration
+# 1036| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x339
+# 1036| Type = [Struct] String
+# 1036| getVariable().getInitializer(): [Initializer] initializer for x339
+# 1036| getExpr(): [ConstructorCall] call to String
+# 1036| Type = [VoidType] void
+# 1036| ValueCategory = prvalue
+# 1037| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1037| Type = [VoidType] void
+# 1037| ValueCategory = prvalue
+# 1037| getQualifier(): [VariableAccess] x339
+# 1037| Type = [Struct] String
+# 1037| ValueCategory = lvalue
+# 1037| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1037| Conversion = [BoolConversion] conversion to bool
+# 1037| Type = [BoolType] bool
+# 1037| Value = [CStyleCast] 0
+# 1037| ValueCategory = prvalue
+# 1038| getStmt(340): [DoStmt] do (...) ...
+# 1040| getCondition(): [Literal] 0
+# 1040| Type = [IntType] int
+# 1040| Value = [Literal] 0
+# 1040| ValueCategory = prvalue
+# 1038| getStmt(): [BlockStmt] { ... }
+# 1039| getStmt(0): [DeclStmt] declaration
+# 1039| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x340
+# 1039| Type = [Struct] String
+# 1039| getVariable().getInitializer(): [Initializer] initializer for x340
+# 1039| getExpr(): [ConstructorCall] call to String
+# 1039| Type = [VoidType] void
+# 1039| ValueCategory = prvalue
+# 1040| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1040| Type = [VoidType] void
+# 1040| ValueCategory = prvalue
+# 1040| getQualifier(): [VariableAccess] x340
+# 1040| Type = [Struct] String
+# 1040| ValueCategory = lvalue
+# 1040| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1040| Conversion = [BoolConversion] conversion to bool
+# 1040| Type = [BoolType] bool
+# 1040| Value = [CStyleCast] 0
+# 1040| ValueCategory = prvalue
+# 1041| getStmt(341): [DoStmt] do (...) ...
+# 1043| getCondition(): [Literal] 0
+# 1043| Type = [IntType] int
+# 1043| Value = [Literal] 0
+# 1043| ValueCategory = prvalue
+# 1041| getStmt(): [BlockStmt] { ... }
+# 1042| getStmt(0): [DeclStmt] declaration
+# 1042| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x341
+# 1042| Type = [Struct] String
+# 1042| getVariable().getInitializer(): [Initializer] initializer for x341
+# 1042| getExpr(): [ConstructorCall] call to String
+# 1042| Type = [VoidType] void
+# 1042| ValueCategory = prvalue
+# 1043| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1043| Type = [VoidType] void
+# 1043| ValueCategory = prvalue
+# 1043| getQualifier(): [VariableAccess] x341
+# 1043| Type = [Struct] String
+# 1043| ValueCategory = lvalue
+# 1043| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1043| Conversion = [BoolConversion] conversion to bool
+# 1043| Type = [BoolType] bool
+# 1043| Value = [CStyleCast] 0
+# 1043| ValueCategory = prvalue
+# 1044| getStmt(342): [DoStmt] do (...) ...
+# 1046| getCondition(): [Literal] 0
+# 1046| Type = [IntType] int
+# 1046| Value = [Literal] 0
+# 1046| ValueCategory = prvalue
+# 1044| getStmt(): [BlockStmt] { ... }
+# 1045| getStmt(0): [DeclStmt] declaration
+# 1045| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x342
+# 1045| Type = [Struct] String
+# 1045| getVariable().getInitializer(): [Initializer] initializer for x342
+# 1045| getExpr(): [ConstructorCall] call to String
+# 1045| Type = [VoidType] void
+# 1045| ValueCategory = prvalue
+# 1046| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1046| Type = [VoidType] void
+# 1046| ValueCategory = prvalue
+# 1046| getQualifier(): [VariableAccess] x342
+# 1046| Type = [Struct] String
+# 1046| ValueCategory = lvalue
+# 1046| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1046| Conversion = [BoolConversion] conversion to bool
+# 1046| Type = [BoolType] bool
+# 1046| Value = [CStyleCast] 0
+# 1046| ValueCategory = prvalue
+# 1047| getStmt(343): [DoStmt] do (...) ...
+# 1049| getCondition(): [Literal] 0
+# 1049| Type = [IntType] int
+# 1049| Value = [Literal] 0
+# 1049| ValueCategory = prvalue
+# 1047| getStmt(): [BlockStmt] { ... }
+# 1048| getStmt(0): [DeclStmt] declaration
+# 1048| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x343
+# 1048| Type = [Struct] String
+# 1048| getVariable().getInitializer(): [Initializer] initializer for x343
+# 1048| getExpr(): [ConstructorCall] call to String
+# 1048| Type = [VoidType] void
+# 1048| ValueCategory = prvalue
+# 1049| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1049| Type = [VoidType] void
+# 1049| ValueCategory = prvalue
+# 1049| getQualifier(): [VariableAccess] x343
+# 1049| Type = [Struct] String
+# 1049| ValueCategory = lvalue
+# 1049| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1049| Conversion = [BoolConversion] conversion to bool
+# 1049| Type = [BoolType] bool
+# 1049| Value = [CStyleCast] 0
+# 1049| ValueCategory = prvalue
+# 1050| getStmt(344): [DoStmt] do (...) ...
+# 1052| getCondition(): [Literal] 0
+# 1052| Type = [IntType] int
+# 1052| Value = [Literal] 0
+# 1052| ValueCategory = prvalue
+# 1050| getStmt(): [BlockStmt] { ... }
+# 1051| getStmt(0): [DeclStmt] declaration
+# 1051| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x344
+# 1051| Type = [Struct] String
+# 1051| getVariable().getInitializer(): [Initializer] initializer for x344
+# 1051| getExpr(): [ConstructorCall] call to String
+# 1051| Type = [VoidType] void
+# 1051| ValueCategory = prvalue
+# 1052| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1052| Type = [VoidType] void
+# 1052| ValueCategory = prvalue
+# 1052| getQualifier(): [VariableAccess] x344
+# 1052| Type = [Struct] String
+# 1052| ValueCategory = lvalue
+# 1052| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1052| Conversion = [BoolConversion] conversion to bool
+# 1052| Type = [BoolType] bool
+# 1052| Value = [CStyleCast] 0
+# 1052| ValueCategory = prvalue
+# 1053| getStmt(345): [DoStmt] do (...) ...
+# 1055| getCondition(): [Literal] 0
+# 1055| Type = [IntType] int
+# 1055| Value = [Literal] 0
+# 1055| ValueCategory = prvalue
+# 1053| getStmt(): [BlockStmt] { ... }
+# 1054| getStmt(0): [DeclStmt] declaration
+# 1054| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x345
+# 1054| Type = [Struct] String
+# 1054| getVariable().getInitializer(): [Initializer] initializer for x345
+# 1054| getExpr(): [ConstructorCall] call to String
+# 1054| Type = [VoidType] void
+# 1054| ValueCategory = prvalue
+# 1055| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1055| Type = [VoidType] void
+# 1055| ValueCategory = prvalue
+# 1055| getQualifier(): [VariableAccess] x345
+# 1055| Type = [Struct] String
+# 1055| ValueCategory = lvalue
+# 1055| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1055| Conversion = [BoolConversion] conversion to bool
+# 1055| Type = [BoolType] bool
+# 1055| Value = [CStyleCast] 0
+# 1055| ValueCategory = prvalue
+# 1056| getStmt(346): [DoStmt] do (...) ...
+# 1058| getCondition(): [Literal] 0
+# 1058| Type = [IntType] int
+# 1058| Value = [Literal] 0
+# 1058| ValueCategory = prvalue
+# 1056| getStmt(): [BlockStmt] { ... }
+# 1057| getStmt(0): [DeclStmt] declaration
+# 1057| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x346
+# 1057| Type = [Struct] String
+# 1057| getVariable().getInitializer(): [Initializer] initializer for x346
+# 1057| getExpr(): [ConstructorCall] call to String
+# 1057| Type = [VoidType] void
+# 1057| ValueCategory = prvalue
+# 1058| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1058| Type = [VoidType] void
+# 1058| ValueCategory = prvalue
+# 1058| getQualifier(): [VariableAccess] x346
+# 1058| Type = [Struct] String
+# 1058| ValueCategory = lvalue
+# 1058| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1058| Conversion = [BoolConversion] conversion to bool
+# 1058| Type = [BoolType] bool
+# 1058| Value = [CStyleCast] 0
+# 1058| ValueCategory = prvalue
+# 1059| getStmt(347): [DoStmt] do (...) ...
+# 1061| getCondition(): [Literal] 0
+# 1061| Type = [IntType] int
+# 1061| Value = [Literal] 0
+# 1061| ValueCategory = prvalue
+# 1059| getStmt(): [BlockStmt] { ... }
+# 1060| getStmt(0): [DeclStmt] declaration
+# 1060| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x347
+# 1060| Type = [Struct] String
+# 1060| getVariable().getInitializer(): [Initializer] initializer for x347
+# 1060| getExpr(): [ConstructorCall] call to String
+# 1060| Type = [VoidType] void
+# 1060| ValueCategory = prvalue
+# 1061| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1061| Type = [VoidType] void
+# 1061| ValueCategory = prvalue
+# 1061| getQualifier(): [VariableAccess] x347
+# 1061| Type = [Struct] String
+# 1061| ValueCategory = lvalue
+# 1061| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1061| Conversion = [BoolConversion] conversion to bool
+# 1061| Type = [BoolType] bool
+# 1061| Value = [CStyleCast] 0
+# 1061| ValueCategory = prvalue
+# 1062| getStmt(348): [DoStmt] do (...) ...
+# 1064| getCondition(): [Literal] 0
+# 1064| Type = [IntType] int
+# 1064| Value = [Literal] 0
+# 1064| ValueCategory = prvalue
+# 1062| getStmt(): [BlockStmt] { ... }
+# 1063| getStmt(0): [DeclStmt] declaration
+# 1063| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x348
+# 1063| Type = [Struct] String
+# 1063| getVariable().getInitializer(): [Initializer] initializer for x348
+# 1063| getExpr(): [ConstructorCall] call to String
+# 1063| Type = [VoidType] void
+# 1063| ValueCategory = prvalue
+# 1064| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1064| Type = [VoidType] void
+# 1064| ValueCategory = prvalue
+# 1064| getQualifier(): [VariableAccess] x348
+# 1064| Type = [Struct] String
+# 1064| ValueCategory = lvalue
+# 1064| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1064| Conversion = [BoolConversion] conversion to bool
+# 1064| Type = [BoolType] bool
+# 1064| Value = [CStyleCast] 0
+# 1064| ValueCategory = prvalue
+# 1065| getStmt(349): [DoStmt] do (...) ...
+# 1067| getCondition(): [Literal] 0
+# 1067| Type = [IntType] int
+# 1067| Value = [Literal] 0
+# 1067| ValueCategory = prvalue
+# 1065| getStmt(): [BlockStmt] { ... }
+# 1066| getStmt(0): [DeclStmt] declaration
+# 1066| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x349
+# 1066| Type = [Struct] String
+# 1066| getVariable().getInitializer(): [Initializer] initializer for x349
+# 1066| getExpr(): [ConstructorCall] call to String
+# 1066| Type = [VoidType] void
+# 1066| ValueCategory = prvalue
+# 1067| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1067| Type = [VoidType] void
+# 1067| ValueCategory = prvalue
+# 1067| getQualifier(): [VariableAccess] x349
+# 1067| Type = [Struct] String
+# 1067| ValueCategory = lvalue
+# 1067| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1067| Conversion = [BoolConversion] conversion to bool
+# 1067| Type = [BoolType] bool
+# 1067| Value = [CStyleCast] 0
+# 1067| ValueCategory = prvalue
+# 1068| getStmt(350): [DoStmt] do (...) ...
+# 1070| getCondition(): [Literal] 0
+# 1070| Type = [IntType] int
+# 1070| Value = [Literal] 0
+# 1070| ValueCategory = prvalue
+# 1068| getStmt(): [BlockStmt] { ... }
+# 1069| getStmt(0): [DeclStmt] declaration
+# 1069| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x350
+# 1069| Type = [Struct] String
+# 1069| getVariable().getInitializer(): [Initializer] initializer for x350
+# 1069| getExpr(): [ConstructorCall] call to String
+# 1069| Type = [VoidType] void
+# 1069| ValueCategory = prvalue
+# 1070| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1070| Type = [VoidType] void
+# 1070| ValueCategory = prvalue
+# 1070| getQualifier(): [VariableAccess] x350
+# 1070| Type = [Struct] String
+# 1070| ValueCategory = lvalue
+# 1070| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1070| Conversion = [BoolConversion] conversion to bool
+# 1070| Type = [BoolType] bool
+# 1070| Value = [CStyleCast] 0
+# 1070| ValueCategory = prvalue
+# 1071| getStmt(351): [DoStmt] do (...) ...
+# 1073| getCondition(): [Literal] 0
+# 1073| Type = [IntType] int
+# 1073| Value = [Literal] 0
+# 1073| ValueCategory = prvalue
+# 1071| getStmt(): [BlockStmt] { ... }
+# 1072| getStmt(0): [DeclStmt] declaration
+# 1072| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x351
+# 1072| Type = [Struct] String
+# 1072| getVariable().getInitializer(): [Initializer] initializer for x351
+# 1072| getExpr(): [ConstructorCall] call to String
+# 1072| Type = [VoidType] void
+# 1072| ValueCategory = prvalue
+# 1073| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1073| Type = [VoidType] void
+# 1073| ValueCategory = prvalue
+# 1073| getQualifier(): [VariableAccess] x351
+# 1073| Type = [Struct] String
+# 1073| ValueCategory = lvalue
+# 1073| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1073| Conversion = [BoolConversion] conversion to bool
+# 1073| Type = [BoolType] bool
+# 1073| Value = [CStyleCast] 0
+# 1073| ValueCategory = prvalue
+# 1074| getStmt(352): [DoStmt] do (...) ...
+# 1076| getCondition(): [Literal] 0
+# 1076| Type = [IntType] int
+# 1076| Value = [Literal] 0
+# 1076| ValueCategory = prvalue
+# 1074| getStmt(): [BlockStmt] { ... }
+# 1075| getStmt(0): [DeclStmt] declaration
+# 1075| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x352
+# 1075| Type = [Struct] String
+# 1075| getVariable().getInitializer(): [Initializer] initializer for x352
+# 1075| getExpr(): [ConstructorCall] call to String
+# 1075| Type = [VoidType] void
+# 1075| ValueCategory = prvalue
+# 1076| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1076| Type = [VoidType] void
+# 1076| ValueCategory = prvalue
+# 1076| getQualifier(): [VariableAccess] x352
+# 1076| Type = [Struct] String
+# 1076| ValueCategory = lvalue
+# 1076| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1076| Conversion = [BoolConversion] conversion to bool
+# 1076| Type = [BoolType] bool
+# 1076| Value = [CStyleCast] 0
+# 1076| ValueCategory = prvalue
+# 1077| getStmt(353): [DoStmt] do (...) ...
+# 1079| getCondition(): [Literal] 0
+# 1079| Type = [IntType] int
+# 1079| Value = [Literal] 0
+# 1079| ValueCategory = prvalue
+# 1077| getStmt(): [BlockStmt] { ... }
+# 1078| getStmt(0): [DeclStmt] declaration
+# 1078| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x353
+# 1078| Type = [Struct] String
+# 1078| getVariable().getInitializer(): [Initializer] initializer for x353
+# 1078| getExpr(): [ConstructorCall] call to String
+# 1078| Type = [VoidType] void
+# 1078| ValueCategory = prvalue
+# 1079| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1079| Type = [VoidType] void
+# 1079| ValueCategory = prvalue
+# 1079| getQualifier(): [VariableAccess] x353
+# 1079| Type = [Struct] String
+# 1079| ValueCategory = lvalue
+# 1079| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1079| Conversion = [BoolConversion] conversion to bool
+# 1079| Type = [BoolType] bool
+# 1079| Value = [CStyleCast] 0
+# 1079| ValueCategory = prvalue
+# 1080| getStmt(354): [DoStmt] do (...) ...
+# 1082| getCondition(): [Literal] 0
+# 1082| Type = [IntType] int
+# 1082| Value = [Literal] 0
+# 1082| ValueCategory = prvalue
+# 1080| getStmt(): [BlockStmt] { ... }
+# 1081| getStmt(0): [DeclStmt] declaration
+# 1081| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x354
+# 1081| Type = [Struct] String
+# 1081| getVariable().getInitializer(): [Initializer] initializer for x354
+# 1081| getExpr(): [ConstructorCall] call to String
+# 1081| Type = [VoidType] void
+# 1081| ValueCategory = prvalue
+# 1082| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1082| Type = [VoidType] void
+# 1082| ValueCategory = prvalue
+# 1082| getQualifier(): [VariableAccess] x354
+# 1082| Type = [Struct] String
+# 1082| ValueCategory = lvalue
+# 1082| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1082| Conversion = [BoolConversion] conversion to bool
+# 1082| Type = [BoolType] bool
+# 1082| Value = [CStyleCast] 0
+# 1082| ValueCategory = prvalue
+# 1083| getStmt(355): [DoStmt] do (...) ...
+# 1085| getCondition(): [Literal] 0
+# 1085| Type = [IntType] int
+# 1085| Value = [Literal] 0
+# 1085| ValueCategory = prvalue
+# 1083| getStmt(): [BlockStmt] { ... }
+# 1084| getStmt(0): [DeclStmt] declaration
+# 1084| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x355
+# 1084| Type = [Struct] String
+# 1084| getVariable().getInitializer(): [Initializer] initializer for x355
+# 1084| getExpr(): [ConstructorCall] call to String
+# 1084| Type = [VoidType] void
+# 1084| ValueCategory = prvalue
+# 1085| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1085| Type = [VoidType] void
+# 1085| ValueCategory = prvalue
+# 1085| getQualifier(): [VariableAccess] x355
+# 1085| Type = [Struct] String
+# 1085| ValueCategory = lvalue
+# 1085| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1085| Conversion = [BoolConversion] conversion to bool
+# 1085| Type = [BoolType] bool
+# 1085| Value = [CStyleCast] 0
+# 1085| ValueCategory = prvalue
+# 1086| getStmt(356): [DoStmt] do (...) ...
+# 1088| getCondition(): [Literal] 0
+# 1088| Type = [IntType] int
+# 1088| Value = [Literal] 0
+# 1088| ValueCategory = prvalue
+# 1086| getStmt(): [BlockStmt] { ... }
+# 1087| getStmt(0): [DeclStmt] declaration
+# 1087| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x356
+# 1087| Type = [Struct] String
+# 1087| getVariable().getInitializer(): [Initializer] initializer for x356
+# 1087| getExpr(): [ConstructorCall] call to String
+# 1087| Type = [VoidType] void
+# 1087| ValueCategory = prvalue
+# 1088| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1088| Type = [VoidType] void
+# 1088| ValueCategory = prvalue
+# 1088| getQualifier(): [VariableAccess] x356
+# 1088| Type = [Struct] String
+# 1088| ValueCategory = lvalue
+# 1088| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1088| Conversion = [BoolConversion] conversion to bool
+# 1088| Type = [BoolType] bool
+# 1088| Value = [CStyleCast] 0
+# 1088| ValueCategory = prvalue
+# 1089| getStmt(357): [DoStmt] do (...) ...
+# 1091| getCondition(): [Literal] 0
+# 1091| Type = [IntType] int
+# 1091| Value = [Literal] 0
+# 1091| ValueCategory = prvalue
+# 1089| getStmt(): [BlockStmt] { ... }
+# 1090| getStmt(0): [DeclStmt] declaration
+# 1090| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x357
+# 1090| Type = [Struct] String
+# 1090| getVariable().getInitializer(): [Initializer] initializer for x357
+# 1090| getExpr(): [ConstructorCall] call to String
+# 1090| Type = [VoidType] void
+# 1090| ValueCategory = prvalue
+# 1091| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1091| Type = [VoidType] void
+# 1091| ValueCategory = prvalue
+# 1091| getQualifier(): [VariableAccess] x357
+# 1091| Type = [Struct] String
+# 1091| ValueCategory = lvalue
+# 1091| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1091| Conversion = [BoolConversion] conversion to bool
+# 1091| Type = [BoolType] bool
+# 1091| Value = [CStyleCast] 0
+# 1091| ValueCategory = prvalue
+# 1092| getStmt(358): [DoStmt] do (...) ...
+# 1094| getCondition(): [Literal] 0
+# 1094| Type = [IntType] int
+# 1094| Value = [Literal] 0
+# 1094| ValueCategory = prvalue
+# 1092| getStmt(): [BlockStmt] { ... }
+# 1093| getStmt(0): [DeclStmt] declaration
+# 1093| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x358
+# 1093| Type = [Struct] String
+# 1093| getVariable().getInitializer(): [Initializer] initializer for x358
+# 1093| getExpr(): [ConstructorCall] call to String
+# 1093| Type = [VoidType] void
+# 1093| ValueCategory = prvalue
+# 1094| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1094| Type = [VoidType] void
+# 1094| ValueCategory = prvalue
+# 1094| getQualifier(): [VariableAccess] x358
+# 1094| Type = [Struct] String
+# 1094| ValueCategory = lvalue
+# 1094| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1094| Conversion = [BoolConversion] conversion to bool
+# 1094| Type = [BoolType] bool
+# 1094| Value = [CStyleCast] 0
+# 1094| ValueCategory = prvalue
+# 1095| getStmt(359): [DoStmt] do (...) ...
+# 1097| getCondition(): [Literal] 0
+# 1097| Type = [IntType] int
+# 1097| Value = [Literal] 0
+# 1097| ValueCategory = prvalue
+# 1095| getStmt(): [BlockStmt] { ... }
+# 1096| getStmt(0): [DeclStmt] declaration
+# 1096| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x359
+# 1096| Type = [Struct] String
+# 1096| getVariable().getInitializer(): [Initializer] initializer for x359
+# 1096| getExpr(): [ConstructorCall] call to String
+# 1096| Type = [VoidType] void
+# 1096| ValueCategory = prvalue
+# 1097| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1097| Type = [VoidType] void
+# 1097| ValueCategory = prvalue
+# 1097| getQualifier(): [VariableAccess] x359
+# 1097| Type = [Struct] String
+# 1097| ValueCategory = lvalue
+# 1097| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1097| Conversion = [BoolConversion] conversion to bool
+# 1097| Type = [BoolType] bool
+# 1097| Value = [CStyleCast] 0
+# 1097| ValueCategory = prvalue
+# 1098| getStmt(360): [DoStmt] do (...) ...
+# 1100| getCondition(): [Literal] 0
+# 1100| Type = [IntType] int
+# 1100| Value = [Literal] 0
+# 1100| ValueCategory = prvalue
+# 1098| getStmt(): [BlockStmt] { ... }
+# 1099| getStmt(0): [DeclStmt] declaration
+# 1099| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x360
+# 1099| Type = [Struct] String
+# 1099| getVariable().getInitializer(): [Initializer] initializer for x360
+# 1099| getExpr(): [ConstructorCall] call to String
+# 1099| Type = [VoidType] void
+# 1099| ValueCategory = prvalue
+# 1100| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1100| Type = [VoidType] void
+# 1100| ValueCategory = prvalue
+# 1100| getQualifier(): [VariableAccess] x360
+# 1100| Type = [Struct] String
+# 1100| ValueCategory = lvalue
+# 1100| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1100| Conversion = [BoolConversion] conversion to bool
+# 1100| Type = [BoolType] bool
+# 1100| Value = [CStyleCast] 0
+# 1100| ValueCategory = prvalue
+# 1101| getStmt(361): [DoStmt] do (...) ...
+# 1103| getCondition(): [Literal] 0
+# 1103| Type = [IntType] int
+# 1103| Value = [Literal] 0
+# 1103| ValueCategory = prvalue
+# 1101| getStmt(): [BlockStmt] { ... }
+# 1102| getStmt(0): [DeclStmt] declaration
+# 1102| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x361
+# 1102| Type = [Struct] String
+# 1102| getVariable().getInitializer(): [Initializer] initializer for x361
+# 1102| getExpr(): [ConstructorCall] call to String
+# 1102| Type = [VoidType] void
+# 1102| ValueCategory = prvalue
+# 1103| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1103| Type = [VoidType] void
+# 1103| ValueCategory = prvalue
+# 1103| getQualifier(): [VariableAccess] x361
+# 1103| Type = [Struct] String
+# 1103| ValueCategory = lvalue
+# 1103| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1103| Conversion = [BoolConversion] conversion to bool
+# 1103| Type = [BoolType] bool
+# 1103| Value = [CStyleCast] 0
+# 1103| ValueCategory = prvalue
+# 1104| getStmt(362): [DoStmt] do (...) ...
+# 1106| getCondition(): [Literal] 0
+# 1106| Type = [IntType] int
+# 1106| Value = [Literal] 0
+# 1106| ValueCategory = prvalue
+# 1104| getStmt(): [BlockStmt] { ... }
+# 1105| getStmt(0): [DeclStmt] declaration
+# 1105| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x362
+# 1105| Type = [Struct] String
+# 1105| getVariable().getInitializer(): [Initializer] initializer for x362
+# 1105| getExpr(): [ConstructorCall] call to String
+# 1105| Type = [VoidType] void
+# 1105| ValueCategory = prvalue
+# 1106| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1106| Type = [VoidType] void
+# 1106| ValueCategory = prvalue
+# 1106| getQualifier(): [VariableAccess] x362
+# 1106| Type = [Struct] String
+# 1106| ValueCategory = lvalue
+# 1106| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1106| Conversion = [BoolConversion] conversion to bool
+# 1106| Type = [BoolType] bool
+# 1106| Value = [CStyleCast] 0
+# 1106| ValueCategory = prvalue
+# 1107| getStmt(363): [DoStmt] do (...) ...
+# 1109| getCondition(): [Literal] 0
+# 1109| Type = [IntType] int
+# 1109| Value = [Literal] 0
+# 1109| ValueCategory = prvalue
+# 1107| getStmt(): [BlockStmt] { ... }
+# 1108| getStmt(0): [DeclStmt] declaration
+# 1108| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x363
+# 1108| Type = [Struct] String
+# 1108| getVariable().getInitializer(): [Initializer] initializer for x363
+# 1108| getExpr(): [ConstructorCall] call to String
+# 1108| Type = [VoidType] void
+# 1108| ValueCategory = prvalue
+# 1109| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1109| Type = [VoidType] void
+# 1109| ValueCategory = prvalue
+# 1109| getQualifier(): [VariableAccess] x363
+# 1109| Type = [Struct] String
+# 1109| ValueCategory = lvalue
+# 1109| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1109| Conversion = [BoolConversion] conversion to bool
+# 1109| Type = [BoolType] bool
+# 1109| Value = [CStyleCast] 0
+# 1109| ValueCategory = prvalue
+# 1110| getStmt(364): [DoStmt] do (...) ...
+# 1112| getCondition(): [Literal] 0
+# 1112| Type = [IntType] int
+# 1112| Value = [Literal] 0
+# 1112| ValueCategory = prvalue
+# 1110| getStmt(): [BlockStmt] { ... }
+# 1111| getStmt(0): [DeclStmt] declaration
+# 1111| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x364
+# 1111| Type = [Struct] String
+# 1111| getVariable().getInitializer(): [Initializer] initializer for x364
+# 1111| getExpr(): [ConstructorCall] call to String
+# 1111| Type = [VoidType] void
+# 1111| ValueCategory = prvalue
+# 1112| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1112| Type = [VoidType] void
+# 1112| ValueCategory = prvalue
+# 1112| getQualifier(): [VariableAccess] x364
+# 1112| Type = [Struct] String
+# 1112| ValueCategory = lvalue
+# 1112| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1112| Conversion = [BoolConversion] conversion to bool
+# 1112| Type = [BoolType] bool
+# 1112| Value = [CStyleCast] 0
+# 1112| ValueCategory = prvalue
+# 1113| getStmt(365): [DoStmt] do (...) ...
+# 1115| getCondition(): [Literal] 0
+# 1115| Type = [IntType] int
+# 1115| Value = [Literal] 0
+# 1115| ValueCategory = prvalue
+# 1113| getStmt(): [BlockStmt] { ... }
+# 1114| getStmt(0): [DeclStmt] declaration
+# 1114| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x365
+# 1114| Type = [Struct] String
+# 1114| getVariable().getInitializer(): [Initializer] initializer for x365
+# 1114| getExpr(): [ConstructorCall] call to String
+# 1114| Type = [VoidType] void
+# 1114| ValueCategory = prvalue
+# 1115| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1115| Type = [VoidType] void
+# 1115| ValueCategory = prvalue
+# 1115| getQualifier(): [VariableAccess] x365
+# 1115| Type = [Struct] String
+# 1115| ValueCategory = lvalue
+# 1115| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1115| Conversion = [BoolConversion] conversion to bool
+# 1115| Type = [BoolType] bool
+# 1115| Value = [CStyleCast] 0
+# 1115| ValueCategory = prvalue
+# 1116| getStmt(366): [DoStmt] do (...) ...
+# 1118| getCondition(): [Literal] 0
+# 1118| Type = [IntType] int
+# 1118| Value = [Literal] 0
+# 1118| ValueCategory = prvalue
+# 1116| getStmt(): [BlockStmt] { ... }
+# 1117| getStmt(0): [DeclStmt] declaration
+# 1117| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x366
+# 1117| Type = [Struct] String
+# 1117| getVariable().getInitializer(): [Initializer] initializer for x366
+# 1117| getExpr(): [ConstructorCall] call to String
+# 1117| Type = [VoidType] void
+# 1117| ValueCategory = prvalue
+# 1118| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1118| Type = [VoidType] void
+# 1118| ValueCategory = prvalue
+# 1118| getQualifier(): [VariableAccess] x366
+# 1118| Type = [Struct] String
+# 1118| ValueCategory = lvalue
+# 1118| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1118| Conversion = [BoolConversion] conversion to bool
+# 1118| Type = [BoolType] bool
+# 1118| Value = [CStyleCast] 0
+# 1118| ValueCategory = prvalue
+# 1119| getStmt(367): [DoStmt] do (...) ...
+# 1121| getCondition(): [Literal] 0
+# 1121| Type = [IntType] int
+# 1121| Value = [Literal] 0
+# 1121| ValueCategory = prvalue
+# 1119| getStmt(): [BlockStmt] { ... }
+# 1120| getStmt(0): [DeclStmt] declaration
+# 1120| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x367
+# 1120| Type = [Struct] String
+# 1120| getVariable().getInitializer(): [Initializer] initializer for x367
+# 1120| getExpr(): [ConstructorCall] call to String
+# 1120| Type = [VoidType] void
+# 1120| ValueCategory = prvalue
+# 1121| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1121| Type = [VoidType] void
+# 1121| ValueCategory = prvalue
+# 1121| getQualifier(): [VariableAccess] x367
+# 1121| Type = [Struct] String
+# 1121| ValueCategory = lvalue
+# 1121| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1121| Conversion = [BoolConversion] conversion to bool
+# 1121| Type = [BoolType] bool
+# 1121| Value = [CStyleCast] 0
+# 1121| ValueCategory = prvalue
+# 1122| getStmt(368): [DoStmt] do (...) ...
+# 1124| getCondition(): [Literal] 0
+# 1124| Type = [IntType] int
+# 1124| Value = [Literal] 0
+# 1124| ValueCategory = prvalue
+# 1122| getStmt(): [BlockStmt] { ... }
+# 1123| getStmt(0): [DeclStmt] declaration
+# 1123| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x368
+# 1123| Type = [Struct] String
+# 1123| getVariable().getInitializer(): [Initializer] initializer for x368
+# 1123| getExpr(): [ConstructorCall] call to String
+# 1123| Type = [VoidType] void
+# 1123| ValueCategory = prvalue
+# 1124| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1124| Type = [VoidType] void
+# 1124| ValueCategory = prvalue
+# 1124| getQualifier(): [VariableAccess] x368
+# 1124| Type = [Struct] String
+# 1124| ValueCategory = lvalue
+# 1124| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1124| Conversion = [BoolConversion] conversion to bool
+# 1124| Type = [BoolType] bool
+# 1124| Value = [CStyleCast] 0
+# 1124| ValueCategory = prvalue
+# 1125| getStmt(369): [DoStmt] do (...) ...
+# 1127| getCondition(): [Literal] 0
+# 1127| Type = [IntType] int
+# 1127| Value = [Literal] 0
+# 1127| ValueCategory = prvalue
+# 1125| getStmt(): [BlockStmt] { ... }
+# 1126| getStmt(0): [DeclStmt] declaration
+# 1126| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x369
+# 1126| Type = [Struct] String
+# 1126| getVariable().getInitializer(): [Initializer] initializer for x369
+# 1126| getExpr(): [ConstructorCall] call to String
+# 1126| Type = [VoidType] void
+# 1126| ValueCategory = prvalue
+# 1127| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1127| Type = [VoidType] void
+# 1127| ValueCategory = prvalue
+# 1127| getQualifier(): [VariableAccess] x369
+# 1127| Type = [Struct] String
+# 1127| ValueCategory = lvalue
+# 1127| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1127| Conversion = [BoolConversion] conversion to bool
+# 1127| Type = [BoolType] bool
+# 1127| Value = [CStyleCast] 0
+# 1127| ValueCategory = prvalue
+# 1128| getStmt(370): [DoStmt] do (...) ...
+# 1130| getCondition(): [Literal] 0
+# 1130| Type = [IntType] int
+# 1130| Value = [Literal] 0
+# 1130| ValueCategory = prvalue
+# 1128| getStmt(): [BlockStmt] { ... }
+# 1129| getStmt(0): [DeclStmt] declaration
+# 1129| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x370
+# 1129| Type = [Struct] String
+# 1129| getVariable().getInitializer(): [Initializer] initializer for x370
+# 1129| getExpr(): [ConstructorCall] call to String
+# 1129| Type = [VoidType] void
+# 1129| ValueCategory = prvalue
+# 1130| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1130| Type = [VoidType] void
+# 1130| ValueCategory = prvalue
+# 1130| getQualifier(): [VariableAccess] x370
+# 1130| Type = [Struct] String
+# 1130| ValueCategory = lvalue
+# 1130| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1130| Conversion = [BoolConversion] conversion to bool
+# 1130| Type = [BoolType] bool
+# 1130| Value = [CStyleCast] 0
+# 1130| ValueCategory = prvalue
+# 1131| getStmt(371): [DoStmt] do (...) ...
+# 1133| getCondition(): [Literal] 0
+# 1133| Type = [IntType] int
+# 1133| Value = [Literal] 0
+# 1133| ValueCategory = prvalue
+# 1131| getStmt(): [BlockStmt] { ... }
+# 1132| getStmt(0): [DeclStmt] declaration
+# 1132| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x371
+# 1132| Type = [Struct] String
+# 1132| getVariable().getInitializer(): [Initializer] initializer for x371
+# 1132| getExpr(): [ConstructorCall] call to String
+# 1132| Type = [VoidType] void
+# 1132| ValueCategory = prvalue
+# 1133| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1133| Type = [VoidType] void
+# 1133| ValueCategory = prvalue
+# 1133| getQualifier(): [VariableAccess] x371
+# 1133| Type = [Struct] String
+# 1133| ValueCategory = lvalue
+# 1133| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1133| Conversion = [BoolConversion] conversion to bool
+# 1133| Type = [BoolType] bool
+# 1133| Value = [CStyleCast] 0
+# 1133| ValueCategory = prvalue
+# 1134| getStmt(372): [DoStmt] do (...) ...
+# 1136| getCondition(): [Literal] 0
+# 1136| Type = [IntType] int
+# 1136| Value = [Literal] 0
+# 1136| ValueCategory = prvalue
+# 1134| getStmt(): [BlockStmt] { ... }
+# 1135| getStmt(0): [DeclStmt] declaration
+# 1135| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x372
+# 1135| Type = [Struct] String
+# 1135| getVariable().getInitializer(): [Initializer] initializer for x372
+# 1135| getExpr(): [ConstructorCall] call to String
+# 1135| Type = [VoidType] void
+# 1135| ValueCategory = prvalue
+# 1136| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1136| Type = [VoidType] void
+# 1136| ValueCategory = prvalue
+# 1136| getQualifier(): [VariableAccess] x372
+# 1136| Type = [Struct] String
+# 1136| ValueCategory = lvalue
+# 1136| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1136| Conversion = [BoolConversion] conversion to bool
+# 1136| Type = [BoolType] bool
+# 1136| Value = [CStyleCast] 0
+# 1136| ValueCategory = prvalue
+# 1137| getStmt(373): [DoStmt] do (...) ...
+# 1139| getCondition(): [Literal] 0
+# 1139| Type = [IntType] int
+# 1139| Value = [Literal] 0
+# 1139| ValueCategory = prvalue
+# 1137| getStmt(): [BlockStmt] { ... }
+# 1138| getStmt(0): [DeclStmt] declaration
+# 1138| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x373
+# 1138| Type = [Struct] String
+# 1138| getVariable().getInitializer(): [Initializer] initializer for x373
+# 1138| getExpr(): [ConstructorCall] call to String
+# 1138| Type = [VoidType] void
+# 1138| ValueCategory = prvalue
+# 1139| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1139| Type = [VoidType] void
+# 1139| ValueCategory = prvalue
+# 1139| getQualifier(): [VariableAccess] x373
+# 1139| Type = [Struct] String
+# 1139| ValueCategory = lvalue
+# 1139| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1139| Conversion = [BoolConversion] conversion to bool
+# 1139| Type = [BoolType] bool
+# 1139| Value = [CStyleCast] 0
+# 1139| ValueCategory = prvalue
+# 1140| getStmt(374): [DoStmt] do (...) ...
+# 1142| getCondition(): [Literal] 0
+# 1142| Type = [IntType] int
+# 1142| Value = [Literal] 0
+# 1142| ValueCategory = prvalue
+# 1140| getStmt(): [BlockStmt] { ... }
+# 1141| getStmt(0): [DeclStmt] declaration
+# 1141| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x374
+# 1141| Type = [Struct] String
+# 1141| getVariable().getInitializer(): [Initializer] initializer for x374
+# 1141| getExpr(): [ConstructorCall] call to String
+# 1141| Type = [VoidType] void
+# 1141| ValueCategory = prvalue
+# 1142| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1142| Type = [VoidType] void
+# 1142| ValueCategory = prvalue
+# 1142| getQualifier(): [VariableAccess] x374
+# 1142| Type = [Struct] String
+# 1142| ValueCategory = lvalue
+# 1142| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1142| Conversion = [BoolConversion] conversion to bool
+# 1142| Type = [BoolType] bool
+# 1142| Value = [CStyleCast] 0
+# 1142| ValueCategory = prvalue
+# 1143| getStmt(375): [DoStmt] do (...) ...
+# 1145| getCondition(): [Literal] 0
+# 1145| Type = [IntType] int
+# 1145| Value = [Literal] 0
+# 1145| ValueCategory = prvalue
+# 1143| getStmt(): [BlockStmt] { ... }
+# 1144| getStmt(0): [DeclStmt] declaration
+# 1144| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x375
+# 1144| Type = [Struct] String
+# 1144| getVariable().getInitializer(): [Initializer] initializer for x375
+# 1144| getExpr(): [ConstructorCall] call to String
+# 1144| Type = [VoidType] void
+# 1144| ValueCategory = prvalue
+# 1145| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1145| Type = [VoidType] void
+# 1145| ValueCategory = prvalue
+# 1145| getQualifier(): [VariableAccess] x375
+# 1145| Type = [Struct] String
+# 1145| ValueCategory = lvalue
+# 1145| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1145| Conversion = [BoolConversion] conversion to bool
+# 1145| Type = [BoolType] bool
+# 1145| Value = [CStyleCast] 0
+# 1145| ValueCategory = prvalue
+# 1146| getStmt(376): [DoStmt] do (...) ...
+# 1148| getCondition(): [Literal] 0
+# 1148| Type = [IntType] int
+# 1148| Value = [Literal] 0
+# 1148| ValueCategory = prvalue
+# 1146| getStmt(): [BlockStmt] { ... }
+# 1147| getStmt(0): [DeclStmt] declaration
+# 1147| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x376
+# 1147| Type = [Struct] String
+# 1147| getVariable().getInitializer(): [Initializer] initializer for x376
+# 1147| getExpr(): [ConstructorCall] call to String
+# 1147| Type = [VoidType] void
+# 1147| ValueCategory = prvalue
+# 1148| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1148| Type = [VoidType] void
+# 1148| ValueCategory = prvalue
+# 1148| getQualifier(): [VariableAccess] x376
+# 1148| Type = [Struct] String
+# 1148| ValueCategory = lvalue
+# 1148| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1148| Conversion = [BoolConversion] conversion to bool
+# 1148| Type = [BoolType] bool
+# 1148| Value = [CStyleCast] 0
+# 1148| ValueCategory = prvalue
+# 1149| getStmt(377): [DoStmt] do (...) ...
+# 1151| getCondition(): [Literal] 0
+# 1151| Type = [IntType] int
+# 1151| Value = [Literal] 0
+# 1151| ValueCategory = prvalue
+# 1149| getStmt(): [BlockStmt] { ... }
+# 1150| getStmt(0): [DeclStmt] declaration
+# 1150| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x377
+# 1150| Type = [Struct] String
+# 1150| getVariable().getInitializer(): [Initializer] initializer for x377
+# 1150| getExpr(): [ConstructorCall] call to String
+# 1150| Type = [VoidType] void
+# 1150| ValueCategory = prvalue
+# 1151| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1151| Type = [VoidType] void
+# 1151| ValueCategory = prvalue
+# 1151| getQualifier(): [VariableAccess] x377
+# 1151| Type = [Struct] String
+# 1151| ValueCategory = lvalue
+# 1151| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1151| Conversion = [BoolConversion] conversion to bool
+# 1151| Type = [BoolType] bool
+# 1151| Value = [CStyleCast] 0
+# 1151| ValueCategory = prvalue
+# 1152| getStmt(378): [DoStmt] do (...) ...
+# 1154| getCondition(): [Literal] 0
+# 1154| Type = [IntType] int
+# 1154| Value = [Literal] 0
+# 1154| ValueCategory = prvalue
+# 1152| getStmt(): [BlockStmt] { ... }
+# 1153| getStmt(0): [DeclStmt] declaration
+# 1153| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x378
+# 1153| Type = [Struct] String
+# 1153| getVariable().getInitializer(): [Initializer] initializer for x378
+# 1153| getExpr(): [ConstructorCall] call to String
+# 1153| Type = [VoidType] void
+# 1153| ValueCategory = prvalue
+# 1154| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1154| Type = [VoidType] void
+# 1154| ValueCategory = prvalue
+# 1154| getQualifier(): [VariableAccess] x378
+# 1154| Type = [Struct] String
+# 1154| ValueCategory = lvalue
+# 1154| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1154| Conversion = [BoolConversion] conversion to bool
+# 1154| Type = [BoolType] bool
+# 1154| Value = [CStyleCast] 0
+# 1154| ValueCategory = prvalue
+# 1155| getStmt(379): [DoStmt] do (...) ...
+# 1157| getCondition(): [Literal] 0
+# 1157| Type = [IntType] int
+# 1157| Value = [Literal] 0
+# 1157| ValueCategory = prvalue
+# 1155| getStmt(): [BlockStmt] { ... }
+# 1156| getStmt(0): [DeclStmt] declaration
+# 1156| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x379
+# 1156| Type = [Struct] String
+# 1156| getVariable().getInitializer(): [Initializer] initializer for x379
+# 1156| getExpr(): [ConstructorCall] call to String
+# 1156| Type = [VoidType] void
+# 1156| ValueCategory = prvalue
+# 1157| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1157| Type = [VoidType] void
+# 1157| ValueCategory = prvalue
+# 1157| getQualifier(): [VariableAccess] x379
+# 1157| Type = [Struct] String
+# 1157| ValueCategory = lvalue
+# 1157| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1157| Conversion = [BoolConversion] conversion to bool
+# 1157| Type = [BoolType] bool
+# 1157| Value = [CStyleCast] 0
+# 1157| ValueCategory = prvalue
+# 1158| getStmt(380): [DoStmt] do (...) ...
+# 1160| getCondition(): [Literal] 0
+# 1160| Type = [IntType] int
+# 1160| Value = [Literal] 0
+# 1160| ValueCategory = prvalue
+# 1158| getStmt(): [BlockStmt] { ... }
+# 1159| getStmt(0): [DeclStmt] declaration
+# 1159| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x380
+# 1159| Type = [Struct] String
+# 1159| getVariable().getInitializer(): [Initializer] initializer for x380
+# 1159| getExpr(): [ConstructorCall] call to String
+# 1159| Type = [VoidType] void
+# 1159| ValueCategory = prvalue
+# 1160| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1160| Type = [VoidType] void
+# 1160| ValueCategory = prvalue
+# 1160| getQualifier(): [VariableAccess] x380
+# 1160| Type = [Struct] String
+# 1160| ValueCategory = lvalue
+# 1160| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1160| Conversion = [BoolConversion] conversion to bool
+# 1160| Type = [BoolType] bool
+# 1160| Value = [CStyleCast] 0
+# 1160| ValueCategory = prvalue
+# 1161| getStmt(381): [DoStmt] do (...) ...
+# 1163| getCondition(): [Literal] 0
+# 1163| Type = [IntType] int
+# 1163| Value = [Literal] 0
+# 1163| ValueCategory = prvalue
+# 1161| getStmt(): [BlockStmt] { ... }
+# 1162| getStmt(0): [DeclStmt] declaration
+# 1162| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x381
+# 1162| Type = [Struct] String
+# 1162| getVariable().getInitializer(): [Initializer] initializer for x381
+# 1162| getExpr(): [ConstructorCall] call to String
+# 1162| Type = [VoidType] void
+# 1162| ValueCategory = prvalue
+# 1163| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1163| Type = [VoidType] void
+# 1163| ValueCategory = prvalue
+# 1163| getQualifier(): [VariableAccess] x381
+# 1163| Type = [Struct] String
+# 1163| ValueCategory = lvalue
+# 1163| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1163| Conversion = [BoolConversion] conversion to bool
+# 1163| Type = [BoolType] bool
+# 1163| Value = [CStyleCast] 0
+# 1163| ValueCategory = prvalue
+# 1164| getStmt(382): [DoStmt] do (...) ...
+# 1166| getCondition(): [Literal] 0
+# 1166| Type = [IntType] int
+# 1166| Value = [Literal] 0
+# 1166| ValueCategory = prvalue
+# 1164| getStmt(): [BlockStmt] { ... }
+# 1165| getStmt(0): [DeclStmt] declaration
+# 1165| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x382
+# 1165| Type = [Struct] String
+# 1165| getVariable().getInitializer(): [Initializer] initializer for x382
+# 1165| getExpr(): [ConstructorCall] call to String
+# 1165| Type = [VoidType] void
+# 1165| ValueCategory = prvalue
+# 1166| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1166| Type = [VoidType] void
+# 1166| ValueCategory = prvalue
+# 1166| getQualifier(): [VariableAccess] x382
+# 1166| Type = [Struct] String
+# 1166| ValueCategory = lvalue
+# 1166| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1166| Conversion = [BoolConversion] conversion to bool
+# 1166| Type = [BoolType] bool
+# 1166| Value = [CStyleCast] 0
+# 1166| ValueCategory = prvalue
+# 1167| getStmt(383): [DoStmt] do (...) ...
+# 1169| getCondition(): [Literal] 0
+# 1169| Type = [IntType] int
+# 1169| Value = [Literal] 0
+# 1169| ValueCategory = prvalue
+# 1167| getStmt(): [BlockStmt] { ... }
+# 1168| getStmt(0): [DeclStmt] declaration
+# 1168| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x383
+# 1168| Type = [Struct] String
+# 1168| getVariable().getInitializer(): [Initializer] initializer for x383
+# 1168| getExpr(): [ConstructorCall] call to String
+# 1168| Type = [VoidType] void
+# 1168| ValueCategory = prvalue
+# 1169| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1169| Type = [VoidType] void
+# 1169| ValueCategory = prvalue
+# 1169| getQualifier(): [VariableAccess] x383
+# 1169| Type = [Struct] String
+# 1169| ValueCategory = lvalue
+# 1169| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1169| Conversion = [BoolConversion] conversion to bool
+# 1169| Type = [BoolType] bool
+# 1169| Value = [CStyleCast] 0
+# 1169| ValueCategory = prvalue
+# 1170| getStmt(384): [DoStmt] do (...) ...
+# 1172| getCondition(): [Literal] 0
+# 1172| Type = [IntType] int
+# 1172| Value = [Literal] 0
+# 1172| ValueCategory = prvalue
+# 1170| getStmt(): [BlockStmt] { ... }
+# 1171| getStmt(0): [DeclStmt] declaration
+# 1171| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x384
+# 1171| Type = [Struct] String
+# 1171| getVariable().getInitializer(): [Initializer] initializer for x384
+# 1171| getExpr(): [ConstructorCall] call to String
+# 1171| Type = [VoidType] void
+# 1171| ValueCategory = prvalue
+# 1172| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1172| Type = [VoidType] void
+# 1172| ValueCategory = prvalue
+# 1172| getQualifier(): [VariableAccess] x384
+# 1172| Type = [Struct] String
+# 1172| ValueCategory = lvalue
+# 1172| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1172| Conversion = [BoolConversion] conversion to bool
+# 1172| Type = [BoolType] bool
+# 1172| Value = [CStyleCast] 0
+# 1172| ValueCategory = prvalue
+# 1173| getStmt(385): [DoStmt] do (...) ...
+# 1175| getCondition(): [Literal] 0
+# 1175| Type = [IntType] int
+# 1175| Value = [Literal] 0
+# 1175| ValueCategory = prvalue
+# 1173| getStmt(): [BlockStmt] { ... }
+# 1174| getStmt(0): [DeclStmt] declaration
+# 1174| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x385
+# 1174| Type = [Struct] String
+# 1174| getVariable().getInitializer(): [Initializer] initializer for x385
+# 1174| getExpr(): [ConstructorCall] call to String
+# 1174| Type = [VoidType] void
+# 1174| ValueCategory = prvalue
+# 1175| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1175| Type = [VoidType] void
+# 1175| ValueCategory = prvalue
+# 1175| getQualifier(): [VariableAccess] x385
+# 1175| Type = [Struct] String
+# 1175| ValueCategory = lvalue
+# 1175| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1175| Conversion = [BoolConversion] conversion to bool
+# 1175| Type = [BoolType] bool
+# 1175| Value = [CStyleCast] 0
+# 1175| ValueCategory = prvalue
+# 1176| getStmt(386): [DoStmt] do (...) ...
+# 1178| getCondition(): [Literal] 0
+# 1178| Type = [IntType] int
+# 1178| Value = [Literal] 0
+# 1178| ValueCategory = prvalue
+# 1176| getStmt(): [BlockStmt] { ... }
+# 1177| getStmt(0): [DeclStmt] declaration
+# 1177| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x386
+# 1177| Type = [Struct] String
+# 1177| getVariable().getInitializer(): [Initializer] initializer for x386
+# 1177| getExpr(): [ConstructorCall] call to String
+# 1177| Type = [VoidType] void
+# 1177| ValueCategory = prvalue
+# 1178| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1178| Type = [VoidType] void
+# 1178| ValueCategory = prvalue
+# 1178| getQualifier(): [VariableAccess] x386
+# 1178| Type = [Struct] String
+# 1178| ValueCategory = lvalue
+# 1178| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1178| Conversion = [BoolConversion] conversion to bool
+# 1178| Type = [BoolType] bool
+# 1178| Value = [CStyleCast] 0
+# 1178| ValueCategory = prvalue
+# 1179| getStmt(387): [DoStmt] do (...) ...
+# 1181| getCondition(): [Literal] 0
+# 1181| Type = [IntType] int
+# 1181| Value = [Literal] 0
+# 1181| ValueCategory = prvalue
+# 1179| getStmt(): [BlockStmt] { ... }
+# 1180| getStmt(0): [DeclStmt] declaration
+# 1180| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x387
+# 1180| Type = [Struct] String
+# 1180| getVariable().getInitializer(): [Initializer] initializer for x387
+# 1180| getExpr(): [ConstructorCall] call to String
+# 1180| Type = [VoidType] void
+# 1180| ValueCategory = prvalue
+# 1181| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1181| Type = [VoidType] void
+# 1181| ValueCategory = prvalue
+# 1181| getQualifier(): [VariableAccess] x387
+# 1181| Type = [Struct] String
+# 1181| ValueCategory = lvalue
+# 1181| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1181| Conversion = [BoolConversion] conversion to bool
+# 1181| Type = [BoolType] bool
+# 1181| Value = [CStyleCast] 0
+# 1181| ValueCategory = prvalue
+# 1182| getStmt(388): [DoStmt] do (...) ...
+# 1184| getCondition(): [Literal] 0
+# 1184| Type = [IntType] int
+# 1184| Value = [Literal] 0
+# 1184| ValueCategory = prvalue
+# 1182| getStmt(): [BlockStmt] { ... }
+# 1183| getStmt(0): [DeclStmt] declaration
+# 1183| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x388
+# 1183| Type = [Struct] String
+# 1183| getVariable().getInitializer(): [Initializer] initializer for x388
+# 1183| getExpr(): [ConstructorCall] call to String
+# 1183| Type = [VoidType] void
+# 1183| ValueCategory = prvalue
+# 1184| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1184| Type = [VoidType] void
+# 1184| ValueCategory = prvalue
+# 1184| getQualifier(): [VariableAccess] x388
+# 1184| Type = [Struct] String
+# 1184| ValueCategory = lvalue
+# 1184| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1184| Conversion = [BoolConversion] conversion to bool
+# 1184| Type = [BoolType] bool
+# 1184| Value = [CStyleCast] 0
+# 1184| ValueCategory = prvalue
+# 1185| getStmt(389): [DoStmt] do (...) ...
+# 1187| getCondition(): [Literal] 0
+# 1187| Type = [IntType] int
+# 1187| Value = [Literal] 0
+# 1187| ValueCategory = prvalue
+# 1185| getStmt(): [BlockStmt] { ... }
+# 1186| getStmt(0): [DeclStmt] declaration
+# 1186| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x389
+# 1186| Type = [Struct] String
+# 1186| getVariable().getInitializer(): [Initializer] initializer for x389
+# 1186| getExpr(): [ConstructorCall] call to String
+# 1186| Type = [VoidType] void
+# 1186| ValueCategory = prvalue
+# 1187| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1187| Type = [VoidType] void
+# 1187| ValueCategory = prvalue
+# 1187| getQualifier(): [VariableAccess] x389
+# 1187| Type = [Struct] String
+# 1187| ValueCategory = lvalue
+# 1187| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1187| Conversion = [BoolConversion] conversion to bool
+# 1187| Type = [BoolType] bool
+# 1187| Value = [CStyleCast] 0
+# 1187| ValueCategory = prvalue
+# 1188| getStmt(390): [DoStmt] do (...) ...
+# 1190| getCondition(): [Literal] 0
+# 1190| Type = [IntType] int
+# 1190| Value = [Literal] 0
+# 1190| ValueCategory = prvalue
+# 1188| getStmt(): [BlockStmt] { ... }
+# 1189| getStmt(0): [DeclStmt] declaration
+# 1189| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x390
+# 1189| Type = [Struct] String
+# 1189| getVariable().getInitializer(): [Initializer] initializer for x390
+# 1189| getExpr(): [ConstructorCall] call to String
+# 1189| Type = [VoidType] void
+# 1189| ValueCategory = prvalue
+# 1190| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1190| Type = [VoidType] void
+# 1190| ValueCategory = prvalue
+# 1190| getQualifier(): [VariableAccess] x390
+# 1190| Type = [Struct] String
+# 1190| ValueCategory = lvalue
+# 1190| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1190| Conversion = [BoolConversion] conversion to bool
+# 1190| Type = [BoolType] bool
+# 1190| Value = [CStyleCast] 0
+# 1190| ValueCategory = prvalue
+# 1191| getStmt(391): [DoStmt] do (...) ...
+# 1193| getCondition(): [Literal] 0
+# 1193| Type = [IntType] int
+# 1193| Value = [Literal] 0
+# 1193| ValueCategory = prvalue
+# 1191| getStmt(): [BlockStmt] { ... }
+# 1192| getStmt(0): [DeclStmt] declaration
+# 1192| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x391
+# 1192| Type = [Struct] String
+# 1192| getVariable().getInitializer(): [Initializer] initializer for x391
+# 1192| getExpr(): [ConstructorCall] call to String
+# 1192| Type = [VoidType] void
+# 1192| ValueCategory = prvalue
+# 1193| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1193| Type = [VoidType] void
+# 1193| ValueCategory = prvalue
+# 1193| getQualifier(): [VariableAccess] x391
+# 1193| Type = [Struct] String
+# 1193| ValueCategory = lvalue
+# 1193| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1193| Conversion = [BoolConversion] conversion to bool
+# 1193| Type = [BoolType] bool
+# 1193| Value = [CStyleCast] 0
+# 1193| ValueCategory = prvalue
+# 1194| getStmt(392): [DoStmt] do (...) ...
+# 1196| getCondition(): [Literal] 0
+# 1196| Type = [IntType] int
+# 1196| Value = [Literal] 0
+# 1196| ValueCategory = prvalue
+# 1194| getStmt(): [BlockStmt] { ... }
+# 1195| getStmt(0): [DeclStmt] declaration
+# 1195| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x392
+# 1195| Type = [Struct] String
+# 1195| getVariable().getInitializer(): [Initializer] initializer for x392
+# 1195| getExpr(): [ConstructorCall] call to String
+# 1195| Type = [VoidType] void
+# 1195| ValueCategory = prvalue
+# 1196| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1196| Type = [VoidType] void
+# 1196| ValueCategory = prvalue
+# 1196| getQualifier(): [VariableAccess] x392
+# 1196| Type = [Struct] String
+# 1196| ValueCategory = lvalue
+# 1196| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1196| Conversion = [BoolConversion] conversion to bool
+# 1196| Type = [BoolType] bool
+# 1196| Value = [CStyleCast] 0
+# 1196| ValueCategory = prvalue
+# 1197| getStmt(393): [DoStmt] do (...) ...
+# 1199| getCondition(): [Literal] 0
+# 1199| Type = [IntType] int
+# 1199| Value = [Literal] 0
+# 1199| ValueCategory = prvalue
+# 1197| getStmt(): [BlockStmt] { ... }
+# 1198| getStmt(0): [DeclStmt] declaration
+# 1198| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x393
+# 1198| Type = [Struct] String
+# 1198| getVariable().getInitializer(): [Initializer] initializer for x393
+# 1198| getExpr(): [ConstructorCall] call to String
+# 1198| Type = [VoidType] void
+# 1198| ValueCategory = prvalue
+# 1199| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1199| Type = [VoidType] void
+# 1199| ValueCategory = prvalue
+# 1199| getQualifier(): [VariableAccess] x393
+# 1199| Type = [Struct] String
+# 1199| ValueCategory = lvalue
+# 1199| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1199| Conversion = [BoolConversion] conversion to bool
+# 1199| Type = [BoolType] bool
+# 1199| Value = [CStyleCast] 0
+# 1199| ValueCategory = prvalue
+# 1200| getStmt(394): [DoStmt] do (...) ...
+# 1202| getCondition(): [Literal] 0
+# 1202| Type = [IntType] int
+# 1202| Value = [Literal] 0
+# 1202| ValueCategory = prvalue
+# 1200| getStmt(): [BlockStmt] { ... }
+# 1201| getStmt(0): [DeclStmt] declaration
+# 1201| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x394
+# 1201| Type = [Struct] String
+# 1201| getVariable().getInitializer(): [Initializer] initializer for x394
+# 1201| getExpr(): [ConstructorCall] call to String
+# 1201| Type = [VoidType] void
+# 1201| ValueCategory = prvalue
+# 1202| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1202| Type = [VoidType] void
+# 1202| ValueCategory = prvalue
+# 1202| getQualifier(): [VariableAccess] x394
+# 1202| Type = [Struct] String
+# 1202| ValueCategory = lvalue
+# 1202| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1202| Conversion = [BoolConversion] conversion to bool
+# 1202| Type = [BoolType] bool
+# 1202| Value = [CStyleCast] 0
+# 1202| ValueCategory = prvalue
+# 1203| getStmt(395): [DoStmt] do (...) ...
+# 1205| getCondition(): [Literal] 0
+# 1205| Type = [IntType] int
+# 1205| Value = [Literal] 0
+# 1205| ValueCategory = prvalue
+# 1203| getStmt(): [BlockStmt] { ... }
+# 1204| getStmt(0): [DeclStmt] declaration
+# 1204| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x395
+# 1204| Type = [Struct] String
+# 1204| getVariable().getInitializer(): [Initializer] initializer for x395
+# 1204| getExpr(): [ConstructorCall] call to String
+# 1204| Type = [VoidType] void
+# 1204| ValueCategory = prvalue
+# 1205| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1205| Type = [VoidType] void
+# 1205| ValueCategory = prvalue
+# 1205| getQualifier(): [VariableAccess] x395
+# 1205| Type = [Struct] String
+# 1205| ValueCategory = lvalue
+# 1205| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1205| Conversion = [BoolConversion] conversion to bool
+# 1205| Type = [BoolType] bool
+# 1205| Value = [CStyleCast] 0
+# 1205| ValueCategory = prvalue
+# 1206| getStmt(396): [DoStmt] do (...) ...
+# 1208| getCondition(): [Literal] 0
+# 1208| Type = [IntType] int
+# 1208| Value = [Literal] 0
+# 1208| ValueCategory = prvalue
+# 1206| getStmt(): [BlockStmt] { ... }
+# 1207| getStmt(0): [DeclStmt] declaration
+# 1207| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x396
+# 1207| Type = [Struct] String
+# 1207| getVariable().getInitializer(): [Initializer] initializer for x396
+# 1207| getExpr(): [ConstructorCall] call to String
+# 1207| Type = [VoidType] void
+# 1207| ValueCategory = prvalue
+# 1208| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1208| Type = [VoidType] void
+# 1208| ValueCategory = prvalue
+# 1208| getQualifier(): [VariableAccess] x396
+# 1208| Type = [Struct] String
+# 1208| ValueCategory = lvalue
+# 1208| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1208| Conversion = [BoolConversion] conversion to bool
+# 1208| Type = [BoolType] bool
+# 1208| Value = [CStyleCast] 0
+# 1208| ValueCategory = prvalue
+# 1209| getStmt(397): [DoStmt] do (...) ...
+# 1211| getCondition(): [Literal] 0
+# 1211| Type = [IntType] int
+# 1211| Value = [Literal] 0
+# 1211| ValueCategory = prvalue
+# 1209| getStmt(): [BlockStmt] { ... }
+# 1210| getStmt(0): [DeclStmt] declaration
+# 1210| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x397
+# 1210| Type = [Struct] String
+# 1210| getVariable().getInitializer(): [Initializer] initializer for x397
+# 1210| getExpr(): [ConstructorCall] call to String
+# 1210| Type = [VoidType] void
+# 1210| ValueCategory = prvalue
+# 1211| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1211| Type = [VoidType] void
+# 1211| ValueCategory = prvalue
+# 1211| getQualifier(): [VariableAccess] x397
+# 1211| Type = [Struct] String
+# 1211| ValueCategory = lvalue
+# 1211| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1211| Conversion = [BoolConversion] conversion to bool
+# 1211| Type = [BoolType] bool
+# 1211| Value = [CStyleCast] 0
+# 1211| ValueCategory = prvalue
+# 1212| getStmt(398): [DoStmt] do (...) ...
+# 1214| getCondition(): [Literal] 0
+# 1214| Type = [IntType] int
+# 1214| Value = [Literal] 0
+# 1214| ValueCategory = prvalue
+# 1212| getStmt(): [BlockStmt] { ... }
+# 1213| getStmt(0): [DeclStmt] declaration
+# 1213| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x398
+# 1213| Type = [Struct] String
+# 1213| getVariable().getInitializer(): [Initializer] initializer for x398
+# 1213| getExpr(): [ConstructorCall] call to String
+# 1213| Type = [VoidType] void
+# 1213| ValueCategory = prvalue
+# 1214| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1214| Type = [VoidType] void
+# 1214| ValueCategory = prvalue
+# 1214| getQualifier(): [VariableAccess] x398
+# 1214| Type = [Struct] String
+# 1214| ValueCategory = lvalue
+# 1214| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1214| Conversion = [BoolConversion] conversion to bool
+# 1214| Type = [BoolType] bool
+# 1214| Value = [CStyleCast] 0
+# 1214| ValueCategory = prvalue
+# 1215| getStmt(399): [DoStmt] do (...) ...
+# 1217| getCondition(): [Literal] 0
+# 1217| Type = [IntType] int
+# 1217| Value = [Literal] 0
+# 1217| ValueCategory = prvalue
+# 1215| getStmt(): [BlockStmt] { ... }
+# 1216| getStmt(0): [DeclStmt] declaration
+# 1216| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x399
+# 1216| Type = [Struct] String
+# 1216| getVariable().getInitializer(): [Initializer] initializer for x399
+# 1216| getExpr(): [ConstructorCall] call to String
+# 1216| Type = [VoidType] void
+# 1216| ValueCategory = prvalue
+# 1217| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1217| Type = [VoidType] void
+# 1217| ValueCategory = prvalue
+# 1217| getQualifier(): [VariableAccess] x399
+# 1217| Type = [Struct] String
+# 1217| ValueCategory = lvalue
+# 1217| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1217| Conversion = [BoolConversion] conversion to bool
+# 1217| Type = [BoolType] bool
+# 1217| Value = [CStyleCast] 0
+# 1217| ValueCategory = prvalue
+# 1218| getStmt(400): [DoStmt] do (...) ...
+# 1220| getCondition(): [Literal] 0
+# 1220| Type = [IntType] int
+# 1220| Value = [Literal] 0
+# 1220| ValueCategory = prvalue
+# 1218| getStmt(): [BlockStmt] { ... }
+# 1219| getStmt(0): [DeclStmt] declaration
+# 1219| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x400
+# 1219| Type = [Struct] String
+# 1219| getVariable().getInitializer(): [Initializer] initializer for x400
+# 1219| getExpr(): [ConstructorCall] call to String
+# 1219| Type = [VoidType] void
+# 1219| ValueCategory = prvalue
+# 1220| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1220| Type = [VoidType] void
+# 1220| ValueCategory = prvalue
+# 1220| getQualifier(): [VariableAccess] x400
+# 1220| Type = [Struct] String
+# 1220| ValueCategory = lvalue
+# 1220| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1220| Conversion = [BoolConversion] conversion to bool
+# 1220| Type = [BoolType] bool
+# 1220| Value = [CStyleCast] 0
+# 1220| ValueCategory = prvalue
+# 1221| getStmt(401): [DoStmt] do (...) ...
+# 1223| getCondition(): [Literal] 0
+# 1223| Type = [IntType] int
+# 1223| Value = [Literal] 0
+# 1223| ValueCategory = prvalue
+# 1221| getStmt(): [BlockStmt] { ... }
+# 1222| getStmt(0): [DeclStmt] declaration
+# 1222| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x401
+# 1222| Type = [Struct] String
+# 1222| getVariable().getInitializer(): [Initializer] initializer for x401
+# 1222| getExpr(): [ConstructorCall] call to String
+# 1222| Type = [VoidType] void
+# 1222| ValueCategory = prvalue
+# 1223| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1223| Type = [VoidType] void
+# 1223| ValueCategory = prvalue
+# 1223| getQualifier(): [VariableAccess] x401
+# 1223| Type = [Struct] String
+# 1223| ValueCategory = lvalue
+# 1223| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1223| Conversion = [BoolConversion] conversion to bool
+# 1223| Type = [BoolType] bool
+# 1223| Value = [CStyleCast] 0
+# 1223| ValueCategory = prvalue
+# 1224| getStmt(402): [DoStmt] do (...) ...
+# 1226| getCondition(): [Literal] 0
+# 1226| Type = [IntType] int
+# 1226| Value = [Literal] 0
+# 1226| ValueCategory = prvalue
+# 1224| getStmt(): [BlockStmt] { ... }
+# 1225| getStmt(0): [DeclStmt] declaration
+# 1225| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x402
+# 1225| Type = [Struct] String
+# 1225| getVariable().getInitializer(): [Initializer] initializer for x402
+# 1225| getExpr(): [ConstructorCall] call to String
+# 1225| Type = [VoidType] void
+# 1225| ValueCategory = prvalue
+# 1226| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1226| Type = [VoidType] void
+# 1226| ValueCategory = prvalue
+# 1226| getQualifier(): [VariableAccess] x402
+# 1226| Type = [Struct] String
+# 1226| ValueCategory = lvalue
+# 1226| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1226| Conversion = [BoolConversion] conversion to bool
+# 1226| Type = [BoolType] bool
+# 1226| Value = [CStyleCast] 0
+# 1226| ValueCategory = prvalue
+# 1227| getStmt(403): [DoStmt] do (...) ...
+# 1229| getCondition(): [Literal] 0
+# 1229| Type = [IntType] int
+# 1229| Value = [Literal] 0
+# 1229| ValueCategory = prvalue
+# 1227| getStmt(): [BlockStmt] { ... }
+# 1228| getStmt(0): [DeclStmt] declaration
+# 1228| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x403
+# 1228| Type = [Struct] String
+# 1228| getVariable().getInitializer(): [Initializer] initializer for x403
+# 1228| getExpr(): [ConstructorCall] call to String
+# 1228| Type = [VoidType] void
+# 1228| ValueCategory = prvalue
+# 1229| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1229| Type = [VoidType] void
+# 1229| ValueCategory = prvalue
+# 1229| getQualifier(): [VariableAccess] x403
+# 1229| Type = [Struct] String
+# 1229| ValueCategory = lvalue
+# 1229| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1229| Conversion = [BoolConversion] conversion to bool
+# 1229| Type = [BoolType] bool
+# 1229| Value = [CStyleCast] 0
+# 1229| ValueCategory = prvalue
+# 1230| getStmt(404): [DoStmt] do (...) ...
+# 1232| getCondition(): [Literal] 0
+# 1232| Type = [IntType] int
+# 1232| Value = [Literal] 0
+# 1232| ValueCategory = prvalue
+# 1230| getStmt(): [BlockStmt] { ... }
+# 1231| getStmt(0): [DeclStmt] declaration
+# 1231| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x404
+# 1231| Type = [Struct] String
+# 1231| getVariable().getInitializer(): [Initializer] initializer for x404
+# 1231| getExpr(): [ConstructorCall] call to String
+# 1231| Type = [VoidType] void
+# 1231| ValueCategory = prvalue
+# 1232| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1232| Type = [VoidType] void
+# 1232| ValueCategory = prvalue
+# 1232| getQualifier(): [VariableAccess] x404
+# 1232| Type = [Struct] String
+# 1232| ValueCategory = lvalue
+# 1232| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1232| Conversion = [BoolConversion] conversion to bool
+# 1232| Type = [BoolType] bool
+# 1232| Value = [CStyleCast] 0
+# 1232| ValueCategory = prvalue
+# 1233| getStmt(405): [DoStmt] do (...) ...
+# 1235| getCondition(): [Literal] 0
+# 1235| Type = [IntType] int
+# 1235| Value = [Literal] 0
+# 1235| ValueCategory = prvalue
+# 1233| getStmt(): [BlockStmt] { ... }
+# 1234| getStmt(0): [DeclStmt] declaration
+# 1234| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x405
+# 1234| Type = [Struct] String
+# 1234| getVariable().getInitializer(): [Initializer] initializer for x405
+# 1234| getExpr(): [ConstructorCall] call to String
+# 1234| Type = [VoidType] void
+# 1234| ValueCategory = prvalue
+# 1235| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1235| Type = [VoidType] void
+# 1235| ValueCategory = prvalue
+# 1235| getQualifier(): [VariableAccess] x405
+# 1235| Type = [Struct] String
+# 1235| ValueCategory = lvalue
+# 1235| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1235| Conversion = [BoolConversion] conversion to bool
+# 1235| Type = [BoolType] bool
+# 1235| Value = [CStyleCast] 0
+# 1235| ValueCategory = prvalue
+# 1236| getStmt(406): [DoStmt] do (...) ...
+# 1238| getCondition(): [Literal] 0
+# 1238| Type = [IntType] int
+# 1238| Value = [Literal] 0
+# 1238| ValueCategory = prvalue
+# 1236| getStmt(): [BlockStmt] { ... }
+# 1237| getStmt(0): [DeclStmt] declaration
+# 1237| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x406
+# 1237| Type = [Struct] String
+# 1237| getVariable().getInitializer(): [Initializer] initializer for x406
+# 1237| getExpr(): [ConstructorCall] call to String
+# 1237| Type = [VoidType] void
+# 1237| ValueCategory = prvalue
+# 1238| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1238| Type = [VoidType] void
+# 1238| ValueCategory = prvalue
+# 1238| getQualifier(): [VariableAccess] x406
+# 1238| Type = [Struct] String
+# 1238| ValueCategory = lvalue
+# 1238| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1238| Conversion = [BoolConversion] conversion to bool
+# 1238| Type = [BoolType] bool
+# 1238| Value = [CStyleCast] 0
+# 1238| ValueCategory = prvalue
+# 1239| getStmt(407): [DoStmt] do (...) ...
+# 1241| getCondition(): [Literal] 0
+# 1241| Type = [IntType] int
+# 1241| Value = [Literal] 0
+# 1241| ValueCategory = prvalue
+# 1239| getStmt(): [BlockStmt] { ... }
+# 1240| getStmt(0): [DeclStmt] declaration
+# 1240| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x407
+# 1240| Type = [Struct] String
+# 1240| getVariable().getInitializer(): [Initializer] initializer for x407
+# 1240| getExpr(): [ConstructorCall] call to String
+# 1240| Type = [VoidType] void
+# 1240| ValueCategory = prvalue
+# 1241| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1241| Type = [VoidType] void
+# 1241| ValueCategory = prvalue
+# 1241| getQualifier(): [VariableAccess] x407
+# 1241| Type = [Struct] String
+# 1241| ValueCategory = lvalue
+# 1241| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1241| Conversion = [BoolConversion] conversion to bool
+# 1241| Type = [BoolType] bool
+# 1241| Value = [CStyleCast] 0
+# 1241| ValueCategory = prvalue
+# 1242| getStmt(408): [DoStmt] do (...) ...
+# 1244| getCondition(): [Literal] 0
+# 1244| Type = [IntType] int
+# 1244| Value = [Literal] 0
+# 1244| ValueCategory = prvalue
+# 1242| getStmt(): [BlockStmt] { ... }
+# 1243| getStmt(0): [DeclStmt] declaration
+# 1243| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x408
+# 1243| Type = [Struct] String
+# 1243| getVariable().getInitializer(): [Initializer] initializer for x408
+# 1243| getExpr(): [ConstructorCall] call to String
+# 1243| Type = [VoidType] void
+# 1243| ValueCategory = prvalue
+# 1244| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1244| Type = [VoidType] void
+# 1244| ValueCategory = prvalue
+# 1244| getQualifier(): [VariableAccess] x408
+# 1244| Type = [Struct] String
+# 1244| ValueCategory = lvalue
+# 1244| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1244| Conversion = [BoolConversion] conversion to bool
+# 1244| Type = [BoolType] bool
+# 1244| Value = [CStyleCast] 0
+# 1244| ValueCategory = prvalue
+# 1245| getStmt(409): [DoStmt] do (...) ...
+# 1247| getCondition(): [Literal] 0
+# 1247| Type = [IntType] int
+# 1247| Value = [Literal] 0
+# 1247| ValueCategory = prvalue
+# 1245| getStmt(): [BlockStmt] { ... }
+# 1246| getStmt(0): [DeclStmt] declaration
+# 1246| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x409
+# 1246| Type = [Struct] String
+# 1246| getVariable().getInitializer(): [Initializer] initializer for x409
+# 1246| getExpr(): [ConstructorCall] call to String
+# 1246| Type = [VoidType] void
+# 1246| ValueCategory = prvalue
+# 1247| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1247| Type = [VoidType] void
+# 1247| ValueCategory = prvalue
+# 1247| getQualifier(): [VariableAccess] x409
+# 1247| Type = [Struct] String
+# 1247| ValueCategory = lvalue
+# 1247| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1247| Conversion = [BoolConversion] conversion to bool
+# 1247| Type = [BoolType] bool
+# 1247| Value = [CStyleCast] 0
+# 1247| ValueCategory = prvalue
+# 1248| getStmt(410): [DoStmt] do (...) ...
+# 1250| getCondition(): [Literal] 0
+# 1250| Type = [IntType] int
+# 1250| Value = [Literal] 0
+# 1250| ValueCategory = prvalue
+# 1248| getStmt(): [BlockStmt] { ... }
+# 1249| getStmt(0): [DeclStmt] declaration
+# 1249| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x410
+# 1249| Type = [Struct] String
+# 1249| getVariable().getInitializer(): [Initializer] initializer for x410
+# 1249| getExpr(): [ConstructorCall] call to String
+# 1249| Type = [VoidType] void
+# 1249| ValueCategory = prvalue
+# 1250| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1250| Type = [VoidType] void
+# 1250| ValueCategory = prvalue
+# 1250| getQualifier(): [VariableAccess] x410
+# 1250| Type = [Struct] String
+# 1250| ValueCategory = lvalue
+# 1250| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1250| Conversion = [BoolConversion] conversion to bool
+# 1250| Type = [BoolType] bool
+# 1250| Value = [CStyleCast] 0
+# 1250| ValueCategory = prvalue
+# 1251| getStmt(411): [DoStmt] do (...) ...
+# 1253| getCondition(): [Literal] 0
+# 1253| Type = [IntType] int
+# 1253| Value = [Literal] 0
+# 1253| ValueCategory = prvalue
+# 1251| getStmt(): [BlockStmt] { ... }
+# 1252| getStmt(0): [DeclStmt] declaration
+# 1252| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x411
+# 1252| Type = [Struct] String
+# 1252| getVariable().getInitializer(): [Initializer] initializer for x411
+# 1252| getExpr(): [ConstructorCall] call to String
+# 1252| Type = [VoidType] void
+# 1252| ValueCategory = prvalue
+# 1253| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1253| Type = [VoidType] void
+# 1253| ValueCategory = prvalue
+# 1253| getQualifier(): [VariableAccess] x411
+# 1253| Type = [Struct] String
+# 1253| ValueCategory = lvalue
+# 1253| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1253| Conversion = [BoolConversion] conversion to bool
+# 1253| Type = [BoolType] bool
+# 1253| Value = [CStyleCast] 0
+# 1253| ValueCategory = prvalue
+# 1254| getStmt(412): [DoStmt] do (...) ...
+# 1256| getCondition(): [Literal] 0
+# 1256| Type = [IntType] int
+# 1256| Value = [Literal] 0
+# 1256| ValueCategory = prvalue
+# 1254| getStmt(): [BlockStmt] { ... }
+# 1255| getStmt(0): [DeclStmt] declaration
+# 1255| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x412
+# 1255| Type = [Struct] String
+# 1255| getVariable().getInitializer(): [Initializer] initializer for x412
+# 1255| getExpr(): [ConstructorCall] call to String
+# 1255| Type = [VoidType] void
+# 1255| ValueCategory = prvalue
+# 1256| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1256| Type = [VoidType] void
+# 1256| ValueCategory = prvalue
+# 1256| getQualifier(): [VariableAccess] x412
+# 1256| Type = [Struct] String
+# 1256| ValueCategory = lvalue
+# 1256| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1256| Conversion = [BoolConversion] conversion to bool
+# 1256| Type = [BoolType] bool
+# 1256| Value = [CStyleCast] 0
+# 1256| ValueCategory = prvalue
+# 1257| getStmt(413): [DoStmt] do (...) ...
+# 1259| getCondition(): [Literal] 0
+# 1259| Type = [IntType] int
+# 1259| Value = [Literal] 0
+# 1259| ValueCategory = prvalue
+# 1257| getStmt(): [BlockStmt] { ... }
+# 1258| getStmt(0): [DeclStmt] declaration
+# 1258| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x413
+# 1258| Type = [Struct] String
+# 1258| getVariable().getInitializer(): [Initializer] initializer for x413
+# 1258| getExpr(): [ConstructorCall] call to String
+# 1258| Type = [VoidType] void
+# 1258| ValueCategory = prvalue
+# 1259| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1259| Type = [VoidType] void
+# 1259| ValueCategory = prvalue
+# 1259| getQualifier(): [VariableAccess] x413
+# 1259| Type = [Struct] String
+# 1259| ValueCategory = lvalue
+# 1259| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1259| Conversion = [BoolConversion] conversion to bool
+# 1259| Type = [BoolType] bool
+# 1259| Value = [CStyleCast] 0
+# 1259| ValueCategory = prvalue
+# 1260| getStmt(414): [DoStmt] do (...) ...
+# 1262| getCondition(): [Literal] 0
+# 1262| Type = [IntType] int
+# 1262| Value = [Literal] 0
+# 1262| ValueCategory = prvalue
+# 1260| getStmt(): [BlockStmt] { ... }
+# 1261| getStmt(0): [DeclStmt] declaration
+# 1261| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x414
+# 1261| Type = [Struct] String
+# 1261| getVariable().getInitializer(): [Initializer] initializer for x414
+# 1261| getExpr(): [ConstructorCall] call to String
+# 1261| Type = [VoidType] void
+# 1261| ValueCategory = prvalue
+# 1262| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1262| Type = [VoidType] void
+# 1262| ValueCategory = prvalue
+# 1262| getQualifier(): [VariableAccess] x414
+# 1262| Type = [Struct] String
+# 1262| ValueCategory = lvalue
+# 1262| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1262| Conversion = [BoolConversion] conversion to bool
+# 1262| Type = [BoolType] bool
+# 1262| Value = [CStyleCast] 0
+# 1262| ValueCategory = prvalue
+# 1263| getStmt(415): [DoStmt] do (...) ...
+# 1265| getCondition(): [Literal] 0
+# 1265| Type = [IntType] int
+# 1265| Value = [Literal] 0
+# 1265| ValueCategory = prvalue
+# 1263| getStmt(): [BlockStmt] { ... }
+# 1264| getStmt(0): [DeclStmt] declaration
+# 1264| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x415
+# 1264| Type = [Struct] String
+# 1264| getVariable().getInitializer(): [Initializer] initializer for x415
+# 1264| getExpr(): [ConstructorCall] call to String
+# 1264| Type = [VoidType] void
+# 1264| ValueCategory = prvalue
+# 1265| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1265| Type = [VoidType] void
+# 1265| ValueCategory = prvalue
+# 1265| getQualifier(): [VariableAccess] x415
+# 1265| Type = [Struct] String
+# 1265| ValueCategory = lvalue
+# 1265| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1265| Conversion = [BoolConversion] conversion to bool
+# 1265| Type = [BoolType] bool
+# 1265| Value = [CStyleCast] 0
+# 1265| ValueCategory = prvalue
+# 1266| getStmt(416): [DoStmt] do (...) ...
+# 1268| getCondition(): [Literal] 0
+# 1268| Type = [IntType] int
+# 1268| Value = [Literal] 0
+# 1268| ValueCategory = prvalue
+# 1266| getStmt(): [BlockStmt] { ... }
+# 1267| getStmt(0): [DeclStmt] declaration
+# 1267| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x416
+# 1267| Type = [Struct] String
+# 1267| getVariable().getInitializer(): [Initializer] initializer for x416
+# 1267| getExpr(): [ConstructorCall] call to String
+# 1267| Type = [VoidType] void
+# 1267| ValueCategory = prvalue
+# 1268| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1268| Type = [VoidType] void
+# 1268| ValueCategory = prvalue
+# 1268| getQualifier(): [VariableAccess] x416
+# 1268| Type = [Struct] String
+# 1268| ValueCategory = lvalue
+# 1268| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1268| Conversion = [BoolConversion] conversion to bool
+# 1268| Type = [BoolType] bool
+# 1268| Value = [CStyleCast] 0
+# 1268| ValueCategory = prvalue
+# 1269| getStmt(417): [DoStmt] do (...) ...
+# 1271| getCondition(): [Literal] 0
+# 1271| Type = [IntType] int
+# 1271| Value = [Literal] 0
+# 1271| ValueCategory = prvalue
+# 1269| getStmt(): [BlockStmt] { ... }
+# 1270| getStmt(0): [DeclStmt] declaration
+# 1270| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x417
+# 1270| Type = [Struct] String
+# 1270| getVariable().getInitializer(): [Initializer] initializer for x417
+# 1270| getExpr(): [ConstructorCall] call to String
+# 1270| Type = [VoidType] void
+# 1270| ValueCategory = prvalue
+# 1271| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1271| Type = [VoidType] void
+# 1271| ValueCategory = prvalue
+# 1271| getQualifier(): [VariableAccess] x417
+# 1271| Type = [Struct] String
+# 1271| ValueCategory = lvalue
+# 1271| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1271| Conversion = [BoolConversion] conversion to bool
+# 1271| Type = [BoolType] bool
+# 1271| Value = [CStyleCast] 0
+# 1271| ValueCategory = prvalue
+# 1272| getStmt(418): [DoStmt] do (...) ...
+# 1274| getCondition(): [Literal] 0
+# 1274| Type = [IntType] int
+# 1274| Value = [Literal] 0
+# 1274| ValueCategory = prvalue
+# 1272| getStmt(): [BlockStmt] { ... }
+# 1273| getStmt(0): [DeclStmt] declaration
+# 1273| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x418
+# 1273| Type = [Struct] String
+# 1273| getVariable().getInitializer(): [Initializer] initializer for x418
+# 1273| getExpr(): [ConstructorCall] call to String
+# 1273| Type = [VoidType] void
+# 1273| ValueCategory = prvalue
+# 1274| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1274| Type = [VoidType] void
+# 1274| ValueCategory = prvalue
+# 1274| getQualifier(): [VariableAccess] x418
+# 1274| Type = [Struct] String
+# 1274| ValueCategory = lvalue
+# 1274| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1274| Conversion = [BoolConversion] conversion to bool
+# 1274| Type = [BoolType] bool
+# 1274| Value = [CStyleCast] 0
+# 1274| ValueCategory = prvalue
+# 1275| getStmt(419): [DoStmt] do (...) ...
+# 1277| getCondition(): [Literal] 0
+# 1277| Type = [IntType] int
+# 1277| Value = [Literal] 0
+# 1277| ValueCategory = prvalue
+# 1275| getStmt(): [BlockStmt] { ... }
+# 1276| getStmt(0): [DeclStmt] declaration
+# 1276| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x419
+# 1276| Type = [Struct] String
+# 1276| getVariable().getInitializer(): [Initializer] initializer for x419
+# 1276| getExpr(): [ConstructorCall] call to String
+# 1276| Type = [VoidType] void
+# 1276| ValueCategory = prvalue
+# 1277| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1277| Type = [VoidType] void
+# 1277| ValueCategory = prvalue
+# 1277| getQualifier(): [VariableAccess] x419
+# 1277| Type = [Struct] String
+# 1277| ValueCategory = lvalue
+# 1277| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1277| Conversion = [BoolConversion] conversion to bool
+# 1277| Type = [BoolType] bool
+# 1277| Value = [CStyleCast] 0
+# 1277| ValueCategory = prvalue
+# 1278| getStmt(420): [DoStmt] do (...) ...
+# 1280| getCondition(): [Literal] 0
+# 1280| Type = [IntType] int
+# 1280| Value = [Literal] 0
+# 1280| ValueCategory = prvalue
+# 1278| getStmt(): [BlockStmt] { ... }
+# 1279| getStmt(0): [DeclStmt] declaration
+# 1279| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x420
+# 1279| Type = [Struct] String
+# 1279| getVariable().getInitializer(): [Initializer] initializer for x420
+# 1279| getExpr(): [ConstructorCall] call to String
+# 1279| Type = [VoidType] void
+# 1279| ValueCategory = prvalue
+# 1280| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1280| Type = [VoidType] void
+# 1280| ValueCategory = prvalue
+# 1280| getQualifier(): [VariableAccess] x420
+# 1280| Type = [Struct] String
+# 1280| ValueCategory = lvalue
+# 1280| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1280| Conversion = [BoolConversion] conversion to bool
+# 1280| Type = [BoolType] bool
+# 1280| Value = [CStyleCast] 0
+# 1280| ValueCategory = prvalue
+# 1281| getStmt(421): [DoStmt] do (...) ...
+# 1283| getCondition(): [Literal] 0
+# 1283| Type = [IntType] int
+# 1283| Value = [Literal] 0
+# 1283| ValueCategory = prvalue
+# 1281| getStmt(): [BlockStmt] { ... }
+# 1282| getStmt(0): [DeclStmt] declaration
+# 1282| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x421
+# 1282| Type = [Struct] String
+# 1282| getVariable().getInitializer(): [Initializer] initializer for x421
+# 1282| getExpr(): [ConstructorCall] call to String
+# 1282| Type = [VoidType] void
+# 1282| ValueCategory = prvalue
+# 1283| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1283| Type = [VoidType] void
+# 1283| ValueCategory = prvalue
+# 1283| getQualifier(): [VariableAccess] x421
+# 1283| Type = [Struct] String
+# 1283| ValueCategory = lvalue
+# 1283| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1283| Conversion = [BoolConversion] conversion to bool
+# 1283| Type = [BoolType] bool
+# 1283| Value = [CStyleCast] 0
+# 1283| ValueCategory = prvalue
+# 1284| getStmt(422): [DoStmt] do (...) ...
+# 1286| getCondition(): [Literal] 0
+# 1286| Type = [IntType] int
+# 1286| Value = [Literal] 0
+# 1286| ValueCategory = prvalue
+# 1284| getStmt(): [BlockStmt] { ... }
+# 1285| getStmt(0): [DeclStmt] declaration
+# 1285| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x422
+# 1285| Type = [Struct] String
+# 1285| getVariable().getInitializer(): [Initializer] initializer for x422
+# 1285| getExpr(): [ConstructorCall] call to String
+# 1285| Type = [VoidType] void
+# 1285| ValueCategory = prvalue
+# 1286| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1286| Type = [VoidType] void
+# 1286| ValueCategory = prvalue
+# 1286| getQualifier(): [VariableAccess] x422
+# 1286| Type = [Struct] String
+# 1286| ValueCategory = lvalue
+# 1286| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1286| Conversion = [BoolConversion] conversion to bool
+# 1286| Type = [BoolType] bool
+# 1286| Value = [CStyleCast] 0
+# 1286| ValueCategory = prvalue
+# 1287| getStmt(423): [DoStmt] do (...) ...
+# 1289| getCondition(): [Literal] 0
+# 1289| Type = [IntType] int
+# 1289| Value = [Literal] 0
+# 1289| ValueCategory = prvalue
+# 1287| getStmt(): [BlockStmt] { ... }
+# 1288| getStmt(0): [DeclStmt] declaration
+# 1288| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x423
+# 1288| Type = [Struct] String
+# 1288| getVariable().getInitializer(): [Initializer] initializer for x423
+# 1288| getExpr(): [ConstructorCall] call to String
+# 1288| Type = [VoidType] void
+# 1288| ValueCategory = prvalue
+# 1289| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1289| Type = [VoidType] void
+# 1289| ValueCategory = prvalue
+# 1289| getQualifier(): [VariableAccess] x423
+# 1289| Type = [Struct] String
+# 1289| ValueCategory = lvalue
+# 1289| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1289| Conversion = [BoolConversion] conversion to bool
+# 1289| Type = [BoolType] bool
+# 1289| Value = [CStyleCast] 0
+# 1289| ValueCategory = prvalue
+# 1290| getStmt(424): [DoStmt] do (...) ...
+# 1292| getCondition(): [Literal] 0
+# 1292| Type = [IntType] int
+# 1292| Value = [Literal] 0
+# 1292| ValueCategory = prvalue
+# 1290| getStmt(): [BlockStmt] { ... }
+# 1291| getStmt(0): [DeclStmt] declaration
+# 1291| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x424
+# 1291| Type = [Struct] String
+# 1291| getVariable().getInitializer(): [Initializer] initializer for x424
+# 1291| getExpr(): [ConstructorCall] call to String
+# 1291| Type = [VoidType] void
+# 1291| ValueCategory = prvalue
+# 1292| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1292| Type = [VoidType] void
+# 1292| ValueCategory = prvalue
+# 1292| getQualifier(): [VariableAccess] x424
+# 1292| Type = [Struct] String
+# 1292| ValueCategory = lvalue
+# 1292| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1292| Conversion = [BoolConversion] conversion to bool
+# 1292| Type = [BoolType] bool
+# 1292| Value = [CStyleCast] 0
+# 1292| ValueCategory = prvalue
+# 1293| getStmt(425): [DoStmt] do (...) ...
+# 1295| getCondition(): [Literal] 0
+# 1295| Type = [IntType] int
+# 1295| Value = [Literal] 0
+# 1295| ValueCategory = prvalue
+# 1293| getStmt(): [BlockStmt] { ... }
+# 1294| getStmt(0): [DeclStmt] declaration
+# 1294| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x425
+# 1294| Type = [Struct] String
+# 1294| getVariable().getInitializer(): [Initializer] initializer for x425
+# 1294| getExpr(): [ConstructorCall] call to String
+# 1294| Type = [VoidType] void
+# 1294| ValueCategory = prvalue
+# 1295| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1295| Type = [VoidType] void
+# 1295| ValueCategory = prvalue
+# 1295| getQualifier(): [VariableAccess] x425
+# 1295| Type = [Struct] String
+# 1295| ValueCategory = lvalue
+# 1295| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1295| Conversion = [BoolConversion] conversion to bool
+# 1295| Type = [BoolType] bool
+# 1295| Value = [CStyleCast] 0
+# 1295| ValueCategory = prvalue
+# 1296| getStmt(426): [DoStmt] do (...) ...
+# 1298| getCondition(): [Literal] 0
+# 1298| Type = [IntType] int
+# 1298| Value = [Literal] 0
+# 1298| ValueCategory = prvalue
+# 1296| getStmt(): [BlockStmt] { ... }
+# 1297| getStmt(0): [DeclStmt] declaration
+# 1297| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x426
+# 1297| Type = [Struct] String
+# 1297| getVariable().getInitializer(): [Initializer] initializer for x426
+# 1297| getExpr(): [ConstructorCall] call to String
+# 1297| Type = [VoidType] void
+# 1297| ValueCategory = prvalue
+# 1298| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1298| Type = [VoidType] void
+# 1298| ValueCategory = prvalue
+# 1298| getQualifier(): [VariableAccess] x426
+# 1298| Type = [Struct] String
+# 1298| ValueCategory = lvalue
+# 1298| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1298| Conversion = [BoolConversion] conversion to bool
+# 1298| Type = [BoolType] bool
+# 1298| Value = [CStyleCast] 0
+# 1298| ValueCategory = prvalue
+# 1299| getStmt(427): [DoStmt] do (...) ...
+# 1301| getCondition(): [Literal] 0
+# 1301| Type = [IntType] int
+# 1301| Value = [Literal] 0
+# 1301| ValueCategory = prvalue
+# 1299| getStmt(): [BlockStmt] { ... }
+# 1300| getStmt(0): [DeclStmt] declaration
+# 1300| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x427
+# 1300| Type = [Struct] String
+# 1300| getVariable().getInitializer(): [Initializer] initializer for x427
+# 1300| getExpr(): [ConstructorCall] call to String
+# 1300| Type = [VoidType] void
+# 1300| ValueCategory = prvalue
+# 1301| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1301| Type = [VoidType] void
+# 1301| ValueCategory = prvalue
+# 1301| getQualifier(): [VariableAccess] x427
+# 1301| Type = [Struct] String
+# 1301| ValueCategory = lvalue
+# 1301| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1301| Conversion = [BoolConversion] conversion to bool
+# 1301| Type = [BoolType] bool
+# 1301| Value = [CStyleCast] 0
+# 1301| ValueCategory = prvalue
+# 1302| getStmt(428): [DoStmt] do (...) ...
+# 1304| getCondition(): [Literal] 0
+# 1304| Type = [IntType] int
+# 1304| Value = [Literal] 0
+# 1304| ValueCategory = prvalue
+# 1302| getStmt(): [BlockStmt] { ... }
+# 1303| getStmt(0): [DeclStmt] declaration
+# 1303| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x428
+# 1303| Type = [Struct] String
+# 1303| getVariable().getInitializer(): [Initializer] initializer for x428
+# 1303| getExpr(): [ConstructorCall] call to String
+# 1303| Type = [VoidType] void
+# 1303| ValueCategory = prvalue
+# 1304| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1304| Type = [VoidType] void
+# 1304| ValueCategory = prvalue
+# 1304| getQualifier(): [VariableAccess] x428
+# 1304| Type = [Struct] String
+# 1304| ValueCategory = lvalue
+# 1304| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1304| Conversion = [BoolConversion] conversion to bool
+# 1304| Type = [BoolType] bool
+# 1304| Value = [CStyleCast] 0
+# 1304| ValueCategory = prvalue
+# 1305| getStmt(429): [DoStmt] do (...) ...
+# 1307| getCondition(): [Literal] 0
+# 1307| Type = [IntType] int
+# 1307| Value = [Literal] 0
+# 1307| ValueCategory = prvalue
+# 1305| getStmt(): [BlockStmt] { ... }
+# 1306| getStmt(0): [DeclStmt] declaration
+# 1306| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x429
+# 1306| Type = [Struct] String
+# 1306| getVariable().getInitializer(): [Initializer] initializer for x429
+# 1306| getExpr(): [ConstructorCall] call to String
+# 1306| Type = [VoidType] void
+# 1306| ValueCategory = prvalue
+# 1307| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1307| Type = [VoidType] void
+# 1307| ValueCategory = prvalue
+# 1307| getQualifier(): [VariableAccess] x429
+# 1307| Type = [Struct] String
+# 1307| ValueCategory = lvalue
+# 1307| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1307| Conversion = [BoolConversion] conversion to bool
+# 1307| Type = [BoolType] bool
+# 1307| Value = [CStyleCast] 0
+# 1307| ValueCategory = prvalue
+# 1308| getStmt(430): [DoStmt] do (...) ...
+# 1310| getCondition(): [Literal] 0
+# 1310| Type = [IntType] int
+# 1310| Value = [Literal] 0
+# 1310| ValueCategory = prvalue
+# 1308| getStmt(): [BlockStmt] { ... }
+# 1309| getStmt(0): [DeclStmt] declaration
+# 1309| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x430
+# 1309| Type = [Struct] String
+# 1309| getVariable().getInitializer(): [Initializer] initializer for x430
+# 1309| getExpr(): [ConstructorCall] call to String
+# 1309| Type = [VoidType] void
+# 1309| ValueCategory = prvalue
+# 1310| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1310| Type = [VoidType] void
+# 1310| ValueCategory = prvalue
+# 1310| getQualifier(): [VariableAccess] x430
+# 1310| Type = [Struct] String
+# 1310| ValueCategory = lvalue
+# 1310| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1310| Conversion = [BoolConversion] conversion to bool
+# 1310| Type = [BoolType] bool
+# 1310| Value = [CStyleCast] 0
+# 1310| ValueCategory = prvalue
+# 1311| getStmt(431): [DoStmt] do (...) ...
+# 1313| getCondition(): [Literal] 0
+# 1313| Type = [IntType] int
+# 1313| Value = [Literal] 0
+# 1313| ValueCategory = prvalue
+# 1311| getStmt(): [BlockStmt] { ... }
+# 1312| getStmt(0): [DeclStmt] declaration
+# 1312| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x431
+# 1312| Type = [Struct] String
+# 1312| getVariable().getInitializer(): [Initializer] initializer for x431
+# 1312| getExpr(): [ConstructorCall] call to String
+# 1312| Type = [VoidType] void
+# 1312| ValueCategory = prvalue
+# 1313| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1313| Type = [VoidType] void
+# 1313| ValueCategory = prvalue
+# 1313| getQualifier(): [VariableAccess] x431
+# 1313| Type = [Struct] String
+# 1313| ValueCategory = lvalue
+# 1313| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1313| Conversion = [BoolConversion] conversion to bool
+# 1313| Type = [BoolType] bool
+# 1313| Value = [CStyleCast] 0
+# 1313| ValueCategory = prvalue
+# 1314| getStmt(432): [DoStmt] do (...) ...
+# 1316| getCondition(): [Literal] 0
+# 1316| Type = [IntType] int
+# 1316| Value = [Literal] 0
+# 1316| ValueCategory = prvalue
+# 1314| getStmt(): [BlockStmt] { ... }
+# 1315| getStmt(0): [DeclStmt] declaration
+# 1315| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x432
+# 1315| Type = [Struct] String
+# 1315| getVariable().getInitializer(): [Initializer] initializer for x432
+# 1315| getExpr(): [ConstructorCall] call to String
+# 1315| Type = [VoidType] void
+# 1315| ValueCategory = prvalue
+# 1316| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1316| Type = [VoidType] void
+# 1316| ValueCategory = prvalue
+# 1316| getQualifier(): [VariableAccess] x432
+# 1316| Type = [Struct] String
+# 1316| ValueCategory = lvalue
+# 1316| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1316| Conversion = [BoolConversion] conversion to bool
+# 1316| Type = [BoolType] bool
+# 1316| Value = [CStyleCast] 0
+# 1316| ValueCategory = prvalue
+# 1317| getStmt(433): [DoStmt] do (...) ...
+# 1319| getCondition(): [Literal] 0
+# 1319| Type = [IntType] int
+# 1319| Value = [Literal] 0
+# 1319| ValueCategory = prvalue
+# 1317| getStmt(): [BlockStmt] { ... }
+# 1318| getStmt(0): [DeclStmt] declaration
+# 1318| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x433
+# 1318| Type = [Struct] String
+# 1318| getVariable().getInitializer(): [Initializer] initializer for x433
+# 1318| getExpr(): [ConstructorCall] call to String
+# 1318| Type = [VoidType] void
+# 1318| ValueCategory = prvalue
+# 1319| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1319| Type = [VoidType] void
+# 1319| ValueCategory = prvalue
+# 1319| getQualifier(): [VariableAccess] x433
+# 1319| Type = [Struct] String
+# 1319| ValueCategory = lvalue
+# 1319| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1319| Conversion = [BoolConversion] conversion to bool
+# 1319| Type = [BoolType] bool
+# 1319| Value = [CStyleCast] 0
+# 1319| ValueCategory = prvalue
+# 1320| getStmt(434): [DoStmt] do (...) ...
+# 1322| getCondition(): [Literal] 0
+# 1322| Type = [IntType] int
+# 1322| Value = [Literal] 0
+# 1322| ValueCategory = prvalue
+# 1320| getStmt(): [BlockStmt] { ... }
+# 1321| getStmt(0): [DeclStmt] declaration
+# 1321| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x434
+# 1321| Type = [Struct] String
+# 1321| getVariable().getInitializer(): [Initializer] initializer for x434
+# 1321| getExpr(): [ConstructorCall] call to String
+# 1321| Type = [VoidType] void
+# 1321| ValueCategory = prvalue
+# 1322| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1322| Type = [VoidType] void
+# 1322| ValueCategory = prvalue
+# 1322| getQualifier(): [VariableAccess] x434
+# 1322| Type = [Struct] String
+# 1322| ValueCategory = lvalue
+# 1322| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1322| Conversion = [BoolConversion] conversion to bool
+# 1322| Type = [BoolType] bool
+# 1322| Value = [CStyleCast] 0
+# 1322| ValueCategory = prvalue
+# 1323| getStmt(435): [DoStmt] do (...) ...
+# 1325| getCondition(): [Literal] 0
+# 1325| Type = [IntType] int
+# 1325| Value = [Literal] 0
+# 1325| ValueCategory = prvalue
+# 1323| getStmt(): [BlockStmt] { ... }
+# 1324| getStmt(0): [DeclStmt] declaration
+# 1324| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x435
+# 1324| Type = [Struct] String
+# 1324| getVariable().getInitializer(): [Initializer] initializer for x435
+# 1324| getExpr(): [ConstructorCall] call to String
+# 1324| Type = [VoidType] void
+# 1324| ValueCategory = prvalue
+# 1325| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1325| Type = [VoidType] void
+# 1325| ValueCategory = prvalue
+# 1325| getQualifier(): [VariableAccess] x435
+# 1325| Type = [Struct] String
+# 1325| ValueCategory = lvalue
+# 1325| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1325| Conversion = [BoolConversion] conversion to bool
+# 1325| Type = [BoolType] bool
+# 1325| Value = [CStyleCast] 0
+# 1325| ValueCategory = prvalue
+# 1326| getStmt(436): [DoStmt] do (...) ...
+# 1328| getCondition(): [Literal] 0
+# 1328| Type = [IntType] int
+# 1328| Value = [Literal] 0
+# 1328| ValueCategory = prvalue
+# 1326| getStmt(): [BlockStmt] { ... }
+# 1327| getStmt(0): [DeclStmt] declaration
+# 1327| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x436
+# 1327| Type = [Struct] String
+# 1327| getVariable().getInitializer(): [Initializer] initializer for x436
+# 1327| getExpr(): [ConstructorCall] call to String
+# 1327| Type = [VoidType] void
+# 1327| ValueCategory = prvalue
+# 1328| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1328| Type = [VoidType] void
+# 1328| ValueCategory = prvalue
+# 1328| getQualifier(): [VariableAccess] x436
+# 1328| Type = [Struct] String
+# 1328| ValueCategory = lvalue
+# 1328| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1328| Conversion = [BoolConversion] conversion to bool
+# 1328| Type = [BoolType] bool
+# 1328| Value = [CStyleCast] 0
+# 1328| ValueCategory = prvalue
+# 1329| getStmt(437): [DoStmt] do (...) ...
+# 1331| getCondition(): [Literal] 0
+# 1331| Type = [IntType] int
+# 1331| Value = [Literal] 0
+# 1331| ValueCategory = prvalue
+# 1329| getStmt(): [BlockStmt] { ... }
+# 1330| getStmt(0): [DeclStmt] declaration
+# 1330| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x437
+# 1330| Type = [Struct] String
+# 1330| getVariable().getInitializer(): [Initializer] initializer for x437
+# 1330| getExpr(): [ConstructorCall] call to String
+# 1330| Type = [VoidType] void
+# 1330| ValueCategory = prvalue
+# 1331| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1331| Type = [VoidType] void
+# 1331| ValueCategory = prvalue
+# 1331| getQualifier(): [VariableAccess] x437
+# 1331| Type = [Struct] String
+# 1331| ValueCategory = lvalue
+# 1331| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1331| Conversion = [BoolConversion] conversion to bool
+# 1331| Type = [BoolType] bool
+# 1331| Value = [CStyleCast] 0
+# 1331| ValueCategory = prvalue
+# 1332| getStmt(438): [DoStmt] do (...) ...
+# 1334| getCondition(): [Literal] 0
+# 1334| Type = [IntType] int
+# 1334| Value = [Literal] 0
+# 1334| ValueCategory = prvalue
+# 1332| getStmt(): [BlockStmt] { ... }
+# 1333| getStmt(0): [DeclStmt] declaration
+# 1333| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x438
+# 1333| Type = [Struct] String
+# 1333| getVariable().getInitializer(): [Initializer] initializer for x438
+# 1333| getExpr(): [ConstructorCall] call to String
+# 1333| Type = [VoidType] void
+# 1333| ValueCategory = prvalue
+# 1334| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1334| Type = [VoidType] void
+# 1334| ValueCategory = prvalue
+# 1334| getQualifier(): [VariableAccess] x438
+# 1334| Type = [Struct] String
+# 1334| ValueCategory = lvalue
+# 1334| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1334| Conversion = [BoolConversion] conversion to bool
+# 1334| Type = [BoolType] bool
+# 1334| Value = [CStyleCast] 0
+# 1334| ValueCategory = prvalue
+# 1335| getStmt(439): [DoStmt] do (...) ...
+# 1337| getCondition(): [Literal] 0
+# 1337| Type = [IntType] int
+# 1337| Value = [Literal] 0
+# 1337| ValueCategory = prvalue
+# 1335| getStmt(): [BlockStmt] { ... }
+# 1336| getStmt(0): [DeclStmt] declaration
+# 1336| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x439
+# 1336| Type = [Struct] String
+# 1336| getVariable().getInitializer(): [Initializer] initializer for x439
+# 1336| getExpr(): [ConstructorCall] call to String
+# 1336| Type = [VoidType] void
+# 1336| ValueCategory = prvalue
+# 1337| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1337| Type = [VoidType] void
+# 1337| ValueCategory = prvalue
+# 1337| getQualifier(): [VariableAccess] x439
+# 1337| Type = [Struct] String
+# 1337| ValueCategory = lvalue
+# 1337| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1337| Conversion = [BoolConversion] conversion to bool
+# 1337| Type = [BoolType] bool
+# 1337| Value = [CStyleCast] 0
+# 1337| ValueCategory = prvalue
+# 1338| getStmt(440): [DoStmt] do (...) ...
+# 1340| getCondition(): [Literal] 0
+# 1340| Type = [IntType] int
+# 1340| Value = [Literal] 0
+# 1340| ValueCategory = prvalue
+# 1338| getStmt(): [BlockStmt] { ... }
+# 1339| getStmt(0): [DeclStmt] declaration
+# 1339| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x440
+# 1339| Type = [Struct] String
+# 1339| getVariable().getInitializer(): [Initializer] initializer for x440
+# 1339| getExpr(): [ConstructorCall] call to String
+# 1339| Type = [VoidType] void
+# 1339| ValueCategory = prvalue
+# 1340| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1340| Type = [VoidType] void
+# 1340| ValueCategory = prvalue
+# 1340| getQualifier(): [VariableAccess] x440
+# 1340| Type = [Struct] String
+# 1340| ValueCategory = lvalue
+# 1340| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1340| Conversion = [BoolConversion] conversion to bool
+# 1340| Type = [BoolType] bool
+# 1340| Value = [CStyleCast] 0
+# 1340| ValueCategory = prvalue
+# 1341| getStmt(441): [DoStmt] do (...) ...
+# 1343| getCondition(): [Literal] 0
+# 1343| Type = [IntType] int
+# 1343| Value = [Literal] 0
+# 1343| ValueCategory = prvalue
+# 1341| getStmt(): [BlockStmt] { ... }
+# 1342| getStmt(0): [DeclStmt] declaration
+# 1342| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x441
+# 1342| Type = [Struct] String
+# 1342| getVariable().getInitializer(): [Initializer] initializer for x441
+# 1342| getExpr(): [ConstructorCall] call to String
+# 1342| Type = [VoidType] void
+# 1342| ValueCategory = prvalue
+# 1343| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1343| Type = [VoidType] void
+# 1343| ValueCategory = prvalue
+# 1343| getQualifier(): [VariableAccess] x441
+# 1343| Type = [Struct] String
+# 1343| ValueCategory = lvalue
+# 1343| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1343| Conversion = [BoolConversion] conversion to bool
+# 1343| Type = [BoolType] bool
+# 1343| Value = [CStyleCast] 0
+# 1343| ValueCategory = prvalue
+# 1344| getStmt(442): [DoStmt] do (...) ...
+# 1346| getCondition(): [Literal] 0
+# 1346| Type = [IntType] int
+# 1346| Value = [Literal] 0
+# 1346| ValueCategory = prvalue
+# 1344| getStmt(): [BlockStmt] { ... }
+# 1345| getStmt(0): [DeclStmt] declaration
+# 1345| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x442
+# 1345| Type = [Struct] String
+# 1345| getVariable().getInitializer(): [Initializer] initializer for x442
+# 1345| getExpr(): [ConstructorCall] call to String
+# 1345| Type = [VoidType] void
+# 1345| ValueCategory = prvalue
+# 1346| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1346| Type = [VoidType] void
+# 1346| ValueCategory = prvalue
+# 1346| getQualifier(): [VariableAccess] x442
+# 1346| Type = [Struct] String
+# 1346| ValueCategory = lvalue
+# 1346| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1346| Conversion = [BoolConversion] conversion to bool
+# 1346| Type = [BoolType] bool
+# 1346| Value = [CStyleCast] 0
+# 1346| ValueCategory = prvalue
+# 1347| getStmt(443): [DoStmt] do (...) ...
+# 1349| getCondition(): [Literal] 0
+# 1349| Type = [IntType] int
+# 1349| Value = [Literal] 0
+# 1349| ValueCategory = prvalue
+# 1347| getStmt(): [BlockStmt] { ... }
+# 1348| getStmt(0): [DeclStmt] declaration
+# 1348| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x443
+# 1348| Type = [Struct] String
+# 1348| getVariable().getInitializer(): [Initializer] initializer for x443
+# 1348| getExpr(): [ConstructorCall] call to String
+# 1348| Type = [VoidType] void
+# 1348| ValueCategory = prvalue
+# 1349| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1349| Type = [VoidType] void
+# 1349| ValueCategory = prvalue
+# 1349| getQualifier(): [VariableAccess] x443
+# 1349| Type = [Struct] String
+# 1349| ValueCategory = lvalue
+# 1349| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1349| Conversion = [BoolConversion] conversion to bool
+# 1349| Type = [BoolType] bool
+# 1349| Value = [CStyleCast] 0
+# 1349| ValueCategory = prvalue
+# 1350| getStmt(444): [DoStmt] do (...) ...
+# 1352| getCondition(): [Literal] 0
+# 1352| Type = [IntType] int
+# 1352| Value = [Literal] 0
+# 1352| ValueCategory = prvalue
+# 1350| getStmt(): [BlockStmt] { ... }
+# 1351| getStmt(0): [DeclStmt] declaration
+# 1351| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x444
+# 1351| Type = [Struct] String
+# 1351| getVariable().getInitializer(): [Initializer] initializer for x444
+# 1351| getExpr(): [ConstructorCall] call to String
+# 1351| Type = [VoidType] void
+# 1351| ValueCategory = prvalue
+# 1352| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1352| Type = [VoidType] void
+# 1352| ValueCategory = prvalue
+# 1352| getQualifier(): [VariableAccess] x444
+# 1352| Type = [Struct] String
+# 1352| ValueCategory = lvalue
+# 1352| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1352| Conversion = [BoolConversion] conversion to bool
+# 1352| Type = [BoolType] bool
+# 1352| Value = [CStyleCast] 0
+# 1352| ValueCategory = prvalue
+# 1353| getStmt(445): [DoStmt] do (...) ...
+# 1355| getCondition(): [Literal] 0
+# 1355| Type = [IntType] int
+# 1355| Value = [Literal] 0
+# 1355| ValueCategory = prvalue
+# 1353| getStmt(): [BlockStmt] { ... }
+# 1354| getStmt(0): [DeclStmt] declaration
+# 1354| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x445
+# 1354| Type = [Struct] String
+# 1354| getVariable().getInitializer(): [Initializer] initializer for x445
+# 1354| getExpr(): [ConstructorCall] call to String
+# 1354| Type = [VoidType] void
+# 1354| ValueCategory = prvalue
+# 1355| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1355| Type = [VoidType] void
+# 1355| ValueCategory = prvalue
+# 1355| getQualifier(): [VariableAccess] x445
+# 1355| Type = [Struct] String
+# 1355| ValueCategory = lvalue
+# 1355| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1355| Conversion = [BoolConversion] conversion to bool
+# 1355| Type = [BoolType] bool
+# 1355| Value = [CStyleCast] 0
+# 1355| ValueCategory = prvalue
+# 1356| getStmt(446): [DoStmt] do (...) ...
+# 1358| getCondition(): [Literal] 0
+# 1358| Type = [IntType] int
+# 1358| Value = [Literal] 0
+# 1358| ValueCategory = prvalue
+# 1356| getStmt(): [BlockStmt] { ... }
+# 1357| getStmt(0): [DeclStmt] declaration
+# 1357| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x446
+# 1357| Type = [Struct] String
+# 1357| getVariable().getInitializer(): [Initializer] initializer for x446
+# 1357| getExpr(): [ConstructorCall] call to String
+# 1357| Type = [VoidType] void
+# 1357| ValueCategory = prvalue
+# 1358| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1358| Type = [VoidType] void
+# 1358| ValueCategory = prvalue
+# 1358| getQualifier(): [VariableAccess] x446
+# 1358| Type = [Struct] String
+# 1358| ValueCategory = lvalue
+# 1358| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1358| Conversion = [BoolConversion] conversion to bool
+# 1358| Type = [BoolType] bool
+# 1358| Value = [CStyleCast] 0
+# 1358| ValueCategory = prvalue
+# 1359| getStmt(447): [DoStmt] do (...) ...
+# 1361| getCondition(): [Literal] 0
+# 1361| Type = [IntType] int
+# 1361| Value = [Literal] 0
+# 1361| ValueCategory = prvalue
+# 1359| getStmt(): [BlockStmt] { ... }
+# 1360| getStmt(0): [DeclStmt] declaration
+# 1360| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x447
+# 1360| Type = [Struct] String
+# 1360| getVariable().getInitializer(): [Initializer] initializer for x447
+# 1360| getExpr(): [ConstructorCall] call to String
+# 1360| Type = [VoidType] void
+# 1360| ValueCategory = prvalue
+# 1361| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1361| Type = [VoidType] void
+# 1361| ValueCategory = prvalue
+# 1361| getQualifier(): [VariableAccess] x447
+# 1361| Type = [Struct] String
+# 1361| ValueCategory = lvalue
+# 1361| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1361| Conversion = [BoolConversion] conversion to bool
+# 1361| Type = [BoolType] bool
+# 1361| Value = [CStyleCast] 0
+# 1361| ValueCategory = prvalue
+# 1362| getStmt(448): [DoStmt] do (...) ...
+# 1364| getCondition(): [Literal] 0
+# 1364| Type = [IntType] int
+# 1364| Value = [Literal] 0
+# 1364| ValueCategory = prvalue
+# 1362| getStmt(): [BlockStmt] { ... }
+# 1363| getStmt(0): [DeclStmt] declaration
+# 1363| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x448
+# 1363| Type = [Struct] String
+# 1363| getVariable().getInitializer(): [Initializer] initializer for x448
+# 1363| getExpr(): [ConstructorCall] call to String
+# 1363| Type = [VoidType] void
+# 1363| ValueCategory = prvalue
+# 1364| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1364| Type = [VoidType] void
+# 1364| ValueCategory = prvalue
+# 1364| getQualifier(): [VariableAccess] x448
+# 1364| Type = [Struct] String
+# 1364| ValueCategory = lvalue
+# 1364| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1364| Conversion = [BoolConversion] conversion to bool
+# 1364| Type = [BoolType] bool
+# 1364| Value = [CStyleCast] 0
+# 1364| ValueCategory = prvalue
+# 1365| getStmt(449): [DoStmt] do (...) ...
+# 1367| getCondition(): [Literal] 0
+# 1367| Type = [IntType] int
+# 1367| Value = [Literal] 0
+# 1367| ValueCategory = prvalue
+# 1365| getStmt(): [BlockStmt] { ... }
+# 1366| getStmt(0): [DeclStmt] declaration
+# 1366| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x449
+# 1366| Type = [Struct] String
+# 1366| getVariable().getInitializer(): [Initializer] initializer for x449
+# 1366| getExpr(): [ConstructorCall] call to String
+# 1366| Type = [VoidType] void
+# 1366| ValueCategory = prvalue
+# 1367| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1367| Type = [VoidType] void
+# 1367| ValueCategory = prvalue
+# 1367| getQualifier(): [VariableAccess] x449
+# 1367| Type = [Struct] String
+# 1367| ValueCategory = lvalue
+# 1367| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1367| Conversion = [BoolConversion] conversion to bool
+# 1367| Type = [BoolType] bool
+# 1367| Value = [CStyleCast] 0
+# 1367| ValueCategory = prvalue
+# 1368| getStmt(450): [DoStmt] do (...) ...
+# 1370| getCondition(): [Literal] 0
+# 1370| Type = [IntType] int
+# 1370| Value = [Literal] 0
+# 1370| ValueCategory = prvalue
+# 1368| getStmt(): [BlockStmt] { ... }
+# 1369| getStmt(0): [DeclStmt] declaration
+# 1369| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x450
+# 1369| Type = [Struct] String
+# 1369| getVariable().getInitializer(): [Initializer] initializer for x450
+# 1369| getExpr(): [ConstructorCall] call to String
+# 1369| Type = [VoidType] void
+# 1369| ValueCategory = prvalue
+# 1370| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1370| Type = [VoidType] void
+# 1370| ValueCategory = prvalue
+# 1370| getQualifier(): [VariableAccess] x450
+# 1370| Type = [Struct] String
+# 1370| ValueCategory = lvalue
+# 1370| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1370| Conversion = [BoolConversion] conversion to bool
+# 1370| Type = [BoolType] bool
+# 1370| Value = [CStyleCast] 0
+# 1370| ValueCategory = prvalue
+# 1371| getStmt(451): [DoStmt] do (...) ...
+# 1373| getCondition(): [Literal] 0
+# 1373| Type = [IntType] int
+# 1373| Value = [Literal] 0
+# 1373| ValueCategory = prvalue
+# 1371| getStmt(): [BlockStmt] { ... }
+# 1372| getStmt(0): [DeclStmt] declaration
+# 1372| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x451
+# 1372| Type = [Struct] String
+# 1372| getVariable().getInitializer(): [Initializer] initializer for x451
+# 1372| getExpr(): [ConstructorCall] call to String
+# 1372| Type = [VoidType] void
+# 1372| ValueCategory = prvalue
+# 1373| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1373| Type = [VoidType] void
+# 1373| ValueCategory = prvalue
+# 1373| getQualifier(): [VariableAccess] x451
+# 1373| Type = [Struct] String
+# 1373| ValueCategory = lvalue
+# 1373| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1373| Conversion = [BoolConversion] conversion to bool
+# 1373| Type = [BoolType] bool
+# 1373| Value = [CStyleCast] 0
+# 1373| ValueCategory = prvalue
+# 1374| getStmt(452): [DoStmt] do (...) ...
+# 1376| getCondition(): [Literal] 0
+# 1376| Type = [IntType] int
+# 1376| Value = [Literal] 0
+# 1376| ValueCategory = prvalue
+# 1374| getStmt(): [BlockStmt] { ... }
+# 1375| getStmt(0): [DeclStmt] declaration
+# 1375| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x452
+# 1375| Type = [Struct] String
+# 1375| getVariable().getInitializer(): [Initializer] initializer for x452
+# 1375| getExpr(): [ConstructorCall] call to String
+# 1375| Type = [VoidType] void
+# 1375| ValueCategory = prvalue
+# 1376| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1376| Type = [VoidType] void
+# 1376| ValueCategory = prvalue
+# 1376| getQualifier(): [VariableAccess] x452
+# 1376| Type = [Struct] String
+# 1376| ValueCategory = lvalue
+# 1376| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1376| Conversion = [BoolConversion] conversion to bool
+# 1376| Type = [BoolType] bool
+# 1376| Value = [CStyleCast] 0
+# 1376| ValueCategory = prvalue
+# 1377| getStmt(453): [DoStmt] do (...) ...
+# 1379| getCondition(): [Literal] 0
+# 1379| Type = [IntType] int
+# 1379| Value = [Literal] 0
+# 1379| ValueCategory = prvalue
+# 1377| getStmt(): [BlockStmt] { ... }
+# 1378| getStmt(0): [DeclStmt] declaration
+# 1378| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x453
+# 1378| Type = [Struct] String
+# 1378| getVariable().getInitializer(): [Initializer] initializer for x453
+# 1378| getExpr(): [ConstructorCall] call to String
+# 1378| Type = [VoidType] void
+# 1378| ValueCategory = prvalue
+# 1379| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1379| Type = [VoidType] void
+# 1379| ValueCategory = prvalue
+# 1379| getQualifier(): [VariableAccess] x453
+# 1379| Type = [Struct] String
+# 1379| ValueCategory = lvalue
+# 1379| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1379| Conversion = [BoolConversion] conversion to bool
+# 1379| Type = [BoolType] bool
+# 1379| Value = [CStyleCast] 0
+# 1379| ValueCategory = prvalue
+# 1380| getStmt(454): [DoStmt] do (...) ...
+# 1382| getCondition(): [Literal] 0
+# 1382| Type = [IntType] int
+# 1382| Value = [Literal] 0
+# 1382| ValueCategory = prvalue
+# 1380| getStmt(): [BlockStmt] { ... }
+# 1381| getStmt(0): [DeclStmt] declaration
+# 1381| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x454
+# 1381| Type = [Struct] String
+# 1381| getVariable().getInitializer(): [Initializer] initializer for x454
+# 1381| getExpr(): [ConstructorCall] call to String
+# 1381| Type = [VoidType] void
+# 1381| ValueCategory = prvalue
+# 1382| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1382| Type = [VoidType] void
+# 1382| ValueCategory = prvalue
+# 1382| getQualifier(): [VariableAccess] x454
+# 1382| Type = [Struct] String
+# 1382| ValueCategory = lvalue
+# 1382| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1382| Conversion = [BoolConversion] conversion to bool
+# 1382| Type = [BoolType] bool
+# 1382| Value = [CStyleCast] 0
+# 1382| ValueCategory = prvalue
+# 1383| getStmt(455): [DoStmt] do (...) ...
+# 1385| getCondition(): [Literal] 0
+# 1385| Type = [IntType] int
+# 1385| Value = [Literal] 0
+# 1385| ValueCategory = prvalue
+# 1383| getStmt(): [BlockStmt] { ... }
+# 1384| getStmt(0): [DeclStmt] declaration
+# 1384| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x455
+# 1384| Type = [Struct] String
+# 1384| getVariable().getInitializer(): [Initializer] initializer for x455
+# 1384| getExpr(): [ConstructorCall] call to String
+# 1384| Type = [VoidType] void
+# 1384| ValueCategory = prvalue
+# 1385| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1385| Type = [VoidType] void
+# 1385| ValueCategory = prvalue
+# 1385| getQualifier(): [VariableAccess] x455
+# 1385| Type = [Struct] String
+# 1385| ValueCategory = lvalue
+# 1385| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1385| Conversion = [BoolConversion] conversion to bool
+# 1385| Type = [BoolType] bool
+# 1385| Value = [CStyleCast] 0
+# 1385| ValueCategory = prvalue
+# 1386| getStmt(456): [DoStmt] do (...) ...
+# 1388| getCondition(): [Literal] 0
+# 1388| Type = [IntType] int
+# 1388| Value = [Literal] 0
+# 1388| ValueCategory = prvalue
+# 1386| getStmt(): [BlockStmt] { ... }
+# 1387| getStmt(0): [DeclStmt] declaration
+# 1387| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x456
+# 1387| Type = [Struct] String
+# 1387| getVariable().getInitializer(): [Initializer] initializer for x456
+# 1387| getExpr(): [ConstructorCall] call to String
+# 1387| Type = [VoidType] void
+# 1387| ValueCategory = prvalue
+# 1388| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1388| Type = [VoidType] void
+# 1388| ValueCategory = prvalue
+# 1388| getQualifier(): [VariableAccess] x456
+# 1388| Type = [Struct] String
+# 1388| ValueCategory = lvalue
+# 1388| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1388| Conversion = [BoolConversion] conversion to bool
+# 1388| Type = [BoolType] bool
+# 1388| Value = [CStyleCast] 0
+# 1388| ValueCategory = prvalue
+# 1389| getStmt(457): [DoStmt] do (...) ...
+# 1391| getCondition(): [Literal] 0
+# 1391| Type = [IntType] int
+# 1391| Value = [Literal] 0
+# 1391| ValueCategory = prvalue
+# 1389| getStmt(): [BlockStmt] { ... }
+# 1390| getStmt(0): [DeclStmt] declaration
+# 1390| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x457
+# 1390| Type = [Struct] String
+# 1390| getVariable().getInitializer(): [Initializer] initializer for x457
+# 1390| getExpr(): [ConstructorCall] call to String
+# 1390| Type = [VoidType] void
+# 1390| ValueCategory = prvalue
+# 1391| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1391| Type = [VoidType] void
+# 1391| ValueCategory = prvalue
+# 1391| getQualifier(): [VariableAccess] x457
+# 1391| Type = [Struct] String
+# 1391| ValueCategory = lvalue
+# 1391| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1391| Conversion = [BoolConversion] conversion to bool
+# 1391| Type = [BoolType] bool
+# 1391| Value = [CStyleCast] 0
+# 1391| ValueCategory = prvalue
+# 1392| getStmt(458): [DoStmt] do (...) ...
+# 1394| getCondition(): [Literal] 0
+# 1394| Type = [IntType] int
+# 1394| Value = [Literal] 0
+# 1394| ValueCategory = prvalue
+# 1392| getStmt(): [BlockStmt] { ... }
+# 1393| getStmt(0): [DeclStmt] declaration
+# 1393| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x458
+# 1393| Type = [Struct] String
+# 1393| getVariable().getInitializer(): [Initializer] initializer for x458
+# 1393| getExpr(): [ConstructorCall] call to String
+# 1393| Type = [VoidType] void
+# 1393| ValueCategory = prvalue
+# 1394| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1394| Type = [VoidType] void
+# 1394| ValueCategory = prvalue
+# 1394| getQualifier(): [VariableAccess] x458
+# 1394| Type = [Struct] String
+# 1394| ValueCategory = lvalue
+# 1394| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1394| Conversion = [BoolConversion] conversion to bool
+# 1394| Type = [BoolType] bool
+# 1394| Value = [CStyleCast] 0
+# 1394| ValueCategory = prvalue
+# 1395| getStmt(459): [DoStmt] do (...) ...
+# 1397| getCondition(): [Literal] 0
+# 1397| Type = [IntType] int
+# 1397| Value = [Literal] 0
+# 1397| ValueCategory = prvalue
+# 1395| getStmt(): [BlockStmt] { ... }
+# 1396| getStmt(0): [DeclStmt] declaration
+# 1396| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x459
+# 1396| Type = [Struct] String
+# 1396| getVariable().getInitializer(): [Initializer] initializer for x459
+# 1396| getExpr(): [ConstructorCall] call to String
+# 1396| Type = [VoidType] void
+# 1396| ValueCategory = prvalue
+# 1397| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1397| Type = [VoidType] void
+# 1397| ValueCategory = prvalue
+# 1397| getQualifier(): [VariableAccess] x459
+# 1397| Type = [Struct] String
+# 1397| ValueCategory = lvalue
+# 1397| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1397| Conversion = [BoolConversion] conversion to bool
+# 1397| Type = [BoolType] bool
+# 1397| Value = [CStyleCast] 0
+# 1397| ValueCategory = prvalue
+# 1398| getStmt(460): [DoStmt] do (...) ...
+# 1400| getCondition(): [Literal] 0
+# 1400| Type = [IntType] int
+# 1400| Value = [Literal] 0
+# 1400| ValueCategory = prvalue
+# 1398| getStmt(): [BlockStmt] { ... }
+# 1399| getStmt(0): [DeclStmt] declaration
+# 1399| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x460
+# 1399| Type = [Struct] String
+# 1399| getVariable().getInitializer(): [Initializer] initializer for x460
+# 1399| getExpr(): [ConstructorCall] call to String
+# 1399| Type = [VoidType] void
+# 1399| ValueCategory = prvalue
+# 1400| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1400| Type = [VoidType] void
+# 1400| ValueCategory = prvalue
+# 1400| getQualifier(): [VariableAccess] x460
+# 1400| Type = [Struct] String
+# 1400| ValueCategory = lvalue
+# 1400| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1400| Conversion = [BoolConversion] conversion to bool
+# 1400| Type = [BoolType] bool
+# 1400| Value = [CStyleCast] 0
+# 1400| ValueCategory = prvalue
+# 1401| getStmt(461): [DoStmt] do (...) ...
+# 1403| getCondition(): [Literal] 0
+# 1403| Type = [IntType] int
+# 1403| Value = [Literal] 0
+# 1403| ValueCategory = prvalue
+# 1401| getStmt(): [BlockStmt] { ... }
+# 1402| getStmt(0): [DeclStmt] declaration
+# 1402| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x461
+# 1402| Type = [Struct] String
+# 1402| getVariable().getInitializer(): [Initializer] initializer for x461
+# 1402| getExpr(): [ConstructorCall] call to String
+# 1402| Type = [VoidType] void
+# 1402| ValueCategory = prvalue
+# 1403| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1403| Type = [VoidType] void
+# 1403| ValueCategory = prvalue
+# 1403| getQualifier(): [VariableAccess] x461
+# 1403| Type = [Struct] String
+# 1403| ValueCategory = lvalue
+# 1403| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1403| Conversion = [BoolConversion] conversion to bool
+# 1403| Type = [BoolType] bool
+# 1403| Value = [CStyleCast] 0
+# 1403| ValueCategory = prvalue
+# 1404| getStmt(462): [DoStmt] do (...) ...
+# 1406| getCondition(): [Literal] 0
+# 1406| Type = [IntType] int
+# 1406| Value = [Literal] 0
+# 1406| ValueCategory = prvalue
+# 1404| getStmt(): [BlockStmt] { ... }
+# 1405| getStmt(0): [DeclStmt] declaration
+# 1405| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x462
+# 1405| Type = [Struct] String
+# 1405| getVariable().getInitializer(): [Initializer] initializer for x462
+# 1405| getExpr(): [ConstructorCall] call to String
+# 1405| Type = [VoidType] void
+# 1405| ValueCategory = prvalue
+# 1406| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1406| Type = [VoidType] void
+# 1406| ValueCategory = prvalue
+# 1406| getQualifier(): [VariableAccess] x462
+# 1406| Type = [Struct] String
+# 1406| ValueCategory = lvalue
+# 1406| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1406| Conversion = [BoolConversion] conversion to bool
+# 1406| Type = [BoolType] bool
+# 1406| Value = [CStyleCast] 0
+# 1406| ValueCategory = prvalue
+# 1407| getStmt(463): [DoStmt] do (...) ...
+# 1409| getCondition(): [Literal] 0
+# 1409| Type = [IntType] int
+# 1409| Value = [Literal] 0
+# 1409| ValueCategory = prvalue
+# 1407| getStmt(): [BlockStmt] { ... }
+# 1408| getStmt(0): [DeclStmt] declaration
+# 1408| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x463
+# 1408| Type = [Struct] String
+# 1408| getVariable().getInitializer(): [Initializer] initializer for x463
+# 1408| getExpr(): [ConstructorCall] call to String
+# 1408| Type = [VoidType] void
+# 1408| ValueCategory = prvalue
+# 1409| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1409| Type = [VoidType] void
+# 1409| ValueCategory = prvalue
+# 1409| getQualifier(): [VariableAccess] x463
+# 1409| Type = [Struct] String
+# 1409| ValueCategory = lvalue
+# 1409| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1409| Conversion = [BoolConversion] conversion to bool
+# 1409| Type = [BoolType] bool
+# 1409| Value = [CStyleCast] 0
+# 1409| ValueCategory = prvalue
+# 1410| getStmt(464): [DoStmt] do (...) ...
+# 1412| getCondition(): [Literal] 0
+# 1412| Type = [IntType] int
+# 1412| Value = [Literal] 0
+# 1412| ValueCategory = prvalue
+# 1410| getStmt(): [BlockStmt] { ... }
+# 1411| getStmt(0): [DeclStmt] declaration
+# 1411| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x464
+# 1411| Type = [Struct] String
+# 1411| getVariable().getInitializer(): [Initializer] initializer for x464
+# 1411| getExpr(): [ConstructorCall] call to String
+# 1411| Type = [VoidType] void
+# 1411| ValueCategory = prvalue
+# 1412| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1412| Type = [VoidType] void
+# 1412| ValueCategory = prvalue
+# 1412| getQualifier(): [VariableAccess] x464
+# 1412| Type = [Struct] String
+# 1412| ValueCategory = lvalue
+# 1412| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1412| Conversion = [BoolConversion] conversion to bool
+# 1412| Type = [BoolType] bool
+# 1412| Value = [CStyleCast] 0
+# 1412| ValueCategory = prvalue
+# 1413| getStmt(465): [DoStmt] do (...) ...
+# 1415| getCondition(): [Literal] 0
+# 1415| Type = [IntType] int
+# 1415| Value = [Literal] 0
+# 1415| ValueCategory = prvalue
+# 1413| getStmt(): [BlockStmt] { ... }
+# 1414| getStmt(0): [DeclStmt] declaration
+# 1414| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x465
+# 1414| Type = [Struct] String
+# 1414| getVariable().getInitializer(): [Initializer] initializer for x465
+# 1414| getExpr(): [ConstructorCall] call to String
+# 1414| Type = [VoidType] void
+# 1414| ValueCategory = prvalue
+# 1415| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1415| Type = [VoidType] void
+# 1415| ValueCategory = prvalue
+# 1415| getQualifier(): [VariableAccess] x465
+# 1415| Type = [Struct] String
+# 1415| ValueCategory = lvalue
+# 1415| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1415| Conversion = [BoolConversion] conversion to bool
+# 1415| Type = [BoolType] bool
+# 1415| Value = [CStyleCast] 0
+# 1415| ValueCategory = prvalue
+# 1416| getStmt(466): [DoStmt] do (...) ...
+# 1418| getCondition(): [Literal] 0
+# 1418| Type = [IntType] int
+# 1418| Value = [Literal] 0
+# 1418| ValueCategory = prvalue
+# 1416| getStmt(): [BlockStmt] { ... }
+# 1417| getStmt(0): [DeclStmt] declaration
+# 1417| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x466
+# 1417| Type = [Struct] String
+# 1417| getVariable().getInitializer(): [Initializer] initializer for x466
+# 1417| getExpr(): [ConstructorCall] call to String
+# 1417| Type = [VoidType] void
+# 1417| ValueCategory = prvalue
+# 1418| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1418| Type = [VoidType] void
+# 1418| ValueCategory = prvalue
+# 1418| getQualifier(): [VariableAccess] x466
+# 1418| Type = [Struct] String
+# 1418| ValueCategory = lvalue
+# 1418| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1418| Conversion = [BoolConversion] conversion to bool
+# 1418| Type = [BoolType] bool
+# 1418| Value = [CStyleCast] 0
+# 1418| ValueCategory = prvalue
+# 1419| getStmt(467): [DoStmt] do (...) ...
+# 1421| getCondition(): [Literal] 0
+# 1421| Type = [IntType] int
+# 1421| Value = [Literal] 0
+# 1421| ValueCategory = prvalue
+# 1419| getStmt(): [BlockStmt] { ... }
+# 1420| getStmt(0): [DeclStmt] declaration
+# 1420| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x467
+# 1420| Type = [Struct] String
+# 1420| getVariable().getInitializer(): [Initializer] initializer for x467
+# 1420| getExpr(): [ConstructorCall] call to String
+# 1420| Type = [VoidType] void
+# 1420| ValueCategory = prvalue
+# 1421| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1421| Type = [VoidType] void
+# 1421| ValueCategory = prvalue
+# 1421| getQualifier(): [VariableAccess] x467
+# 1421| Type = [Struct] String
+# 1421| ValueCategory = lvalue
+# 1421| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1421| Conversion = [BoolConversion] conversion to bool
+# 1421| Type = [BoolType] bool
+# 1421| Value = [CStyleCast] 0
+# 1421| ValueCategory = prvalue
+# 1422| getStmt(468): [DoStmt] do (...) ...
+# 1424| getCondition(): [Literal] 0
+# 1424| Type = [IntType] int
+# 1424| Value = [Literal] 0
+# 1424| ValueCategory = prvalue
+# 1422| getStmt(): [BlockStmt] { ... }
+# 1423| getStmt(0): [DeclStmt] declaration
+# 1423| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x468
+# 1423| Type = [Struct] String
+# 1423| getVariable().getInitializer(): [Initializer] initializer for x468
+# 1423| getExpr(): [ConstructorCall] call to String
+# 1423| Type = [VoidType] void
+# 1423| ValueCategory = prvalue
+# 1424| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1424| Type = [VoidType] void
+# 1424| ValueCategory = prvalue
+# 1424| getQualifier(): [VariableAccess] x468
+# 1424| Type = [Struct] String
+# 1424| ValueCategory = lvalue
+# 1424| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1424| Conversion = [BoolConversion] conversion to bool
+# 1424| Type = [BoolType] bool
+# 1424| Value = [CStyleCast] 0
+# 1424| ValueCategory = prvalue
+# 1425| getStmt(469): [DoStmt] do (...) ...
+# 1427| getCondition(): [Literal] 0
+# 1427| Type = [IntType] int
+# 1427| Value = [Literal] 0
+# 1427| ValueCategory = prvalue
+# 1425| getStmt(): [BlockStmt] { ... }
+# 1426| getStmt(0): [DeclStmt] declaration
+# 1426| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x469
+# 1426| Type = [Struct] String
+# 1426| getVariable().getInitializer(): [Initializer] initializer for x469
+# 1426| getExpr(): [ConstructorCall] call to String
+# 1426| Type = [VoidType] void
+# 1426| ValueCategory = prvalue
+# 1427| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1427| Type = [VoidType] void
+# 1427| ValueCategory = prvalue
+# 1427| getQualifier(): [VariableAccess] x469
+# 1427| Type = [Struct] String
+# 1427| ValueCategory = lvalue
+# 1427| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1427| Conversion = [BoolConversion] conversion to bool
+# 1427| Type = [BoolType] bool
+# 1427| Value = [CStyleCast] 0
+# 1427| ValueCategory = prvalue
+# 1428| getStmt(470): [DoStmt] do (...) ...
+# 1430| getCondition(): [Literal] 0
+# 1430| Type = [IntType] int
+# 1430| Value = [Literal] 0
+# 1430| ValueCategory = prvalue
+# 1428| getStmt(): [BlockStmt] { ... }
+# 1429| getStmt(0): [DeclStmt] declaration
+# 1429| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x470
+# 1429| Type = [Struct] String
+# 1429| getVariable().getInitializer(): [Initializer] initializer for x470
+# 1429| getExpr(): [ConstructorCall] call to String
+# 1429| Type = [VoidType] void
+# 1429| ValueCategory = prvalue
+# 1430| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1430| Type = [VoidType] void
+# 1430| ValueCategory = prvalue
+# 1430| getQualifier(): [VariableAccess] x470
+# 1430| Type = [Struct] String
+# 1430| ValueCategory = lvalue
+# 1430| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1430| Conversion = [BoolConversion] conversion to bool
+# 1430| Type = [BoolType] bool
+# 1430| Value = [CStyleCast] 0
+# 1430| ValueCategory = prvalue
+# 1431| getStmt(471): [DoStmt] do (...) ...
+# 1433| getCondition(): [Literal] 0
+# 1433| Type = [IntType] int
+# 1433| Value = [Literal] 0
+# 1433| ValueCategory = prvalue
+# 1431| getStmt(): [BlockStmt] { ... }
+# 1432| getStmt(0): [DeclStmt] declaration
+# 1432| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x471
+# 1432| Type = [Struct] String
+# 1432| getVariable().getInitializer(): [Initializer] initializer for x471
+# 1432| getExpr(): [ConstructorCall] call to String
+# 1432| Type = [VoidType] void
+# 1432| ValueCategory = prvalue
+# 1433| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1433| Type = [VoidType] void
+# 1433| ValueCategory = prvalue
+# 1433| getQualifier(): [VariableAccess] x471
+# 1433| Type = [Struct] String
+# 1433| ValueCategory = lvalue
+# 1433| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1433| Conversion = [BoolConversion] conversion to bool
+# 1433| Type = [BoolType] bool
+# 1433| Value = [CStyleCast] 0
+# 1433| ValueCategory = prvalue
+# 1434| getStmt(472): [DoStmt] do (...) ...
+# 1436| getCondition(): [Literal] 0
+# 1436| Type = [IntType] int
+# 1436| Value = [Literal] 0
+# 1436| ValueCategory = prvalue
+# 1434| getStmt(): [BlockStmt] { ... }
+# 1435| getStmt(0): [DeclStmt] declaration
+# 1435| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x472
+# 1435| Type = [Struct] String
+# 1435| getVariable().getInitializer(): [Initializer] initializer for x472
+# 1435| getExpr(): [ConstructorCall] call to String
+# 1435| Type = [VoidType] void
+# 1435| ValueCategory = prvalue
+# 1436| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1436| Type = [VoidType] void
+# 1436| ValueCategory = prvalue
+# 1436| getQualifier(): [VariableAccess] x472
+# 1436| Type = [Struct] String
+# 1436| ValueCategory = lvalue
+# 1436| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1436| Conversion = [BoolConversion] conversion to bool
+# 1436| Type = [BoolType] bool
+# 1436| Value = [CStyleCast] 0
+# 1436| ValueCategory = prvalue
+# 1437| getStmt(473): [DoStmt] do (...) ...
+# 1439| getCondition(): [Literal] 0
+# 1439| Type = [IntType] int
+# 1439| Value = [Literal] 0
+# 1439| ValueCategory = prvalue
+# 1437| getStmt(): [BlockStmt] { ... }
+# 1438| getStmt(0): [DeclStmt] declaration
+# 1438| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x473
+# 1438| Type = [Struct] String
+# 1438| getVariable().getInitializer(): [Initializer] initializer for x473
+# 1438| getExpr(): [ConstructorCall] call to String
+# 1438| Type = [VoidType] void
+# 1438| ValueCategory = prvalue
+# 1439| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1439| Type = [VoidType] void
+# 1439| ValueCategory = prvalue
+# 1439| getQualifier(): [VariableAccess] x473
+# 1439| Type = [Struct] String
+# 1439| ValueCategory = lvalue
+# 1439| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1439| Conversion = [BoolConversion] conversion to bool
+# 1439| Type = [BoolType] bool
+# 1439| Value = [CStyleCast] 0
+# 1439| ValueCategory = prvalue
+# 1440| getStmt(474): [DoStmt] do (...) ...
+# 1442| getCondition(): [Literal] 0
+# 1442| Type = [IntType] int
+# 1442| Value = [Literal] 0
+# 1442| ValueCategory = prvalue
+# 1440| getStmt(): [BlockStmt] { ... }
+# 1441| getStmt(0): [DeclStmt] declaration
+# 1441| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x474
+# 1441| Type = [Struct] String
+# 1441| getVariable().getInitializer(): [Initializer] initializer for x474
+# 1441| getExpr(): [ConstructorCall] call to String
+# 1441| Type = [VoidType] void
+# 1441| ValueCategory = prvalue
+# 1442| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1442| Type = [VoidType] void
+# 1442| ValueCategory = prvalue
+# 1442| getQualifier(): [VariableAccess] x474
+# 1442| Type = [Struct] String
+# 1442| ValueCategory = lvalue
+# 1442| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1442| Conversion = [BoolConversion] conversion to bool
+# 1442| Type = [BoolType] bool
+# 1442| Value = [CStyleCast] 0
+# 1442| ValueCategory = prvalue
+# 1443| getStmt(475): [DoStmt] do (...) ...
+# 1445| getCondition(): [Literal] 0
+# 1445| Type = [IntType] int
+# 1445| Value = [Literal] 0
+# 1445| ValueCategory = prvalue
+# 1443| getStmt(): [BlockStmt] { ... }
+# 1444| getStmt(0): [DeclStmt] declaration
+# 1444| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x475
+# 1444| Type = [Struct] String
+# 1444| getVariable().getInitializer(): [Initializer] initializer for x475
+# 1444| getExpr(): [ConstructorCall] call to String
+# 1444| Type = [VoidType] void
+# 1444| ValueCategory = prvalue
+# 1445| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1445| Type = [VoidType] void
+# 1445| ValueCategory = prvalue
+# 1445| getQualifier(): [VariableAccess] x475
+# 1445| Type = [Struct] String
+# 1445| ValueCategory = lvalue
+# 1445| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1445| Conversion = [BoolConversion] conversion to bool
+# 1445| Type = [BoolType] bool
+# 1445| Value = [CStyleCast] 0
+# 1445| ValueCategory = prvalue
+# 1446| getStmt(476): [DoStmt] do (...) ...
+# 1448| getCondition(): [Literal] 0
+# 1448| Type = [IntType] int
+# 1448| Value = [Literal] 0
+# 1448| ValueCategory = prvalue
+# 1446| getStmt(): [BlockStmt] { ... }
+# 1447| getStmt(0): [DeclStmt] declaration
+# 1447| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x476
+# 1447| Type = [Struct] String
+# 1447| getVariable().getInitializer(): [Initializer] initializer for x476
+# 1447| getExpr(): [ConstructorCall] call to String
+# 1447| Type = [VoidType] void
+# 1447| ValueCategory = prvalue
+# 1448| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1448| Type = [VoidType] void
+# 1448| ValueCategory = prvalue
+# 1448| getQualifier(): [VariableAccess] x476
+# 1448| Type = [Struct] String
+# 1448| ValueCategory = lvalue
+# 1448| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1448| Conversion = [BoolConversion] conversion to bool
+# 1448| Type = [BoolType] bool
+# 1448| Value = [CStyleCast] 0
+# 1448| ValueCategory = prvalue
+# 1449| getStmt(477): [DoStmt] do (...) ...
+# 1451| getCondition(): [Literal] 0
+# 1451| Type = [IntType] int
+# 1451| Value = [Literal] 0
+# 1451| ValueCategory = prvalue
+# 1449| getStmt(): [BlockStmt] { ... }
+# 1450| getStmt(0): [DeclStmt] declaration
+# 1450| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x477
+# 1450| Type = [Struct] String
+# 1450| getVariable().getInitializer(): [Initializer] initializer for x477
+# 1450| getExpr(): [ConstructorCall] call to String
+# 1450| Type = [VoidType] void
+# 1450| ValueCategory = prvalue
+# 1451| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1451| Type = [VoidType] void
+# 1451| ValueCategory = prvalue
+# 1451| getQualifier(): [VariableAccess] x477
+# 1451| Type = [Struct] String
+# 1451| ValueCategory = lvalue
+# 1451| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1451| Conversion = [BoolConversion] conversion to bool
+# 1451| Type = [BoolType] bool
+# 1451| Value = [CStyleCast] 0
+# 1451| ValueCategory = prvalue
+# 1452| getStmt(478): [DoStmt] do (...) ...
+# 1454| getCondition(): [Literal] 0
+# 1454| Type = [IntType] int
+# 1454| Value = [Literal] 0
+# 1454| ValueCategory = prvalue
+# 1452| getStmt(): [BlockStmt] { ... }
+# 1453| getStmt(0): [DeclStmt] declaration
+# 1453| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x478
+# 1453| Type = [Struct] String
+# 1453| getVariable().getInitializer(): [Initializer] initializer for x478
+# 1453| getExpr(): [ConstructorCall] call to String
+# 1453| Type = [VoidType] void
+# 1453| ValueCategory = prvalue
+# 1454| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1454| Type = [VoidType] void
+# 1454| ValueCategory = prvalue
+# 1454| getQualifier(): [VariableAccess] x478
+# 1454| Type = [Struct] String
+# 1454| ValueCategory = lvalue
+# 1454| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1454| Conversion = [BoolConversion] conversion to bool
+# 1454| Type = [BoolType] bool
+# 1454| Value = [CStyleCast] 0
+# 1454| ValueCategory = prvalue
+# 1455| getStmt(479): [DoStmt] do (...) ...
+# 1457| getCondition(): [Literal] 0
+# 1457| Type = [IntType] int
+# 1457| Value = [Literal] 0
+# 1457| ValueCategory = prvalue
+# 1455| getStmt(): [BlockStmt] { ... }
+# 1456| getStmt(0): [DeclStmt] declaration
+# 1456| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x479
+# 1456| Type = [Struct] String
+# 1456| getVariable().getInitializer(): [Initializer] initializer for x479
+# 1456| getExpr(): [ConstructorCall] call to String
+# 1456| Type = [VoidType] void
+# 1456| ValueCategory = prvalue
+# 1457| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1457| Type = [VoidType] void
+# 1457| ValueCategory = prvalue
+# 1457| getQualifier(): [VariableAccess] x479
+# 1457| Type = [Struct] String
+# 1457| ValueCategory = lvalue
+# 1457| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1457| Conversion = [BoolConversion] conversion to bool
+# 1457| Type = [BoolType] bool
+# 1457| Value = [CStyleCast] 0
+# 1457| ValueCategory = prvalue
+# 1458| getStmt(480): [DoStmt] do (...) ...
+# 1460| getCondition(): [Literal] 0
+# 1460| Type = [IntType] int
+# 1460| Value = [Literal] 0
+# 1460| ValueCategory = prvalue
+# 1458| getStmt(): [BlockStmt] { ... }
+# 1459| getStmt(0): [DeclStmt] declaration
+# 1459| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x480
+# 1459| Type = [Struct] String
+# 1459| getVariable().getInitializer(): [Initializer] initializer for x480
+# 1459| getExpr(): [ConstructorCall] call to String
+# 1459| Type = [VoidType] void
+# 1459| ValueCategory = prvalue
+# 1460| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1460| Type = [VoidType] void
+# 1460| ValueCategory = prvalue
+# 1460| getQualifier(): [VariableAccess] x480
+# 1460| Type = [Struct] String
+# 1460| ValueCategory = lvalue
+# 1460| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1460| Conversion = [BoolConversion] conversion to bool
+# 1460| Type = [BoolType] bool
+# 1460| Value = [CStyleCast] 0
+# 1460| ValueCategory = prvalue
+# 1461| getStmt(481): [DoStmt] do (...) ...
+# 1463| getCondition(): [Literal] 0
+# 1463| Type = [IntType] int
+# 1463| Value = [Literal] 0
+# 1463| ValueCategory = prvalue
+# 1461| getStmt(): [BlockStmt] { ... }
+# 1462| getStmt(0): [DeclStmt] declaration
+# 1462| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x481
+# 1462| Type = [Struct] String
+# 1462| getVariable().getInitializer(): [Initializer] initializer for x481
+# 1462| getExpr(): [ConstructorCall] call to String
+# 1462| Type = [VoidType] void
+# 1462| ValueCategory = prvalue
+# 1463| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1463| Type = [VoidType] void
+# 1463| ValueCategory = prvalue
+# 1463| getQualifier(): [VariableAccess] x481
+# 1463| Type = [Struct] String
+# 1463| ValueCategory = lvalue
+# 1463| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1463| Conversion = [BoolConversion] conversion to bool
+# 1463| Type = [BoolType] bool
+# 1463| Value = [CStyleCast] 0
+# 1463| ValueCategory = prvalue
+# 1464| getStmt(482): [DoStmt] do (...) ...
+# 1466| getCondition(): [Literal] 0
+# 1466| Type = [IntType] int
+# 1466| Value = [Literal] 0
+# 1466| ValueCategory = prvalue
+# 1464| getStmt(): [BlockStmt] { ... }
+# 1465| getStmt(0): [DeclStmt] declaration
+# 1465| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x482
+# 1465| Type = [Struct] String
+# 1465| getVariable().getInitializer(): [Initializer] initializer for x482
+# 1465| getExpr(): [ConstructorCall] call to String
+# 1465| Type = [VoidType] void
+# 1465| ValueCategory = prvalue
+# 1466| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1466| Type = [VoidType] void
+# 1466| ValueCategory = prvalue
+# 1466| getQualifier(): [VariableAccess] x482
+# 1466| Type = [Struct] String
+# 1466| ValueCategory = lvalue
+# 1466| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1466| Conversion = [BoolConversion] conversion to bool
+# 1466| Type = [BoolType] bool
+# 1466| Value = [CStyleCast] 0
+# 1466| ValueCategory = prvalue
+# 1467| getStmt(483): [DoStmt] do (...) ...
+# 1469| getCondition(): [Literal] 0
+# 1469| Type = [IntType] int
+# 1469| Value = [Literal] 0
+# 1469| ValueCategory = prvalue
+# 1467| getStmt(): [BlockStmt] { ... }
+# 1468| getStmt(0): [DeclStmt] declaration
+# 1468| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x483
+# 1468| Type = [Struct] String
+# 1468| getVariable().getInitializer(): [Initializer] initializer for x483
+# 1468| getExpr(): [ConstructorCall] call to String
+# 1468| Type = [VoidType] void
+# 1468| ValueCategory = prvalue
+# 1469| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1469| Type = [VoidType] void
+# 1469| ValueCategory = prvalue
+# 1469| getQualifier(): [VariableAccess] x483
+# 1469| Type = [Struct] String
+# 1469| ValueCategory = lvalue
+# 1469| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1469| Conversion = [BoolConversion] conversion to bool
+# 1469| Type = [BoolType] bool
+# 1469| Value = [CStyleCast] 0
+# 1469| ValueCategory = prvalue
+# 1470| getStmt(484): [DoStmt] do (...) ...
+# 1472| getCondition(): [Literal] 0
+# 1472| Type = [IntType] int
+# 1472| Value = [Literal] 0
+# 1472| ValueCategory = prvalue
+# 1470| getStmt(): [BlockStmt] { ... }
+# 1471| getStmt(0): [DeclStmt] declaration
+# 1471| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x484
+# 1471| Type = [Struct] String
+# 1471| getVariable().getInitializer(): [Initializer] initializer for x484
+# 1471| getExpr(): [ConstructorCall] call to String
+# 1471| Type = [VoidType] void
+# 1471| ValueCategory = prvalue
+# 1472| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1472| Type = [VoidType] void
+# 1472| ValueCategory = prvalue
+# 1472| getQualifier(): [VariableAccess] x484
+# 1472| Type = [Struct] String
+# 1472| ValueCategory = lvalue
+# 1472| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1472| Conversion = [BoolConversion] conversion to bool
+# 1472| Type = [BoolType] bool
+# 1472| Value = [CStyleCast] 0
+# 1472| ValueCategory = prvalue
+# 1473| getStmt(485): [DoStmt] do (...) ...
+# 1475| getCondition(): [Literal] 0
+# 1475| Type = [IntType] int
+# 1475| Value = [Literal] 0
+# 1475| ValueCategory = prvalue
+# 1473| getStmt(): [BlockStmt] { ... }
+# 1474| getStmt(0): [DeclStmt] declaration
+# 1474| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x485
+# 1474| Type = [Struct] String
+# 1474| getVariable().getInitializer(): [Initializer] initializer for x485
+# 1474| getExpr(): [ConstructorCall] call to String
+# 1474| Type = [VoidType] void
+# 1474| ValueCategory = prvalue
+# 1475| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1475| Type = [VoidType] void
+# 1475| ValueCategory = prvalue
+# 1475| getQualifier(): [VariableAccess] x485
+# 1475| Type = [Struct] String
+# 1475| ValueCategory = lvalue
+# 1475| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1475| Conversion = [BoolConversion] conversion to bool
+# 1475| Type = [BoolType] bool
+# 1475| Value = [CStyleCast] 0
+# 1475| ValueCategory = prvalue
+# 1476| getStmt(486): [DoStmt] do (...) ...
+# 1478| getCondition(): [Literal] 0
+# 1478| Type = [IntType] int
+# 1478| Value = [Literal] 0
+# 1478| ValueCategory = prvalue
+# 1476| getStmt(): [BlockStmt] { ... }
+# 1477| getStmt(0): [DeclStmt] declaration
+# 1477| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x486
+# 1477| Type = [Struct] String
+# 1477| getVariable().getInitializer(): [Initializer] initializer for x486
+# 1477| getExpr(): [ConstructorCall] call to String
+# 1477| Type = [VoidType] void
+# 1477| ValueCategory = prvalue
+# 1478| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1478| Type = [VoidType] void
+# 1478| ValueCategory = prvalue
+# 1478| getQualifier(): [VariableAccess] x486
+# 1478| Type = [Struct] String
+# 1478| ValueCategory = lvalue
+# 1478| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1478| Conversion = [BoolConversion] conversion to bool
+# 1478| Type = [BoolType] bool
+# 1478| Value = [CStyleCast] 0
+# 1478| ValueCategory = prvalue
+# 1479| getStmt(487): [DoStmt] do (...) ...
+# 1481| getCondition(): [Literal] 0
+# 1481| Type = [IntType] int
+# 1481| Value = [Literal] 0
+# 1481| ValueCategory = prvalue
+# 1479| getStmt(): [BlockStmt] { ... }
+# 1480| getStmt(0): [DeclStmt] declaration
+# 1480| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x487
+# 1480| Type = [Struct] String
+# 1480| getVariable().getInitializer(): [Initializer] initializer for x487
+# 1480| getExpr(): [ConstructorCall] call to String
+# 1480| Type = [VoidType] void
+# 1480| ValueCategory = prvalue
+# 1481| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1481| Type = [VoidType] void
+# 1481| ValueCategory = prvalue
+# 1481| getQualifier(): [VariableAccess] x487
+# 1481| Type = [Struct] String
+# 1481| ValueCategory = lvalue
+# 1481| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1481| Conversion = [BoolConversion] conversion to bool
+# 1481| Type = [BoolType] bool
+# 1481| Value = [CStyleCast] 0
+# 1481| ValueCategory = prvalue
+# 1482| getStmt(488): [DoStmt] do (...) ...
+# 1484| getCondition(): [Literal] 0
+# 1484| Type = [IntType] int
+# 1484| Value = [Literal] 0
+# 1484| ValueCategory = prvalue
+# 1482| getStmt(): [BlockStmt] { ... }
+# 1483| getStmt(0): [DeclStmt] declaration
+# 1483| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x488
+# 1483| Type = [Struct] String
+# 1483| getVariable().getInitializer(): [Initializer] initializer for x488
+# 1483| getExpr(): [ConstructorCall] call to String
+# 1483| Type = [VoidType] void
+# 1483| ValueCategory = prvalue
+# 1484| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1484| Type = [VoidType] void
+# 1484| ValueCategory = prvalue
+# 1484| getQualifier(): [VariableAccess] x488
+# 1484| Type = [Struct] String
+# 1484| ValueCategory = lvalue
+# 1484| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1484| Conversion = [BoolConversion] conversion to bool
+# 1484| Type = [BoolType] bool
+# 1484| Value = [CStyleCast] 0
+# 1484| ValueCategory = prvalue
+# 1485| getStmt(489): [DoStmt] do (...) ...
+# 1487| getCondition(): [Literal] 0
+# 1487| Type = [IntType] int
+# 1487| Value = [Literal] 0
+# 1487| ValueCategory = prvalue
+# 1485| getStmt(): [BlockStmt] { ... }
+# 1486| getStmt(0): [DeclStmt] declaration
+# 1486| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x489
+# 1486| Type = [Struct] String
+# 1486| getVariable().getInitializer(): [Initializer] initializer for x489
+# 1486| getExpr(): [ConstructorCall] call to String
+# 1486| Type = [VoidType] void
+# 1486| ValueCategory = prvalue
+# 1487| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1487| Type = [VoidType] void
+# 1487| ValueCategory = prvalue
+# 1487| getQualifier(): [VariableAccess] x489
+# 1487| Type = [Struct] String
+# 1487| ValueCategory = lvalue
+# 1487| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1487| Conversion = [BoolConversion] conversion to bool
+# 1487| Type = [BoolType] bool
+# 1487| Value = [CStyleCast] 0
+# 1487| ValueCategory = prvalue
+# 1488| getStmt(490): [DoStmt] do (...) ...
+# 1490| getCondition(): [Literal] 0
+# 1490| Type = [IntType] int
+# 1490| Value = [Literal] 0
+# 1490| ValueCategory = prvalue
+# 1488| getStmt(): [BlockStmt] { ... }
+# 1489| getStmt(0): [DeclStmt] declaration
+# 1489| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x490
+# 1489| Type = [Struct] String
+# 1489| getVariable().getInitializer(): [Initializer] initializer for x490
+# 1489| getExpr(): [ConstructorCall] call to String
+# 1489| Type = [VoidType] void
+# 1489| ValueCategory = prvalue
+# 1490| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1490| Type = [VoidType] void
+# 1490| ValueCategory = prvalue
+# 1490| getQualifier(): [VariableAccess] x490
+# 1490| Type = [Struct] String
+# 1490| ValueCategory = lvalue
+# 1490| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1490| Conversion = [BoolConversion] conversion to bool
+# 1490| Type = [BoolType] bool
+# 1490| Value = [CStyleCast] 0
+# 1490| ValueCategory = prvalue
+# 1491| getStmt(491): [DoStmt] do (...) ...
+# 1493| getCondition(): [Literal] 0
+# 1493| Type = [IntType] int
+# 1493| Value = [Literal] 0
+# 1493| ValueCategory = prvalue
+# 1491| getStmt(): [BlockStmt] { ... }
+# 1492| getStmt(0): [DeclStmt] declaration
+# 1492| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x491
+# 1492| Type = [Struct] String
+# 1492| getVariable().getInitializer(): [Initializer] initializer for x491
+# 1492| getExpr(): [ConstructorCall] call to String
+# 1492| Type = [VoidType] void
+# 1492| ValueCategory = prvalue
+# 1493| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1493| Type = [VoidType] void
+# 1493| ValueCategory = prvalue
+# 1493| getQualifier(): [VariableAccess] x491
+# 1493| Type = [Struct] String
+# 1493| ValueCategory = lvalue
+# 1493| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1493| Conversion = [BoolConversion] conversion to bool
+# 1493| Type = [BoolType] bool
+# 1493| Value = [CStyleCast] 0
+# 1493| ValueCategory = prvalue
+# 1494| getStmt(492): [DoStmt] do (...) ...
+# 1496| getCondition(): [Literal] 0
+# 1496| Type = [IntType] int
+# 1496| Value = [Literal] 0
+# 1496| ValueCategory = prvalue
+# 1494| getStmt(): [BlockStmt] { ... }
+# 1495| getStmt(0): [DeclStmt] declaration
+# 1495| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x492
+# 1495| Type = [Struct] String
+# 1495| getVariable().getInitializer(): [Initializer] initializer for x492
+# 1495| getExpr(): [ConstructorCall] call to String
+# 1495| Type = [VoidType] void
+# 1495| ValueCategory = prvalue
+# 1496| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1496| Type = [VoidType] void
+# 1496| ValueCategory = prvalue
+# 1496| getQualifier(): [VariableAccess] x492
+# 1496| Type = [Struct] String
+# 1496| ValueCategory = lvalue
+# 1496| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1496| Conversion = [BoolConversion] conversion to bool
+# 1496| Type = [BoolType] bool
+# 1496| Value = [CStyleCast] 0
+# 1496| ValueCategory = prvalue
+# 1497| getStmt(493): [DoStmt] do (...) ...
+# 1499| getCondition(): [Literal] 0
+# 1499| Type = [IntType] int
+# 1499| Value = [Literal] 0
+# 1499| ValueCategory = prvalue
+# 1497| getStmt(): [BlockStmt] { ... }
+# 1498| getStmt(0): [DeclStmt] declaration
+# 1498| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x493
+# 1498| Type = [Struct] String
+# 1498| getVariable().getInitializer(): [Initializer] initializer for x493
+# 1498| getExpr(): [ConstructorCall] call to String
+# 1498| Type = [VoidType] void
+# 1498| ValueCategory = prvalue
+# 1499| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1499| Type = [VoidType] void
+# 1499| ValueCategory = prvalue
+# 1499| getQualifier(): [VariableAccess] x493
+# 1499| Type = [Struct] String
+# 1499| ValueCategory = lvalue
+# 1499| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1499| Conversion = [BoolConversion] conversion to bool
+# 1499| Type = [BoolType] bool
+# 1499| Value = [CStyleCast] 0
+# 1499| ValueCategory = prvalue
+# 1500| getStmt(494): [DoStmt] do (...) ...
+# 1502| getCondition(): [Literal] 0
+# 1502| Type = [IntType] int
+# 1502| Value = [Literal] 0
+# 1502| ValueCategory = prvalue
+# 1500| getStmt(): [BlockStmt] { ... }
+# 1501| getStmt(0): [DeclStmt] declaration
+# 1501| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x494
+# 1501| Type = [Struct] String
+# 1501| getVariable().getInitializer(): [Initializer] initializer for x494
+# 1501| getExpr(): [ConstructorCall] call to String
+# 1501| Type = [VoidType] void
+# 1501| ValueCategory = prvalue
+# 1502| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1502| Type = [VoidType] void
+# 1502| ValueCategory = prvalue
+# 1502| getQualifier(): [VariableAccess] x494
+# 1502| Type = [Struct] String
+# 1502| ValueCategory = lvalue
+# 1502| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1502| Conversion = [BoolConversion] conversion to bool
+# 1502| Type = [BoolType] bool
+# 1502| Value = [CStyleCast] 0
+# 1502| ValueCategory = prvalue
+# 1503| getStmt(495): [DoStmt] do (...) ...
+# 1505| getCondition(): [Literal] 0
+# 1505| Type = [IntType] int
+# 1505| Value = [Literal] 0
+# 1505| ValueCategory = prvalue
+# 1503| getStmt(): [BlockStmt] { ... }
+# 1504| getStmt(0): [DeclStmt] declaration
+# 1504| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x495
+# 1504| Type = [Struct] String
+# 1504| getVariable().getInitializer(): [Initializer] initializer for x495
+# 1504| getExpr(): [ConstructorCall] call to String
+# 1504| Type = [VoidType] void
+# 1504| ValueCategory = prvalue
+# 1505| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1505| Type = [VoidType] void
+# 1505| ValueCategory = prvalue
+# 1505| getQualifier(): [VariableAccess] x495
+# 1505| Type = [Struct] String
+# 1505| ValueCategory = lvalue
+# 1505| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1505| Conversion = [BoolConversion] conversion to bool
+# 1505| Type = [BoolType] bool
+# 1505| Value = [CStyleCast] 0
+# 1505| ValueCategory = prvalue
+# 1506| getStmt(496): [DoStmt] do (...) ...
+# 1508| getCondition(): [Literal] 0
+# 1508| Type = [IntType] int
+# 1508| Value = [Literal] 0
+# 1508| ValueCategory = prvalue
+# 1506| getStmt(): [BlockStmt] { ... }
+# 1507| getStmt(0): [DeclStmt] declaration
+# 1507| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x496
+# 1507| Type = [Struct] String
+# 1507| getVariable().getInitializer(): [Initializer] initializer for x496
+# 1507| getExpr(): [ConstructorCall] call to String
+# 1507| Type = [VoidType] void
+# 1507| ValueCategory = prvalue
+# 1508| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1508| Type = [VoidType] void
+# 1508| ValueCategory = prvalue
+# 1508| getQualifier(): [VariableAccess] x496
+# 1508| Type = [Struct] String
+# 1508| ValueCategory = lvalue
+# 1508| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1508| Conversion = [BoolConversion] conversion to bool
+# 1508| Type = [BoolType] bool
+# 1508| Value = [CStyleCast] 0
+# 1508| ValueCategory = prvalue
+# 1509| getStmt(497): [DoStmt] do (...) ...
+# 1511| getCondition(): [Literal] 0
+# 1511| Type = [IntType] int
+# 1511| Value = [Literal] 0
+# 1511| ValueCategory = prvalue
+# 1509| getStmt(): [BlockStmt] { ... }
+# 1510| getStmt(0): [DeclStmt] declaration
+# 1510| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x497
+# 1510| Type = [Struct] String
+# 1510| getVariable().getInitializer(): [Initializer] initializer for x497
+# 1510| getExpr(): [ConstructorCall] call to String
+# 1510| Type = [VoidType] void
+# 1510| ValueCategory = prvalue
+# 1511| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1511| Type = [VoidType] void
+# 1511| ValueCategory = prvalue
+# 1511| getQualifier(): [VariableAccess] x497
+# 1511| Type = [Struct] String
+# 1511| ValueCategory = lvalue
+# 1511| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1511| Conversion = [BoolConversion] conversion to bool
+# 1511| Type = [BoolType] bool
+# 1511| Value = [CStyleCast] 0
+# 1511| ValueCategory = prvalue
+# 1512| getStmt(498): [DoStmt] do (...) ...
+# 1514| getCondition(): [Literal] 0
+# 1514| Type = [IntType] int
+# 1514| Value = [Literal] 0
+# 1514| ValueCategory = prvalue
+# 1512| getStmt(): [BlockStmt] { ... }
+# 1513| getStmt(0): [DeclStmt] declaration
+# 1513| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x498
+# 1513| Type = [Struct] String
+# 1513| getVariable().getInitializer(): [Initializer] initializer for x498
+# 1513| getExpr(): [ConstructorCall] call to String
+# 1513| Type = [VoidType] void
+# 1513| ValueCategory = prvalue
+# 1514| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1514| Type = [VoidType] void
+# 1514| ValueCategory = prvalue
+# 1514| getQualifier(): [VariableAccess] x498
+# 1514| Type = [Struct] String
+# 1514| ValueCategory = lvalue
+# 1514| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1514| Conversion = [BoolConversion] conversion to bool
+# 1514| Type = [BoolType] bool
+# 1514| Value = [CStyleCast] 0
+# 1514| ValueCategory = prvalue
+# 1515| getStmt(499): [DoStmt] do (...) ...
+# 1517| getCondition(): [Literal] 0
+# 1517| Type = [IntType] int
+# 1517| Value = [Literal] 0
+# 1517| ValueCategory = prvalue
+# 1515| getStmt(): [BlockStmt] { ... }
+# 1516| getStmt(0): [DeclStmt] declaration
+# 1516| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x499
+# 1516| Type = [Struct] String
+# 1516| getVariable().getInitializer(): [Initializer] initializer for x499
+# 1516| getExpr(): [ConstructorCall] call to String
+# 1516| Type = [VoidType] void
+# 1516| ValueCategory = prvalue
+# 1517| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1517| Type = [VoidType] void
+# 1517| ValueCategory = prvalue
+# 1517| getQualifier(): [VariableAccess] x499
+# 1517| Type = [Struct] String
+# 1517| ValueCategory = lvalue
+# 1517| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1517| Conversion = [BoolConversion] conversion to bool
+# 1517| Type = [BoolType] bool
+# 1517| Value = [CStyleCast] 0
+# 1517| ValueCategory = prvalue
+# 1518| getStmt(500): [DoStmt] do (...) ...
+# 1520| getCondition(): [Literal] 0
+# 1520| Type = [IntType] int
+# 1520| Value = [Literal] 0
+# 1520| ValueCategory = prvalue
+# 1518| getStmt(): [BlockStmt] { ... }
+# 1519| getStmt(0): [DeclStmt] declaration
+# 1519| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x500
+# 1519| Type = [Struct] String
+# 1519| getVariable().getInitializer(): [Initializer] initializer for x500
+# 1519| getExpr(): [ConstructorCall] call to String
+# 1519| Type = [VoidType] void
+# 1519| ValueCategory = prvalue
+# 1520| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1520| Type = [VoidType] void
+# 1520| ValueCategory = prvalue
+# 1520| getQualifier(): [VariableAccess] x500
+# 1520| Type = [Struct] String
+# 1520| ValueCategory = lvalue
+# 1520| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1520| Conversion = [BoolConversion] conversion to bool
+# 1520| Type = [BoolType] bool
+# 1520| Value = [CStyleCast] 0
+# 1520| ValueCategory = prvalue
+# 1521| getStmt(501): [DoStmt] do (...) ...
+# 1523| getCondition(): [Literal] 0
+# 1523| Type = [IntType] int
+# 1523| Value = [Literal] 0
+# 1523| ValueCategory = prvalue
+# 1521| getStmt(): [BlockStmt] { ... }
+# 1522| getStmt(0): [DeclStmt] declaration
+# 1522| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x501
+# 1522| Type = [Struct] String
+# 1522| getVariable().getInitializer(): [Initializer] initializer for x501
+# 1522| getExpr(): [ConstructorCall] call to String
+# 1522| Type = [VoidType] void
+# 1522| ValueCategory = prvalue
+# 1523| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1523| Type = [VoidType] void
+# 1523| ValueCategory = prvalue
+# 1523| getQualifier(): [VariableAccess] x501
+# 1523| Type = [Struct] String
+# 1523| ValueCategory = lvalue
+# 1523| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1523| Conversion = [BoolConversion] conversion to bool
+# 1523| Type = [BoolType] bool
+# 1523| Value = [CStyleCast] 0
+# 1523| ValueCategory = prvalue
+# 1524| getStmt(502): [DoStmt] do (...) ...
+# 1526| getCondition(): [Literal] 0
+# 1526| Type = [IntType] int
+# 1526| Value = [Literal] 0
+# 1526| ValueCategory = prvalue
+# 1524| getStmt(): [BlockStmt] { ... }
+# 1525| getStmt(0): [DeclStmt] declaration
+# 1525| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x502
+# 1525| Type = [Struct] String
+# 1525| getVariable().getInitializer(): [Initializer] initializer for x502
+# 1525| getExpr(): [ConstructorCall] call to String
+# 1525| Type = [VoidType] void
+# 1525| ValueCategory = prvalue
+# 1526| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1526| Type = [VoidType] void
+# 1526| ValueCategory = prvalue
+# 1526| getQualifier(): [VariableAccess] x502
+# 1526| Type = [Struct] String
+# 1526| ValueCategory = lvalue
+# 1526| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1526| Conversion = [BoolConversion] conversion to bool
+# 1526| Type = [BoolType] bool
+# 1526| Value = [CStyleCast] 0
+# 1526| ValueCategory = prvalue
+# 1527| getStmt(503): [DoStmt] do (...) ...
+# 1529| getCondition(): [Literal] 0
+# 1529| Type = [IntType] int
+# 1529| Value = [Literal] 0
+# 1529| ValueCategory = prvalue
+# 1527| getStmt(): [BlockStmt] { ... }
+# 1528| getStmt(0): [DeclStmt] declaration
+# 1528| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x503
+# 1528| Type = [Struct] String
+# 1528| getVariable().getInitializer(): [Initializer] initializer for x503
+# 1528| getExpr(): [ConstructorCall] call to String
+# 1528| Type = [VoidType] void
+# 1528| ValueCategory = prvalue
+# 1529| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1529| Type = [VoidType] void
+# 1529| ValueCategory = prvalue
+# 1529| getQualifier(): [VariableAccess] x503
+# 1529| Type = [Struct] String
+# 1529| ValueCategory = lvalue
+# 1529| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1529| Conversion = [BoolConversion] conversion to bool
+# 1529| Type = [BoolType] bool
+# 1529| Value = [CStyleCast] 0
+# 1529| ValueCategory = prvalue
+# 1530| getStmt(504): [DoStmt] do (...) ...
+# 1532| getCondition(): [Literal] 0
+# 1532| Type = [IntType] int
+# 1532| Value = [Literal] 0
+# 1532| ValueCategory = prvalue
+# 1530| getStmt(): [BlockStmt] { ... }
+# 1531| getStmt(0): [DeclStmt] declaration
+# 1531| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x504
+# 1531| Type = [Struct] String
+# 1531| getVariable().getInitializer(): [Initializer] initializer for x504
+# 1531| getExpr(): [ConstructorCall] call to String
+# 1531| Type = [VoidType] void
+# 1531| ValueCategory = prvalue
+# 1532| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1532| Type = [VoidType] void
+# 1532| ValueCategory = prvalue
+# 1532| getQualifier(): [VariableAccess] x504
+# 1532| Type = [Struct] String
+# 1532| ValueCategory = lvalue
+# 1532| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1532| Conversion = [BoolConversion] conversion to bool
+# 1532| Type = [BoolType] bool
+# 1532| Value = [CStyleCast] 0
+# 1532| ValueCategory = prvalue
+# 1533| getStmt(505): [DoStmt] do (...) ...
+# 1535| getCondition(): [Literal] 0
+# 1535| Type = [IntType] int
+# 1535| Value = [Literal] 0
+# 1535| ValueCategory = prvalue
+# 1533| getStmt(): [BlockStmt] { ... }
+# 1534| getStmt(0): [DeclStmt] declaration
+# 1534| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x505
+# 1534| Type = [Struct] String
+# 1534| getVariable().getInitializer(): [Initializer] initializer for x505
+# 1534| getExpr(): [ConstructorCall] call to String
+# 1534| Type = [VoidType] void
+# 1534| ValueCategory = prvalue
+# 1535| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1535| Type = [VoidType] void
+# 1535| ValueCategory = prvalue
+# 1535| getQualifier(): [VariableAccess] x505
+# 1535| Type = [Struct] String
+# 1535| ValueCategory = lvalue
+# 1535| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1535| Conversion = [BoolConversion] conversion to bool
+# 1535| Type = [BoolType] bool
+# 1535| Value = [CStyleCast] 0
+# 1535| ValueCategory = prvalue
+# 1536| getStmt(506): [DoStmt] do (...) ...
+# 1538| getCondition(): [Literal] 0
+# 1538| Type = [IntType] int
+# 1538| Value = [Literal] 0
+# 1538| ValueCategory = prvalue
+# 1536| getStmt(): [BlockStmt] { ... }
+# 1537| getStmt(0): [DeclStmt] declaration
+# 1537| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x506
+# 1537| Type = [Struct] String
+# 1537| getVariable().getInitializer(): [Initializer] initializer for x506
+# 1537| getExpr(): [ConstructorCall] call to String
+# 1537| Type = [VoidType] void
+# 1537| ValueCategory = prvalue
+# 1538| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1538| Type = [VoidType] void
+# 1538| ValueCategory = prvalue
+# 1538| getQualifier(): [VariableAccess] x506
+# 1538| Type = [Struct] String
+# 1538| ValueCategory = lvalue
+# 1538| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1538| Conversion = [BoolConversion] conversion to bool
+# 1538| Type = [BoolType] bool
+# 1538| Value = [CStyleCast] 0
+# 1538| ValueCategory = prvalue
+# 1539| getStmt(507): [DoStmt] do (...) ...
+# 1541| getCondition(): [Literal] 0
+# 1541| Type = [IntType] int
+# 1541| Value = [Literal] 0
+# 1541| ValueCategory = prvalue
+# 1539| getStmt(): [BlockStmt] { ... }
+# 1540| getStmt(0): [DeclStmt] declaration
+# 1540| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x507
+# 1540| Type = [Struct] String
+# 1540| getVariable().getInitializer(): [Initializer] initializer for x507
+# 1540| getExpr(): [ConstructorCall] call to String
+# 1540| Type = [VoidType] void
+# 1540| ValueCategory = prvalue
+# 1541| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1541| Type = [VoidType] void
+# 1541| ValueCategory = prvalue
+# 1541| getQualifier(): [VariableAccess] x507
+# 1541| Type = [Struct] String
+# 1541| ValueCategory = lvalue
+# 1541| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1541| Conversion = [BoolConversion] conversion to bool
+# 1541| Type = [BoolType] bool
+# 1541| Value = [CStyleCast] 0
+# 1541| ValueCategory = prvalue
+# 1542| getStmt(508): [DoStmt] do (...) ...
+# 1544| getCondition(): [Literal] 0
+# 1544| Type = [IntType] int
+# 1544| Value = [Literal] 0
+# 1544| ValueCategory = prvalue
+# 1542| getStmt(): [BlockStmt] { ... }
+# 1543| getStmt(0): [DeclStmt] declaration
+# 1543| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x508
+# 1543| Type = [Struct] String
+# 1543| getVariable().getInitializer(): [Initializer] initializer for x508
+# 1543| getExpr(): [ConstructorCall] call to String
+# 1543| Type = [VoidType] void
+# 1543| ValueCategory = prvalue
+# 1544| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1544| Type = [VoidType] void
+# 1544| ValueCategory = prvalue
+# 1544| getQualifier(): [VariableAccess] x508
+# 1544| Type = [Struct] String
+# 1544| ValueCategory = lvalue
+# 1544| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1544| Conversion = [BoolConversion] conversion to bool
+# 1544| Type = [BoolType] bool
+# 1544| Value = [CStyleCast] 0
+# 1544| ValueCategory = prvalue
+# 1545| getStmt(509): [DoStmt] do (...) ...
+# 1547| getCondition(): [Literal] 0
+# 1547| Type = [IntType] int
+# 1547| Value = [Literal] 0
+# 1547| ValueCategory = prvalue
+# 1545| getStmt(): [BlockStmt] { ... }
+# 1546| getStmt(0): [DeclStmt] declaration
+# 1546| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x509
+# 1546| Type = [Struct] String
+# 1546| getVariable().getInitializer(): [Initializer] initializer for x509
+# 1546| getExpr(): [ConstructorCall] call to String
+# 1546| Type = [VoidType] void
+# 1546| ValueCategory = prvalue
+# 1547| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1547| Type = [VoidType] void
+# 1547| ValueCategory = prvalue
+# 1547| getQualifier(): [VariableAccess] x509
+# 1547| Type = [Struct] String
+# 1547| ValueCategory = lvalue
+# 1547| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1547| Conversion = [BoolConversion] conversion to bool
+# 1547| Type = [BoolType] bool
+# 1547| Value = [CStyleCast] 0
+# 1547| ValueCategory = prvalue
+# 1548| getStmt(510): [DoStmt] do (...) ...
+# 1550| getCondition(): [Literal] 0
+# 1550| Type = [IntType] int
+# 1550| Value = [Literal] 0
+# 1550| ValueCategory = prvalue
+# 1548| getStmt(): [BlockStmt] { ... }
+# 1549| getStmt(0): [DeclStmt] declaration
+# 1549| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x510
+# 1549| Type = [Struct] String
+# 1549| getVariable().getInitializer(): [Initializer] initializer for x510
+# 1549| getExpr(): [ConstructorCall] call to String
+# 1549| Type = [VoidType] void
+# 1549| ValueCategory = prvalue
+# 1550| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1550| Type = [VoidType] void
+# 1550| ValueCategory = prvalue
+# 1550| getQualifier(): [VariableAccess] x510
+# 1550| Type = [Struct] String
+# 1550| ValueCategory = lvalue
+# 1550| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1550| Conversion = [BoolConversion] conversion to bool
+# 1550| Type = [BoolType] bool
+# 1550| Value = [CStyleCast] 0
+# 1550| ValueCategory = prvalue
+# 1551| getStmt(511): [DoStmt] do (...) ...
+# 1553| getCondition(): [Literal] 0
+# 1553| Type = [IntType] int
+# 1553| Value = [Literal] 0
+# 1553| ValueCategory = prvalue
+# 1551| getStmt(): [BlockStmt] { ... }
+# 1552| getStmt(0): [DeclStmt] declaration
+# 1552| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x511
+# 1552| Type = [Struct] String
+# 1552| getVariable().getInitializer(): [Initializer] initializer for x511
+# 1552| getExpr(): [ConstructorCall] call to String
+# 1552| Type = [VoidType] void
+# 1552| ValueCategory = prvalue
+# 1553| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1553| Type = [VoidType] void
+# 1553| ValueCategory = prvalue
+# 1553| getQualifier(): [VariableAccess] x511
+# 1553| Type = [Struct] String
+# 1553| ValueCategory = lvalue
+# 1553| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1553| Conversion = [BoolConversion] conversion to bool
+# 1553| Type = [BoolType] bool
+# 1553| Value = [CStyleCast] 0
+# 1553| ValueCategory = prvalue
+# 1554| getStmt(512): [DoStmt] do (...) ...
+# 1556| getCondition(): [Literal] 0
+# 1556| Type = [IntType] int
+# 1556| Value = [Literal] 0
+# 1556| ValueCategory = prvalue
+# 1554| getStmt(): [BlockStmt] { ... }
+# 1555| getStmt(0): [DeclStmt] declaration
+# 1555| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x512
+# 1555| Type = [Struct] String
+# 1555| getVariable().getInitializer(): [Initializer] initializer for x512
+# 1555| getExpr(): [ConstructorCall] call to String
+# 1555| Type = [VoidType] void
+# 1555| ValueCategory = prvalue
+# 1556| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1556| Type = [VoidType] void
+# 1556| ValueCategory = prvalue
+# 1556| getQualifier(): [VariableAccess] x512
+# 1556| Type = [Struct] String
+# 1556| ValueCategory = lvalue
+# 1556| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1556| Conversion = [BoolConversion] conversion to bool
+# 1556| Type = [BoolType] bool
+# 1556| Value = [CStyleCast] 0
+# 1556| ValueCategory = prvalue
+# 1557| getStmt(513): [DoStmt] do (...) ...
+# 1559| getCondition(): [Literal] 0
+# 1559| Type = [IntType] int
+# 1559| Value = [Literal] 0
+# 1559| ValueCategory = prvalue
+# 1557| getStmt(): [BlockStmt] { ... }
+# 1558| getStmt(0): [DeclStmt] declaration
+# 1558| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x513
+# 1558| Type = [Struct] String
+# 1558| getVariable().getInitializer(): [Initializer] initializer for x513
+# 1558| getExpr(): [ConstructorCall] call to String
+# 1558| Type = [VoidType] void
+# 1558| ValueCategory = prvalue
+# 1559| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1559| Type = [VoidType] void
+# 1559| ValueCategory = prvalue
+# 1559| getQualifier(): [VariableAccess] x513
+# 1559| Type = [Struct] String
+# 1559| ValueCategory = lvalue
+# 1559| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1559| Conversion = [BoolConversion] conversion to bool
+# 1559| Type = [BoolType] bool
+# 1559| Value = [CStyleCast] 0
+# 1559| ValueCategory = prvalue
+# 1560| getStmt(514): [DoStmt] do (...) ...
+# 1562| getCondition(): [Literal] 0
+# 1562| Type = [IntType] int
+# 1562| Value = [Literal] 0
+# 1562| ValueCategory = prvalue
+# 1560| getStmt(): [BlockStmt] { ... }
+# 1561| getStmt(0): [DeclStmt] declaration
+# 1561| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x514
+# 1561| Type = [Struct] String
+# 1561| getVariable().getInitializer(): [Initializer] initializer for x514
+# 1561| getExpr(): [ConstructorCall] call to String
+# 1561| Type = [VoidType] void
+# 1561| ValueCategory = prvalue
+# 1562| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1562| Type = [VoidType] void
+# 1562| ValueCategory = prvalue
+# 1562| getQualifier(): [VariableAccess] x514
+# 1562| Type = [Struct] String
+# 1562| ValueCategory = lvalue
+# 1562| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1562| Conversion = [BoolConversion] conversion to bool
+# 1562| Type = [BoolType] bool
+# 1562| Value = [CStyleCast] 0
+# 1562| ValueCategory = prvalue
+# 1563| getStmt(515): [DoStmt] do (...) ...
+# 1565| getCondition(): [Literal] 0
+# 1565| Type = [IntType] int
+# 1565| Value = [Literal] 0
+# 1565| ValueCategory = prvalue
+# 1563| getStmt(): [BlockStmt] { ... }
+# 1564| getStmt(0): [DeclStmt] declaration
+# 1564| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x515
+# 1564| Type = [Struct] String
+# 1564| getVariable().getInitializer(): [Initializer] initializer for x515
+# 1564| getExpr(): [ConstructorCall] call to String
+# 1564| Type = [VoidType] void
+# 1564| ValueCategory = prvalue
+# 1565| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1565| Type = [VoidType] void
+# 1565| ValueCategory = prvalue
+# 1565| getQualifier(): [VariableAccess] x515
+# 1565| Type = [Struct] String
+# 1565| ValueCategory = lvalue
+# 1565| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1565| Conversion = [BoolConversion] conversion to bool
+# 1565| Type = [BoolType] bool
+# 1565| Value = [CStyleCast] 0
+# 1565| ValueCategory = prvalue
+# 1566| getStmt(516): [DoStmt] do (...) ...
+# 1568| getCondition(): [Literal] 0
+# 1568| Type = [IntType] int
+# 1568| Value = [Literal] 0
+# 1568| ValueCategory = prvalue
+# 1566| getStmt(): [BlockStmt] { ... }
+# 1567| getStmt(0): [DeclStmt] declaration
+# 1567| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x516
+# 1567| Type = [Struct] String
+# 1567| getVariable().getInitializer(): [Initializer] initializer for x516
+# 1567| getExpr(): [ConstructorCall] call to String
+# 1567| Type = [VoidType] void
+# 1567| ValueCategory = prvalue
+# 1568| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1568| Type = [VoidType] void
+# 1568| ValueCategory = prvalue
+# 1568| getQualifier(): [VariableAccess] x516
+# 1568| Type = [Struct] String
+# 1568| ValueCategory = lvalue
+# 1568| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1568| Conversion = [BoolConversion] conversion to bool
+# 1568| Type = [BoolType] bool
+# 1568| Value = [CStyleCast] 0
+# 1568| ValueCategory = prvalue
+# 1569| getStmt(517): [DoStmt] do (...) ...
+# 1571| getCondition(): [Literal] 0
+# 1571| Type = [IntType] int
+# 1571| Value = [Literal] 0
+# 1571| ValueCategory = prvalue
+# 1569| getStmt(): [BlockStmt] { ... }
+# 1570| getStmt(0): [DeclStmt] declaration
+# 1570| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x517
+# 1570| Type = [Struct] String
+# 1570| getVariable().getInitializer(): [Initializer] initializer for x517
+# 1570| getExpr(): [ConstructorCall] call to String
+# 1570| Type = [VoidType] void
+# 1570| ValueCategory = prvalue
+# 1571| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1571| Type = [VoidType] void
+# 1571| ValueCategory = prvalue
+# 1571| getQualifier(): [VariableAccess] x517
+# 1571| Type = [Struct] String
+# 1571| ValueCategory = lvalue
+# 1571| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1571| Conversion = [BoolConversion] conversion to bool
+# 1571| Type = [BoolType] bool
+# 1571| Value = [CStyleCast] 0
+# 1571| ValueCategory = prvalue
+# 1572| getStmt(518): [DoStmt] do (...) ...
+# 1574| getCondition(): [Literal] 0
+# 1574| Type = [IntType] int
+# 1574| Value = [Literal] 0
+# 1574| ValueCategory = prvalue
+# 1572| getStmt(): [BlockStmt] { ... }
+# 1573| getStmt(0): [DeclStmt] declaration
+# 1573| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x518
+# 1573| Type = [Struct] String
+# 1573| getVariable().getInitializer(): [Initializer] initializer for x518
+# 1573| getExpr(): [ConstructorCall] call to String
+# 1573| Type = [VoidType] void
+# 1573| ValueCategory = prvalue
+# 1574| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1574| Type = [VoidType] void
+# 1574| ValueCategory = prvalue
+# 1574| getQualifier(): [VariableAccess] x518
+# 1574| Type = [Struct] String
+# 1574| ValueCategory = lvalue
+# 1574| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1574| Conversion = [BoolConversion] conversion to bool
+# 1574| Type = [BoolType] bool
+# 1574| Value = [CStyleCast] 0
+# 1574| ValueCategory = prvalue
+# 1575| getStmt(519): [DoStmt] do (...) ...
+# 1577| getCondition(): [Literal] 0
+# 1577| Type = [IntType] int
+# 1577| Value = [Literal] 0
+# 1577| ValueCategory = prvalue
+# 1575| getStmt(): [BlockStmt] { ... }
+# 1576| getStmt(0): [DeclStmt] declaration
+# 1576| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x519
+# 1576| Type = [Struct] String
+# 1576| getVariable().getInitializer(): [Initializer] initializer for x519
+# 1576| getExpr(): [ConstructorCall] call to String
+# 1576| Type = [VoidType] void
+# 1576| ValueCategory = prvalue
+# 1577| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1577| Type = [VoidType] void
+# 1577| ValueCategory = prvalue
+# 1577| getQualifier(): [VariableAccess] x519
+# 1577| Type = [Struct] String
+# 1577| ValueCategory = lvalue
+# 1577| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1577| Conversion = [BoolConversion] conversion to bool
+# 1577| Type = [BoolType] bool
+# 1577| Value = [CStyleCast] 0
+# 1577| ValueCategory = prvalue
+# 1578| getStmt(520): [DoStmt] do (...) ...
+# 1580| getCondition(): [Literal] 0
+# 1580| Type = [IntType] int
+# 1580| Value = [Literal] 0
+# 1580| ValueCategory = prvalue
+# 1578| getStmt(): [BlockStmt] { ... }
+# 1579| getStmt(0): [DeclStmt] declaration
+# 1579| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x520
+# 1579| Type = [Struct] String
+# 1579| getVariable().getInitializer(): [Initializer] initializer for x520
+# 1579| getExpr(): [ConstructorCall] call to String
+# 1579| Type = [VoidType] void
+# 1579| ValueCategory = prvalue
+# 1580| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1580| Type = [VoidType] void
+# 1580| ValueCategory = prvalue
+# 1580| getQualifier(): [VariableAccess] x520
+# 1580| Type = [Struct] String
+# 1580| ValueCategory = lvalue
+# 1580| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1580| Conversion = [BoolConversion] conversion to bool
+# 1580| Type = [BoolType] bool
+# 1580| Value = [CStyleCast] 0
+# 1580| ValueCategory = prvalue
+# 1581| getStmt(521): [DoStmt] do (...) ...
+# 1583| getCondition(): [Literal] 0
+# 1583| Type = [IntType] int
+# 1583| Value = [Literal] 0
+# 1583| ValueCategory = prvalue
+# 1581| getStmt(): [BlockStmt] { ... }
+# 1582| getStmt(0): [DeclStmt] declaration
+# 1582| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x521
+# 1582| Type = [Struct] String
+# 1582| getVariable().getInitializer(): [Initializer] initializer for x521
+# 1582| getExpr(): [ConstructorCall] call to String
+# 1582| Type = [VoidType] void
+# 1582| ValueCategory = prvalue
+# 1583| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1583| Type = [VoidType] void
+# 1583| ValueCategory = prvalue
+# 1583| getQualifier(): [VariableAccess] x521
+# 1583| Type = [Struct] String
+# 1583| ValueCategory = lvalue
+# 1583| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1583| Conversion = [BoolConversion] conversion to bool
+# 1583| Type = [BoolType] bool
+# 1583| Value = [CStyleCast] 0
+# 1583| ValueCategory = prvalue
+# 1584| getStmt(522): [DoStmt] do (...) ...
+# 1586| getCondition(): [Literal] 0
+# 1586| Type = [IntType] int
+# 1586| Value = [Literal] 0
+# 1586| ValueCategory = prvalue
+# 1584| getStmt(): [BlockStmt] { ... }
+# 1585| getStmt(0): [DeclStmt] declaration
+# 1585| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x522
+# 1585| Type = [Struct] String
+# 1585| getVariable().getInitializer(): [Initializer] initializer for x522
+# 1585| getExpr(): [ConstructorCall] call to String
+# 1585| Type = [VoidType] void
+# 1585| ValueCategory = prvalue
+# 1586| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1586| Type = [VoidType] void
+# 1586| ValueCategory = prvalue
+# 1586| getQualifier(): [VariableAccess] x522
+# 1586| Type = [Struct] String
+# 1586| ValueCategory = lvalue
+# 1586| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1586| Conversion = [BoolConversion] conversion to bool
+# 1586| Type = [BoolType] bool
+# 1586| Value = [CStyleCast] 0
+# 1586| ValueCategory = prvalue
+# 1587| getStmt(523): [DoStmt] do (...) ...
+# 1589| getCondition(): [Literal] 0
+# 1589| Type = [IntType] int
+# 1589| Value = [Literal] 0
+# 1589| ValueCategory = prvalue
+# 1587| getStmt(): [BlockStmt] { ... }
+# 1588| getStmt(0): [DeclStmt] declaration
+# 1588| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x523
+# 1588| Type = [Struct] String
+# 1588| getVariable().getInitializer(): [Initializer] initializer for x523
+# 1588| getExpr(): [ConstructorCall] call to String
+# 1588| Type = [VoidType] void
+# 1588| ValueCategory = prvalue
+# 1589| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1589| Type = [VoidType] void
+# 1589| ValueCategory = prvalue
+# 1589| getQualifier(): [VariableAccess] x523
+# 1589| Type = [Struct] String
+# 1589| ValueCategory = lvalue
+# 1589| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1589| Conversion = [BoolConversion] conversion to bool
+# 1589| Type = [BoolType] bool
+# 1589| Value = [CStyleCast] 0
+# 1589| ValueCategory = prvalue
+# 1590| getStmt(524): [DoStmt] do (...) ...
+# 1592| getCondition(): [Literal] 0
+# 1592| Type = [IntType] int
+# 1592| Value = [Literal] 0
+# 1592| ValueCategory = prvalue
+# 1590| getStmt(): [BlockStmt] { ... }
+# 1591| getStmt(0): [DeclStmt] declaration
+# 1591| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x524
+# 1591| Type = [Struct] String
+# 1591| getVariable().getInitializer(): [Initializer] initializer for x524
+# 1591| getExpr(): [ConstructorCall] call to String
+# 1591| Type = [VoidType] void
+# 1591| ValueCategory = prvalue
+# 1592| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1592| Type = [VoidType] void
+# 1592| ValueCategory = prvalue
+# 1592| getQualifier(): [VariableAccess] x524
+# 1592| Type = [Struct] String
+# 1592| ValueCategory = lvalue
+# 1592| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1592| Conversion = [BoolConversion] conversion to bool
+# 1592| Type = [BoolType] bool
+# 1592| Value = [CStyleCast] 0
+# 1592| ValueCategory = prvalue
+# 1593| getStmt(525): [DoStmt] do (...) ...
+# 1595| getCondition(): [Literal] 0
+# 1595| Type = [IntType] int
+# 1595| Value = [Literal] 0
+# 1595| ValueCategory = prvalue
+# 1593| getStmt(): [BlockStmt] { ... }
+# 1594| getStmt(0): [DeclStmt] declaration
+# 1594| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x525
+# 1594| Type = [Struct] String
+# 1594| getVariable().getInitializer(): [Initializer] initializer for x525
+# 1594| getExpr(): [ConstructorCall] call to String
+# 1594| Type = [VoidType] void
+# 1594| ValueCategory = prvalue
+# 1595| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1595| Type = [VoidType] void
+# 1595| ValueCategory = prvalue
+# 1595| getQualifier(): [VariableAccess] x525
+# 1595| Type = [Struct] String
+# 1595| ValueCategory = lvalue
+# 1595| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1595| Conversion = [BoolConversion] conversion to bool
+# 1595| Type = [BoolType] bool
+# 1595| Value = [CStyleCast] 0
+# 1595| ValueCategory = prvalue
+# 1596| getStmt(526): [DoStmt] do (...) ...
+# 1598| getCondition(): [Literal] 0
+# 1598| Type = [IntType] int
+# 1598| Value = [Literal] 0
+# 1598| ValueCategory = prvalue
+# 1596| getStmt(): [BlockStmt] { ... }
+# 1597| getStmt(0): [DeclStmt] declaration
+# 1597| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x526
+# 1597| Type = [Struct] String
+# 1597| getVariable().getInitializer(): [Initializer] initializer for x526
+# 1597| getExpr(): [ConstructorCall] call to String
+# 1597| Type = [VoidType] void
+# 1597| ValueCategory = prvalue
+# 1598| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1598| Type = [VoidType] void
+# 1598| ValueCategory = prvalue
+# 1598| getQualifier(): [VariableAccess] x526
+# 1598| Type = [Struct] String
+# 1598| ValueCategory = lvalue
+# 1598| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1598| Conversion = [BoolConversion] conversion to bool
+# 1598| Type = [BoolType] bool
+# 1598| Value = [CStyleCast] 0
+# 1598| ValueCategory = prvalue
+# 1599| getStmt(527): [DoStmt] do (...) ...
+# 1601| getCondition(): [Literal] 0
+# 1601| Type = [IntType] int
+# 1601| Value = [Literal] 0
+# 1601| ValueCategory = prvalue
+# 1599| getStmt(): [BlockStmt] { ... }
+# 1600| getStmt(0): [DeclStmt] declaration
+# 1600| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x527
+# 1600| Type = [Struct] String
+# 1600| getVariable().getInitializer(): [Initializer] initializer for x527
+# 1600| getExpr(): [ConstructorCall] call to String
+# 1600| Type = [VoidType] void
+# 1600| ValueCategory = prvalue
+# 1601| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1601| Type = [VoidType] void
+# 1601| ValueCategory = prvalue
+# 1601| getQualifier(): [VariableAccess] x527
+# 1601| Type = [Struct] String
+# 1601| ValueCategory = lvalue
+# 1601| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1601| Conversion = [BoolConversion] conversion to bool
+# 1601| Type = [BoolType] bool
+# 1601| Value = [CStyleCast] 0
+# 1601| ValueCategory = prvalue
+# 1602| getStmt(528): [DoStmt] do (...) ...
+# 1604| getCondition(): [Literal] 0
+# 1604| Type = [IntType] int
+# 1604| Value = [Literal] 0
+# 1604| ValueCategory = prvalue
+# 1602| getStmt(): [BlockStmt] { ... }
+# 1603| getStmt(0): [DeclStmt] declaration
+# 1603| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x528
+# 1603| Type = [Struct] String
+# 1603| getVariable().getInitializer(): [Initializer] initializer for x528
+# 1603| getExpr(): [ConstructorCall] call to String
+# 1603| Type = [VoidType] void
+# 1603| ValueCategory = prvalue
+# 1604| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1604| Type = [VoidType] void
+# 1604| ValueCategory = prvalue
+# 1604| getQualifier(): [VariableAccess] x528
+# 1604| Type = [Struct] String
+# 1604| ValueCategory = lvalue
+# 1604| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1604| Conversion = [BoolConversion] conversion to bool
+# 1604| Type = [BoolType] bool
+# 1604| Value = [CStyleCast] 0
+# 1604| ValueCategory = prvalue
+# 1605| getStmt(529): [DoStmt] do (...) ...
+# 1607| getCondition(): [Literal] 0
+# 1607| Type = [IntType] int
+# 1607| Value = [Literal] 0
+# 1607| ValueCategory = prvalue
+# 1605| getStmt(): [BlockStmt] { ... }
+# 1606| getStmt(0): [DeclStmt] declaration
+# 1606| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x529
+# 1606| Type = [Struct] String
+# 1606| getVariable().getInitializer(): [Initializer] initializer for x529
+# 1606| getExpr(): [ConstructorCall] call to String
+# 1606| Type = [VoidType] void
+# 1606| ValueCategory = prvalue
+# 1607| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1607| Type = [VoidType] void
+# 1607| ValueCategory = prvalue
+# 1607| getQualifier(): [VariableAccess] x529
+# 1607| Type = [Struct] String
+# 1607| ValueCategory = lvalue
+# 1607| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1607| Conversion = [BoolConversion] conversion to bool
+# 1607| Type = [BoolType] bool
+# 1607| Value = [CStyleCast] 0
+# 1607| ValueCategory = prvalue
+# 1608| getStmt(530): [DoStmt] do (...) ...
+# 1610| getCondition(): [Literal] 0
+# 1610| Type = [IntType] int
+# 1610| Value = [Literal] 0
+# 1610| ValueCategory = prvalue
+# 1608| getStmt(): [BlockStmt] { ... }
+# 1609| getStmt(0): [DeclStmt] declaration
+# 1609| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x530
+# 1609| Type = [Struct] String
+# 1609| getVariable().getInitializer(): [Initializer] initializer for x530
+# 1609| getExpr(): [ConstructorCall] call to String
+# 1609| Type = [VoidType] void
+# 1609| ValueCategory = prvalue
+# 1610| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1610| Type = [VoidType] void
+# 1610| ValueCategory = prvalue
+# 1610| getQualifier(): [VariableAccess] x530
+# 1610| Type = [Struct] String
+# 1610| ValueCategory = lvalue
+# 1610| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1610| Conversion = [BoolConversion] conversion to bool
+# 1610| Type = [BoolType] bool
+# 1610| Value = [CStyleCast] 0
+# 1610| ValueCategory = prvalue
+# 1611| getStmt(531): [DoStmt] do (...) ...
+# 1613| getCondition(): [Literal] 0
+# 1613| Type = [IntType] int
+# 1613| Value = [Literal] 0
+# 1613| ValueCategory = prvalue
+# 1611| getStmt(): [BlockStmt] { ... }
+# 1612| getStmt(0): [DeclStmt] declaration
+# 1612| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x531
+# 1612| Type = [Struct] String
+# 1612| getVariable().getInitializer(): [Initializer] initializer for x531
+# 1612| getExpr(): [ConstructorCall] call to String
+# 1612| Type = [VoidType] void
+# 1612| ValueCategory = prvalue
+# 1613| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1613| Type = [VoidType] void
+# 1613| ValueCategory = prvalue
+# 1613| getQualifier(): [VariableAccess] x531
+# 1613| Type = [Struct] String
+# 1613| ValueCategory = lvalue
+# 1613| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1613| Conversion = [BoolConversion] conversion to bool
+# 1613| Type = [BoolType] bool
+# 1613| Value = [CStyleCast] 0
+# 1613| ValueCategory = prvalue
+# 1614| getStmt(532): [DoStmt] do (...) ...
+# 1616| getCondition(): [Literal] 0
+# 1616| Type = [IntType] int
+# 1616| Value = [Literal] 0
+# 1616| ValueCategory = prvalue
+# 1614| getStmt(): [BlockStmt] { ... }
+# 1615| getStmt(0): [DeclStmt] declaration
+# 1615| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x532
+# 1615| Type = [Struct] String
+# 1615| getVariable().getInitializer(): [Initializer] initializer for x532
+# 1615| getExpr(): [ConstructorCall] call to String
+# 1615| Type = [VoidType] void
+# 1615| ValueCategory = prvalue
+# 1616| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1616| Type = [VoidType] void
+# 1616| ValueCategory = prvalue
+# 1616| getQualifier(): [VariableAccess] x532
+# 1616| Type = [Struct] String
+# 1616| ValueCategory = lvalue
+# 1616| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1616| Conversion = [BoolConversion] conversion to bool
+# 1616| Type = [BoolType] bool
+# 1616| Value = [CStyleCast] 0
+# 1616| ValueCategory = prvalue
+# 1617| getStmt(533): [DoStmt] do (...) ...
+# 1619| getCondition(): [Literal] 0
+# 1619| Type = [IntType] int
+# 1619| Value = [Literal] 0
+# 1619| ValueCategory = prvalue
+# 1617| getStmt(): [BlockStmt] { ... }
+# 1618| getStmt(0): [DeclStmt] declaration
+# 1618| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x533
+# 1618| Type = [Struct] String
+# 1618| getVariable().getInitializer(): [Initializer] initializer for x533
+# 1618| getExpr(): [ConstructorCall] call to String
+# 1618| Type = [VoidType] void
+# 1618| ValueCategory = prvalue
+# 1619| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1619| Type = [VoidType] void
+# 1619| ValueCategory = prvalue
+# 1619| getQualifier(): [VariableAccess] x533
+# 1619| Type = [Struct] String
+# 1619| ValueCategory = lvalue
+# 1619| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1619| Conversion = [BoolConversion] conversion to bool
+# 1619| Type = [BoolType] bool
+# 1619| Value = [CStyleCast] 0
+# 1619| ValueCategory = prvalue
+# 1620| getStmt(534): [DoStmt] do (...) ...
+# 1622| getCondition(): [Literal] 0
+# 1622| Type = [IntType] int
+# 1622| Value = [Literal] 0
+# 1622| ValueCategory = prvalue
+# 1620| getStmt(): [BlockStmt] { ... }
+# 1621| getStmt(0): [DeclStmt] declaration
+# 1621| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x534
+# 1621| Type = [Struct] String
+# 1621| getVariable().getInitializer(): [Initializer] initializer for x534
+# 1621| getExpr(): [ConstructorCall] call to String
+# 1621| Type = [VoidType] void
+# 1621| ValueCategory = prvalue
+# 1622| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1622| Type = [VoidType] void
+# 1622| ValueCategory = prvalue
+# 1622| getQualifier(): [VariableAccess] x534
+# 1622| Type = [Struct] String
+# 1622| ValueCategory = lvalue
+# 1622| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1622| Conversion = [BoolConversion] conversion to bool
+# 1622| Type = [BoolType] bool
+# 1622| Value = [CStyleCast] 0
+# 1622| ValueCategory = prvalue
+# 1623| getStmt(535): [DoStmt] do (...) ...
+# 1625| getCondition(): [Literal] 0
+# 1625| Type = [IntType] int
+# 1625| Value = [Literal] 0
+# 1625| ValueCategory = prvalue
+# 1623| getStmt(): [BlockStmt] { ... }
+# 1624| getStmt(0): [DeclStmt] declaration
+# 1624| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x535
+# 1624| Type = [Struct] String
+# 1624| getVariable().getInitializer(): [Initializer] initializer for x535
+# 1624| getExpr(): [ConstructorCall] call to String
+# 1624| Type = [VoidType] void
+# 1624| ValueCategory = prvalue
+# 1625| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1625| Type = [VoidType] void
+# 1625| ValueCategory = prvalue
+# 1625| getQualifier(): [VariableAccess] x535
+# 1625| Type = [Struct] String
+# 1625| ValueCategory = lvalue
+# 1625| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1625| Conversion = [BoolConversion] conversion to bool
+# 1625| Type = [BoolType] bool
+# 1625| Value = [CStyleCast] 0
+# 1625| ValueCategory = prvalue
+# 1626| getStmt(536): [DoStmt] do (...) ...
+# 1628| getCondition(): [Literal] 0
+# 1628| Type = [IntType] int
+# 1628| Value = [Literal] 0
+# 1628| ValueCategory = prvalue
+# 1626| getStmt(): [BlockStmt] { ... }
+# 1627| getStmt(0): [DeclStmt] declaration
+# 1627| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x536
+# 1627| Type = [Struct] String
+# 1627| getVariable().getInitializer(): [Initializer] initializer for x536
+# 1627| getExpr(): [ConstructorCall] call to String
+# 1627| Type = [VoidType] void
+# 1627| ValueCategory = prvalue
+# 1628| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1628| Type = [VoidType] void
+# 1628| ValueCategory = prvalue
+# 1628| getQualifier(): [VariableAccess] x536
+# 1628| Type = [Struct] String
+# 1628| ValueCategory = lvalue
+# 1628| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1628| Conversion = [BoolConversion] conversion to bool
+# 1628| Type = [BoolType] bool
+# 1628| Value = [CStyleCast] 0
+# 1628| ValueCategory = prvalue
+# 1629| getStmt(537): [DoStmt] do (...) ...
+# 1631| getCondition(): [Literal] 0
+# 1631| Type = [IntType] int
+# 1631| Value = [Literal] 0
+# 1631| ValueCategory = prvalue
+# 1629| getStmt(): [BlockStmt] { ... }
+# 1630| getStmt(0): [DeclStmt] declaration
+# 1630| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x537
+# 1630| Type = [Struct] String
+# 1630| getVariable().getInitializer(): [Initializer] initializer for x537
+# 1630| getExpr(): [ConstructorCall] call to String
+# 1630| Type = [VoidType] void
+# 1630| ValueCategory = prvalue
+# 1631| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1631| Type = [VoidType] void
+# 1631| ValueCategory = prvalue
+# 1631| getQualifier(): [VariableAccess] x537
+# 1631| Type = [Struct] String
+# 1631| ValueCategory = lvalue
+# 1631| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1631| Conversion = [BoolConversion] conversion to bool
+# 1631| Type = [BoolType] bool
+# 1631| Value = [CStyleCast] 0
+# 1631| ValueCategory = prvalue
+# 1632| getStmt(538): [DoStmt] do (...) ...
+# 1634| getCondition(): [Literal] 0
+# 1634| Type = [IntType] int
+# 1634| Value = [Literal] 0
+# 1634| ValueCategory = prvalue
+# 1632| getStmt(): [BlockStmt] { ... }
+# 1633| getStmt(0): [DeclStmt] declaration
+# 1633| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x538
+# 1633| Type = [Struct] String
+# 1633| getVariable().getInitializer(): [Initializer] initializer for x538
+# 1633| getExpr(): [ConstructorCall] call to String
+# 1633| Type = [VoidType] void
+# 1633| ValueCategory = prvalue
+# 1634| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1634| Type = [VoidType] void
+# 1634| ValueCategory = prvalue
+# 1634| getQualifier(): [VariableAccess] x538
+# 1634| Type = [Struct] String
+# 1634| ValueCategory = lvalue
+# 1634| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1634| Conversion = [BoolConversion] conversion to bool
+# 1634| Type = [BoolType] bool
+# 1634| Value = [CStyleCast] 0
+# 1634| ValueCategory = prvalue
+# 1635| getStmt(539): [DoStmt] do (...) ...
+# 1637| getCondition(): [Literal] 0
+# 1637| Type = [IntType] int
+# 1637| Value = [Literal] 0
+# 1637| ValueCategory = prvalue
+# 1635| getStmt(): [BlockStmt] { ... }
+# 1636| getStmt(0): [DeclStmt] declaration
+# 1636| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x539
+# 1636| Type = [Struct] String
+# 1636| getVariable().getInitializer(): [Initializer] initializer for x539
+# 1636| getExpr(): [ConstructorCall] call to String
+# 1636| Type = [VoidType] void
+# 1636| ValueCategory = prvalue
+# 1637| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1637| Type = [VoidType] void
+# 1637| ValueCategory = prvalue
+# 1637| getQualifier(): [VariableAccess] x539
+# 1637| Type = [Struct] String
+# 1637| ValueCategory = lvalue
+# 1637| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1637| Conversion = [BoolConversion] conversion to bool
+# 1637| Type = [BoolType] bool
+# 1637| Value = [CStyleCast] 0
+# 1637| ValueCategory = prvalue
+# 1638| getStmt(540): [DoStmt] do (...) ...
+# 1640| getCondition(): [Literal] 0
+# 1640| Type = [IntType] int
+# 1640| Value = [Literal] 0
+# 1640| ValueCategory = prvalue
+# 1638| getStmt(): [BlockStmt] { ... }
+# 1639| getStmt(0): [DeclStmt] declaration
+# 1639| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x540
+# 1639| Type = [Struct] String
+# 1639| getVariable().getInitializer(): [Initializer] initializer for x540
+# 1639| getExpr(): [ConstructorCall] call to String
+# 1639| Type = [VoidType] void
+# 1639| ValueCategory = prvalue
+# 1640| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1640| Type = [VoidType] void
+# 1640| ValueCategory = prvalue
+# 1640| getQualifier(): [VariableAccess] x540
+# 1640| Type = [Struct] String
+# 1640| ValueCategory = lvalue
+# 1640| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1640| Conversion = [BoolConversion] conversion to bool
+# 1640| Type = [BoolType] bool
+# 1640| Value = [CStyleCast] 0
+# 1640| ValueCategory = prvalue
+# 1641| getStmt(541): [DoStmt] do (...) ...
+# 1643| getCondition(): [Literal] 0
+# 1643| Type = [IntType] int
+# 1643| Value = [Literal] 0
+# 1643| ValueCategory = prvalue
+# 1641| getStmt(): [BlockStmt] { ... }
+# 1642| getStmt(0): [DeclStmt] declaration
+# 1642| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x541
+# 1642| Type = [Struct] String
+# 1642| getVariable().getInitializer(): [Initializer] initializer for x541
+# 1642| getExpr(): [ConstructorCall] call to String
+# 1642| Type = [VoidType] void
+# 1642| ValueCategory = prvalue
+# 1643| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1643| Type = [VoidType] void
+# 1643| ValueCategory = prvalue
+# 1643| getQualifier(): [VariableAccess] x541
+# 1643| Type = [Struct] String
+# 1643| ValueCategory = lvalue
+# 1643| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1643| Conversion = [BoolConversion] conversion to bool
+# 1643| Type = [BoolType] bool
+# 1643| Value = [CStyleCast] 0
+# 1643| ValueCategory = prvalue
+# 1644| getStmt(542): [DoStmt] do (...) ...
+# 1646| getCondition(): [Literal] 0
+# 1646| Type = [IntType] int
+# 1646| Value = [Literal] 0
+# 1646| ValueCategory = prvalue
+# 1644| getStmt(): [BlockStmt] { ... }
+# 1645| getStmt(0): [DeclStmt] declaration
+# 1645| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x542
+# 1645| Type = [Struct] String
+# 1645| getVariable().getInitializer(): [Initializer] initializer for x542
+# 1645| getExpr(): [ConstructorCall] call to String
+# 1645| Type = [VoidType] void
+# 1645| ValueCategory = prvalue
+# 1646| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1646| Type = [VoidType] void
+# 1646| ValueCategory = prvalue
+# 1646| getQualifier(): [VariableAccess] x542
+# 1646| Type = [Struct] String
+# 1646| ValueCategory = lvalue
+# 1646| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1646| Conversion = [BoolConversion] conversion to bool
+# 1646| Type = [BoolType] bool
+# 1646| Value = [CStyleCast] 0
+# 1646| ValueCategory = prvalue
+# 1647| getStmt(543): [DoStmt] do (...) ...
+# 1649| getCondition(): [Literal] 0
+# 1649| Type = [IntType] int
+# 1649| Value = [Literal] 0
+# 1649| ValueCategory = prvalue
+# 1647| getStmt(): [BlockStmt] { ... }
+# 1648| getStmt(0): [DeclStmt] declaration
+# 1648| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x543
+# 1648| Type = [Struct] String
+# 1648| getVariable().getInitializer(): [Initializer] initializer for x543
+# 1648| getExpr(): [ConstructorCall] call to String
+# 1648| Type = [VoidType] void
+# 1648| ValueCategory = prvalue
+# 1649| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1649| Type = [VoidType] void
+# 1649| ValueCategory = prvalue
+# 1649| getQualifier(): [VariableAccess] x543
+# 1649| Type = [Struct] String
+# 1649| ValueCategory = lvalue
+# 1649| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1649| Conversion = [BoolConversion] conversion to bool
+# 1649| Type = [BoolType] bool
+# 1649| Value = [CStyleCast] 0
+# 1649| ValueCategory = prvalue
+# 1650| getStmt(544): [DoStmt] do (...) ...
+# 1652| getCondition(): [Literal] 0
+# 1652| Type = [IntType] int
+# 1652| Value = [Literal] 0
+# 1652| ValueCategory = prvalue
+# 1650| getStmt(): [BlockStmt] { ... }
+# 1651| getStmt(0): [DeclStmt] declaration
+# 1651| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x544
+# 1651| Type = [Struct] String
+# 1651| getVariable().getInitializer(): [Initializer] initializer for x544
+# 1651| getExpr(): [ConstructorCall] call to String
+# 1651| Type = [VoidType] void
+# 1651| ValueCategory = prvalue
+# 1652| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1652| Type = [VoidType] void
+# 1652| ValueCategory = prvalue
+# 1652| getQualifier(): [VariableAccess] x544
+# 1652| Type = [Struct] String
+# 1652| ValueCategory = lvalue
+# 1652| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1652| Conversion = [BoolConversion] conversion to bool
+# 1652| Type = [BoolType] bool
+# 1652| Value = [CStyleCast] 0
+# 1652| ValueCategory = prvalue
+# 1653| getStmt(545): [DoStmt] do (...) ...
+# 1655| getCondition(): [Literal] 0
+# 1655| Type = [IntType] int
+# 1655| Value = [Literal] 0
+# 1655| ValueCategory = prvalue
+# 1653| getStmt(): [BlockStmt] { ... }
+# 1654| getStmt(0): [DeclStmt] declaration
+# 1654| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x545
+# 1654| Type = [Struct] String
+# 1654| getVariable().getInitializer(): [Initializer] initializer for x545
+# 1654| getExpr(): [ConstructorCall] call to String
+# 1654| Type = [VoidType] void
+# 1654| ValueCategory = prvalue
+# 1655| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1655| Type = [VoidType] void
+# 1655| ValueCategory = prvalue
+# 1655| getQualifier(): [VariableAccess] x545
+# 1655| Type = [Struct] String
+# 1655| ValueCategory = lvalue
+# 1655| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1655| Conversion = [BoolConversion] conversion to bool
+# 1655| Type = [BoolType] bool
+# 1655| Value = [CStyleCast] 0
+# 1655| ValueCategory = prvalue
+# 1656| getStmt(546): [DoStmt] do (...) ...
+# 1658| getCondition(): [Literal] 0
+# 1658| Type = [IntType] int
+# 1658| Value = [Literal] 0
+# 1658| ValueCategory = prvalue
+# 1656| getStmt(): [BlockStmt] { ... }
+# 1657| getStmt(0): [DeclStmt] declaration
+# 1657| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x546
+# 1657| Type = [Struct] String
+# 1657| getVariable().getInitializer(): [Initializer] initializer for x546
+# 1657| getExpr(): [ConstructorCall] call to String
+# 1657| Type = [VoidType] void
+# 1657| ValueCategory = prvalue
+# 1658| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1658| Type = [VoidType] void
+# 1658| ValueCategory = prvalue
+# 1658| getQualifier(): [VariableAccess] x546
+# 1658| Type = [Struct] String
+# 1658| ValueCategory = lvalue
+# 1658| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1658| Conversion = [BoolConversion] conversion to bool
+# 1658| Type = [BoolType] bool
+# 1658| Value = [CStyleCast] 0
+# 1658| ValueCategory = prvalue
+# 1659| getStmt(547): [DoStmt] do (...) ...
+# 1661| getCondition(): [Literal] 0
+# 1661| Type = [IntType] int
+# 1661| Value = [Literal] 0
+# 1661| ValueCategory = prvalue
+# 1659| getStmt(): [BlockStmt] { ... }
+# 1660| getStmt(0): [DeclStmt] declaration
+# 1660| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x547
+# 1660| Type = [Struct] String
+# 1660| getVariable().getInitializer(): [Initializer] initializer for x547
+# 1660| getExpr(): [ConstructorCall] call to String
+# 1660| Type = [VoidType] void
+# 1660| ValueCategory = prvalue
+# 1661| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1661| Type = [VoidType] void
+# 1661| ValueCategory = prvalue
+# 1661| getQualifier(): [VariableAccess] x547
+# 1661| Type = [Struct] String
+# 1661| ValueCategory = lvalue
+# 1661| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1661| Conversion = [BoolConversion] conversion to bool
+# 1661| Type = [BoolType] bool
+# 1661| Value = [CStyleCast] 0
+# 1661| ValueCategory = prvalue
+# 1662| getStmt(548): [DoStmt] do (...) ...
+# 1664| getCondition(): [Literal] 0
+# 1664| Type = [IntType] int
+# 1664| Value = [Literal] 0
+# 1664| ValueCategory = prvalue
+# 1662| getStmt(): [BlockStmt] { ... }
+# 1663| getStmt(0): [DeclStmt] declaration
+# 1663| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x548
+# 1663| Type = [Struct] String
+# 1663| getVariable().getInitializer(): [Initializer] initializer for x548
+# 1663| getExpr(): [ConstructorCall] call to String
+# 1663| Type = [VoidType] void
+# 1663| ValueCategory = prvalue
+# 1664| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1664| Type = [VoidType] void
+# 1664| ValueCategory = prvalue
+# 1664| getQualifier(): [VariableAccess] x548
+# 1664| Type = [Struct] String
+# 1664| ValueCategory = lvalue
+# 1664| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1664| Conversion = [BoolConversion] conversion to bool
+# 1664| Type = [BoolType] bool
+# 1664| Value = [CStyleCast] 0
+# 1664| ValueCategory = prvalue
+# 1665| getStmt(549): [DoStmt] do (...) ...
+# 1667| getCondition(): [Literal] 0
+# 1667| Type = [IntType] int
+# 1667| Value = [Literal] 0
+# 1667| ValueCategory = prvalue
+# 1665| getStmt(): [BlockStmt] { ... }
+# 1666| getStmt(0): [DeclStmt] declaration
+# 1666| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x549
+# 1666| Type = [Struct] String
+# 1666| getVariable().getInitializer(): [Initializer] initializer for x549
+# 1666| getExpr(): [ConstructorCall] call to String
+# 1666| Type = [VoidType] void
+# 1666| ValueCategory = prvalue
+# 1667| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1667| Type = [VoidType] void
+# 1667| ValueCategory = prvalue
+# 1667| getQualifier(): [VariableAccess] x549
+# 1667| Type = [Struct] String
+# 1667| ValueCategory = lvalue
+# 1667| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1667| Conversion = [BoolConversion] conversion to bool
+# 1667| Type = [BoolType] bool
+# 1667| Value = [CStyleCast] 0
+# 1667| ValueCategory = prvalue
+# 1668| getStmt(550): [DoStmt] do (...) ...
+# 1670| getCondition(): [Literal] 0
+# 1670| Type = [IntType] int
+# 1670| Value = [Literal] 0
+# 1670| ValueCategory = prvalue
+# 1668| getStmt(): [BlockStmt] { ... }
+# 1669| getStmt(0): [DeclStmt] declaration
+# 1669| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x550
+# 1669| Type = [Struct] String
+# 1669| getVariable().getInitializer(): [Initializer] initializer for x550
+# 1669| getExpr(): [ConstructorCall] call to String
+# 1669| Type = [VoidType] void
+# 1669| ValueCategory = prvalue
+# 1670| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1670| Type = [VoidType] void
+# 1670| ValueCategory = prvalue
+# 1670| getQualifier(): [VariableAccess] x550
+# 1670| Type = [Struct] String
+# 1670| ValueCategory = lvalue
+# 1670| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1670| Conversion = [BoolConversion] conversion to bool
+# 1670| Type = [BoolType] bool
+# 1670| Value = [CStyleCast] 0
+# 1670| ValueCategory = prvalue
+# 1671| getStmt(551): [DoStmt] do (...) ...
+# 1673| getCondition(): [Literal] 0
+# 1673| Type = [IntType] int
+# 1673| Value = [Literal] 0
+# 1673| ValueCategory = prvalue
+# 1671| getStmt(): [BlockStmt] { ... }
+# 1672| getStmt(0): [DeclStmt] declaration
+# 1672| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x551
+# 1672| Type = [Struct] String
+# 1672| getVariable().getInitializer(): [Initializer] initializer for x551
+# 1672| getExpr(): [ConstructorCall] call to String
+# 1672| Type = [VoidType] void
+# 1672| ValueCategory = prvalue
+# 1673| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1673| Type = [VoidType] void
+# 1673| ValueCategory = prvalue
+# 1673| getQualifier(): [VariableAccess] x551
+# 1673| Type = [Struct] String
+# 1673| ValueCategory = lvalue
+# 1673| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1673| Conversion = [BoolConversion] conversion to bool
+# 1673| Type = [BoolType] bool
+# 1673| Value = [CStyleCast] 0
+# 1673| ValueCategory = prvalue
+# 1674| getStmt(552): [DoStmt] do (...) ...
+# 1676| getCondition(): [Literal] 0
+# 1676| Type = [IntType] int
+# 1676| Value = [Literal] 0
+# 1676| ValueCategory = prvalue
+# 1674| getStmt(): [BlockStmt] { ... }
+# 1675| getStmt(0): [DeclStmt] declaration
+# 1675| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x552
+# 1675| Type = [Struct] String
+# 1675| getVariable().getInitializer(): [Initializer] initializer for x552
+# 1675| getExpr(): [ConstructorCall] call to String
+# 1675| Type = [VoidType] void
+# 1675| ValueCategory = prvalue
+# 1676| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1676| Type = [VoidType] void
+# 1676| ValueCategory = prvalue
+# 1676| getQualifier(): [VariableAccess] x552
+# 1676| Type = [Struct] String
+# 1676| ValueCategory = lvalue
+# 1676| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1676| Conversion = [BoolConversion] conversion to bool
+# 1676| Type = [BoolType] bool
+# 1676| Value = [CStyleCast] 0
+# 1676| ValueCategory = prvalue
+# 1677| getStmt(553): [DoStmt] do (...) ...
+# 1679| getCondition(): [Literal] 0
+# 1679| Type = [IntType] int
+# 1679| Value = [Literal] 0
+# 1679| ValueCategory = prvalue
+# 1677| getStmt(): [BlockStmt] { ... }
+# 1678| getStmt(0): [DeclStmt] declaration
+# 1678| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x553
+# 1678| Type = [Struct] String
+# 1678| getVariable().getInitializer(): [Initializer] initializer for x553
+# 1678| getExpr(): [ConstructorCall] call to String
+# 1678| Type = [VoidType] void
+# 1678| ValueCategory = prvalue
+# 1679| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1679| Type = [VoidType] void
+# 1679| ValueCategory = prvalue
+# 1679| getQualifier(): [VariableAccess] x553
+# 1679| Type = [Struct] String
+# 1679| ValueCategory = lvalue
+# 1679| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1679| Conversion = [BoolConversion] conversion to bool
+# 1679| Type = [BoolType] bool
+# 1679| Value = [CStyleCast] 0
+# 1679| ValueCategory = prvalue
+# 1680| getStmt(554): [DoStmt] do (...) ...
+# 1682| getCondition(): [Literal] 0
+# 1682| Type = [IntType] int
+# 1682| Value = [Literal] 0
+# 1682| ValueCategory = prvalue
+# 1680| getStmt(): [BlockStmt] { ... }
+# 1681| getStmt(0): [DeclStmt] declaration
+# 1681| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x554
+# 1681| Type = [Struct] String
+# 1681| getVariable().getInitializer(): [Initializer] initializer for x554
+# 1681| getExpr(): [ConstructorCall] call to String
+# 1681| Type = [VoidType] void
+# 1681| ValueCategory = prvalue
+# 1682| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1682| Type = [VoidType] void
+# 1682| ValueCategory = prvalue
+# 1682| getQualifier(): [VariableAccess] x554
+# 1682| Type = [Struct] String
+# 1682| ValueCategory = lvalue
+# 1682| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1682| Conversion = [BoolConversion] conversion to bool
+# 1682| Type = [BoolType] bool
+# 1682| Value = [CStyleCast] 0
+# 1682| ValueCategory = prvalue
+# 1683| getStmt(555): [DoStmt] do (...) ...
+# 1685| getCondition(): [Literal] 0
+# 1685| Type = [IntType] int
+# 1685| Value = [Literal] 0
+# 1685| ValueCategory = prvalue
+# 1683| getStmt(): [BlockStmt] { ... }
+# 1684| getStmt(0): [DeclStmt] declaration
+# 1684| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x555
+# 1684| Type = [Struct] String
+# 1684| getVariable().getInitializer(): [Initializer] initializer for x555
+# 1684| getExpr(): [ConstructorCall] call to String
+# 1684| Type = [VoidType] void
+# 1684| ValueCategory = prvalue
+# 1685| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1685| Type = [VoidType] void
+# 1685| ValueCategory = prvalue
+# 1685| getQualifier(): [VariableAccess] x555
+# 1685| Type = [Struct] String
+# 1685| ValueCategory = lvalue
+# 1685| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1685| Conversion = [BoolConversion] conversion to bool
+# 1685| Type = [BoolType] bool
+# 1685| Value = [CStyleCast] 0
+# 1685| ValueCategory = prvalue
+# 1686| getStmt(556): [DoStmt] do (...) ...
+# 1688| getCondition(): [Literal] 0
+# 1688| Type = [IntType] int
+# 1688| Value = [Literal] 0
+# 1688| ValueCategory = prvalue
+# 1686| getStmt(): [BlockStmt] { ... }
+# 1687| getStmt(0): [DeclStmt] declaration
+# 1687| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x556
+# 1687| Type = [Struct] String
+# 1687| getVariable().getInitializer(): [Initializer] initializer for x556
+# 1687| getExpr(): [ConstructorCall] call to String
+# 1687| Type = [VoidType] void
+# 1687| ValueCategory = prvalue
+# 1688| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1688| Type = [VoidType] void
+# 1688| ValueCategory = prvalue
+# 1688| getQualifier(): [VariableAccess] x556
+# 1688| Type = [Struct] String
+# 1688| ValueCategory = lvalue
+# 1688| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1688| Conversion = [BoolConversion] conversion to bool
+# 1688| Type = [BoolType] bool
+# 1688| Value = [CStyleCast] 0
+# 1688| ValueCategory = prvalue
+# 1689| getStmt(557): [DoStmt] do (...) ...
+# 1691| getCondition(): [Literal] 0
+# 1691| Type = [IntType] int
+# 1691| Value = [Literal] 0
+# 1691| ValueCategory = prvalue
+# 1689| getStmt(): [BlockStmt] { ... }
+# 1690| getStmt(0): [DeclStmt] declaration
+# 1690| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x557
+# 1690| Type = [Struct] String
+# 1690| getVariable().getInitializer(): [Initializer] initializer for x557
+# 1690| getExpr(): [ConstructorCall] call to String
+# 1690| Type = [VoidType] void
+# 1690| ValueCategory = prvalue
+# 1691| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1691| Type = [VoidType] void
+# 1691| ValueCategory = prvalue
+# 1691| getQualifier(): [VariableAccess] x557
+# 1691| Type = [Struct] String
+# 1691| ValueCategory = lvalue
+# 1691| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1691| Conversion = [BoolConversion] conversion to bool
+# 1691| Type = [BoolType] bool
+# 1691| Value = [CStyleCast] 0
+# 1691| ValueCategory = prvalue
+# 1692| getStmt(558): [DoStmt] do (...) ...
+# 1694| getCondition(): [Literal] 0
+# 1694| Type = [IntType] int
+# 1694| Value = [Literal] 0
+# 1694| ValueCategory = prvalue
+# 1692| getStmt(): [BlockStmt] { ... }
+# 1693| getStmt(0): [DeclStmt] declaration
+# 1693| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x558
+# 1693| Type = [Struct] String
+# 1693| getVariable().getInitializer(): [Initializer] initializer for x558
+# 1693| getExpr(): [ConstructorCall] call to String
+# 1693| Type = [VoidType] void
+# 1693| ValueCategory = prvalue
+# 1694| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1694| Type = [VoidType] void
+# 1694| ValueCategory = prvalue
+# 1694| getQualifier(): [VariableAccess] x558
+# 1694| Type = [Struct] String
+# 1694| ValueCategory = lvalue
+# 1694| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1694| Conversion = [BoolConversion] conversion to bool
+# 1694| Type = [BoolType] bool
+# 1694| Value = [CStyleCast] 0
+# 1694| ValueCategory = prvalue
+# 1695| getStmt(559): [DoStmt] do (...) ...
+# 1697| getCondition(): [Literal] 0
+# 1697| Type = [IntType] int
+# 1697| Value = [Literal] 0
+# 1697| ValueCategory = prvalue
+# 1695| getStmt(): [BlockStmt] { ... }
+# 1696| getStmt(0): [DeclStmt] declaration
+# 1696| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x559
+# 1696| Type = [Struct] String
+# 1696| getVariable().getInitializer(): [Initializer] initializer for x559
+# 1696| getExpr(): [ConstructorCall] call to String
+# 1696| Type = [VoidType] void
+# 1696| ValueCategory = prvalue
+# 1697| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1697| Type = [VoidType] void
+# 1697| ValueCategory = prvalue
+# 1697| getQualifier(): [VariableAccess] x559
+# 1697| Type = [Struct] String
+# 1697| ValueCategory = lvalue
+# 1697| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1697| Conversion = [BoolConversion] conversion to bool
+# 1697| Type = [BoolType] bool
+# 1697| Value = [CStyleCast] 0
+# 1697| ValueCategory = prvalue
+# 1698| getStmt(560): [DoStmt] do (...) ...
+# 1700| getCondition(): [Literal] 0
+# 1700| Type = [IntType] int
+# 1700| Value = [Literal] 0
+# 1700| ValueCategory = prvalue
+# 1698| getStmt(): [BlockStmt] { ... }
+# 1699| getStmt(0): [DeclStmt] declaration
+# 1699| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x560
+# 1699| Type = [Struct] String
+# 1699| getVariable().getInitializer(): [Initializer] initializer for x560
+# 1699| getExpr(): [ConstructorCall] call to String
+# 1699| Type = [VoidType] void
+# 1699| ValueCategory = prvalue
+# 1700| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1700| Type = [VoidType] void
+# 1700| ValueCategory = prvalue
+# 1700| getQualifier(): [VariableAccess] x560
+# 1700| Type = [Struct] String
+# 1700| ValueCategory = lvalue
+# 1700| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1700| Conversion = [BoolConversion] conversion to bool
+# 1700| Type = [BoolType] bool
+# 1700| Value = [CStyleCast] 0
+# 1700| ValueCategory = prvalue
+# 1701| getStmt(561): [DoStmt] do (...) ...
+# 1703| getCondition(): [Literal] 0
+# 1703| Type = [IntType] int
+# 1703| Value = [Literal] 0
+# 1703| ValueCategory = prvalue
+# 1701| getStmt(): [BlockStmt] { ... }
+# 1702| getStmt(0): [DeclStmt] declaration
+# 1702| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x561
+# 1702| Type = [Struct] String
+# 1702| getVariable().getInitializer(): [Initializer] initializer for x561
+# 1702| getExpr(): [ConstructorCall] call to String
+# 1702| Type = [VoidType] void
+# 1702| ValueCategory = prvalue
+# 1703| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1703| Type = [VoidType] void
+# 1703| ValueCategory = prvalue
+# 1703| getQualifier(): [VariableAccess] x561
+# 1703| Type = [Struct] String
+# 1703| ValueCategory = lvalue
+# 1703| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1703| Conversion = [BoolConversion] conversion to bool
+# 1703| Type = [BoolType] bool
+# 1703| Value = [CStyleCast] 0
+# 1703| ValueCategory = prvalue
+# 1704| getStmt(562): [DoStmt] do (...) ...
+# 1706| getCondition(): [Literal] 0
+# 1706| Type = [IntType] int
+# 1706| Value = [Literal] 0
+# 1706| ValueCategory = prvalue
+# 1704| getStmt(): [BlockStmt] { ... }
+# 1705| getStmt(0): [DeclStmt] declaration
+# 1705| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x562
+# 1705| Type = [Struct] String
+# 1705| getVariable().getInitializer(): [Initializer] initializer for x562
+# 1705| getExpr(): [ConstructorCall] call to String
+# 1705| Type = [VoidType] void
+# 1705| ValueCategory = prvalue
+# 1706| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1706| Type = [VoidType] void
+# 1706| ValueCategory = prvalue
+# 1706| getQualifier(): [VariableAccess] x562
+# 1706| Type = [Struct] String
+# 1706| ValueCategory = lvalue
+# 1706| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1706| Conversion = [BoolConversion] conversion to bool
+# 1706| Type = [BoolType] bool
+# 1706| Value = [CStyleCast] 0
+# 1706| ValueCategory = prvalue
+# 1707| getStmt(563): [DoStmt] do (...) ...
+# 1709| getCondition(): [Literal] 0
+# 1709| Type = [IntType] int
+# 1709| Value = [Literal] 0
+# 1709| ValueCategory = prvalue
+# 1707| getStmt(): [BlockStmt] { ... }
+# 1708| getStmt(0): [DeclStmt] declaration
+# 1708| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x563
+# 1708| Type = [Struct] String
+# 1708| getVariable().getInitializer(): [Initializer] initializer for x563
+# 1708| getExpr(): [ConstructorCall] call to String
+# 1708| Type = [VoidType] void
+# 1708| ValueCategory = prvalue
+# 1709| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1709| Type = [VoidType] void
+# 1709| ValueCategory = prvalue
+# 1709| getQualifier(): [VariableAccess] x563
+# 1709| Type = [Struct] String
+# 1709| ValueCategory = lvalue
+# 1709| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1709| Conversion = [BoolConversion] conversion to bool
+# 1709| Type = [BoolType] bool
+# 1709| Value = [CStyleCast] 0
+# 1709| ValueCategory = prvalue
+# 1710| getStmt(564): [DoStmt] do (...) ...
+# 1712| getCondition(): [Literal] 0
+# 1712| Type = [IntType] int
+# 1712| Value = [Literal] 0
+# 1712| ValueCategory = prvalue
+# 1710| getStmt(): [BlockStmt] { ... }
+# 1711| getStmt(0): [DeclStmt] declaration
+# 1711| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x564
+# 1711| Type = [Struct] String
+# 1711| getVariable().getInitializer(): [Initializer] initializer for x564
+# 1711| getExpr(): [ConstructorCall] call to String
+# 1711| Type = [VoidType] void
+# 1711| ValueCategory = prvalue
+# 1712| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1712| Type = [VoidType] void
+# 1712| ValueCategory = prvalue
+# 1712| getQualifier(): [VariableAccess] x564
+# 1712| Type = [Struct] String
+# 1712| ValueCategory = lvalue
+# 1712| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1712| Conversion = [BoolConversion] conversion to bool
+# 1712| Type = [BoolType] bool
+# 1712| Value = [CStyleCast] 0
+# 1712| ValueCategory = prvalue
+# 1713| getStmt(565): [DoStmt] do (...) ...
+# 1715| getCondition(): [Literal] 0
+# 1715| Type = [IntType] int
+# 1715| Value = [Literal] 0
+# 1715| ValueCategory = prvalue
+# 1713| getStmt(): [BlockStmt] { ... }
+# 1714| getStmt(0): [DeclStmt] declaration
+# 1714| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x565
+# 1714| Type = [Struct] String
+# 1714| getVariable().getInitializer(): [Initializer] initializer for x565
+# 1714| getExpr(): [ConstructorCall] call to String
+# 1714| Type = [VoidType] void
+# 1714| ValueCategory = prvalue
+# 1715| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1715| Type = [VoidType] void
+# 1715| ValueCategory = prvalue
+# 1715| getQualifier(): [VariableAccess] x565
+# 1715| Type = [Struct] String
+# 1715| ValueCategory = lvalue
+# 1715| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1715| Conversion = [BoolConversion] conversion to bool
+# 1715| Type = [BoolType] bool
+# 1715| Value = [CStyleCast] 0
+# 1715| ValueCategory = prvalue
+# 1716| getStmt(566): [DoStmt] do (...) ...
+# 1718| getCondition(): [Literal] 0
+# 1718| Type = [IntType] int
+# 1718| Value = [Literal] 0
+# 1718| ValueCategory = prvalue
+# 1716| getStmt(): [BlockStmt] { ... }
+# 1717| getStmt(0): [DeclStmt] declaration
+# 1717| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x566
+# 1717| Type = [Struct] String
+# 1717| getVariable().getInitializer(): [Initializer] initializer for x566
+# 1717| getExpr(): [ConstructorCall] call to String
+# 1717| Type = [VoidType] void
+# 1717| ValueCategory = prvalue
+# 1718| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1718| Type = [VoidType] void
+# 1718| ValueCategory = prvalue
+# 1718| getQualifier(): [VariableAccess] x566
+# 1718| Type = [Struct] String
+# 1718| ValueCategory = lvalue
+# 1718| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1718| Conversion = [BoolConversion] conversion to bool
+# 1718| Type = [BoolType] bool
+# 1718| Value = [CStyleCast] 0
+# 1718| ValueCategory = prvalue
+# 1719| getStmt(567): [DoStmt] do (...) ...
+# 1721| getCondition(): [Literal] 0
+# 1721| Type = [IntType] int
+# 1721| Value = [Literal] 0
+# 1721| ValueCategory = prvalue
+# 1719| getStmt(): [BlockStmt] { ... }
+# 1720| getStmt(0): [DeclStmt] declaration
+# 1720| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x567
+# 1720| Type = [Struct] String
+# 1720| getVariable().getInitializer(): [Initializer] initializer for x567
+# 1720| getExpr(): [ConstructorCall] call to String
+# 1720| Type = [VoidType] void
+# 1720| ValueCategory = prvalue
+# 1721| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1721| Type = [VoidType] void
+# 1721| ValueCategory = prvalue
+# 1721| getQualifier(): [VariableAccess] x567
+# 1721| Type = [Struct] String
+# 1721| ValueCategory = lvalue
+# 1721| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1721| Conversion = [BoolConversion] conversion to bool
+# 1721| Type = [BoolType] bool
+# 1721| Value = [CStyleCast] 0
+# 1721| ValueCategory = prvalue
+# 1722| getStmt(568): [DoStmt] do (...) ...
+# 1724| getCondition(): [Literal] 0
+# 1724| Type = [IntType] int
+# 1724| Value = [Literal] 0
+# 1724| ValueCategory = prvalue
+# 1722| getStmt(): [BlockStmt] { ... }
+# 1723| getStmt(0): [DeclStmt] declaration
+# 1723| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x568
+# 1723| Type = [Struct] String
+# 1723| getVariable().getInitializer(): [Initializer] initializer for x568
+# 1723| getExpr(): [ConstructorCall] call to String
+# 1723| Type = [VoidType] void
+# 1723| ValueCategory = prvalue
+# 1724| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1724| Type = [VoidType] void
+# 1724| ValueCategory = prvalue
+# 1724| getQualifier(): [VariableAccess] x568
+# 1724| Type = [Struct] String
+# 1724| ValueCategory = lvalue
+# 1724| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1724| Conversion = [BoolConversion] conversion to bool
+# 1724| Type = [BoolType] bool
+# 1724| Value = [CStyleCast] 0
+# 1724| ValueCategory = prvalue
+# 1725| getStmt(569): [DoStmt] do (...) ...
+# 1727| getCondition(): [Literal] 0
+# 1727| Type = [IntType] int
+# 1727| Value = [Literal] 0
+# 1727| ValueCategory = prvalue
+# 1725| getStmt(): [BlockStmt] { ... }
+# 1726| getStmt(0): [DeclStmt] declaration
+# 1726| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x569
+# 1726| Type = [Struct] String
+# 1726| getVariable().getInitializer(): [Initializer] initializer for x569
+# 1726| getExpr(): [ConstructorCall] call to String
+# 1726| Type = [VoidType] void
+# 1726| ValueCategory = prvalue
+# 1727| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1727| Type = [VoidType] void
+# 1727| ValueCategory = prvalue
+# 1727| getQualifier(): [VariableAccess] x569
+# 1727| Type = [Struct] String
+# 1727| ValueCategory = lvalue
+# 1727| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1727| Conversion = [BoolConversion] conversion to bool
+# 1727| Type = [BoolType] bool
+# 1727| Value = [CStyleCast] 0
+# 1727| ValueCategory = prvalue
+# 1728| getStmt(570): [DoStmt] do (...) ...
+# 1730| getCondition(): [Literal] 0
+# 1730| Type = [IntType] int
+# 1730| Value = [Literal] 0
+# 1730| ValueCategory = prvalue
+# 1728| getStmt(): [BlockStmt] { ... }
+# 1729| getStmt(0): [DeclStmt] declaration
+# 1729| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x570
+# 1729| Type = [Struct] String
+# 1729| getVariable().getInitializer(): [Initializer] initializer for x570
+# 1729| getExpr(): [ConstructorCall] call to String
+# 1729| Type = [VoidType] void
+# 1729| ValueCategory = prvalue
+# 1730| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1730| Type = [VoidType] void
+# 1730| ValueCategory = prvalue
+# 1730| getQualifier(): [VariableAccess] x570
+# 1730| Type = [Struct] String
+# 1730| ValueCategory = lvalue
+# 1730| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1730| Conversion = [BoolConversion] conversion to bool
+# 1730| Type = [BoolType] bool
+# 1730| Value = [CStyleCast] 0
+# 1730| ValueCategory = prvalue
+# 1731| getStmt(571): [DoStmt] do (...) ...
+# 1733| getCondition(): [Literal] 0
+# 1733| Type = [IntType] int
+# 1733| Value = [Literal] 0
+# 1733| ValueCategory = prvalue
+# 1731| getStmt(): [BlockStmt] { ... }
+# 1732| getStmt(0): [DeclStmt] declaration
+# 1732| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x571
+# 1732| Type = [Struct] String
+# 1732| getVariable().getInitializer(): [Initializer] initializer for x571
+# 1732| getExpr(): [ConstructorCall] call to String
+# 1732| Type = [VoidType] void
+# 1732| ValueCategory = prvalue
+# 1733| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1733| Type = [VoidType] void
+# 1733| ValueCategory = prvalue
+# 1733| getQualifier(): [VariableAccess] x571
+# 1733| Type = [Struct] String
+# 1733| ValueCategory = lvalue
+# 1733| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1733| Conversion = [BoolConversion] conversion to bool
+# 1733| Type = [BoolType] bool
+# 1733| Value = [CStyleCast] 0
+# 1733| ValueCategory = prvalue
+# 1734| getStmt(572): [DoStmt] do (...) ...
+# 1736| getCondition(): [Literal] 0
+# 1736| Type = [IntType] int
+# 1736| Value = [Literal] 0
+# 1736| ValueCategory = prvalue
+# 1734| getStmt(): [BlockStmt] { ... }
+# 1735| getStmt(0): [DeclStmt] declaration
+# 1735| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x572
+# 1735| Type = [Struct] String
+# 1735| getVariable().getInitializer(): [Initializer] initializer for x572
+# 1735| getExpr(): [ConstructorCall] call to String
+# 1735| Type = [VoidType] void
+# 1735| ValueCategory = prvalue
+# 1736| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1736| Type = [VoidType] void
+# 1736| ValueCategory = prvalue
+# 1736| getQualifier(): [VariableAccess] x572
+# 1736| Type = [Struct] String
+# 1736| ValueCategory = lvalue
+# 1736| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1736| Conversion = [BoolConversion] conversion to bool
+# 1736| Type = [BoolType] bool
+# 1736| Value = [CStyleCast] 0
+# 1736| ValueCategory = prvalue
+# 1737| getStmt(573): [DoStmt] do (...) ...
+# 1739| getCondition(): [Literal] 0
+# 1739| Type = [IntType] int
+# 1739| Value = [Literal] 0
+# 1739| ValueCategory = prvalue
+# 1737| getStmt(): [BlockStmt] { ... }
+# 1738| getStmt(0): [DeclStmt] declaration
+# 1738| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x573
+# 1738| Type = [Struct] String
+# 1738| getVariable().getInitializer(): [Initializer] initializer for x573
+# 1738| getExpr(): [ConstructorCall] call to String
+# 1738| Type = [VoidType] void
+# 1738| ValueCategory = prvalue
+# 1739| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1739| Type = [VoidType] void
+# 1739| ValueCategory = prvalue
+# 1739| getQualifier(): [VariableAccess] x573
+# 1739| Type = [Struct] String
+# 1739| ValueCategory = lvalue
+# 1739| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1739| Conversion = [BoolConversion] conversion to bool
+# 1739| Type = [BoolType] bool
+# 1739| Value = [CStyleCast] 0
+# 1739| ValueCategory = prvalue
+# 1740| getStmt(574): [DoStmt] do (...) ...
+# 1742| getCondition(): [Literal] 0
+# 1742| Type = [IntType] int
+# 1742| Value = [Literal] 0
+# 1742| ValueCategory = prvalue
+# 1740| getStmt(): [BlockStmt] { ... }
+# 1741| getStmt(0): [DeclStmt] declaration
+# 1741| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x574
+# 1741| Type = [Struct] String
+# 1741| getVariable().getInitializer(): [Initializer] initializer for x574
+# 1741| getExpr(): [ConstructorCall] call to String
+# 1741| Type = [VoidType] void
+# 1741| ValueCategory = prvalue
+# 1742| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1742| Type = [VoidType] void
+# 1742| ValueCategory = prvalue
+# 1742| getQualifier(): [VariableAccess] x574
+# 1742| Type = [Struct] String
+# 1742| ValueCategory = lvalue
+# 1742| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1742| Conversion = [BoolConversion] conversion to bool
+# 1742| Type = [BoolType] bool
+# 1742| Value = [CStyleCast] 0
+# 1742| ValueCategory = prvalue
+# 1743| getStmt(575): [DoStmt] do (...) ...
+# 1745| getCondition(): [Literal] 0
+# 1745| Type = [IntType] int
+# 1745| Value = [Literal] 0
+# 1745| ValueCategory = prvalue
+# 1743| getStmt(): [BlockStmt] { ... }
+# 1744| getStmt(0): [DeclStmt] declaration
+# 1744| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x575
+# 1744| Type = [Struct] String
+# 1744| getVariable().getInitializer(): [Initializer] initializer for x575
+# 1744| getExpr(): [ConstructorCall] call to String
+# 1744| Type = [VoidType] void
+# 1744| ValueCategory = prvalue
+# 1745| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1745| Type = [VoidType] void
+# 1745| ValueCategory = prvalue
+# 1745| getQualifier(): [VariableAccess] x575
+# 1745| Type = [Struct] String
+# 1745| ValueCategory = lvalue
+# 1745| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1745| Conversion = [BoolConversion] conversion to bool
+# 1745| Type = [BoolType] bool
+# 1745| Value = [CStyleCast] 0
+# 1745| ValueCategory = prvalue
+# 1746| getStmt(576): [DoStmt] do (...) ...
+# 1748| getCondition(): [Literal] 0
+# 1748| Type = [IntType] int
+# 1748| Value = [Literal] 0
+# 1748| ValueCategory = prvalue
+# 1746| getStmt(): [BlockStmt] { ... }
+# 1747| getStmt(0): [DeclStmt] declaration
+# 1747| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x576
+# 1747| Type = [Struct] String
+# 1747| getVariable().getInitializer(): [Initializer] initializer for x576
+# 1747| getExpr(): [ConstructorCall] call to String
+# 1747| Type = [VoidType] void
+# 1747| ValueCategory = prvalue
+# 1748| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1748| Type = [VoidType] void
+# 1748| ValueCategory = prvalue
+# 1748| getQualifier(): [VariableAccess] x576
+# 1748| Type = [Struct] String
+# 1748| ValueCategory = lvalue
+# 1748| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1748| Conversion = [BoolConversion] conversion to bool
+# 1748| Type = [BoolType] bool
+# 1748| Value = [CStyleCast] 0
+# 1748| ValueCategory = prvalue
+# 1749| getStmt(577): [DoStmt] do (...) ...
+# 1751| getCondition(): [Literal] 0
+# 1751| Type = [IntType] int
+# 1751| Value = [Literal] 0
+# 1751| ValueCategory = prvalue
+# 1749| getStmt(): [BlockStmt] { ... }
+# 1750| getStmt(0): [DeclStmt] declaration
+# 1750| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x577
+# 1750| Type = [Struct] String
+# 1750| getVariable().getInitializer(): [Initializer] initializer for x577
+# 1750| getExpr(): [ConstructorCall] call to String
+# 1750| Type = [VoidType] void
+# 1750| ValueCategory = prvalue
+# 1751| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1751| Type = [VoidType] void
+# 1751| ValueCategory = prvalue
+# 1751| getQualifier(): [VariableAccess] x577
+# 1751| Type = [Struct] String
+# 1751| ValueCategory = lvalue
+# 1751| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1751| Conversion = [BoolConversion] conversion to bool
+# 1751| Type = [BoolType] bool
+# 1751| Value = [CStyleCast] 0
+# 1751| ValueCategory = prvalue
+# 1752| getStmt(578): [DoStmt] do (...) ...
+# 1754| getCondition(): [Literal] 0
+# 1754| Type = [IntType] int
+# 1754| Value = [Literal] 0
+# 1754| ValueCategory = prvalue
+# 1752| getStmt(): [BlockStmt] { ... }
+# 1753| getStmt(0): [DeclStmt] declaration
+# 1753| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x578
+# 1753| Type = [Struct] String
+# 1753| getVariable().getInitializer(): [Initializer] initializer for x578
+# 1753| getExpr(): [ConstructorCall] call to String
+# 1753| Type = [VoidType] void
+# 1753| ValueCategory = prvalue
+# 1754| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1754| Type = [VoidType] void
+# 1754| ValueCategory = prvalue
+# 1754| getQualifier(): [VariableAccess] x578
+# 1754| Type = [Struct] String
+# 1754| ValueCategory = lvalue
+# 1754| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1754| Conversion = [BoolConversion] conversion to bool
+# 1754| Type = [BoolType] bool
+# 1754| Value = [CStyleCast] 0
+# 1754| ValueCategory = prvalue
+# 1755| getStmt(579): [DoStmt] do (...) ...
+# 1757| getCondition(): [Literal] 0
+# 1757| Type = [IntType] int
+# 1757| Value = [Literal] 0
+# 1757| ValueCategory = prvalue
+# 1755| getStmt(): [BlockStmt] { ... }
+# 1756| getStmt(0): [DeclStmt] declaration
+# 1756| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x579
+# 1756| Type = [Struct] String
+# 1756| getVariable().getInitializer(): [Initializer] initializer for x579
+# 1756| getExpr(): [ConstructorCall] call to String
+# 1756| Type = [VoidType] void
+# 1756| ValueCategory = prvalue
+# 1757| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1757| Type = [VoidType] void
+# 1757| ValueCategory = prvalue
+# 1757| getQualifier(): [VariableAccess] x579
+# 1757| Type = [Struct] String
+# 1757| ValueCategory = lvalue
+# 1757| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1757| Conversion = [BoolConversion] conversion to bool
+# 1757| Type = [BoolType] bool
+# 1757| Value = [CStyleCast] 0
+# 1757| ValueCategory = prvalue
+# 1758| getStmt(580): [DoStmt] do (...) ...
+# 1760| getCondition(): [Literal] 0
+# 1760| Type = [IntType] int
+# 1760| Value = [Literal] 0
+# 1760| ValueCategory = prvalue
+# 1758| getStmt(): [BlockStmt] { ... }
+# 1759| getStmt(0): [DeclStmt] declaration
+# 1759| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x580
+# 1759| Type = [Struct] String
+# 1759| getVariable().getInitializer(): [Initializer] initializer for x580
+# 1759| getExpr(): [ConstructorCall] call to String
+# 1759| Type = [VoidType] void
+# 1759| ValueCategory = prvalue
+# 1760| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1760| Type = [VoidType] void
+# 1760| ValueCategory = prvalue
+# 1760| getQualifier(): [VariableAccess] x580
+# 1760| Type = [Struct] String
+# 1760| ValueCategory = lvalue
+# 1760| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1760| Conversion = [BoolConversion] conversion to bool
+# 1760| Type = [BoolType] bool
+# 1760| Value = [CStyleCast] 0
+# 1760| ValueCategory = prvalue
+# 1761| getStmt(581): [DoStmt] do (...) ...
+# 1763| getCondition(): [Literal] 0
+# 1763| Type = [IntType] int
+# 1763| Value = [Literal] 0
+# 1763| ValueCategory = prvalue
+# 1761| getStmt(): [BlockStmt] { ... }
+# 1762| getStmt(0): [DeclStmt] declaration
+# 1762| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x581
+# 1762| Type = [Struct] String
+# 1762| getVariable().getInitializer(): [Initializer] initializer for x581
+# 1762| getExpr(): [ConstructorCall] call to String
+# 1762| Type = [VoidType] void
+# 1762| ValueCategory = prvalue
+# 1763| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1763| Type = [VoidType] void
+# 1763| ValueCategory = prvalue
+# 1763| getQualifier(): [VariableAccess] x581
+# 1763| Type = [Struct] String
+# 1763| ValueCategory = lvalue
+# 1763| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1763| Conversion = [BoolConversion] conversion to bool
+# 1763| Type = [BoolType] bool
+# 1763| Value = [CStyleCast] 0
+# 1763| ValueCategory = prvalue
+# 1764| getStmt(582): [DoStmt] do (...) ...
+# 1766| getCondition(): [Literal] 0
+# 1766| Type = [IntType] int
+# 1766| Value = [Literal] 0
+# 1766| ValueCategory = prvalue
+# 1764| getStmt(): [BlockStmt] { ... }
+# 1765| getStmt(0): [DeclStmt] declaration
+# 1765| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x582
+# 1765| Type = [Struct] String
+# 1765| getVariable().getInitializer(): [Initializer] initializer for x582
+# 1765| getExpr(): [ConstructorCall] call to String
+# 1765| Type = [VoidType] void
+# 1765| ValueCategory = prvalue
+# 1766| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1766| Type = [VoidType] void
+# 1766| ValueCategory = prvalue
+# 1766| getQualifier(): [VariableAccess] x582
+# 1766| Type = [Struct] String
+# 1766| ValueCategory = lvalue
+# 1766| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1766| Conversion = [BoolConversion] conversion to bool
+# 1766| Type = [BoolType] bool
+# 1766| Value = [CStyleCast] 0
+# 1766| ValueCategory = prvalue
+# 1767| getStmt(583): [DoStmt] do (...) ...
+# 1769| getCondition(): [Literal] 0
+# 1769| Type = [IntType] int
+# 1769| Value = [Literal] 0
+# 1769| ValueCategory = prvalue
+# 1767| getStmt(): [BlockStmt] { ... }
+# 1768| getStmt(0): [DeclStmt] declaration
+# 1768| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x583
+# 1768| Type = [Struct] String
+# 1768| getVariable().getInitializer(): [Initializer] initializer for x583
+# 1768| getExpr(): [ConstructorCall] call to String
+# 1768| Type = [VoidType] void
+# 1768| ValueCategory = prvalue
+# 1769| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1769| Type = [VoidType] void
+# 1769| ValueCategory = prvalue
+# 1769| getQualifier(): [VariableAccess] x583
+# 1769| Type = [Struct] String
+# 1769| ValueCategory = lvalue
+# 1769| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1769| Conversion = [BoolConversion] conversion to bool
+# 1769| Type = [BoolType] bool
+# 1769| Value = [CStyleCast] 0
+# 1769| ValueCategory = prvalue
+# 1770| getStmt(584): [DoStmt] do (...) ...
+# 1772| getCondition(): [Literal] 0
+# 1772| Type = [IntType] int
+# 1772| Value = [Literal] 0
+# 1772| ValueCategory = prvalue
+# 1770| getStmt(): [BlockStmt] { ... }
+# 1771| getStmt(0): [DeclStmt] declaration
+# 1771| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x584
+# 1771| Type = [Struct] String
+# 1771| getVariable().getInitializer(): [Initializer] initializer for x584
+# 1771| getExpr(): [ConstructorCall] call to String
+# 1771| Type = [VoidType] void
+# 1771| ValueCategory = prvalue
+# 1772| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1772| Type = [VoidType] void
+# 1772| ValueCategory = prvalue
+# 1772| getQualifier(): [VariableAccess] x584
+# 1772| Type = [Struct] String
+# 1772| ValueCategory = lvalue
+# 1772| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1772| Conversion = [BoolConversion] conversion to bool
+# 1772| Type = [BoolType] bool
+# 1772| Value = [CStyleCast] 0
+# 1772| ValueCategory = prvalue
+# 1773| getStmt(585): [DoStmt] do (...) ...
+# 1775| getCondition(): [Literal] 0
+# 1775| Type = [IntType] int
+# 1775| Value = [Literal] 0
+# 1775| ValueCategory = prvalue
+# 1773| getStmt(): [BlockStmt] { ... }
+# 1774| getStmt(0): [DeclStmt] declaration
+# 1774| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x585
+# 1774| Type = [Struct] String
+# 1774| getVariable().getInitializer(): [Initializer] initializer for x585
+# 1774| getExpr(): [ConstructorCall] call to String
+# 1774| Type = [VoidType] void
+# 1774| ValueCategory = prvalue
+# 1775| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1775| Type = [VoidType] void
+# 1775| ValueCategory = prvalue
+# 1775| getQualifier(): [VariableAccess] x585
+# 1775| Type = [Struct] String
+# 1775| ValueCategory = lvalue
+# 1775| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1775| Conversion = [BoolConversion] conversion to bool
+# 1775| Type = [BoolType] bool
+# 1775| Value = [CStyleCast] 0
+# 1775| ValueCategory = prvalue
+# 1776| getStmt(586): [DoStmt] do (...) ...
+# 1778| getCondition(): [Literal] 0
+# 1778| Type = [IntType] int
+# 1778| Value = [Literal] 0
+# 1778| ValueCategory = prvalue
+# 1776| getStmt(): [BlockStmt] { ... }
+# 1777| getStmt(0): [DeclStmt] declaration
+# 1777| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x586
+# 1777| Type = [Struct] String
+# 1777| getVariable().getInitializer(): [Initializer] initializer for x586
+# 1777| getExpr(): [ConstructorCall] call to String
+# 1777| Type = [VoidType] void
+# 1777| ValueCategory = prvalue
+# 1778| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1778| Type = [VoidType] void
+# 1778| ValueCategory = prvalue
+# 1778| getQualifier(): [VariableAccess] x586
+# 1778| Type = [Struct] String
+# 1778| ValueCategory = lvalue
+# 1778| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1778| Conversion = [BoolConversion] conversion to bool
+# 1778| Type = [BoolType] bool
+# 1778| Value = [CStyleCast] 0
+# 1778| ValueCategory = prvalue
+# 1779| getStmt(587): [DoStmt] do (...) ...
+# 1781| getCondition(): [Literal] 0
+# 1781| Type = [IntType] int
+# 1781| Value = [Literal] 0
+# 1781| ValueCategory = prvalue
+# 1779| getStmt(): [BlockStmt] { ... }
+# 1780| getStmt(0): [DeclStmt] declaration
+# 1780| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x587
+# 1780| Type = [Struct] String
+# 1780| getVariable().getInitializer(): [Initializer] initializer for x587
+# 1780| getExpr(): [ConstructorCall] call to String
+# 1780| Type = [VoidType] void
+# 1780| ValueCategory = prvalue
+# 1781| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1781| Type = [VoidType] void
+# 1781| ValueCategory = prvalue
+# 1781| getQualifier(): [VariableAccess] x587
+# 1781| Type = [Struct] String
+# 1781| ValueCategory = lvalue
+# 1781| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1781| Conversion = [BoolConversion] conversion to bool
+# 1781| Type = [BoolType] bool
+# 1781| Value = [CStyleCast] 0
+# 1781| ValueCategory = prvalue
+# 1782| getStmt(588): [DoStmt] do (...) ...
+# 1784| getCondition(): [Literal] 0
+# 1784| Type = [IntType] int
+# 1784| Value = [Literal] 0
+# 1784| ValueCategory = prvalue
+# 1782| getStmt(): [BlockStmt] { ... }
+# 1783| getStmt(0): [DeclStmt] declaration
+# 1783| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x588
+# 1783| Type = [Struct] String
+# 1783| getVariable().getInitializer(): [Initializer] initializer for x588
+# 1783| getExpr(): [ConstructorCall] call to String
+# 1783| Type = [VoidType] void
+# 1783| ValueCategory = prvalue
+# 1784| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1784| Type = [VoidType] void
+# 1784| ValueCategory = prvalue
+# 1784| getQualifier(): [VariableAccess] x588
+# 1784| Type = [Struct] String
+# 1784| ValueCategory = lvalue
+# 1784| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1784| Conversion = [BoolConversion] conversion to bool
+# 1784| Type = [BoolType] bool
+# 1784| Value = [CStyleCast] 0
+# 1784| ValueCategory = prvalue
+# 1785| getStmt(589): [DoStmt] do (...) ...
+# 1787| getCondition(): [Literal] 0
+# 1787| Type = [IntType] int
+# 1787| Value = [Literal] 0
+# 1787| ValueCategory = prvalue
+# 1785| getStmt(): [BlockStmt] { ... }
+# 1786| getStmt(0): [DeclStmt] declaration
+# 1786| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x589
+# 1786| Type = [Struct] String
+# 1786| getVariable().getInitializer(): [Initializer] initializer for x589
+# 1786| getExpr(): [ConstructorCall] call to String
+# 1786| Type = [VoidType] void
+# 1786| ValueCategory = prvalue
+# 1787| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1787| Type = [VoidType] void
+# 1787| ValueCategory = prvalue
+# 1787| getQualifier(): [VariableAccess] x589
+# 1787| Type = [Struct] String
+# 1787| ValueCategory = lvalue
+# 1787| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1787| Conversion = [BoolConversion] conversion to bool
+# 1787| Type = [BoolType] bool
+# 1787| Value = [CStyleCast] 0
+# 1787| ValueCategory = prvalue
+# 1788| getStmt(590): [DoStmt] do (...) ...
+# 1790| getCondition(): [Literal] 0
+# 1790| Type = [IntType] int
+# 1790| Value = [Literal] 0
+# 1790| ValueCategory = prvalue
+# 1788| getStmt(): [BlockStmt] { ... }
+# 1789| getStmt(0): [DeclStmt] declaration
+# 1789| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x590
+# 1789| Type = [Struct] String
+# 1789| getVariable().getInitializer(): [Initializer] initializer for x590
+# 1789| getExpr(): [ConstructorCall] call to String
+# 1789| Type = [VoidType] void
+# 1789| ValueCategory = prvalue
+# 1790| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1790| Type = [VoidType] void
+# 1790| ValueCategory = prvalue
+# 1790| getQualifier(): [VariableAccess] x590
+# 1790| Type = [Struct] String
+# 1790| ValueCategory = lvalue
+# 1790| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1790| Conversion = [BoolConversion] conversion to bool
+# 1790| Type = [BoolType] bool
+# 1790| Value = [CStyleCast] 0
+# 1790| ValueCategory = prvalue
+# 1791| getStmt(591): [DoStmt] do (...) ...
+# 1793| getCondition(): [Literal] 0
+# 1793| Type = [IntType] int
+# 1793| Value = [Literal] 0
+# 1793| ValueCategory = prvalue
+# 1791| getStmt(): [BlockStmt] { ... }
+# 1792| getStmt(0): [DeclStmt] declaration
+# 1792| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x591
+# 1792| Type = [Struct] String
+# 1792| getVariable().getInitializer(): [Initializer] initializer for x591
+# 1792| getExpr(): [ConstructorCall] call to String
+# 1792| Type = [VoidType] void
+# 1792| ValueCategory = prvalue
+# 1793| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1793| Type = [VoidType] void
+# 1793| ValueCategory = prvalue
+# 1793| getQualifier(): [VariableAccess] x591
+# 1793| Type = [Struct] String
+# 1793| ValueCategory = lvalue
+# 1793| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1793| Conversion = [BoolConversion] conversion to bool
+# 1793| Type = [BoolType] bool
+# 1793| Value = [CStyleCast] 0
+# 1793| ValueCategory = prvalue
+# 1794| getStmt(592): [DoStmt] do (...) ...
+# 1796| getCondition(): [Literal] 0
+# 1796| Type = [IntType] int
+# 1796| Value = [Literal] 0
+# 1796| ValueCategory = prvalue
+# 1794| getStmt(): [BlockStmt] { ... }
+# 1795| getStmt(0): [DeclStmt] declaration
+# 1795| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x592
+# 1795| Type = [Struct] String
+# 1795| getVariable().getInitializer(): [Initializer] initializer for x592
+# 1795| getExpr(): [ConstructorCall] call to String
+# 1795| Type = [VoidType] void
+# 1795| ValueCategory = prvalue
+# 1796| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1796| Type = [VoidType] void
+# 1796| ValueCategory = prvalue
+# 1796| getQualifier(): [VariableAccess] x592
+# 1796| Type = [Struct] String
+# 1796| ValueCategory = lvalue
+# 1796| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1796| Conversion = [BoolConversion] conversion to bool
+# 1796| Type = [BoolType] bool
+# 1796| Value = [CStyleCast] 0
+# 1796| ValueCategory = prvalue
+# 1797| getStmt(593): [DoStmt] do (...) ...
+# 1799| getCondition(): [Literal] 0
+# 1799| Type = [IntType] int
+# 1799| Value = [Literal] 0
+# 1799| ValueCategory = prvalue
+# 1797| getStmt(): [BlockStmt] { ... }
+# 1798| getStmt(0): [DeclStmt] declaration
+# 1798| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x593
+# 1798| Type = [Struct] String
+# 1798| getVariable().getInitializer(): [Initializer] initializer for x593
+# 1798| getExpr(): [ConstructorCall] call to String
+# 1798| Type = [VoidType] void
+# 1798| ValueCategory = prvalue
+# 1799| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1799| Type = [VoidType] void
+# 1799| ValueCategory = prvalue
+# 1799| getQualifier(): [VariableAccess] x593
+# 1799| Type = [Struct] String
+# 1799| ValueCategory = lvalue
+# 1799| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1799| Conversion = [BoolConversion] conversion to bool
+# 1799| Type = [BoolType] bool
+# 1799| Value = [CStyleCast] 0
+# 1799| ValueCategory = prvalue
+# 1800| getStmt(594): [DoStmt] do (...) ...
+# 1802| getCondition(): [Literal] 0
+# 1802| Type = [IntType] int
+# 1802| Value = [Literal] 0
+# 1802| ValueCategory = prvalue
+# 1800| getStmt(): [BlockStmt] { ... }
+# 1801| getStmt(0): [DeclStmt] declaration
+# 1801| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x594
+# 1801| Type = [Struct] String
+# 1801| getVariable().getInitializer(): [Initializer] initializer for x594
+# 1801| getExpr(): [ConstructorCall] call to String
+# 1801| Type = [VoidType] void
+# 1801| ValueCategory = prvalue
+# 1802| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1802| Type = [VoidType] void
+# 1802| ValueCategory = prvalue
+# 1802| getQualifier(): [VariableAccess] x594
+# 1802| Type = [Struct] String
+# 1802| ValueCategory = lvalue
+# 1802| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1802| Conversion = [BoolConversion] conversion to bool
+# 1802| Type = [BoolType] bool
+# 1802| Value = [CStyleCast] 0
+# 1802| ValueCategory = prvalue
+# 1803| getStmt(595): [DoStmt] do (...) ...
+# 1805| getCondition(): [Literal] 0
+# 1805| Type = [IntType] int
+# 1805| Value = [Literal] 0
+# 1805| ValueCategory = prvalue
+# 1803| getStmt(): [BlockStmt] { ... }
+# 1804| getStmt(0): [DeclStmt] declaration
+# 1804| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x595
+# 1804| Type = [Struct] String
+# 1804| getVariable().getInitializer(): [Initializer] initializer for x595
+# 1804| getExpr(): [ConstructorCall] call to String
+# 1804| Type = [VoidType] void
+# 1804| ValueCategory = prvalue
+# 1805| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1805| Type = [VoidType] void
+# 1805| ValueCategory = prvalue
+# 1805| getQualifier(): [VariableAccess] x595
+# 1805| Type = [Struct] String
+# 1805| ValueCategory = lvalue
+# 1805| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1805| Conversion = [BoolConversion] conversion to bool
+# 1805| Type = [BoolType] bool
+# 1805| Value = [CStyleCast] 0
+# 1805| ValueCategory = prvalue
+# 1806| getStmt(596): [DoStmt] do (...) ...
+# 1808| getCondition(): [Literal] 0
+# 1808| Type = [IntType] int
+# 1808| Value = [Literal] 0
+# 1808| ValueCategory = prvalue
+# 1806| getStmt(): [BlockStmt] { ... }
+# 1807| getStmt(0): [DeclStmt] declaration
+# 1807| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x596
+# 1807| Type = [Struct] String
+# 1807| getVariable().getInitializer(): [Initializer] initializer for x596
+# 1807| getExpr(): [ConstructorCall] call to String
+# 1807| Type = [VoidType] void
+# 1807| ValueCategory = prvalue
+# 1808| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1808| Type = [VoidType] void
+# 1808| ValueCategory = prvalue
+# 1808| getQualifier(): [VariableAccess] x596
+# 1808| Type = [Struct] String
+# 1808| ValueCategory = lvalue
+# 1808| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1808| Conversion = [BoolConversion] conversion to bool
+# 1808| Type = [BoolType] bool
+# 1808| Value = [CStyleCast] 0
+# 1808| ValueCategory = prvalue
+# 1809| getStmt(597): [DoStmt] do (...) ...
+# 1811| getCondition(): [Literal] 0
+# 1811| Type = [IntType] int
+# 1811| Value = [Literal] 0
+# 1811| ValueCategory = prvalue
+# 1809| getStmt(): [BlockStmt] { ... }
+# 1810| getStmt(0): [DeclStmt] declaration
+# 1810| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x597
+# 1810| Type = [Struct] String
+# 1810| getVariable().getInitializer(): [Initializer] initializer for x597
+# 1810| getExpr(): [ConstructorCall] call to String
+# 1810| Type = [VoidType] void
+# 1810| ValueCategory = prvalue
+# 1811| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1811| Type = [VoidType] void
+# 1811| ValueCategory = prvalue
+# 1811| getQualifier(): [VariableAccess] x597
+# 1811| Type = [Struct] String
+# 1811| ValueCategory = lvalue
+# 1811| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1811| Conversion = [BoolConversion] conversion to bool
+# 1811| Type = [BoolType] bool
+# 1811| Value = [CStyleCast] 0
+# 1811| ValueCategory = prvalue
+# 1812| getStmt(598): [DoStmt] do (...) ...
+# 1814| getCondition(): [Literal] 0
+# 1814| Type = [IntType] int
+# 1814| Value = [Literal] 0
+# 1814| ValueCategory = prvalue
+# 1812| getStmt(): [BlockStmt] { ... }
+# 1813| getStmt(0): [DeclStmt] declaration
+# 1813| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x598
+# 1813| Type = [Struct] String
+# 1813| getVariable().getInitializer(): [Initializer] initializer for x598
+# 1813| getExpr(): [ConstructorCall] call to String
+# 1813| Type = [VoidType] void
+# 1813| ValueCategory = prvalue
+# 1814| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1814| Type = [VoidType] void
+# 1814| ValueCategory = prvalue
+# 1814| getQualifier(): [VariableAccess] x598
+# 1814| Type = [Struct] String
+# 1814| ValueCategory = lvalue
+# 1814| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1814| Conversion = [BoolConversion] conversion to bool
+# 1814| Type = [BoolType] bool
+# 1814| Value = [CStyleCast] 0
+# 1814| ValueCategory = prvalue
+# 1815| getStmt(599): [DoStmt] do (...) ...
+# 1817| getCondition(): [Literal] 0
+# 1817| Type = [IntType] int
+# 1817| Value = [Literal] 0
+# 1817| ValueCategory = prvalue
+# 1815| getStmt(): [BlockStmt] { ... }
+# 1816| getStmt(0): [DeclStmt] declaration
+# 1816| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x599
+# 1816| Type = [Struct] String
+# 1816| getVariable().getInitializer(): [Initializer] initializer for x599
+# 1816| getExpr(): [ConstructorCall] call to String
+# 1816| Type = [VoidType] void
+# 1816| ValueCategory = prvalue
+# 1817| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1817| Type = [VoidType] void
+# 1817| ValueCategory = prvalue
+# 1817| getQualifier(): [VariableAccess] x599
+# 1817| Type = [Struct] String
+# 1817| ValueCategory = lvalue
+# 1817| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1817| Conversion = [BoolConversion] conversion to bool
+# 1817| Type = [BoolType] bool
+# 1817| Value = [CStyleCast] 0
+# 1817| ValueCategory = prvalue
+# 1818| getStmt(600): [DoStmt] do (...) ...
+# 1820| getCondition(): [Literal] 0
+# 1820| Type = [IntType] int
+# 1820| Value = [Literal] 0
+# 1820| ValueCategory = prvalue
+# 1818| getStmt(): [BlockStmt] { ... }
+# 1819| getStmt(0): [DeclStmt] declaration
+# 1819| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x600
+# 1819| Type = [Struct] String
+# 1819| getVariable().getInitializer(): [Initializer] initializer for x600
+# 1819| getExpr(): [ConstructorCall] call to String
+# 1819| Type = [VoidType] void
+# 1819| ValueCategory = prvalue
+# 1820| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1820| Type = [VoidType] void
+# 1820| ValueCategory = prvalue
+# 1820| getQualifier(): [VariableAccess] x600
+# 1820| Type = [Struct] String
+# 1820| ValueCategory = lvalue
+# 1820| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1820| Conversion = [BoolConversion] conversion to bool
+# 1820| Type = [BoolType] bool
+# 1820| Value = [CStyleCast] 0
+# 1820| ValueCategory = prvalue
+# 1821| getStmt(601): [DoStmt] do (...) ...
+# 1823| getCondition(): [Literal] 0
+# 1823| Type = [IntType] int
+# 1823| Value = [Literal] 0
+# 1823| ValueCategory = prvalue
+# 1821| getStmt(): [BlockStmt] { ... }
+# 1822| getStmt(0): [DeclStmt] declaration
+# 1822| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x601
+# 1822| Type = [Struct] String
+# 1822| getVariable().getInitializer(): [Initializer] initializer for x601
+# 1822| getExpr(): [ConstructorCall] call to String
+# 1822| Type = [VoidType] void
+# 1822| ValueCategory = prvalue
+# 1823| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1823| Type = [VoidType] void
+# 1823| ValueCategory = prvalue
+# 1823| getQualifier(): [VariableAccess] x601
+# 1823| Type = [Struct] String
+# 1823| ValueCategory = lvalue
+# 1823| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1823| Conversion = [BoolConversion] conversion to bool
+# 1823| Type = [BoolType] bool
+# 1823| Value = [CStyleCast] 0
+# 1823| ValueCategory = prvalue
+# 1824| getStmt(602): [DoStmt] do (...) ...
+# 1826| getCondition(): [Literal] 0
+# 1826| Type = [IntType] int
+# 1826| Value = [Literal] 0
+# 1826| ValueCategory = prvalue
+# 1824| getStmt(): [BlockStmt] { ... }
+# 1825| getStmt(0): [DeclStmt] declaration
+# 1825| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x602
+# 1825| Type = [Struct] String
+# 1825| getVariable().getInitializer(): [Initializer] initializer for x602
+# 1825| getExpr(): [ConstructorCall] call to String
+# 1825| Type = [VoidType] void
+# 1825| ValueCategory = prvalue
+# 1826| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1826| Type = [VoidType] void
+# 1826| ValueCategory = prvalue
+# 1826| getQualifier(): [VariableAccess] x602
+# 1826| Type = [Struct] String
+# 1826| ValueCategory = lvalue
+# 1826| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1826| Conversion = [BoolConversion] conversion to bool
+# 1826| Type = [BoolType] bool
+# 1826| Value = [CStyleCast] 0
+# 1826| ValueCategory = prvalue
+# 1827| getStmt(603): [DoStmt] do (...) ...
+# 1829| getCondition(): [Literal] 0
+# 1829| Type = [IntType] int
+# 1829| Value = [Literal] 0
+# 1829| ValueCategory = prvalue
+# 1827| getStmt(): [BlockStmt] { ... }
+# 1828| getStmt(0): [DeclStmt] declaration
+# 1828| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x603
+# 1828| Type = [Struct] String
+# 1828| getVariable().getInitializer(): [Initializer] initializer for x603
+# 1828| getExpr(): [ConstructorCall] call to String
+# 1828| Type = [VoidType] void
+# 1828| ValueCategory = prvalue
+# 1829| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1829| Type = [VoidType] void
+# 1829| ValueCategory = prvalue
+# 1829| getQualifier(): [VariableAccess] x603
+# 1829| Type = [Struct] String
+# 1829| ValueCategory = lvalue
+# 1829| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1829| Conversion = [BoolConversion] conversion to bool
+# 1829| Type = [BoolType] bool
+# 1829| Value = [CStyleCast] 0
+# 1829| ValueCategory = prvalue
+# 1830| getStmt(604): [DoStmt] do (...) ...
+# 1832| getCondition(): [Literal] 0
+# 1832| Type = [IntType] int
+# 1832| Value = [Literal] 0
+# 1832| ValueCategory = prvalue
+# 1830| getStmt(): [BlockStmt] { ... }
+# 1831| getStmt(0): [DeclStmt] declaration
+# 1831| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x604
+# 1831| Type = [Struct] String
+# 1831| getVariable().getInitializer(): [Initializer] initializer for x604
+# 1831| getExpr(): [ConstructorCall] call to String
+# 1831| Type = [VoidType] void
+# 1831| ValueCategory = prvalue
+# 1832| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1832| Type = [VoidType] void
+# 1832| ValueCategory = prvalue
+# 1832| getQualifier(): [VariableAccess] x604
+# 1832| Type = [Struct] String
+# 1832| ValueCategory = lvalue
+# 1832| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1832| Conversion = [BoolConversion] conversion to bool
+# 1832| Type = [BoolType] bool
+# 1832| Value = [CStyleCast] 0
+# 1832| ValueCategory = prvalue
+# 1833| getStmt(605): [DoStmt] do (...) ...
+# 1835| getCondition(): [Literal] 0
+# 1835| Type = [IntType] int
+# 1835| Value = [Literal] 0
+# 1835| ValueCategory = prvalue
+# 1833| getStmt(): [BlockStmt] { ... }
+# 1834| getStmt(0): [DeclStmt] declaration
+# 1834| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x605
+# 1834| Type = [Struct] String
+# 1834| getVariable().getInitializer(): [Initializer] initializer for x605
+# 1834| getExpr(): [ConstructorCall] call to String
+# 1834| Type = [VoidType] void
+# 1834| ValueCategory = prvalue
+# 1835| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1835| Type = [VoidType] void
+# 1835| ValueCategory = prvalue
+# 1835| getQualifier(): [VariableAccess] x605
+# 1835| Type = [Struct] String
+# 1835| ValueCategory = lvalue
+# 1835| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1835| Conversion = [BoolConversion] conversion to bool
+# 1835| Type = [BoolType] bool
+# 1835| Value = [CStyleCast] 0
+# 1835| ValueCategory = prvalue
+# 1836| getStmt(606): [DoStmt] do (...) ...
+# 1838| getCondition(): [Literal] 0
+# 1838| Type = [IntType] int
+# 1838| Value = [Literal] 0
+# 1838| ValueCategory = prvalue
+# 1836| getStmt(): [BlockStmt] { ... }
+# 1837| getStmt(0): [DeclStmt] declaration
+# 1837| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x606
+# 1837| Type = [Struct] String
+# 1837| getVariable().getInitializer(): [Initializer] initializer for x606
+# 1837| getExpr(): [ConstructorCall] call to String
+# 1837| Type = [VoidType] void
+# 1837| ValueCategory = prvalue
+# 1838| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1838| Type = [VoidType] void
+# 1838| ValueCategory = prvalue
+# 1838| getQualifier(): [VariableAccess] x606
+# 1838| Type = [Struct] String
+# 1838| ValueCategory = lvalue
+# 1838| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1838| Conversion = [BoolConversion] conversion to bool
+# 1838| Type = [BoolType] bool
+# 1838| Value = [CStyleCast] 0
+# 1838| ValueCategory = prvalue
+# 1839| getStmt(607): [DoStmt] do (...) ...
+# 1841| getCondition(): [Literal] 0
+# 1841| Type = [IntType] int
+# 1841| Value = [Literal] 0
+# 1841| ValueCategory = prvalue
+# 1839| getStmt(): [BlockStmt] { ... }
+# 1840| getStmt(0): [DeclStmt] declaration
+# 1840| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x607
+# 1840| Type = [Struct] String
+# 1840| getVariable().getInitializer(): [Initializer] initializer for x607
+# 1840| getExpr(): [ConstructorCall] call to String
+# 1840| Type = [VoidType] void
+# 1840| ValueCategory = prvalue
+# 1841| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1841| Type = [VoidType] void
+# 1841| ValueCategory = prvalue
+# 1841| getQualifier(): [VariableAccess] x607
+# 1841| Type = [Struct] String
+# 1841| ValueCategory = lvalue
+# 1841| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1841| Conversion = [BoolConversion] conversion to bool
+# 1841| Type = [BoolType] bool
+# 1841| Value = [CStyleCast] 0
+# 1841| ValueCategory = prvalue
+# 1842| getStmt(608): [DoStmt] do (...) ...
+# 1844| getCondition(): [Literal] 0
+# 1844| Type = [IntType] int
+# 1844| Value = [Literal] 0
+# 1844| ValueCategory = prvalue
+# 1842| getStmt(): [BlockStmt] { ... }
+# 1843| getStmt(0): [DeclStmt] declaration
+# 1843| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x608
+# 1843| Type = [Struct] String
+# 1843| getVariable().getInitializer(): [Initializer] initializer for x608
+# 1843| getExpr(): [ConstructorCall] call to String
+# 1843| Type = [VoidType] void
+# 1843| ValueCategory = prvalue
+# 1844| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1844| Type = [VoidType] void
+# 1844| ValueCategory = prvalue
+# 1844| getQualifier(): [VariableAccess] x608
+# 1844| Type = [Struct] String
+# 1844| ValueCategory = lvalue
+# 1844| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1844| Conversion = [BoolConversion] conversion to bool
+# 1844| Type = [BoolType] bool
+# 1844| Value = [CStyleCast] 0
+# 1844| ValueCategory = prvalue
+# 1845| getStmt(609): [DoStmt] do (...) ...
+# 1847| getCondition(): [Literal] 0
+# 1847| Type = [IntType] int
+# 1847| Value = [Literal] 0
+# 1847| ValueCategory = prvalue
+# 1845| getStmt(): [BlockStmt] { ... }
+# 1846| getStmt(0): [DeclStmt] declaration
+# 1846| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x609
+# 1846| Type = [Struct] String
+# 1846| getVariable().getInitializer(): [Initializer] initializer for x609
+# 1846| getExpr(): [ConstructorCall] call to String
+# 1846| Type = [VoidType] void
+# 1846| ValueCategory = prvalue
+# 1847| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1847| Type = [VoidType] void
+# 1847| ValueCategory = prvalue
+# 1847| getQualifier(): [VariableAccess] x609
+# 1847| Type = [Struct] String
+# 1847| ValueCategory = lvalue
+# 1847| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1847| Conversion = [BoolConversion] conversion to bool
+# 1847| Type = [BoolType] bool
+# 1847| Value = [CStyleCast] 0
+# 1847| ValueCategory = prvalue
+# 1848| getStmt(610): [DoStmt] do (...) ...
+# 1850| getCondition(): [Literal] 0
+# 1850| Type = [IntType] int
+# 1850| Value = [Literal] 0
+# 1850| ValueCategory = prvalue
+# 1848| getStmt(): [BlockStmt] { ... }
+# 1849| getStmt(0): [DeclStmt] declaration
+# 1849| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x610
+# 1849| Type = [Struct] String
+# 1849| getVariable().getInitializer(): [Initializer] initializer for x610
+# 1849| getExpr(): [ConstructorCall] call to String
+# 1849| Type = [VoidType] void
+# 1849| ValueCategory = prvalue
+# 1850| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1850| Type = [VoidType] void
+# 1850| ValueCategory = prvalue
+# 1850| getQualifier(): [VariableAccess] x610
+# 1850| Type = [Struct] String
+# 1850| ValueCategory = lvalue
+# 1850| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1850| Conversion = [BoolConversion] conversion to bool
+# 1850| Type = [BoolType] bool
+# 1850| Value = [CStyleCast] 0
+# 1850| ValueCategory = prvalue
+# 1851| getStmt(611): [DoStmt] do (...) ...
+# 1853| getCondition(): [Literal] 0
+# 1853| Type = [IntType] int
+# 1853| Value = [Literal] 0
+# 1853| ValueCategory = prvalue
+# 1851| getStmt(): [BlockStmt] { ... }
+# 1852| getStmt(0): [DeclStmt] declaration
+# 1852| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x611
+# 1852| Type = [Struct] String
+# 1852| getVariable().getInitializer(): [Initializer] initializer for x611
+# 1852| getExpr(): [ConstructorCall] call to String
+# 1852| Type = [VoidType] void
+# 1852| ValueCategory = prvalue
+# 1853| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1853| Type = [VoidType] void
+# 1853| ValueCategory = prvalue
+# 1853| getQualifier(): [VariableAccess] x611
+# 1853| Type = [Struct] String
+# 1853| ValueCategory = lvalue
+# 1853| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1853| Conversion = [BoolConversion] conversion to bool
+# 1853| Type = [BoolType] bool
+# 1853| Value = [CStyleCast] 0
+# 1853| ValueCategory = prvalue
+# 1854| getStmt(612): [DoStmt] do (...) ...
+# 1856| getCondition(): [Literal] 0
+# 1856| Type = [IntType] int
+# 1856| Value = [Literal] 0
+# 1856| ValueCategory = prvalue
+# 1854| getStmt(): [BlockStmt] { ... }
+# 1855| getStmt(0): [DeclStmt] declaration
+# 1855| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x612
+# 1855| Type = [Struct] String
+# 1855| getVariable().getInitializer(): [Initializer] initializer for x612
+# 1855| getExpr(): [ConstructorCall] call to String
+# 1855| Type = [VoidType] void
+# 1855| ValueCategory = prvalue
+# 1856| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1856| Type = [VoidType] void
+# 1856| ValueCategory = prvalue
+# 1856| getQualifier(): [VariableAccess] x612
+# 1856| Type = [Struct] String
+# 1856| ValueCategory = lvalue
+# 1856| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1856| Conversion = [BoolConversion] conversion to bool
+# 1856| Type = [BoolType] bool
+# 1856| Value = [CStyleCast] 0
+# 1856| ValueCategory = prvalue
+# 1857| getStmt(613): [DoStmt] do (...) ...
+# 1859| getCondition(): [Literal] 0
+# 1859| Type = [IntType] int
+# 1859| Value = [Literal] 0
+# 1859| ValueCategory = prvalue
+# 1857| getStmt(): [BlockStmt] { ... }
+# 1858| getStmt(0): [DeclStmt] declaration
+# 1858| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x613
+# 1858| Type = [Struct] String
+# 1858| getVariable().getInitializer(): [Initializer] initializer for x613
+# 1858| getExpr(): [ConstructorCall] call to String
+# 1858| Type = [VoidType] void
+# 1858| ValueCategory = prvalue
+# 1859| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1859| Type = [VoidType] void
+# 1859| ValueCategory = prvalue
+# 1859| getQualifier(): [VariableAccess] x613
+# 1859| Type = [Struct] String
+# 1859| ValueCategory = lvalue
+# 1859| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1859| Conversion = [BoolConversion] conversion to bool
+# 1859| Type = [BoolType] bool
+# 1859| Value = [CStyleCast] 0
+# 1859| ValueCategory = prvalue
+# 1860| getStmt(614): [DoStmt] do (...) ...
+# 1862| getCondition(): [Literal] 0
+# 1862| Type = [IntType] int
+# 1862| Value = [Literal] 0
+# 1862| ValueCategory = prvalue
+# 1860| getStmt(): [BlockStmt] { ... }
+# 1861| getStmt(0): [DeclStmt] declaration
+# 1861| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x614
+# 1861| Type = [Struct] String
+# 1861| getVariable().getInitializer(): [Initializer] initializer for x614
+# 1861| getExpr(): [ConstructorCall] call to String
+# 1861| Type = [VoidType] void
+# 1861| ValueCategory = prvalue
+# 1862| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1862| Type = [VoidType] void
+# 1862| ValueCategory = prvalue
+# 1862| getQualifier(): [VariableAccess] x614
+# 1862| Type = [Struct] String
+# 1862| ValueCategory = lvalue
+# 1862| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1862| Conversion = [BoolConversion] conversion to bool
+# 1862| Type = [BoolType] bool
+# 1862| Value = [CStyleCast] 0
+# 1862| ValueCategory = prvalue
+# 1863| getStmt(615): [DoStmt] do (...) ...
+# 1865| getCondition(): [Literal] 0
+# 1865| Type = [IntType] int
+# 1865| Value = [Literal] 0
+# 1865| ValueCategory = prvalue
+# 1863| getStmt(): [BlockStmt] { ... }
+# 1864| getStmt(0): [DeclStmt] declaration
+# 1864| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x615
+# 1864| Type = [Struct] String
+# 1864| getVariable().getInitializer(): [Initializer] initializer for x615
+# 1864| getExpr(): [ConstructorCall] call to String
+# 1864| Type = [VoidType] void
+# 1864| ValueCategory = prvalue
+# 1865| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1865| Type = [VoidType] void
+# 1865| ValueCategory = prvalue
+# 1865| getQualifier(): [VariableAccess] x615
+# 1865| Type = [Struct] String
+# 1865| ValueCategory = lvalue
+# 1865| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1865| Conversion = [BoolConversion] conversion to bool
+# 1865| Type = [BoolType] bool
+# 1865| Value = [CStyleCast] 0
+# 1865| ValueCategory = prvalue
+# 1866| getStmt(616): [DoStmt] do (...) ...
+# 1868| getCondition(): [Literal] 0
+# 1868| Type = [IntType] int
+# 1868| Value = [Literal] 0
+# 1868| ValueCategory = prvalue
+# 1866| getStmt(): [BlockStmt] { ... }
+# 1867| getStmt(0): [DeclStmt] declaration
+# 1867| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x616
+# 1867| Type = [Struct] String
+# 1867| getVariable().getInitializer(): [Initializer] initializer for x616
+# 1867| getExpr(): [ConstructorCall] call to String
+# 1867| Type = [VoidType] void
+# 1867| ValueCategory = prvalue
+# 1868| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1868| Type = [VoidType] void
+# 1868| ValueCategory = prvalue
+# 1868| getQualifier(): [VariableAccess] x616
+# 1868| Type = [Struct] String
+# 1868| ValueCategory = lvalue
+# 1868| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1868| Conversion = [BoolConversion] conversion to bool
+# 1868| Type = [BoolType] bool
+# 1868| Value = [CStyleCast] 0
+# 1868| ValueCategory = prvalue
+# 1869| getStmt(617): [DoStmt] do (...) ...
+# 1871| getCondition(): [Literal] 0
+# 1871| Type = [IntType] int
+# 1871| Value = [Literal] 0
+# 1871| ValueCategory = prvalue
+# 1869| getStmt(): [BlockStmt] { ... }
+# 1870| getStmt(0): [DeclStmt] declaration
+# 1870| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x617
+# 1870| Type = [Struct] String
+# 1870| getVariable().getInitializer(): [Initializer] initializer for x617
+# 1870| getExpr(): [ConstructorCall] call to String
+# 1870| Type = [VoidType] void
+# 1870| ValueCategory = prvalue
+# 1871| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1871| Type = [VoidType] void
+# 1871| ValueCategory = prvalue
+# 1871| getQualifier(): [VariableAccess] x617
+# 1871| Type = [Struct] String
+# 1871| ValueCategory = lvalue
+# 1871| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1871| Conversion = [BoolConversion] conversion to bool
+# 1871| Type = [BoolType] bool
+# 1871| Value = [CStyleCast] 0
+# 1871| ValueCategory = prvalue
+# 1872| getStmt(618): [DoStmt] do (...) ...
+# 1874| getCondition(): [Literal] 0
+# 1874| Type = [IntType] int
+# 1874| Value = [Literal] 0
+# 1874| ValueCategory = prvalue
+# 1872| getStmt(): [BlockStmt] { ... }
+# 1873| getStmt(0): [DeclStmt] declaration
+# 1873| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x618
+# 1873| Type = [Struct] String
+# 1873| getVariable().getInitializer(): [Initializer] initializer for x618
+# 1873| getExpr(): [ConstructorCall] call to String
+# 1873| Type = [VoidType] void
+# 1873| ValueCategory = prvalue
+# 1874| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1874| Type = [VoidType] void
+# 1874| ValueCategory = prvalue
+# 1874| getQualifier(): [VariableAccess] x618
+# 1874| Type = [Struct] String
+# 1874| ValueCategory = lvalue
+# 1874| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1874| Conversion = [BoolConversion] conversion to bool
+# 1874| Type = [BoolType] bool
+# 1874| Value = [CStyleCast] 0
+# 1874| ValueCategory = prvalue
+# 1875| getStmt(619): [DoStmt] do (...) ...
+# 1877| getCondition(): [Literal] 0
+# 1877| Type = [IntType] int
+# 1877| Value = [Literal] 0
+# 1877| ValueCategory = prvalue
+# 1875| getStmt(): [BlockStmt] { ... }
+# 1876| getStmt(0): [DeclStmt] declaration
+# 1876| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x619
+# 1876| Type = [Struct] String
+# 1876| getVariable().getInitializer(): [Initializer] initializer for x619
+# 1876| getExpr(): [ConstructorCall] call to String
+# 1876| Type = [VoidType] void
+# 1876| ValueCategory = prvalue
+# 1877| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1877| Type = [VoidType] void
+# 1877| ValueCategory = prvalue
+# 1877| getQualifier(): [VariableAccess] x619
+# 1877| Type = [Struct] String
+# 1877| ValueCategory = lvalue
+# 1877| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1877| Conversion = [BoolConversion] conversion to bool
+# 1877| Type = [BoolType] bool
+# 1877| Value = [CStyleCast] 0
+# 1877| ValueCategory = prvalue
+# 1878| getStmt(620): [DoStmt] do (...) ...
+# 1880| getCondition(): [Literal] 0
+# 1880| Type = [IntType] int
+# 1880| Value = [Literal] 0
+# 1880| ValueCategory = prvalue
+# 1878| getStmt(): [BlockStmt] { ... }
+# 1879| getStmt(0): [DeclStmt] declaration
+# 1879| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x620
+# 1879| Type = [Struct] String
+# 1879| getVariable().getInitializer(): [Initializer] initializer for x620
+# 1879| getExpr(): [ConstructorCall] call to String
+# 1879| Type = [VoidType] void
+# 1879| ValueCategory = prvalue
+# 1880| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1880| Type = [VoidType] void
+# 1880| ValueCategory = prvalue
+# 1880| getQualifier(): [VariableAccess] x620
+# 1880| Type = [Struct] String
+# 1880| ValueCategory = lvalue
+# 1880| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1880| Conversion = [BoolConversion] conversion to bool
+# 1880| Type = [BoolType] bool
+# 1880| Value = [CStyleCast] 0
+# 1880| ValueCategory = prvalue
+# 1881| getStmt(621): [DoStmt] do (...) ...
+# 1883| getCondition(): [Literal] 0
+# 1883| Type = [IntType] int
+# 1883| Value = [Literal] 0
+# 1883| ValueCategory = prvalue
+# 1881| getStmt(): [BlockStmt] { ... }
+# 1882| getStmt(0): [DeclStmt] declaration
+# 1882| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x621
+# 1882| Type = [Struct] String
+# 1882| getVariable().getInitializer(): [Initializer] initializer for x621
+# 1882| getExpr(): [ConstructorCall] call to String
+# 1882| Type = [VoidType] void
+# 1882| ValueCategory = prvalue
+# 1883| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1883| Type = [VoidType] void
+# 1883| ValueCategory = prvalue
+# 1883| getQualifier(): [VariableAccess] x621
+# 1883| Type = [Struct] String
+# 1883| ValueCategory = lvalue
+# 1883| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1883| Conversion = [BoolConversion] conversion to bool
+# 1883| Type = [BoolType] bool
+# 1883| Value = [CStyleCast] 0
+# 1883| ValueCategory = prvalue
+# 1884| getStmt(622): [DoStmt] do (...) ...
+# 1886| getCondition(): [Literal] 0
+# 1886| Type = [IntType] int
+# 1886| Value = [Literal] 0
+# 1886| ValueCategory = prvalue
+# 1884| getStmt(): [BlockStmt] { ... }
+# 1885| getStmt(0): [DeclStmt] declaration
+# 1885| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x622
+# 1885| Type = [Struct] String
+# 1885| getVariable().getInitializer(): [Initializer] initializer for x622
+# 1885| getExpr(): [ConstructorCall] call to String
+# 1885| Type = [VoidType] void
+# 1885| ValueCategory = prvalue
+# 1886| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1886| Type = [VoidType] void
+# 1886| ValueCategory = prvalue
+# 1886| getQualifier(): [VariableAccess] x622
+# 1886| Type = [Struct] String
+# 1886| ValueCategory = lvalue
+# 1886| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1886| Conversion = [BoolConversion] conversion to bool
+# 1886| Type = [BoolType] bool
+# 1886| Value = [CStyleCast] 0
+# 1886| ValueCategory = prvalue
+# 1887| getStmt(623): [DoStmt] do (...) ...
+# 1889| getCondition(): [Literal] 0
+# 1889| Type = [IntType] int
+# 1889| Value = [Literal] 0
+# 1889| ValueCategory = prvalue
+# 1887| getStmt(): [BlockStmt] { ... }
+# 1888| getStmt(0): [DeclStmt] declaration
+# 1888| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x623
+# 1888| Type = [Struct] String
+# 1888| getVariable().getInitializer(): [Initializer] initializer for x623
+# 1888| getExpr(): [ConstructorCall] call to String
+# 1888| Type = [VoidType] void
+# 1888| ValueCategory = prvalue
+# 1889| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1889| Type = [VoidType] void
+# 1889| ValueCategory = prvalue
+# 1889| getQualifier(): [VariableAccess] x623
+# 1889| Type = [Struct] String
+# 1889| ValueCategory = lvalue
+# 1889| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1889| Conversion = [BoolConversion] conversion to bool
+# 1889| Type = [BoolType] bool
+# 1889| Value = [CStyleCast] 0
+# 1889| ValueCategory = prvalue
+# 1890| getStmt(624): [DoStmt] do (...) ...
+# 1892| getCondition(): [Literal] 0
+# 1892| Type = [IntType] int
+# 1892| Value = [Literal] 0
+# 1892| ValueCategory = prvalue
+# 1890| getStmt(): [BlockStmt] { ... }
+# 1891| getStmt(0): [DeclStmt] declaration
+# 1891| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x624
+# 1891| Type = [Struct] String
+# 1891| getVariable().getInitializer(): [Initializer] initializer for x624
+# 1891| getExpr(): [ConstructorCall] call to String
+# 1891| Type = [VoidType] void
+# 1891| ValueCategory = prvalue
+# 1892| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1892| Type = [VoidType] void
+# 1892| ValueCategory = prvalue
+# 1892| getQualifier(): [VariableAccess] x624
+# 1892| Type = [Struct] String
+# 1892| ValueCategory = lvalue
+# 1892| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1892| Conversion = [BoolConversion] conversion to bool
+# 1892| Type = [BoolType] bool
+# 1892| Value = [CStyleCast] 0
+# 1892| ValueCategory = prvalue
+# 1893| getStmt(625): [DoStmt] do (...) ...
+# 1895| getCondition(): [Literal] 0
+# 1895| Type = [IntType] int
+# 1895| Value = [Literal] 0
+# 1895| ValueCategory = prvalue
+# 1893| getStmt(): [BlockStmt] { ... }
+# 1894| getStmt(0): [DeclStmt] declaration
+# 1894| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x625
+# 1894| Type = [Struct] String
+# 1894| getVariable().getInitializer(): [Initializer] initializer for x625
+# 1894| getExpr(): [ConstructorCall] call to String
+# 1894| Type = [VoidType] void
+# 1894| ValueCategory = prvalue
+# 1895| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1895| Type = [VoidType] void
+# 1895| ValueCategory = prvalue
+# 1895| getQualifier(): [VariableAccess] x625
+# 1895| Type = [Struct] String
+# 1895| ValueCategory = lvalue
+# 1895| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1895| Conversion = [BoolConversion] conversion to bool
+# 1895| Type = [BoolType] bool
+# 1895| Value = [CStyleCast] 0
+# 1895| ValueCategory = prvalue
+# 1896| getStmt(626): [DoStmt] do (...) ...
+# 1898| getCondition(): [Literal] 0
+# 1898| Type = [IntType] int
+# 1898| Value = [Literal] 0
+# 1898| ValueCategory = prvalue
+# 1896| getStmt(): [BlockStmt] { ... }
+# 1897| getStmt(0): [DeclStmt] declaration
+# 1897| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x626
+# 1897| Type = [Struct] String
+# 1897| getVariable().getInitializer(): [Initializer] initializer for x626
+# 1897| getExpr(): [ConstructorCall] call to String
+# 1897| Type = [VoidType] void
+# 1897| ValueCategory = prvalue
+# 1898| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1898| Type = [VoidType] void
+# 1898| ValueCategory = prvalue
+# 1898| getQualifier(): [VariableAccess] x626
+# 1898| Type = [Struct] String
+# 1898| ValueCategory = lvalue
+# 1898| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1898| Conversion = [BoolConversion] conversion to bool
+# 1898| Type = [BoolType] bool
+# 1898| Value = [CStyleCast] 0
+# 1898| ValueCategory = prvalue
+# 1899| getStmt(627): [DoStmt] do (...) ...
+# 1901| getCondition(): [Literal] 0
+# 1901| Type = [IntType] int
+# 1901| Value = [Literal] 0
+# 1901| ValueCategory = prvalue
+# 1899| getStmt(): [BlockStmt] { ... }
+# 1900| getStmt(0): [DeclStmt] declaration
+# 1900| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x627
+# 1900| Type = [Struct] String
+# 1900| getVariable().getInitializer(): [Initializer] initializer for x627
+# 1900| getExpr(): [ConstructorCall] call to String
+# 1900| Type = [VoidType] void
+# 1900| ValueCategory = prvalue
+# 1901| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1901| Type = [VoidType] void
+# 1901| ValueCategory = prvalue
+# 1901| getQualifier(): [VariableAccess] x627
+# 1901| Type = [Struct] String
+# 1901| ValueCategory = lvalue
+# 1901| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1901| Conversion = [BoolConversion] conversion to bool
+# 1901| Type = [BoolType] bool
+# 1901| Value = [CStyleCast] 0
+# 1901| ValueCategory = prvalue
+# 1902| getStmt(628): [DoStmt] do (...) ...
+# 1904| getCondition(): [Literal] 0
+# 1904| Type = [IntType] int
+# 1904| Value = [Literal] 0
+# 1904| ValueCategory = prvalue
+# 1902| getStmt(): [BlockStmt] { ... }
+# 1903| getStmt(0): [DeclStmt] declaration
+# 1903| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x628
+# 1903| Type = [Struct] String
+# 1903| getVariable().getInitializer(): [Initializer] initializer for x628
+# 1903| getExpr(): [ConstructorCall] call to String
+# 1903| Type = [VoidType] void
+# 1903| ValueCategory = prvalue
+# 1904| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1904| Type = [VoidType] void
+# 1904| ValueCategory = prvalue
+# 1904| getQualifier(): [VariableAccess] x628
+# 1904| Type = [Struct] String
+# 1904| ValueCategory = lvalue
+# 1904| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1904| Conversion = [BoolConversion] conversion to bool
+# 1904| Type = [BoolType] bool
+# 1904| Value = [CStyleCast] 0
+# 1904| ValueCategory = prvalue
+# 1905| getStmt(629): [DoStmt] do (...) ...
+# 1907| getCondition(): [Literal] 0
+# 1907| Type = [IntType] int
+# 1907| Value = [Literal] 0
+# 1907| ValueCategory = prvalue
+# 1905| getStmt(): [BlockStmt] { ... }
+# 1906| getStmt(0): [DeclStmt] declaration
+# 1906| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x629
+# 1906| Type = [Struct] String
+# 1906| getVariable().getInitializer(): [Initializer] initializer for x629
+# 1906| getExpr(): [ConstructorCall] call to String
+# 1906| Type = [VoidType] void
+# 1906| ValueCategory = prvalue
+# 1907| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1907| Type = [VoidType] void
+# 1907| ValueCategory = prvalue
+# 1907| getQualifier(): [VariableAccess] x629
+# 1907| Type = [Struct] String
+# 1907| ValueCategory = lvalue
+# 1907| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1907| Conversion = [BoolConversion] conversion to bool
+# 1907| Type = [BoolType] bool
+# 1907| Value = [CStyleCast] 0
+# 1907| ValueCategory = prvalue
+# 1908| getStmt(630): [DoStmt] do (...) ...
+# 1910| getCondition(): [Literal] 0
+# 1910| Type = [IntType] int
+# 1910| Value = [Literal] 0
+# 1910| ValueCategory = prvalue
+# 1908| getStmt(): [BlockStmt] { ... }
+# 1909| getStmt(0): [DeclStmt] declaration
+# 1909| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x630
+# 1909| Type = [Struct] String
+# 1909| getVariable().getInitializer(): [Initializer] initializer for x630
+# 1909| getExpr(): [ConstructorCall] call to String
+# 1909| Type = [VoidType] void
+# 1909| ValueCategory = prvalue
+# 1910| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1910| Type = [VoidType] void
+# 1910| ValueCategory = prvalue
+# 1910| getQualifier(): [VariableAccess] x630
+# 1910| Type = [Struct] String
+# 1910| ValueCategory = lvalue
+# 1910| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1910| Conversion = [BoolConversion] conversion to bool
+# 1910| Type = [BoolType] bool
+# 1910| Value = [CStyleCast] 0
+# 1910| ValueCategory = prvalue
+# 1911| getStmt(631): [DoStmt] do (...) ...
+# 1913| getCondition(): [Literal] 0
+# 1913| Type = [IntType] int
+# 1913| Value = [Literal] 0
+# 1913| ValueCategory = prvalue
+# 1911| getStmt(): [BlockStmt] { ... }
+# 1912| getStmt(0): [DeclStmt] declaration
+# 1912| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x631
+# 1912| Type = [Struct] String
+# 1912| getVariable().getInitializer(): [Initializer] initializer for x631
+# 1912| getExpr(): [ConstructorCall] call to String
+# 1912| Type = [VoidType] void
+# 1912| ValueCategory = prvalue
+# 1913| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1913| Type = [VoidType] void
+# 1913| ValueCategory = prvalue
+# 1913| getQualifier(): [VariableAccess] x631
+# 1913| Type = [Struct] String
+# 1913| ValueCategory = lvalue
+# 1913| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1913| Conversion = [BoolConversion] conversion to bool
+# 1913| Type = [BoolType] bool
+# 1913| Value = [CStyleCast] 0
+# 1913| ValueCategory = prvalue
+# 1914| getStmt(632): [DoStmt] do (...) ...
+# 1916| getCondition(): [Literal] 0
+# 1916| Type = [IntType] int
+# 1916| Value = [Literal] 0
+# 1916| ValueCategory = prvalue
+# 1914| getStmt(): [BlockStmt] { ... }
+# 1915| getStmt(0): [DeclStmt] declaration
+# 1915| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x632
+# 1915| Type = [Struct] String
+# 1915| getVariable().getInitializer(): [Initializer] initializer for x632
+# 1915| getExpr(): [ConstructorCall] call to String
+# 1915| Type = [VoidType] void
+# 1915| ValueCategory = prvalue
+# 1916| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1916| Type = [VoidType] void
+# 1916| ValueCategory = prvalue
+# 1916| getQualifier(): [VariableAccess] x632
+# 1916| Type = [Struct] String
+# 1916| ValueCategory = lvalue
+# 1916| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1916| Conversion = [BoolConversion] conversion to bool
+# 1916| Type = [BoolType] bool
+# 1916| Value = [CStyleCast] 0
+# 1916| ValueCategory = prvalue
+# 1917| getStmt(633): [DoStmt] do (...) ...
+# 1919| getCondition(): [Literal] 0
+# 1919| Type = [IntType] int
+# 1919| Value = [Literal] 0
+# 1919| ValueCategory = prvalue
+# 1917| getStmt(): [BlockStmt] { ... }
+# 1918| getStmt(0): [DeclStmt] declaration
+# 1918| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x633
+# 1918| Type = [Struct] String
+# 1918| getVariable().getInitializer(): [Initializer] initializer for x633
+# 1918| getExpr(): [ConstructorCall] call to String
+# 1918| Type = [VoidType] void
+# 1918| ValueCategory = prvalue
+# 1919| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1919| Type = [VoidType] void
+# 1919| ValueCategory = prvalue
+# 1919| getQualifier(): [VariableAccess] x633
+# 1919| Type = [Struct] String
+# 1919| ValueCategory = lvalue
+# 1919| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1919| Conversion = [BoolConversion] conversion to bool
+# 1919| Type = [BoolType] bool
+# 1919| Value = [CStyleCast] 0
+# 1919| ValueCategory = prvalue
+# 1920| getStmt(634): [DoStmt] do (...) ...
+# 1922| getCondition(): [Literal] 0
+# 1922| Type = [IntType] int
+# 1922| Value = [Literal] 0
+# 1922| ValueCategory = prvalue
+# 1920| getStmt(): [BlockStmt] { ... }
+# 1921| getStmt(0): [DeclStmt] declaration
+# 1921| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x634
+# 1921| Type = [Struct] String
+# 1921| getVariable().getInitializer(): [Initializer] initializer for x634
+# 1921| getExpr(): [ConstructorCall] call to String
+# 1921| Type = [VoidType] void
+# 1921| ValueCategory = prvalue
+# 1922| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1922| Type = [VoidType] void
+# 1922| ValueCategory = prvalue
+# 1922| getQualifier(): [VariableAccess] x634
+# 1922| Type = [Struct] String
+# 1922| ValueCategory = lvalue
+# 1922| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1922| Conversion = [BoolConversion] conversion to bool
+# 1922| Type = [BoolType] bool
+# 1922| Value = [CStyleCast] 0
+# 1922| ValueCategory = prvalue
+# 1923| getStmt(635): [DoStmt] do (...) ...
+# 1925| getCondition(): [Literal] 0
+# 1925| Type = [IntType] int
+# 1925| Value = [Literal] 0
+# 1925| ValueCategory = prvalue
+# 1923| getStmt(): [BlockStmt] { ... }
+# 1924| getStmt(0): [DeclStmt] declaration
+# 1924| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x635
+# 1924| Type = [Struct] String
+# 1924| getVariable().getInitializer(): [Initializer] initializer for x635
+# 1924| getExpr(): [ConstructorCall] call to String
+# 1924| Type = [VoidType] void
+# 1924| ValueCategory = prvalue
+# 1925| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1925| Type = [VoidType] void
+# 1925| ValueCategory = prvalue
+# 1925| getQualifier(): [VariableAccess] x635
+# 1925| Type = [Struct] String
+# 1925| ValueCategory = lvalue
+# 1925| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1925| Conversion = [BoolConversion] conversion to bool
+# 1925| Type = [BoolType] bool
+# 1925| Value = [CStyleCast] 0
+# 1925| ValueCategory = prvalue
+# 1926| getStmt(636): [DoStmt] do (...) ...
+# 1928| getCondition(): [Literal] 0
+# 1928| Type = [IntType] int
+# 1928| Value = [Literal] 0
+# 1928| ValueCategory = prvalue
+# 1926| getStmt(): [BlockStmt] { ... }
+# 1927| getStmt(0): [DeclStmt] declaration
+# 1927| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x636
+# 1927| Type = [Struct] String
+# 1927| getVariable().getInitializer(): [Initializer] initializer for x636
+# 1927| getExpr(): [ConstructorCall] call to String
+# 1927| Type = [VoidType] void
+# 1927| ValueCategory = prvalue
+# 1928| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1928| Type = [VoidType] void
+# 1928| ValueCategory = prvalue
+# 1928| getQualifier(): [VariableAccess] x636
+# 1928| Type = [Struct] String
+# 1928| ValueCategory = lvalue
+# 1928| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1928| Conversion = [BoolConversion] conversion to bool
+# 1928| Type = [BoolType] bool
+# 1928| Value = [CStyleCast] 0
+# 1928| ValueCategory = prvalue
+# 1929| getStmt(637): [DoStmt] do (...) ...
+# 1931| getCondition(): [Literal] 0
+# 1931| Type = [IntType] int
+# 1931| Value = [Literal] 0
+# 1931| ValueCategory = prvalue
+# 1929| getStmt(): [BlockStmt] { ... }
+# 1930| getStmt(0): [DeclStmt] declaration
+# 1930| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x637
+# 1930| Type = [Struct] String
+# 1930| getVariable().getInitializer(): [Initializer] initializer for x637
+# 1930| getExpr(): [ConstructorCall] call to String
+# 1930| Type = [VoidType] void
+# 1930| ValueCategory = prvalue
+# 1931| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1931| Type = [VoidType] void
+# 1931| ValueCategory = prvalue
+# 1931| getQualifier(): [VariableAccess] x637
+# 1931| Type = [Struct] String
+# 1931| ValueCategory = lvalue
+# 1931| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1931| Conversion = [BoolConversion] conversion to bool
+# 1931| Type = [BoolType] bool
+# 1931| Value = [CStyleCast] 0
+# 1931| ValueCategory = prvalue
+# 1932| getStmt(638): [DoStmt] do (...) ...
+# 1934| getCondition(): [Literal] 0
+# 1934| Type = [IntType] int
+# 1934| Value = [Literal] 0
+# 1934| ValueCategory = prvalue
+# 1932| getStmt(): [BlockStmt] { ... }
+# 1933| getStmt(0): [DeclStmt] declaration
+# 1933| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x638
+# 1933| Type = [Struct] String
+# 1933| getVariable().getInitializer(): [Initializer] initializer for x638
+# 1933| getExpr(): [ConstructorCall] call to String
+# 1933| Type = [VoidType] void
+# 1933| ValueCategory = prvalue
+# 1934| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1934| Type = [VoidType] void
+# 1934| ValueCategory = prvalue
+# 1934| getQualifier(): [VariableAccess] x638
+# 1934| Type = [Struct] String
+# 1934| ValueCategory = lvalue
+# 1934| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1934| Conversion = [BoolConversion] conversion to bool
+# 1934| Type = [BoolType] bool
+# 1934| Value = [CStyleCast] 0
+# 1934| ValueCategory = prvalue
+# 1935| getStmt(639): [DoStmt] do (...) ...
+# 1937| getCondition(): [Literal] 0
+# 1937| Type = [IntType] int
+# 1937| Value = [Literal] 0
+# 1937| ValueCategory = prvalue
+# 1935| getStmt(): [BlockStmt] { ... }
+# 1936| getStmt(0): [DeclStmt] declaration
+# 1936| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x639
+# 1936| Type = [Struct] String
+# 1936| getVariable().getInitializer(): [Initializer] initializer for x639
+# 1936| getExpr(): [ConstructorCall] call to String
+# 1936| Type = [VoidType] void
+# 1936| ValueCategory = prvalue
+# 1937| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1937| Type = [VoidType] void
+# 1937| ValueCategory = prvalue
+# 1937| getQualifier(): [VariableAccess] x639
+# 1937| Type = [Struct] String
+# 1937| ValueCategory = lvalue
+# 1937| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1937| Conversion = [BoolConversion] conversion to bool
+# 1937| Type = [BoolType] bool
+# 1937| Value = [CStyleCast] 0
+# 1937| ValueCategory = prvalue
+# 1938| getStmt(640): [DoStmt] do (...) ...
+# 1940| getCondition(): [Literal] 0
+# 1940| Type = [IntType] int
+# 1940| Value = [Literal] 0
+# 1940| ValueCategory = prvalue
+# 1938| getStmt(): [BlockStmt] { ... }
+# 1939| getStmt(0): [DeclStmt] declaration
+# 1939| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x640
+# 1939| Type = [Struct] String
+# 1939| getVariable().getInitializer(): [Initializer] initializer for x640
+# 1939| getExpr(): [ConstructorCall] call to String
+# 1939| Type = [VoidType] void
+# 1939| ValueCategory = prvalue
+# 1940| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1940| Type = [VoidType] void
+# 1940| ValueCategory = prvalue
+# 1940| getQualifier(): [VariableAccess] x640
+# 1940| Type = [Struct] String
+# 1940| ValueCategory = lvalue
+# 1940| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1940| Conversion = [BoolConversion] conversion to bool
+# 1940| Type = [BoolType] bool
+# 1940| Value = [CStyleCast] 0
+# 1940| ValueCategory = prvalue
+# 1941| getStmt(641): [DoStmt] do (...) ...
+# 1943| getCondition(): [Literal] 0
+# 1943| Type = [IntType] int
+# 1943| Value = [Literal] 0
+# 1943| ValueCategory = prvalue
+# 1941| getStmt(): [BlockStmt] { ... }
+# 1942| getStmt(0): [DeclStmt] declaration
+# 1942| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x641
+# 1942| Type = [Struct] String
+# 1942| getVariable().getInitializer(): [Initializer] initializer for x641
+# 1942| getExpr(): [ConstructorCall] call to String
+# 1942| Type = [VoidType] void
+# 1942| ValueCategory = prvalue
+# 1943| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1943| Type = [VoidType] void
+# 1943| ValueCategory = prvalue
+# 1943| getQualifier(): [VariableAccess] x641
+# 1943| Type = [Struct] String
+# 1943| ValueCategory = lvalue
+# 1943| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1943| Conversion = [BoolConversion] conversion to bool
+# 1943| Type = [BoolType] bool
+# 1943| Value = [CStyleCast] 0
+# 1943| ValueCategory = prvalue
+# 1944| getStmt(642): [DoStmt] do (...) ...
+# 1946| getCondition(): [Literal] 0
+# 1946| Type = [IntType] int
+# 1946| Value = [Literal] 0
+# 1946| ValueCategory = prvalue
+# 1944| getStmt(): [BlockStmt] { ... }
+# 1945| getStmt(0): [DeclStmt] declaration
+# 1945| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x642
+# 1945| Type = [Struct] String
+# 1945| getVariable().getInitializer(): [Initializer] initializer for x642
+# 1945| getExpr(): [ConstructorCall] call to String
+# 1945| Type = [VoidType] void
+# 1945| ValueCategory = prvalue
+# 1946| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1946| Type = [VoidType] void
+# 1946| ValueCategory = prvalue
+# 1946| getQualifier(): [VariableAccess] x642
+# 1946| Type = [Struct] String
+# 1946| ValueCategory = lvalue
+# 1946| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1946| Conversion = [BoolConversion] conversion to bool
+# 1946| Type = [BoolType] bool
+# 1946| Value = [CStyleCast] 0
+# 1946| ValueCategory = prvalue
+# 1947| getStmt(643): [DoStmt] do (...) ...
+# 1949| getCondition(): [Literal] 0
+# 1949| Type = [IntType] int
+# 1949| Value = [Literal] 0
+# 1949| ValueCategory = prvalue
+# 1947| getStmt(): [BlockStmt] { ... }
+# 1948| getStmt(0): [DeclStmt] declaration
+# 1948| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x643
+# 1948| Type = [Struct] String
+# 1948| getVariable().getInitializer(): [Initializer] initializer for x643
+# 1948| getExpr(): [ConstructorCall] call to String
+# 1948| Type = [VoidType] void
+# 1948| ValueCategory = prvalue
+# 1949| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1949| Type = [VoidType] void
+# 1949| ValueCategory = prvalue
+# 1949| getQualifier(): [VariableAccess] x643
+# 1949| Type = [Struct] String
+# 1949| ValueCategory = lvalue
+# 1949| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1949| Conversion = [BoolConversion] conversion to bool
+# 1949| Type = [BoolType] bool
+# 1949| Value = [CStyleCast] 0
+# 1949| ValueCategory = prvalue
+# 1950| getStmt(644): [DoStmt] do (...) ...
+# 1952| getCondition(): [Literal] 0
+# 1952| Type = [IntType] int
+# 1952| Value = [Literal] 0
+# 1952| ValueCategory = prvalue
+# 1950| getStmt(): [BlockStmt] { ... }
+# 1951| getStmt(0): [DeclStmt] declaration
+# 1951| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x644
+# 1951| Type = [Struct] String
+# 1951| getVariable().getInitializer(): [Initializer] initializer for x644
+# 1951| getExpr(): [ConstructorCall] call to String
+# 1951| Type = [VoidType] void
+# 1951| ValueCategory = prvalue
+# 1952| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1952| Type = [VoidType] void
+# 1952| ValueCategory = prvalue
+# 1952| getQualifier(): [VariableAccess] x644
+# 1952| Type = [Struct] String
+# 1952| ValueCategory = lvalue
+# 1952| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1952| Conversion = [BoolConversion] conversion to bool
+# 1952| Type = [BoolType] bool
+# 1952| Value = [CStyleCast] 0
+# 1952| ValueCategory = prvalue
+# 1953| getStmt(645): [DoStmt] do (...) ...
+# 1955| getCondition(): [Literal] 0
+# 1955| Type = [IntType] int
+# 1955| Value = [Literal] 0
+# 1955| ValueCategory = prvalue
+# 1953| getStmt(): [BlockStmt] { ... }
+# 1954| getStmt(0): [DeclStmt] declaration
+# 1954| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x645
+# 1954| Type = [Struct] String
+# 1954| getVariable().getInitializer(): [Initializer] initializer for x645
+# 1954| getExpr(): [ConstructorCall] call to String
+# 1954| Type = [VoidType] void
+# 1954| ValueCategory = prvalue
+# 1955| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1955| Type = [VoidType] void
+# 1955| ValueCategory = prvalue
+# 1955| getQualifier(): [VariableAccess] x645
+# 1955| Type = [Struct] String
+# 1955| ValueCategory = lvalue
+# 1955| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1955| Conversion = [BoolConversion] conversion to bool
+# 1955| Type = [BoolType] bool
+# 1955| Value = [CStyleCast] 0
+# 1955| ValueCategory = prvalue
+# 1956| getStmt(646): [DoStmt] do (...) ...
+# 1958| getCondition(): [Literal] 0
+# 1958| Type = [IntType] int
+# 1958| Value = [Literal] 0
+# 1958| ValueCategory = prvalue
+# 1956| getStmt(): [BlockStmt] { ... }
+# 1957| getStmt(0): [DeclStmt] declaration
+# 1957| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x646
+# 1957| Type = [Struct] String
+# 1957| getVariable().getInitializer(): [Initializer] initializer for x646
+# 1957| getExpr(): [ConstructorCall] call to String
+# 1957| Type = [VoidType] void
+# 1957| ValueCategory = prvalue
+# 1958| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1958| Type = [VoidType] void
+# 1958| ValueCategory = prvalue
+# 1958| getQualifier(): [VariableAccess] x646
+# 1958| Type = [Struct] String
+# 1958| ValueCategory = lvalue
+# 1958| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1958| Conversion = [BoolConversion] conversion to bool
+# 1958| Type = [BoolType] bool
+# 1958| Value = [CStyleCast] 0
+# 1958| ValueCategory = prvalue
+# 1959| getStmt(647): [DoStmt] do (...) ...
+# 1961| getCondition(): [Literal] 0
+# 1961| Type = [IntType] int
+# 1961| Value = [Literal] 0
+# 1961| ValueCategory = prvalue
+# 1959| getStmt(): [BlockStmt] { ... }
+# 1960| getStmt(0): [DeclStmt] declaration
+# 1960| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x647
+# 1960| Type = [Struct] String
+# 1960| getVariable().getInitializer(): [Initializer] initializer for x647
+# 1960| getExpr(): [ConstructorCall] call to String
+# 1960| Type = [VoidType] void
+# 1960| ValueCategory = prvalue
+# 1961| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1961| Type = [VoidType] void
+# 1961| ValueCategory = prvalue
+# 1961| getQualifier(): [VariableAccess] x647
+# 1961| Type = [Struct] String
+# 1961| ValueCategory = lvalue
+# 1961| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1961| Conversion = [BoolConversion] conversion to bool
+# 1961| Type = [BoolType] bool
+# 1961| Value = [CStyleCast] 0
+# 1961| ValueCategory = prvalue
+# 1962| getStmt(648): [DoStmt] do (...) ...
+# 1964| getCondition(): [Literal] 0
+# 1964| Type = [IntType] int
+# 1964| Value = [Literal] 0
+# 1964| ValueCategory = prvalue
+# 1962| getStmt(): [BlockStmt] { ... }
+# 1963| getStmt(0): [DeclStmt] declaration
+# 1963| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x648
+# 1963| Type = [Struct] String
+# 1963| getVariable().getInitializer(): [Initializer] initializer for x648
+# 1963| getExpr(): [ConstructorCall] call to String
+# 1963| Type = [VoidType] void
+# 1963| ValueCategory = prvalue
+# 1964| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1964| Type = [VoidType] void
+# 1964| ValueCategory = prvalue
+# 1964| getQualifier(): [VariableAccess] x648
+# 1964| Type = [Struct] String
+# 1964| ValueCategory = lvalue
+# 1964| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1964| Conversion = [BoolConversion] conversion to bool
+# 1964| Type = [BoolType] bool
+# 1964| Value = [CStyleCast] 0
+# 1964| ValueCategory = prvalue
+# 1965| getStmt(649): [DoStmt] do (...) ...
+# 1967| getCondition(): [Literal] 0
+# 1967| Type = [IntType] int
+# 1967| Value = [Literal] 0
+# 1967| ValueCategory = prvalue
+# 1965| getStmt(): [BlockStmt] { ... }
+# 1966| getStmt(0): [DeclStmt] declaration
+# 1966| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x649
+# 1966| Type = [Struct] String
+# 1966| getVariable().getInitializer(): [Initializer] initializer for x649
+# 1966| getExpr(): [ConstructorCall] call to String
+# 1966| Type = [VoidType] void
+# 1966| ValueCategory = prvalue
+# 1967| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1967| Type = [VoidType] void
+# 1967| ValueCategory = prvalue
+# 1967| getQualifier(): [VariableAccess] x649
+# 1967| Type = [Struct] String
+# 1967| ValueCategory = lvalue
+# 1967| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1967| Conversion = [BoolConversion] conversion to bool
+# 1967| Type = [BoolType] bool
+# 1967| Value = [CStyleCast] 0
+# 1967| ValueCategory = prvalue
+# 1968| getStmt(650): [DoStmt] do (...) ...
+# 1970| getCondition(): [Literal] 0
+# 1970| Type = [IntType] int
+# 1970| Value = [Literal] 0
+# 1970| ValueCategory = prvalue
+# 1968| getStmt(): [BlockStmt] { ... }
+# 1969| getStmt(0): [DeclStmt] declaration
+# 1969| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x650
+# 1969| Type = [Struct] String
+# 1969| getVariable().getInitializer(): [Initializer] initializer for x650
+# 1969| getExpr(): [ConstructorCall] call to String
+# 1969| Type = [VoidType] void
+# 1969| ValueCategory = prvalue
+# 1970| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1970| Type = [VoidType] void
+# 1970| ValueCategory = prvalue
+# 1970| getQualifier(): [VariableAccess] x650
+# 1970| Type = [Struct] String
+# 1970| ValueCategory = lvalue
+# 1970| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1970| Conversion = [BoolConversion] conversion to bool
+# 1970| Type = [BoolType] bool
+# 1970| Value = [CStyleCast] 0
+# 1970| ValueCategory = prvalue
+# 1971| getStmt(651): [DoStmt] do (...) ...
+# 1973| getCondition(): [Literal] 0
+# 1973| Type = [IntType] int
+# 1973| Value = [Literal] 0
+# 1973| ValueCategory = prvalue
+# 1971| getStmt(): [BlockStmt] { ... }
+# 1972| getStmt(0): [DeclStmt] declaration
+# 1972| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x651
+# 1972| Type = [Struct] String
+# 1972| getVariable().getInitializer(): [Initializer] initializer for x651
+# 1972| getExpr(): [ConstructorCall] call to String
+# 1972| Type = [VoidType] void
+# 1972| ValueCategory = prvalue
+# 1973| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1973| Type = [VoidType] void
+# 1973| ValueCategory = prvalue
+# 1973| getQualifier(): [VariableAccess] x651
+# 1973| Type = [Struct] String
+# 1973| ValueCategory = lvalue
+# 1973| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1973| Conversion = [BoolConversion] conversion to bool
+# 1973| Type = [BoolType] bool
+# 1973| Value = [CStyleCast] 0
+# 1973| ValueCategory = prvalue
+# 1974| getStmt(652): [DoStmt] do (...) ...
+# 1976| getCondition(): [Literal] 0
+# 1976| Type = [IntType] int
+# 1976| Value = [Literal] 0
+# 1976| ValueCategory = prvalue
+# 1974| getStmt(): [BlockStmt] { ... }
+# 1975| getStmt(0): [DeclStmt] declaration
+# 1975| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x652
+# 1975| Type = [Struct] String
+# 1975| getVariable().getInitializer(): [Initializer] initializer for x652
+# 1975| getExpr(): [ConstructorCall] call to String
+# 1975| Type = [VoidType] void
+# 1975| ValueCategory = prvalue
+# 1976| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1976| Type = [VoidType] void
+# 1976| ValueCategory = prvalue
+# 1976| getQualifier(): [VariableAccess] x652
+# 1976| Type = [Struct] String
+# 1976| ValueCategory = lvalue
+# 1976| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1976| Conversion = [BoolConversion] conversion to bool
+# 1976| Type = [BoolType] bool
+# 1976| Value = [CStyleCast] 0
+# 1976| ValueCategory = prvalue
+# 1977| getStmt(653): [DoStmt] do (...) ...
+# 1979| getCondition(): [Literal] 0
+# 1979| Type = [IntType] int
+# 1979| Value = [Literal] 0
+# 1979| ValueCategory = prvalue
+# 1977| getStmt(): [BlockStmt] { ... }
+# 1978| getStmt(0): [DeclStmt] declaration
+# 1978| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x653
+# 1978| Type = [Struct] String
+# 1978| getVariable().getInitializer(): [Initializer] initializer for x653
+# 1978| getExpr(): [ConstructorCall] call to String
+# 1978| Type = [VoidType] void
+# 1978| ValueCategory = prvalue
+# 1979| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1979| Type = [VoidType] void
+# 1979| ValueCategory = prvalue
+# 1979| getQualifier(): [VariableAccess] x653
+# 1979| Type = [Struct] String
+# 1979| ValueCategory = lvalue
+# 1979| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1979| Conversion = [BoolConversion] conversion to bool
+# 1979| Type = [BoolType] bool
+# 1979| Value = [CStyleCast] 0
+# 1979| ValueCategory = prvalue
+# 1980| getStmt(654): [DoStmt] do (...) ...
+# 1982| getCondition(): [Literal] 0
+# 1982| Type = [IntType] int
+# 1982| Value = [Literal] 0
+# 1982| ValueCategory = prvalue
+# 1980| getStmt(): [BlockStmt] { ... }
+# 1981| getStmt(0): [DeclStmt] declaration
+# 1981| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x654
+# 1981| Type = [Struct] String
+# 1981| getVariable().getInitializer(): [Initializer] initializer for x654
+# 1981| getExpr(): [ConstructorCall] call to String
+# 1981| Type = [VoidType] void
+# 1981| ValueCategory = prvalue
+# 1982| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1982| Type = [VoidType] void
+# 1982| ValueCategory = prvalue
+# 1982| getQualifier(): [VariableAccess] x654
+# 1982| Type = [Struct] String
+# 1982| ValueCategory = lvalue
+# 1982| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1982| Conversion = [BoolConversion] conversion to bool
+# 1982| Type = [BoolType] bool
+# 1982| Value = [CStyleCast] 0
+# 1982| ValueCategory = prvalue
+# 1983| getStmt(655): [DoStmt] do (...) ...
+# 1985| getCondition(): [Literal] 0
+# 1985| Type = [IntType] int
+# 1985| Value = [Literal] 0
+# 1985| ValueCategory = prvalue
+# 1983| getStmt(): [BlockStmt] { ... }
+# 1984| getStmt(0): [DeclStmt] declaration
+# 1984| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x655
+# 1984| Type = [Struct] String
+# 1984| getVariable().getInitializer(): [Initializer] initializer for x655
+# 1984| getExpr(): [ConstructorCall] call to String
+# 1984| Type = [VoidType] void
+# 1984| ValueCategory = prvalue
+# 1985| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1985| Type = [VoidType] void
+# 1985| ValueCategory = prvalue
+# 1985| getQualifier(): [VariableAccess] x655
+# 1985| Type = [Struct] String
+# 1985| ValueCategory = lvalue
+# 1985| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1985| Conversion = [BoolConversion] conversion to bool
+# 1985| Type = [BoolType] bool
+# 1985| Value = [CStyleCast] 0
+# 1985| ValueCategory = prvalue
+# 1986| getStmt(656): [DoStmt] do (...) ...
+# 1988| getCondition(): [Literal] 0
+# 1988| Type = [IntType] int
+# 1988| Value = [Literal] 0
+# 1988| ValueCategory = prvalue
+# 1986| getStmt(): [BlockStmt] { ... }
+# 1987| getStmt(0): [DeclStmt] declaration
+# 1987| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x656
+# 1987| Type = [Struct] String
+# 1987| getVariable().getInitializer(): [Initializer] initializer for x656
+# 1987| getExpr(): [ConstructorCall] call to String
+# 1987| Type = [VoidType] void
+# 1987| ValueCategory = prvalue
+# 1988| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1988| Type = [VoidType] void
+# 1988| ValueCategory = prvalue
+# 1988| getQualifier(): [VariableAccess] x656
+# 1988| Type = [Struct] String
+# 1988| ValueCategory = lvalue
+# 1988| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1988| Conversion = [BoolConversion] conversion to bool
+# 1988| Type = [BoolType] bool
+# 1988| Value = [CStyleCast] 0
+# 1988| ValueCategory = prvalue
+# 1989| getStmt(657): [DoStmt] do (...) ...
+# 1991| getCondition(): [Literal] 0
+# 1991| Type = [IntType] int
+# 1991| Value = [Literal] 0
+# 1991| ValueCategory = prvalue
+# 1989| getStmt(): [BlockStmt] { ... }
+# 1990| getStmt(0): [DeclStmt] declaration
+# 1990| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x657
+# 1990| Type = [Struct] String
+# 1990| getVariable().getInitializer(): [Initializer] initializer for x657
+# 1990| getExpr(): [ConstructorCall] call to String
+# 1990| Type = [VoidType] void
+# 1990| ValueCategory = prvalue
+# 1991| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1991| Type = [VoidType] void
+# 1991| ValueCategory = prvalue
+# 1991| getQualifier(): [VariableAccess] x657
+# 1991| Type = [Struct] String
+# 1991| ValueCategory = lvalue
+# 1991| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1991| Conversion = [BoolConversion] conversion to bool
+# 1991| Type = [BoolType] bool
+# 1991| Value = [CStyleCast] 0
+# 1991| ValueCategory = prvalue
+# 1992| getStmt(658): [DoStmt] do (...) ...
+# 1994| getCondition(): [Literal] 0
+# 1994| Type = [IntType] int
+# 1994| Value = [Literal] 0
+# 1994| ValueCategory = prvalue
+# 1992| getStmt(): [BlockStmt] { ... }
+# 1993| getStmt(0): [DeclStmt] declaration
+# 1993| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x658
+# 1993| Type = [Struct] String
+# 1993| getVariable().getInitializer(): [Initializer] initializer for x658
+# 1993| getExpr(): [ConstructorCall] call to String
+# 1993| Type = [VoidType] void
+# 1993| ValueCategory = prvalue
+# 1994| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1994| Type = [VoidType] void
+# 1994| ValueCategory = prvalue
+# 1994| getQualifier(): [VariableAccess] x658
+# 1994| Type = [Struct] String
+# 1994| ValueCategory = lvalue
+# 1994| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1994| Conversion = [BoolConversion] conversion to bool
+# 1994| Type = [BoolType] bool
+# 1994| Value = [CStyleCast] 0
+# 1994| ValueCategory = prvalue
+# 1995| getStmt(659): [DoStmt] do (...) ...
+# 1997| getCondition(): [Literal] 0
+# 1997| Type = [IntType] int
+# 1997| Value = [Literal] 0
+# 1997| ValueCategory = prvalue
+# 1995| getStmt(): [BlockStmt] { ... }
+# 1996| getStmt(0): [DeclStmt] declaration
+# 1996| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x659
+# 1996| Type = [Struct] String
+# 1996| getVariable().getInitializer(): [Initializer] initializer for x659
+# 1996| getExpr(): [ConstructorCall] call to String
+# 1996| Type = [VoidType] void
+# 1996| ValueCategory = prvalue
+# 1997| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 1997| Type = [VoidType] void
+# 1997| ValueCategory = prvalue
+# 1997| getQualifier(): [VariableAccess] x659
+# 1997| Type = [Struct] String
+# 1997| ValueCategory = lvalue
+# 1997| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 1997| Conversion = [BoolConversion] conversion to bool
+# 1997| Type = [BoolType] bool
+# 1997| Value = [CStyleCast] 0
+# 1997| ValueCategory = prvalue
+# 1998| getStmt(660): [DoStmt] do (...) ...
+# 2000| getCondition(): [Literal] 0
+# 2000| Type = [IntType] int
+# 2000| Value = [Literal] 0
+# 2000| ValueCategory = prvalue
+# 1998| getStmt(): [BlockStmt] { ... }
+# 1999| getStmt(0): [DeclStmt] declaration
+# 1999| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x660
+# 1999| Type = [Struct] String
+# 1999| getVariable().getInitializer(): [Initializer] initializer for x660
+# 1999| getExpr(): [ConstructorCall] call to String
+# 1999| Type = [VoidType] void
+# 1999| ValueCategory = prvalue
+# 2000| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2000| Type = [VoidType] void
+# 2000| ValueCategory = prvalue
+# 2000| getQualifier(): [VariableAccess] x660
+# 2000| Type = [Struct] String
+# 2000| ValueCategory = lvalue
+# 2000| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2000| Conversion = [BoolConversion] conversion to bool
+# 2000| Type = [BoolType] bool
+# 2000| Value = [CStyleCast] 0
+# 2000| ValueCategory = prvalue
+# 2001| getStmt(661): [DoStmt] do (...) ...
+# 2003| getCondition(): [Literal] 0
+# 2003| Type = [IntType] int
+# 2003| Value = [Literal] 0
+# 2003| ValueCategory = prvalue
+# 2001| getStmt(): [BlockStmt] { ... }
+# 2002| getStmt(0): [DeclStmt] declaration
+# 2002| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x661
+# 2002| Type = [Struct] String
+# 2002| getVariable().getInitializer(): [Initializer] initializer for x661
+# 2002| getExpr(): [ConstructorCall] call to String
+# 2002| Type = [VoidType] void
+# 2002| ValueCategory = prvalue
+# 2003| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2003| Type = [VoidType] void
+# 2003| ValueCategory = prvalue
+# 2003| getQualifier(): [VariableAccess] x661
+# 2003| Type = [Struct] String
+# 2003| ValueCategory = lvalue
+# 2003| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2003| Conversion = [BoolConversion] conversion to bool
+# 2003| Type = [BoolType] bool
+# 2003| Value = [CStyleCast] 0
+# 2003| ValueCategory = prvalue
+# 2004| getStmt(662): [DoStmt] do (...) ...
+# 2006| getCondition(): [Literal] 0
+# 2006| Type = [IntType] int
+# 2006| Value = [Literal] 0
+# 2006| ValueCategory = prvalue
+# 2004| getStmt(): [BlockStmt] { ... }
+# 2005| getStmt(0): [DeclStmt] declaration
+# 2005| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x662
+# 2005| Type = [Struct] String
+# 2005| getVariable().getInitializer(): [Initializer] initializer for x662
+# 2005| getExpr(): [ConstructorCall] call to String
+# 2005| Type = [VoidType] void
+# 2005| ValueCategory = prvalue
+# 2006| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2006| Type = [VoidType] void
+# 2006| ValueCategory = prvalue
+# 2006| getQualifier(): [VariableAccess] x662
+# 2006| Type = [Struct] String
+# 2006| ValueCategory = lvalue
+# 2006| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2006| Conversion = [BoolConversion] conversion to bool
+# 2006| Type = [BoolType] bool
+# 2006| Value = [CStyleCast] 0
+# 2006| ValueCategory = prvalue
+# 2007| getStmt(663): [DoStmt] do (...) ...
+# 2009| getCondition(): [Literal] 0
+# 2009| Type = [IntType] int
+# 2009| Value = [Literal] 0
+# 2009| ValueCategory = prvalue
+# 2007| getStmt(): [BlockStmt] { ... }
+# 2008| getStmt(0): [DeclStmt] declaration
+# 2008| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x663
+# 2008| Type = [Struct] String
+# 2008| getVariable().getInitializer(): [Initializer] initializer for x663
+# 2008| getExpr(): [ConstructorCall] call to String
+# 2008| Type = [VoidType] void
+# 2008| ValueCategory = prvalue
+# 2009| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2009| Type = [VoidType] void
+# 2009| ValueCategory = prvalue
+# 2009| getQualifier(): [VariableAccess] x663
+# 2009| Type = [Struct] String
+# 2009| ValueCategory = lvalue
+# 2009| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2009| Conversion = [BoolConversion] conversion to bool
+# 2009| Type = [BoolType] bool
+# 2009| Value = [CStyleCast] 0
+# 2009| ValueCategory = prvalue
+# 2010| getStmt(664): [DoStmt] do (...) ...
+# 2012| getCondition(): [Literal] 0
+# 2012| Type = [IntType] int
+# 2012| Value = [Literal] 0
+# 2012| ValueCategory = prvalue
+# 2010| getStmt(): [BlockStmt] { ... }
+# 2011| getStmt(0): [DeclStmt] declaration
+# 2011| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x664
+# 2011| Type = [Struct] String
+# 2011| getVariable().getInitializer(): [Initializer] initializer for x664
+# 2011| getExpr(): [ConstructorCall] call to String
+# 2011| Type = [VoidType] void
+# 2011| ValueCategory = prvalue
+# 2012| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2012| Type = [VoidType] void
+# 2012| ValueCategory = prvalue
+# 2012| getQualifier(): [VariableAccess] x664
+# 2012| Type = [Struct] String
+# 2012| ValueCategory = lvalue
+# 2012| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2012| Conversion = [BoolConversion] conversion to bool
+# 2012| Type = [BoolType] bool
+# 2012| Value = [CStyleCast] 0
+# 2012| ValueCategory = prvalue
+# 2013| getStmt(665): [DoStmt] do (...) ...
+# 2015| getCondition(): [Literal] 0
+# 2015| Type = [IntType] int
+# 2015| Value = [Literal] 0
+# 2015| ValueCategory = prvalue
+# 2013| getStmt(): [BlockStmt] { ... }
+# 2014| getStmt(0): [DeclStmt] declaration
+# 2014| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x665
+# 2014| Type = [Struct] String
+# 2014| getVariable().getInitializer(): [Initializer] initializer for x665
+# 2014| getExpr(): [ConstructorCall] call to String
+# 2014| Type = [VoidType] void
+# 2014| ValueCategory = prvalue
+# 2015| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2015| Type = [VoidType] void
+# 2015| ValueCategory = prvalue
+# 2015| getQualifier(): [VariableAccess] x665
+# 2015| Type = [Struct] String
+# 2015| ValueCategory = lvalue
+# 2015| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2015| Conversion = [BoolConversion] conversion to bool
+# 2015| Type = [BoolType] bool
+# 2015| Value = [CStyleCast] 0
+# 2015| ValueCategory = prvalue
+# 2016| getStmt(666): [DoStmt] do (...) ...
+# 2018| getCondition(): [Literal] 0
+# 2018| Type = [IntType] int
+# 2018| Value = [Literal] 0
+# 2018| ValueCategory = prvalue
+# 2016| getStmt(): [BlockStmt] { ... }
+# 2017| getStmt(0): [DeclStmt] declaration
+# 2017| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x666
+# 2017| Type = [Struct] String
+# 2017| getVariable().getInitializer(): [Initializer] initializer for x666
+# 2017| getExpr(): [ConstructorCall] call to String
+# 2017| Type = [VoidType] void
+# 2017| ValueCategory = prvalue
+# 2018| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2018| Type = [VoidType] void
+# 2018| ValueCategory = prvalue
+# 2018| getQualifier(): [VariableAccess] x666
+# 2018| Type = [Struct] String
+# 2018| ValueCategory = lvalue
+# 2018| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2018| Conversion = [BoolConversion] conversion to bool
+# 2018| Type = [BoolType] bool
+# 2018| Value = [CStyleCast] 0
+# 2018| ValueCategory = prvalue
+# 2019| getStmt(667): [DoStmt] do (...) ...
+# 2021| getCondition(): [Literal] 0
+# 2021| Type = [IntType] int
+# 2021| Value = [Literal] 0
+# 2021| ValueCategory = prvalue
+# 2019| getStmt(): [BlockStmt] { ... }
+# 2020| getStmt(0): [DeclStmt] declaration
+# 2020| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x667
+# 2020| Type = [Struct] String
+# 2020| getVariable().getInitializer(): [Initializer] initializer for x667
+# 2020| getExpr(): [ConstructorCall] call to String
+# 2020| Type = [VoidType] void
+# 2020| ValueCategory = prvalue
+# 2021| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2021| Type = [VoidType] void
+# 2021| ValueCategory = prvalue
+# 2021| getQualifier(): [VariableAccess] x667
+# 2021| Type = [Struct] String
+# 2021| ValueCategory = lvalue
+# 2021| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2021| Conversion = [BoolConversion] conversion to bool
+# 2021| Type = [BoolType] bool
+# 2021| Value = [CStyleCast] 0
+# 2021| ValueCategory = prvalue
+# 2022| getStmt(668): [DoStmt] do (...) ...
+# 2024| getCondition(): [Literal] 0
+# 2024| Type = [IntType] int
+# 2024| Value = [Literal] 0
+# 2024| ValueCategory = prvalue
+# 2022| getStmt(): [BlockStmt] { ... }
+# 2023| getStmt(0): [DeclStmt] declaration
+# 2023| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x668
+# 2023| Type = [Struct] String
+# 2023| getVariable().getInitializer(): [Initializer] initializer for x668
+# 2023| getExpr(): [ConstructorCall] call to String
+# 2023| Type = [VoidType] void
+# 2023| ValueCategory = prvalue
+# 2024| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2024| Type = [VoidType] void
+# 2024| ValueCategory = prvalue
+# 2024| getQualifier(): [VariableAccess] x668
+# 2024| Type = [Struct] String
+# 2024| ValueCategory = lvalue
+# 2024| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2024| Conversion = [BoolConversion] conversion to bool
+# 2024| Type = [BoolType] bool
+# 2024| Value = [CStyleCast] 0
+# 2024| ValueCategory = prvalue
+# 2025| getStmt(669): [DoStmt] do (...) ...
+# 2027| getCondition(): [Literal] 0
+# 2027| Type = [IntType] int
+# 2027| Value = [Literal] 0
+# 2027| ValueCategory = prvalue
+# 2025| getStmt(): [BlockStmt] { ... }
+# 2026| getStmt(0): [DeclStmt] declaration
+# 2026| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x669
+# 2026| Type = [Struct] String
+# 2026| getVariable().getInitializer(): [Initializer] initializer for x669
+# 2026| getExpr(): [ConstructorCall] call to String
+# 2026| Type = [VoidType] void
+# 2026| ValueCategory = prvalue
+# 2027| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2027| Type = [VoidType] void
+# 2027| ValueCategory = prvalue
+# 2027| getQualifier(): [VariableAccess] x669
+# 2027| Type = [Struct] String
+# 2027| ValueCategory = lvalue
+# 2027| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2027| Conversion = [BoolConversion] conversion to bool
+# 2027| Type = [BoolType] bool
+# 2027| Value = [CStyleCast] 0
+# 2027| ValueCategory = prvalue
+# 2028| getStmt(670): [DoStmt] do (...) ...
+# 2030| getCondition(): [Literal] 0
+# 2030| Type = [IntType] int
+# 2030| Value = [Literal] 0
+# 2030| ValueCategory = prvalue
+# 2028| getStmt(): [BlockStmt] { ... }
+# 2029| getStmt(0): [DeclStmt] declaration
+# 2029| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x670
+# 2029| Type = [Struct] String
+# 2029| getVariable().getInitializer(): [Initializer] initializer for x670
+# 2029| getExpr(): [ConstructorCall] call to String
+# 2029| Type = [VoidType] void
+# 2029| ValueCategory = prvalue
+# 2030| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2030| Type = [VoidType] void
+# 2030| ValueCategory = prvalue
+# 2030| getQualifier(): [VariableAccess] x670
+# 2030| Type = [Struct] String
+# 2030| ValueCategory = lvalue
+# 2030| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2030| Conversion = [BoolConversion] conversion to bool
+# 2030| Type = [BoolType] bool
+# 2030| Value = [CStyleCast] 0
+# 2030| ValueCategory = prvalue
+# 2031| getStmt(671): [DoStmt] do (...) ...
+# 2033| getCondition(): [Literal] 0
+# 2033| Type = [IntType] int
+# 2033| Value = [Literal] 0
+# 2033| ValueCategory = prvalue
+# 2031| getStmt(): [BlockStmt] { ... }
+# 2032| getStmt(0): [DeclStmt] declaration
+# 2032| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x671
+# 2032| Type = [Struct] String
+# 2032| getVariable().getInitializer(): [Initializer] initializer for x671
+# 2032| getExpr(): [ConstructorCall] call to String
+# 2032| Type = [VoidType] void
+# 2032| ValueCategory = prvalue
+# 2033| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2033| Type = [VoidType] void
+# 2033| ValueCategory = prvalue
+# 2033| getQualifier(): [VariableAccess] x671
+# 2033| Type = [Struct] String
+# 2033| ValueCategory = lvalue
+# 2033| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2033| Conversion = [BoolConversion] conversion to bool
+# 2033| Type = [BoolType] bool
+# 2033| Value = [CStyleCast] 0
+# 2033| ValueCategory = prvalue
+# 2034| getStmt(672): [DoStmt] do (...) ...
+# 2036| getCondition(): [Literal] 0
+# 2036| Type = [IntType] int
+# 2036| Value = [Literal] 0
+# 2036| ValueCategory = prvalue
+# 2034| getStmt(): [BlockStmt] { ... }
+# 2035| getStmt(0): [DeclStmt] declaration
+# 2035| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x672
+# 2035| Type = [Struct] String
+# 2035| getVariable().getInitializer(): [Initializer] initializer for x672
+# 2035| getExpr(): [ConstructorCall] call to String
+# 2035| Type = [VoidType] void
+# 2035| ValueCategory = prvalue
+# 2036| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2036| Type = [VoidType] void
+# 2036| ValueCategory = prvalue
+# 2036| getQualifier(): [VariableAccess] x672
+# 2036| Type = [Struct] String
+# 2036| ValueCategory = lvalue
+# 2036| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2036| Conversion = [BoolConversion] conversion to bool
+# 2036| Type = [BoolType] bool
+# 2036| Value = [CStyleCast] 0
+# 2036| ValueCategory = prvalue
+# 2037| getStmt(673): [DoStmt] do (...) ...
+# 2039| getCondition(): [Literal] 0
+# 2039| Type = [IntType] int
+# 2039| Value = [Literal] 0
+# 2039| ValueCategory = prvalue
+# 2037| getStmt(): [BlockStmt] { ... }
+# 2038| getStmt(0): [DeclStmt] declaration
+# 2038| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x673
+# 2038| Type = [Struct] String
+# 2038| getVariable().getInitializer(): [Initializer] initializer for x673
+# 2038| getExpr(): [ConstructorCall] call to String
+# 2038| Type = [VoidType] void
+# 2038| ValueCategory = prvalue
+# 2039| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2039| Type = [VoidType] void
+# 2039| ValueCategory = prvalue
+# 2039| getQualifier(): [VariableAccess] x673
+# 2039| Type = [Struct] String
+# 2039| ValueCategory = lvalue
+# 2039| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2039| Conversion = [BoolConversion] conversion to bool
+# 2039| Type = [BoolType] bool
+# 2039| Value = [CStyleCast] 0
+# 2039| ValueCategory = prvalue
+# 2040| getStmt(674): [DoStmt] do (...) ...
+# 2042| getCondition(): [Literal] 0
+# 2042| Type = [IntType] int
+# 2042| Value = [Literal] 0
+# 2042| ValueCategory = prvalue
+# 2040| getStmt(): [BlockStmt] { ... }
+# 2041| getStmt(0): [DeclStmt] declaration
+# 2041| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x674
+# 2041| Type = [Struct] String
+# 2041| getVariable().getInitializer(): [Initializer] initializer for x674
+# 2041| getExpr(): [ConstructorCall] call to String
+# 2041| Type = [VoidType] void
+# 2041| ValueCategory = prvalue
+# 2042| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2042| Type = [VoidType] void
+# 2042| ValueCategory = prvalue
+# 2042| getQualifier(): [VariableAccess] x674
+# 2042| Type = [Struct] String
+# 2042| ValueCategory = lvalue
+# 2042| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2042| Conversion = [BoolConversion] conversion to bool
+# 2042| Type = [BoolType] bool
+# 2042| Value = [CStyleCast] 0
+# 2042| ValueCategory = prvalue
+# 2043| getStmt(675): [DoStmt] do (...) ...
+# 2045| getCondition(): [Literal] 0
+# 2045| Type = [IntType] int
+# 2045| Value = [Literal] 0
+# 2045| ValueCategory = prvalue
+# 2043| getStmt(): [BlockStmt] { ... }
+# 2044| getStmt(0): [DeclStmt] declaration
+# 2044| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x675
+# 2044| Type = [Struct] String
+# 2044| getVariable().getInitializer(): [Initializer] initializer for x675
+# 2044| getExpr(): [ConstructorCall] call to String
+# 2044| Type = [VoidType] void
+# 2044| ValueCategory = prvalue
+# 2045| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2045| Type = [VoidType] void
+# 2045| ValueCategory = prvalue
+# 2045| getQualifier(): [VariableAccess] x675
+# 2045| Type = [Struct] String
+# 2045| ValueCategory = lvalue
+# 2045| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2045| Conversion = [BoolConversion] conversion to bool
+# 2045| Type = [BoolType] bool
+# 2045| Value = [CStyleCast] 0
+# 2045| ValueCategory = prvalue
+# 2046| getStmt(676): [DoStmt] do (...) ...
+# 2048| getCondition(): [Literal] 0
+# 2048| Type = [IntType] int
+# 2048| Value = [Literal] 0
+# 2048| ValueCategory = prvalue
+# 2046| getStmt(): [BlockStmt] { ... }
+# 2047| getStmt(0): [DeclStmt] declaration
+# 2047| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x676
+# 2047| Type = [Struct] String
+# 2047| getVariable().getInitializer(): [Initializer] initializer for x676
+# 2047| getExpr(): [ConstructorCall] call to String
+# 2047| Type = [VoidType] void
+# 2047| ValueCategory = prvalue
+# 2048| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2048| Type = [VoidType] void
+# 2048| ValueCategory = prvalue
+# 2048| getQualifier(): [VariableAccess] x676
+# 2048| Type = [Struct] String
+# 2048| ValueCategory = lvalue
+# 2048| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2048| Conversion = [BoolConversion] conversion to bool
+# 2048| Type = [BoolType] bool
+# 2048| Value = [CStyleCast] 0
+# 2048| ValueCategory = prvalue
+# 2049| getStmt(677): [DoStmt] do (...) ...
+# 2051| getCondition(): [Literal] 0
+# 2051| Type = [IntType] int
+# 2051| Value = [Literal] 0
+# 2051| ValueCategory = prvalue
+# 2049| getStmt(): [BlockStmt] { ... }
+# 2050| getStmt(0): [DeclStmt] declaration
+# 2050| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x677
+# 2050| Type = [Struct] String
+# 2050| getVariable().getInitializer(): [Initializer] initializer for x677
+# 2050| getExpr(): [ConstructorCall] call to String
+# 2050| Type = [VoidType] void
+# 2050| ValueCategory = prvalue
+# 2051| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2051| Type = [VoidType] void
+# 2051| ValueCategory = prvalue
+# 2051| getQualifier(): [VariableAccess] x677
+# 2051| Type = [Struct] String
+# 2051| ValueCategory = lvalue
+# 2051| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2051| Conversion = [BoolConversion] conversion to bool
+# 2051| Type = [BoolType] bool
+# 2051| Value = [CStyleCast] 0
+# 2051| ValueCategory = prvalue
+# 2052| getStmt(678): [DoStmt] do (...) ...
+# 2054| getCondition(): [Literal] 0
+# 2054| Type = [IntType] int
+# 2054| Value = [Literal] 0
+# 2054| ValueCategory = prvalue
+# 2052| getStmt(): [BlockStmt] { ... }
+# 2053| getStmt(0): [DeclStmt] declaration
+# 2053| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x678
+# 2053| Type = [Struct] String
+# 2053| getVariable().getInitializer(): [Initializer] initializer for x678
+# 2053| getExpr(): [ConstructorCall] call to String
+# 2053| Type = [VoidType] void
+# 2053| ValueCategory = prvalue
+# 2054| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2054| Type = [VoidType] void
+# 2054| ValueCategory = prvalue
+# 2054| getQualifier(): [VariableAccess] x678
+# 2054| Type = [Struct] String
+# 2054| ValueCategory = lvalue
+# 2054| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2054| Conversion = [BoolConversion] conversion to bool
+# 2054| Type = [BoolType] bool
+# 2054| Value = [CStyleCast] 0
+# 2054| ValueCategory = prvalue
+# 2055| getStmt(679): [DoStmt] do (...) ...
+# 2057| getCondition(): [Literal] 0
+# 2057| Type = [IntType] int
+# 2057| Value = [Literal] 0
+# 2057| ValueCategory = prvalue
+# 2055| getStmt(): [BlockStmt] { ... }
+# 2056| getStmt(0): [DeclStmt] declaration
+# 2056| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x679
+# 2056| Type = [Struct] String
+# 2056| getVariable().getInitializer(): [Initializer] initializer for x679
+# 2056| getExpr(): [ConstructorCall] call to String
+# 2056| Type = [VoidType] void
+# 2056| ValueCategory = prvalue
+# 2057| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2057| Type = [VoidType] void
+# 2057| ValueCategory = prvalue
+# 2057| getQualifier(): [VariableAccess] x679
+# 2057| Type = [Struct] String
+# 2057| ValueCategory = lvalue
+# 2057| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2057| Conversion = [BoolConversion] conversion to bool
+# 2057| Type = [BoolType] bool
+# 2057| Value = [CStyleCast] 0
+# 2057| ValueCategory = prvalue
+# 2058| getStmt(680): [DoStmt] do (...) ...
+# 2060| getCondition(): [Literal] 0
+# 2060| Type = [IntType] int
+# 2060| Value = [Literal] 0
+# 2060| ValueCategory = prvalue
+# 2058| getStmt(): [BlockStmt] { ... }
+# 2059| getStmt(0): [DeclStmt] declaration
+# 2059| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x680
+# 2059| Type = [Struct] String
+# 2059| getVariable().getInitializer(): [Initializer] initializer for x680
+# 2059| getExpr(): [ConstructorCall] call to String
+# 2059| Type = [VoidType] void
+# 2059| ValueCategory = prvalue
+# 2060| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2060| Type = [VoidType] void
+# 2060| ValueCategory = prvalue
+# 2060| getQualifier(): [VariableAccess] x680
+# 2060| Type = [Struct] String
+# 2060| ValueCategory = lvalue
+# 2060| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2060| Conversion = [BoolConversion] conversion to bool
+# 2060| Type = [BoolType] bool
+# 2060| Value = [CStyleCast] 0
+# 2060| ValueCategory = prvalue
+# 2061| getStmt(681): [DoStmt] do (...) ...
+# 2063| getCondition(): [Literal] 0
+# 2063| Type = [IntType] int
+# 2063| Value = [Literal] 0
+# 2063| ValueCategory = prvalue
+# 2061| getStmt(): [BlockStmt] { ... }
+# 2062| getStmt(0): [DeclStmt] declaration
+# 2062| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x681
+# 2062| Type = [Struct] String
+# 2062| getVariable().getInitializer(): [Initializer] initializer for x681
+# 2062| getExpr(): [ConstructorCall] call to String
+# 2062| Type = [VoidType] void
+# 2062| ValueCategory = prvalue
+# 2063| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2063| Type = [VoidType] void
+# 2063| ValueCategory = prvalue
+# 2063| getQualifier(): [VariableAccess] x681
+# 2063| Type = [Struct] String
+# 2063| ValueCategory = lvalue
+# 2063| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2063| Conversion = [BoolConversion] conversion to bool
+# 2063| Type = [BoolType] bool
+# 2063| Value = [CStyleCast] 0
+# 2063| ValueCategory = prvalue
+# 2064| getStmt(682): [DoStmt] do (...) ...
+# 2066| getCondition(): [Literal] 0
+# 2066| Type = [IntType] int
+# 2066| Value = [Literal] 0
+# 2066| ValueCategory = prvalue
+# 2064| getStmt(): [BlockStmt] { ... }
+# 2065| getStmt(0): [DeclStmt] declaration
+# 2065| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x682
+# 2065| Type = [Struct] String
+# 2065| getVariable().getInitializer(): [Initializer] initializer for x682
+# 2065| getExpr(): [ConstructorCall] call to String
+# 2065| Type = [VoidType] void
+# 2065| ValueCategory = prvalue
+# 2066| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2066| Type = [VoidType] void
+# 2066| ValueCategory = prvalue
+# 2066| getQualifier(): [VariableAccess] x682
+# 2066| Type = [Struct] String
+# 2066| ValueCategory = lvalue
+# 2066| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2066| Conversion = [BoolConversion] conversion to bool
+# 2066| Type = [BoolType] bool
+# 2066| Value = [CStyleCast] 0
+# 2066| ValueCategory = prvalue
+# 2067| getStmt(683): [DoStmt] do (...) ...
+# 2069| getCondition(): [Literal] 0
+# 2069| Type = [IntType] int
+# 2069| Value = [Literal] 0
+# 2069| ValueCategory = prvalue
+# 2067| getStmt(): [BlockStmt] { ... }
+# 2068| getStmt(0): [DeclStmt] declaration
+# 2068| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x683
+# 2068| Type = [Struct] String
+# 2068| getVariable().getInitializer(): [Initializer] initializer for x683
+# 2068| getExpr(): [ConstructorCall] call to String
+# 2068| Type = [VoidType] void
+# 2068| ValueCategory = prvalue
+# 2069| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2069| Type = [VoidType] void
+# 2069| ValueCategory = prvalue
+# 2069| getQualifier(): [VariableAccess] x683
+# 2069| Type = [Struct] String
+# 2069| ValueCategory = lvalue
+# 2069| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2069| Conversion = [BoolConversion] conversion to bool
+# 2069| Type = [BoolType] bool
+# 2069| Value = [CStyleCast] 0
+# 2069| ValueCategory = prvalue
+# 2070| getStmt(684): [DoStmt] do (...) ...
+# 2072| getCondition(): [Literal] 0
+# 2072| Type = [IntType] int
+# 2072| Value = [Literal] 0
+# 2072| ValueCategory = prvalue
+# 2070| getStmt(): [BlockStmt] { ... }
+# 2071| getStmt(0): [DeclStmt] declaration
+# 2071| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x684
+# 2071| Type = [Struct] String
+# 2071| getVariable().getInitializer(): [Initializer] initializer for x684
+# 2071| getExpr(): [ConstructorCall] call to String
+# 2071| Type = [VoidType] void
+# 2071| ValueCategory = prvalue
+# 2072| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2072| Type = [VoidType] void
+# 2072| ValueCategory = prvalue
+# 2072| getQualifier(): [VariableAccess] x684
+# 2072| Type = [Struct] String
+# 2072| ValueCategory = lvalue
+# 2072| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2072| Conversion = [BoolConversion] conversion to bool
+# 2072| Type = [BoolType] bool
+# 2072| Value = [CStyleCast] 0
+# 2072| ValueCategory = prvalue
+# 2073| getStmt(685): [DoStmt] do (...) ...
+# 2075| getCondition(): [Literal] 0
+# 2075| Type = [IntType] int
+# 2075| Value = [Literal] 0
+# 2075| ValueCategory = prvalue
+# 2073| getStmt(): [BlockStmt] { ... }
+# 2074| getStmt(0): [DeclStmt] declaration
+# 2074| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x685
+# 2074| Type = [Struct] String
+# 2074| getVariable().getInitializer(): [Initializer] initializer for x685
+# 2074| getExpr(): [ConstructorCall] call to String
+# 2074| Type = [VoidType] void
+# 2074| ValueCategory = prvalue
+# 2075| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2075| Type = [VoidType] void
+# 2075| ValueCategory = prvalue
+# 2075| getQualifier(): [VariableAccess] x685
+# 2075| Type = [Struct] String
+# 2075| ValueCategory = lvalue
+# 2075| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2075| Conversion = [BoolConversion] conversion to bool
+# 2075| Type = [BoolType] bool
+# 2075| Value = [CStyleCast] 0
+# 2075| ValueCategory = prvalue
+# 2076| getStmt(686): [DoStmt] do (...) ...
+# 2078| getCondition(): [Literal] 0
+# 2078| Type = [IntType] int
+# 2078| Value = [Literal] 0
+# 2078| ValueCategory = prvalue
+# 2076| getStmt(): [BlockStmt] { ... }
+# 2077| getStmt(0): [DeclStmt] declaration
+# 2077| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x686
+# 2077| Type = [Struct] String
+# 2077| getVariable().getInitializer(): [Initializer] initializer for x686
+# 2077| getExpr(): [ConstructorCall] call to String
+# 2077| Type = [VoidType] void
+# 2077| ValueCategory = prvalue
+# 2078| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2078| Type = [VoidType] void
+# 2078| ValueCategory = prvalue
+# 2078| getQualifier(): [VariableAccess] x686
+# 2078| Type = [Struct] String
+# 2078| ValueCategory = lvalue
+# 2078| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2078| Conversion = [BoolConversion] conversion to bool
+# 2078| Type = [BoolType] bool
+# 2078| Value = [CStyleCast] 0
+# 2078| ValueCategory = prvalue
+# 2079| getStmt(687): [DoStmt] do (...) ...
+# 2081| getCondition(): [Literal] 0
+# 2081| Type = [IntType] int
+# 2081| Value = [Literal] 0
+# 2081| ValueCategory = prvalue
+# 2079| getStmt(): [BlockStmt] { ... }
+# 2080| getStmt(0): [DeclStmt] declaration
+# 2080| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x687
+# 2080| Type = [Struct] String
+# 2080| getVariable().getInitializer(): [Initializer] initializer for x687
+# 2080| getExpr(): [ConstructorCall] call to String
+# 2080| Type = [VoidType] void
+# 2080| ValueCategory = prvalue
+# 2081| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2081| Type = [VoidType] void
+# 2081| ValueCategory = prvalue
+# 2081| getQualifier(): [VariableAccess] x687
+# 2081| Type = [Struct] String
+# 2081| ValueCategory = lvalue
+# 2081| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2081| Conversion = [BoolConversion] conversion to bool
+# 2081| Type = [BoolType] bool
+# 2081| Value = [CStyleCast] 0
+# 2081| ValueCategory = prvalue
+# 2082| getStmt(688): [DoStmt] do (...) ...
+# 2084| getCondition(): [Literal] 0
+# 2084| Type = [IntType] int
+# 2084| Value = [Literal] 0
+# 2084| ValueCategory = prvalue
+# 2082| getStmt(): [BlockStmt] { ... }
+# 2083| getStmt(0): [DeclStmt] declaration
+# 2083| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x688
+# 2083| Type = [Struct] String
+# 2083| getVariable().getInitializer(): [Initializer] initializer for x688
+# 2083| getExpr(): [ConstructorCall] call to String
+# 2083| Type = [VoidType] void
+# 2083| ValueCategory = prvalue
+# 2084| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2084| Type = [VoidType] void
+# 2084| ValueCategory = prvalue
+# 2084| getQualifier(): [VariableAccess] x688
+# 2084| Type = [Struct] String
+# 2084| ValueCategory = lvalue
+# 2084| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2084| Conversion = [BoolConversion] conversion to bool
+# 2084| Type = [BoolType] bool
+# 2084| Value = [CStyleCast] 0
+# 2084| ValueCategory = prvalue
+# 2085| getStmt(689): [DoStmt] do (...) ...
+# 2087| getCondition(): [Literal] 0
+# 2087| Type = [IntType] int
+# 2087| Value = [Literal] 0
+# 2087| ValueCategory = prvalue
+# 2085| getStmt(): [BlockStmt] { ... }
+# 2086| getStmt(0): [DeclStmt] declaration
+# 2086| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x689
+# 2086| Type = [Struct] String
+# 2086| getVariable().getInitializer(): [Initializer] initializer for x689
+# 2086| getExpr(): [ConstructorCall] call to String
+# 2086| Type = [VoidType] void
+# 2086| ValueCategory = prvalue
+# 2087| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2087| Type = [VoidType] void
+# 2087| ValueCategory = prvalue
+# 2087| getQualifier(): [VariableAccess] x689
+# 2087| Type = [Struct] String
+# 2087| ValueCategory = lvalue
+# 2087| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2087| Conversion = [BoolConversion] conversion to bool
+# 2087| Type = [BoolType] bool
+# 2087| Value = [CStyleCast] 0
+# 2087| ValueCategory = prvalue
+# 2088| getStmt(690): [DoStmt] do (...) ...
+# 2090| getCondition(): [Literal] 0
+# 2090| Type = [IntType] int
+# 2090| Value = [Literal] 0
+# 2090| ValueCategory = prvalue
+# 2088| getStmt(): [BlockStmt] { ... }
+# 2089| getStmt(0): [DeclStmt] declaration
+# 2089| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x690
+# 2089| Type = [Struct] String
+# 2089| getVariable().getInitializer(): [Initializer] initializer for x690
+# 2089| getExpr(): [ConstructorCall] call to String
+# 2089| Type = [VoidType] void
+# 2089| ValueCategory = prvalue
+# 2090| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2090| Type = [VoidType] void
+# 2090| ValueCategory = prvalue
+# 2090| getQualifier(): [VariableAccess] x690
+# 2090| Type = [Struct] String
+# 2090| ValueCategory = lvalue
+# 2090| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2090| Conversion = [BoolConversion] conversion to bool
+# 2090| Type = [BoolType] bool
+# 2090| Value = [CStyleCast] 0
+# 2090| ValueCategory = prvalue
+# 2091| getStmt(691): [DoStmt] do (...) ...
+# 2093| getCondition(): [Literal] 0
+# 2093| Type = [IntType] int
+# 2093| Value = [Literal] 0
+# 2093| ValueCategory = prvalue
+# 2091| getStmt(): [BlockStmt] { ... }
+# 2092| getStmt(0): [DeclStmt] declaration
+# 2092| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x691
+# 2092| Type = [Struct] String
+# 2092| getVariable().getInitializer(): [Initializer] initializer for x691
+# 2092| getExpr(): [ConstructorCall] call to String
+# 2092| Type = [VoidType] void
+# 2092| ValueCategory = prvalue
+# 2093| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2093| Type = [VoidType] void
+# 2093| ValueCategory = prvalue
+# 2093| getQualifier(): [VariableAccess] x691
+# 2093| Type = [Struct] String
+# 2093| ValueCategory = lvalue
+# 2093| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2093| Conversion = [BoolConversion] conversion to bool
+# 2093| Type = [BoolType] bool
+# 2093| Value = [CStyleCast] 0
+# 2093| ValueCategory = prvalue
+# 2094| getStmt(692): [DoStmt] do (...) ...
+# 2096| getCondition(): [Literal] 0
+# 2096| Type = [IntType] int
+# 2096| Value = [Literal] 0
+# 2096| ValueCategory = prvalue
+# 2094| getStmt(): [BlockStmt] { ... }
+# 2095| getStmt(0): [DeclStmt] declaration
+# 2095| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x692
+# 2095| Type = [Struct] String
+# 2095| getVariable().getInitializer(): [Initializer] initializer for x692
+# 2095| getExpr(): [ConstructorCall] call to String
+# 2095| Type = [VoidType] void
+# 2095| ValueCategory = prvalue
+# 2096| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2096| Type = [VoidType] void
+# 2096| ValueCategory = prvalue
+# 2096| getQualifier(): [VariableAccess] x692
+# 2096| Type = [Struct] String
+# 2096| ValueCategory = lvalue
+# 2096| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2096| Conversion = [BoolConversion] conversion to bool
+# 2096| Type = [BoolType] bool
+# 2096| Value = [CStyleCast] 0
+# 2096| ValueCategory = prvalue
+# 2097| getStmt(693): [DoStmt] do (...) ...
+# 2099| getCondition(): [Literal] 0
+# 2099| Type = [IntType] int
+# 2099| Value = [Literal] 0
+# 2099| ValueCategory = prvalue
+# 2097| getStmt(): [BlockStmt] { ... }
+# 2098| getStmt(0): [DeclStmt] declaration
+# 2098| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x693
+# 2098| Type = [Struct] String
+# 2098| getVariable().getInitializer(): [Initializer] initializer for x693
+# 2098| getExpr(): [ConstructorCall] call to String
+# 2098| Type = [VoidType] void
+# 2098| ValueCategory = prvalue
+# 2099| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2099| Type = [VoidType] void
+# 2099| ValueCategory = prvalue
+# 2099| getQualifier(): [VariableAccess] x693
+# 2099| Type = [Struct] String
+# 2099| ValueCategory = lvalue
+# 2099| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2099| Conversion = [BoolConversion] conversion to bool
+# 2099| Type = [BoolType] bool
+# 2099| Value = [CStyleCast] 0
+# 2099| ValueCategory = prvalue
+# 2100| getStmt(694): [DoStmt] do (...) ...
+# 2102| getCondition(): [Literal] 0
+# 2102| Type = [IntType] int
+# 2102| Value = [Literal] 0
+# 2102| ValueCategory = prvalue
+# 2100| getStmt(): [BlockStmt] { ... }
+# 2101| getStmt(0): [DeclStmt] declaration
+# 2101| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x694
+# 2101| Type = [Struct] String
+# 2101| getVariable().getInitializer(): [Initializer] initializer for x694
+# 2101| getExpr(): [ConstructorCall] call to String
+# 2101| Type = [VoidType] void
+# 2101| ValueCategory = prvalue
+# 2102| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2102| Type = [VoidType] void
+# 2102| ValueCategory = prvalue
+# 2102| getQualifier(): [VariableAccess] x694
+# 2102| Type = [Struct] String
+# 2102| ValueCategory = lvalue
+# 2102| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2102| Conversion = [BoolConversion] conversion to bool
+# 2102| Type = [BoolType] bool
+# 2102| Value = [CStyleCast] 0
+# 2102| ValueCategory = prvalue
+# 2103| getStmt(695): [DoStmt] do (...) ...
+# 2105| getCondition(): [Literal] 0
+# 2105| Type = [IntType] int
+# 2105| Value = [Literal] 0
+# 2105| ValueCategory = prvalue
+# 2103| getStmt(): [BlockStmt] { ... }
+# 2104| getStmt(0): [DeclStmt] declaration
+# 2104| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x695
+# 2104| Type = [Struct] String
+# 2104| getVariable().getInitializer(): [Initializer] initializer for x695
+# 2104| getExpr(): [ConstructorCall] call to String
+# 2104| Type = [VoidType] void
+# 2104| ValueCategory = prvalue
+# 2105| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2105| Type = [VoidType] void
+# 2105| ValueCategory = prvalue
+# 2105| getQualifier(): [VariableAccess] x695
+# 2105| Type = [Struct] String
+# 2105| ValueCategory = lvalue
+# 2105| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2105| Conversion = [BoolConversion] conversion to bool
+# 2105| Type = [BoolType] bool
+# 2105| Value = [CStyleCast] 0
+# 2105| ValueCategory = prvalue
+# 2106| getStmt(696): [DoStmt] do (...) ...
+# 2108| getCondition(): [Literal] 0
+# 2108| Type = [IntType] int
+# 2108| Value = [Literal] 0
+# 2108| ValueCategory = prvalue
+# 2106| getStmt(): [BlockStmt] { ... }
+# 2107| getStmt(0): [DeclStmt] declaration
+# 2107| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x696
+# 2107| Type = [Struct] String
+# 2107| getVariable().getInitializer(): [Initializer] initializer for x696
+# 2107| getExpr(): [ConstructorCall] call to String
+# 2107| Type = [VoidType] void
+# 2107| ValueCategory = prvalue
+# 2108| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2108| Type = [VoidType] void
+# 2108| ValueCategory = prvalue
+# 2108| getQualifier(): [VariableAccess] x696
+# 2108| Type = [Struct] String
+# 2108| ValueCategory = lvalue
+# 2108| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2108| Conversion = [BoolConversion] conversion to bool
+# 2108| Type = [BoolType] bool
+# 2108| Value = [CStyleCast] 0
+# 2108| ValueCategory = prvalue
+# 2109| getStmt(697): [DoStmt] do (...) ...
+# 2111| getCondition(): [Literal] 0
+# 2111| Type = [IntType] int
+# 2111| Value = [Literal] 0
+# 2111| ValueCategory = prvalue
+# 2109| getStmt(): [BlockStmt] { ... }
+# 2110| getStmt(0): [DeclStmt] declaration
+# 2110| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x697
+# 2110| Type = [Struct] String
+# 2110| getVariable().getInitializer(): [Initializer] initializer for x697
+# 2110| getExpr(): [ConstructorCall] call to String
+# 2110| Type = [VoidType] void
+# 2110| ValueCategory = prvalue
+# 2111| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2111| Type = [VoidType] void
+# 2111| ValueCategory = prvalue
+# 2111| getQualifier(): [VariableAccess] x697
+# 2111| Type = [Struct] String
+# 2111| ValueCategory = lvalue
+# 2111| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2111| Conversion = [BoolConversion] conversion to bool
+# 2111| Type = [BoolType] bool
+# 2111| Value = [CStyleCast] 0
+# 2111| ValueCategory = prvalue
+# 2112| getStmt(698): [DoStmt] do (...) ...
+# 2114| getCondition(): [Literal] 0
+# 2114| Type = [IntType] int
+# 2114| Value = [Literal] 0
+# 2114| ValueCategory = prvalue
+# 2112| getStmt(): [BlockStmt] { ... }
+# 2113| getStmt(0): [DeclStmt] declaration
+# 2113| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x698
+# 2113| Type = [Struct] String
+# 2113| getVariable().getInitializer(): [Initializer] initializer for x698
+# 2113| getExpr(): [ConstructorCall] call to String
+# 2113| Type = [VoidType] void
+# 2113| ValueCategory = prvalue
+# 2114| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2114| Type = [VoidType] void
+# 2114| ValueCategory = prvalue
+# 2114| getQualifier(): [VariableAccess] x698
+# 2114| Type = [Struct] String
+# 2114| ValueCategory = lvalue
+# 2114| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2114| Conversion = [BoolConversion] conversion to bool
+# 2114| Type = [BoolType] bool
+# 2114| Value = [CStyleCast] 0
+# 2114| ValueCategory = prvalue
+# 2115| getStmt(699): [DoStmt] do (...) ...
+# 2117| getCondition(): [Literal] 0
+# 2117| Type = [IntType] int
+# 2117| Value = [Literal] 0
+# 2117| ValueCategory = prvalue
+# 2115| getStmt(): [BlockStmt] { ... }
+# 2116| getStmt(0): [DeclStmt] declaration
+# 2116| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x699
+# 2116| Type = [Struct] String
+# 2116| getVariable().getInitializer(): [Initializer] initializer for x699
+# 2116| getExpr(): [ConstructorCall] call to String
+# 2116| Type = [VoidType] void
+# 2116| ValueCategory = prvalue
+# 2117| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2117| Type = [VoidType] void
+# 2117| ValueCategory = prvalue
+# 2117| getQualifier(): [VariableAccess] x699
+# 2117| Type = [Struct] String
+# 2117| ValueCategory = lvalue
+# 2117| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2117| Conversion = [BoolConversion] conversion to bool
+# 2117| Type = [BoolType] bool
+# 2117| Value = [CStyleCast] 0
+# 2117| ValueCategory = prvalue
+# 2118| getStmt(700): [DoStmt] do (...) ...
+# 2120| getCondition(): [Literal] 0
+# 2120| Type = [IntType] int
+# 2120| Value = [Literal] 0
+# 2120| ValueCategory = prvalue
+# 2118| getStmt(): [BlockStmt] { ... }
+# 2119| getStmt(0): [DeclStmt] declaration
+# 2119| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x700
+# 2119| Type = [Struct] String
+# 2119| getVariable().getInitializer(): [Initializer] initializer for x700
+# 2119| getExpr(): [ConstructorCall] call to String
+# 2119| Type = [VoidType] void
+# 2119| ValueCategory = prvalue
+# 2120| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2120| Type = [VoidType] void
+# 2120| ValueCategory = prvalue
+# 2120| getQualifier(): [VariableAccess] x700
+# 2120| Type = [Struct] String
+# 2120| ValueCategory = lvalue
+# 2120| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2120| Conversion = [BoolConversion] conversion to bool
+# 2120| Type = [BoolType] bool
+# 2120| Value = [CStyleCast] 0
+# 2120| ValueCategory = prvalue
+# 2121| getStmt(701): [DoStmt] do (...) ...
+# 2123| getCondition(): [Literal] 0
+# 2123| Type = [IntType] int
+# 2123| Value = [Literal] 0
+# 2123| ValueCategory = prvalue
+# 2121| getStmt(): [BlockStmt] { ... }
+# 2122| getStmt(0): [DeclStmt] declaration
+# 2122| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x701
+# 2122| Type = [Struct] String
+# 2122| getVariable().getInitializer(): [Initializer] initializer for x701
+# 2122| getExpr(): [ConstructorCall] call to String
+# 2122| Type = [VoidType] void
+# 2122| ValueCategory = prvalue
+# 2123| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2123| Type = [VoidType] void
+# 2123| ValueCategory = prvalue
+# 2123| getQualifier(): [VariableAccess] x701
+# 2123| Type = [Struct] String
+# 2123| ValueCategory = lvalue
+# 2123| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2123| Conversion = [BoolConversion] conversion to bool
+# 2123| Type = [BoolType] bool
+# 2123| Value = [CStyleCast] 0
+# 2123| ValueCategory = prvalue
+# 2124| getStmt(702): [DoStmt] do (...) ...
+# 2126| getCondition(): [Literal] 0
+# 2126| Type = [IntType] int
+# 2126| Value = [Literal] 0
+# 2126| ValueCategory = prvalue
+# 2124| getStmt(): [BlockStmt] { ... }
+# 2125| getStmt(0): [DeclStmt] declaration
+# 2125| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x702
+# 2125| Type = [Struct] String
+# 2125| getVariable().getInitializer(): [Initializer] initializer for x702
+# 2125| getExpr(): [ConstructorCall] call to String
+# 2125| Type = [VoidType] void
+# 2125| ValueCategory = prvalue
+# 2126| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2126| Type = [VoidType] void
+# 2126| ValueCategory = prvalue
+# 2126| getQualifier(): [VariableAccess] x702
+# 2126| Type = [Struct] String
+# 2126| ValueCategory = lvalue
+# 2126| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2126| Conversion = [BoolConversion] conversion to bool
+# 2126| Type = [BoolType] bool
+# 2126| Value = [CStyleCast] 0
+# 2126| ValueCategory = prvalue
+# 2127| getStmt(703): [DoStmt] do (...) ...
+# 2129| getCondition(): [Literal] 0
+# 2129| Type = [IntType] int
+# 2129| Value = [Literal] 0
+# 2129| ValueCategory = prvalue
+# 2127| getStmt(): [BlockStmt] { ... }
+# 2128| getStmt(0): [DeclStmt] declaration
+# 2128| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x703
+# 2128| Type = [Struct] String
+# 2128| getVariable().getInitializer(): [Initializer] initializer for x703
+# 2128| getExpr(): [ConstructorCall] call to String
+# 2128| Type = [VoidType] void
+# 2128| ValueCategory = prvalue
+# 2129| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2129| Type = [VoidType] void
+# 2129| ValueCategory = prvalue
+# 2129| getQualifier(): [VariableAccess] x703
+# 2129| Type = [Struct] String
+# 2129| ValueCategory = lvalue
+# 2129| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2129| Conversion = [BoolConversion] conversion to bool
+# 2129| Type = [BoolType] bool
+# 2129| Value = [CStyleCast] 0
+# 2129| ValueCategory = prvalue
+# 2130| getStmt(704): [DoStmt] do (...) ...
+# 2132| getCondition(): [Literal] 0
+# 2132| Type = [IntType] int
+# 2132| Value = [Literal] 0
+# 2132| ValueCategory = prvalue
+# 2130| getStmt(): [BlockStmt] { ... }
+# 2131| getStmt(0): [DeclStmt] declaration
+# 2131| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x704
+# 2131| Type = [Struct] String
+# 2131| getVariable().getInitializer(): [Initializer] initializer for x704
+# 2131| getExpr(): [ConstructorCall] call to String
+# 2131| Type = [VoidType] void
+# 2131| ValueCategory = prvalue
+# 2132| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2132| Type = [VoidType] void
+# 2132| ValueCategory = prvalue
+# 2132| getQualifier(): [VariableAccess] x704
+# 2132| Type = [Struct] String
+# 2132| ValueCategory = lvalue
+# 2132| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2132| Conversion = [BoolConversion] conversion to bool
+# 2132| Type = [BoolType] bool
+# 2132| Value = [CStyleCast] 0
+# 2132| ValueCategory = prvalue
+# 2133| getStmt(705): [DoStmt] do (...) ...
+# 2135| getCondition(): [Literal] 0
+# 2135| Type = [IntType] int
+# 2135| Value = [Literal] 0
+# 2135| ValueCategory = prvalue
+# 2133| getStmt(): [BlockStmt] { ... }
+# 2134| getStmt(0): [DeclStmt] declaration
+# 2134| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x705
+# 2134| Type = [Struct] String
+# 2134| getVariable().getInitializer(): [Initializer] initializer for x705
+# 2134| getExpr(): [ConstructorCall] call to String
+# 2134| Type = [VoidType] void
+# 2134| ValueCategory = prvalue
+# 2135| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2135| Type = [VoidType] void
+# 2135| ValueCategory = prvalue
+# 2135| getQualifier(): [VariableAccess] x705
+# 2135| Type = [Struct] String
+# 2135| ValueCategory = lvalue
+# 2135| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2135| Conversion = [BoolConversion] conversion to bool
+# 2135| Type = [BoolType] bool
+# 2135| Value = [CStyleCast] 0
+# 2135| ValueCategory = prvalue
+# 2136| getStmt(706): [DoStmt] do (...) ...
+# 2138| getCondition(): [Literal] 0
+# 2138| Type = [IntType] int
+# 2138| Value = [Literal] 0
+# 2138| ValueCategory = prvalue
+# 2136| getStmt(): [BlockStmt] { ... }
+# 2137| getStmt(0): [DeclStmt] declaration
+# 2137| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x706
+# 2137| Type = [Struct] String
+# 2137| getVariable().getInitializer(): [Initializer] initializer for x706
+# 2137| getExpr(): [ConstructorCall] call to String
+# 2137| Type = [VoidType] void
+# 2137| ValueCategory = prvalue
+# 2138| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2138| Type = [VoidType] void
+# 2138| ValueCategory = prvalue
+# 2138| getQualifier(): [VariableAccess] x706
+# 2138| Type = [Struct] String
+# 2138| ValueCategory = lvalue
+# 2138| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2138| Conversion = [BoolConversion] conversion to bool
+# 2138| Type = [BoolType] bool
+# 2138| Value = [CStyleCast] 0
+# 2138| ValueCategory = prvalue
+# 2139| getStmt(707): [DoStmt] do (...) ...
+# 2141| getCondition(): [Literal] 0
+# 2141| Type = [IntType] int
+# 2141| Value = [Literal] 0
+# 2141| ValueCategory = prvalue
+# 2139| getStmt(): [BlockStmt] { ... }
+# 2140| getStmt(0): [DeclStmt] declaration
+# 2140| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x707
+# 2140| Type = [Struct] String
+# 2140| getVariable().getInitializer(): [Initializer] initializer for x707
+# 2140| getExpr(): [ConstructorCall] call to String
+# 2140| Type = [VoidType] void
+# 2140| ValueCategory = prvalue
+# 2141| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2141| Type = [VoidType] void
+# 2141| ValueCategory = prvalue
+# 2141| getQualifier(): [VariableAccess] x707
+# 2141| Type = [Struct] String
+# 2141| ValueCategory = lvalue
+# 2141| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2141| Conversion = [BoolConversion] conversion to bool
+# 2141| Type = [BoolType] bool
+# 2141| Value = [CStyleCast] 0
+# 2141| ValueCategory = prvalue
+# 2142| getStmt(708): [DoStmt] do (...) ...
+# 2144| getCondition(): [Literal] 0
+# 2144| Type = [IntType] int
+# 2144| Value = [Literal] 0
+# 2144| ValueCategory = prvalue
+# 2142| getStmt(): [BlockStmt] { ... }
+# 2143| getStmt(0): [DeclStmt] declaration
+# 2143| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x708
+# 2143| Type = [Struct] String
+# 2143| getVariable().getInitializer(): [Initializer] initializer for x708
+# 2143| getExpr(): [ConstructorCall] call to String
+# 2143| Type = [VoidType] void
+# 2143| ValueCategory = prvalue
+# 2144| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2144| Type = [VoidType] void
+# 2144| ValueCategory = prvalue
+# 2144| getQualifier(): [VariableAccess] x708
+# 2144| Type = [Struct] String
+# 2144| ValueCategory = lvalue
+# 2144| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2144| Conversion = [BoolConversion] conversion to bool
+# 2144| Type = [BoolType] bool
+# 2144| Value = [CStyleCast] 0
+# 2144| ValueCategory = prvalue
+# 2145| getStmt(709): [DoStmt] do (...) ...
+# 2147| getCondition(): [Literal] 0
+# 2147| Type = [IntType] int
+# 2147| Value = [Literal] 0
+# 2147| ValueCategory = prvalue
+# 2145| getStmt(): [BlockStmt] { ... }
+# 2146| getStmt(0): [DeclStmt] declaration
+# 2146| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x709
+# 2146| Type = [Struct] String
+# 2146| getVariable().getInitializer(): [Initializer] initializer for x709
+# 2146| getExpr(): [ConstructorCall] call to String
+# 2146| Type = [VoidType] void
+# 2146| ValueCategory = prvalue
+# 2147| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2147| Type = [VoidType] void
+# 2147| ValueCategory = prvalue
+# 2147| getQualifier(): [VariableAccess] x709
+# 2147| Type = [Struct] String
+# 2147| ValueCategory = lvalue
+# 2147| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2147| Conversion = [BoolConversion] conversion to bool
+# 2147| Type = [BoolType] bool
+# 2147| Value = [CStyleCast] 0
+# 2147| ValueCategory = prvalue
+# 2148| getStmt(710): [DoStmt] do (...) ...
+# 2150| getCondition(): [Literal] 0
+# 2150| Type = [IntType] int
+# 2150| Value = [Literal] 0
+# 2150| ValueCategory = prvalue
+# 2148| getStmt(): [BlockStmt] { ... }
+# 2149| getStmt(0): [DeclStmt] declaration
+# 2149| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x710
+# 2149| Type = [Struct] String
+# 2149| getVariable().getInitializer(): [Initializer] initializer for x710
+# 2149| getExpr(): [ConstructorCall] call to String
+# 2149| Type = [VoidType] void
+# 2149| ValueCategory = prvalue
+# 2150| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2150| Type = [VoidType] void
+# 2150| ValueCategory = prvalue
+# 2150| getQualifier(): [VariableAccess] x710
+# 2150| Type = [Struct] String
+# 2150| ValueCategory = lvalue
+# 2150| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2150| Conversion = [BoolConversion] conversion to bool
+# 2150| Type = [BoolType] bool
+# 2150| Value = [CStyleCast] 0
+# 2150| ValueCategory = prvalue
+# 2151| getStmt(711): [DoStmt] do (...) ...
+# 2153| getCondition(): [Literal] 0
+# 2153| Type = [IntType] int
+# 2153| Value = [Literal] 0
+# 2153| ValueCategory = prvalue
+# 2151| getStmt(): [BlockStmt] { ... }
+# 2152| getStmt(0): [DeclStmt] declaration
+# 2152| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x711
+# 2152| Type = [Struct] String
+# 2152| getVariable().getInitializer(): [Initializer] initializer for x711
+# 2152| getExpr(): [ConstructorCall] call to String
+# 2152| Type = [VoidType] void
+# 2152| ValueCategory = prvalue
+# 2153| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2153| Type = [VoidType] void
+# 2153| ValueCategory = prvalue
+# 2153| getQualifier(): [VariableAccess] x711
+# 2153| Type = [Struct] String
+# 2153| ValueCategory = lvalue
+# 2153| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2153| Conversion = [BoolConversion] conversion to bool
+# 2153| Type = [BoolType] bool
+# 2153| Value = [CStyleCast] 0
+# 2153| ValueCategory = prvalue
+# 2154| getStmt(712): [DoStmt] do (...) ...
+# 2156| getCondition(): [Literal] 0
+# 2156| Type = [IntType] int
+# 2156| Value = [Literal] 0
+# 2156| ValueCategory = prvalue
+# 2154| getStmt(): [BlockStmt] { ... }
+# 2155| getStmt(0): [DeclStmt] declaration
+# 2155| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x712
+# 2155| Type = [Struct] String
+# 2155| getVariable().getInitializer(): [Initializer] initializer for x712
+# 2155| getExpr(): [ConstructorCall] call to String
+# 2155| Type = [VoidType] void
+# 2155| ValueCategory = prvalue
+# 2156| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2156| Type = [VoidType] void
+# 2156| ValueCategory = prvalue
+# 2156| getQualifier(): [VariableAccess] x712
+# 2156| Type = [Struct] String
+# 2156| ValueCategory = lvalue
+# 2156| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2156| Conversion = [BoolConversion] conversion to bool
+# 2156| Type = [BoolType] bool
+# 2156| Value = [CStyleCast] 0
+# 2156| ValueCategory = prvalue
+# 2157| getStmt(713): [DoStmt] do (...) ...
+# 2159| getCondition(): [Literal] 0
+# 2159| Type = [IntType] int
+# 2159| Value = [Literal] 0
+# 2159| ValueCategory = prvalue
+# 2157| getStmt(): [BlockStmt] { ... }
+# 2158| getStmt(0): [DeclStmt] declaration
+# 2158| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x713
+# 2158| Type = [Struct] String
+# 2158| getVariable().getInitializer(): [Initializer] initializer for x713
+# 2158| getExpr(): [ConstructorCall] call to String
+# 2158| Type = [VoidType] void
+# 2158| ValueCategory = prvalue
+# 2159| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2159| Type = [VoidType] void
+# 2159| ValueCategory = prvalue
+# 2159| getQualifier(): [VariableAccess] x713
+# 2159| Type = [Struct] String
+# 2159| ValueCategory = lvalue
+# 2159| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2159| Conversion = [BoolConversion] conversion to bool
+# 2159| Type = [BoolType] bool
+# 2159| Value = [CStyleCast] 0
+# 2159| ValueCategory = prvalue
+# 2160| getStmt(714): [DoStmt] do (...) ...
+# 2162| getCondition(): [Literal] 0
+# 2162| Type = [IntType] int
+# 2162| Value = [Literal] 0
+# 2162| ValueCategory = prvalue
+# 2160| getStmt(): [BlockStmt] { ... }
+# 2161| getStmt(0): [DeclStmt] declaration
+# 2161| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x714
+# 2161| Type = [Struct] String
+# 2161| getVariable().getInitializer(): [Initializer] initializer for x714
+# 2161| getExpr(): [ConstructorCall] call to String
+# 2161| Type = [VoidType] void
+# 2161| ValueCategory = prvalue
+# 2162| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2162| Type = [VoidType] void
+# 2162| ValueCategory = prvalue
+# 2162| getQualifier(): [VariableAccess] x714
+# 2162| Type = [Struct] String
+# 2162| ValueCategory = lvalue
+# 2162| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2162| Conversion = [BoolConversion] conversion to bool
+# 2162| Type = [BoolType] bool
+# 2162| Value = [CStyleCast] 0
+# 2162| ValueCategory = prvalue
+# 2163| getStmt(715): [DoStmt] do (...) ...
+# 2165| getCondition(): [Literal] 0
+# 2165| Type = [IntType] int
+# 2165| Value = [Literal] 0
+# 2165| ValueCategory = prvalue
+# 2163| getStmt(): [BlockStmt] { ... }
+# 2164| getStmt(0): [DeclStmt] declaration
+# 2164| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x715
+# 2164| Type = [Struct] String
+# 2164| getVariable().getInitializer(): [Initializer] initializer for x715
+# 2164| getExpr(): [ConstructorCall] call to String
+# 2164| Type = [VoidType] void
+# 2164| ValueCategory = prvalue
+# 2165| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2165| Type = [VoidType] void
+# 2165| ValueCategory = prvalue
+# 2165| getQualifier(): [VariableAccess] x715
+# 2165| Type = [Struct] String
+# 2165| ValueCategory = lvalue
+# 2165| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2165| Conversion = [BoolConversion] conversion to bool
+# 2165| Type = [BoolType] bool
+# 2165| Value = [CStyleCast] 0
+# 2165| ValueCategory = prvalue
+# 2166| getStmt(716): [DoStmt] do (...) ...
+# 2168| getCondition(): [Literal] 0
+# 2168| Type = [IntType] int
+# 2168| Value = [Literal] 0
+# 2168| ValueCategory = prvalue
+# 2166| getStmt(): [BlockStmt] { ... }
+# 2167| getStmt(0): [DeclStmt] declaration
+# 2167| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x716
+# 2167| Type = [Struct] String
+# 2167| getVariable().getInitializer(): [Initializer] initializer for x716
+# 2167| getExpr(): [ConstructorCall] call to String
+# 2167| Type = [VoidType] void
+# 2167| ValueCategory = prvalue
+# 2168| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2168| Type = [VoidType] void
+# 2168| ValueCategory = prvalue
+# 2168| getQualifier(): [VariableAccess] x716
+# 2168| Type = [Struct] String
+# 2168| ValueCategory = lvalue
+# 2168| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2168| Conversion = [BoolConversion] conversion to bool
+# 2168| Type = [BoolType] bool
+# 2168| Value = [CStyleCast] 0
+# 2168| ValueCategory = prvalue
+# 2169| getStmt(717): [DoStmt] do (...) ...
+# 2171| getCondition(): [Literal] 0
+# 2171| Type = [IntType] int
+# 2171| Value = [Literal] 0
+# 2171| ValueCategory = prvalue
+# 2169| getStmt(): [BlockStmt] { ... }
+# 2170| getStmt(0): [DeclStmt] declaration
+# 2170| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x717
+# 2170| Type = [Struct] String
+# 2170| getVariable().getInitializer(): [Initializer] initializer for x717
+# 2170| getExpr(): [ConstructorCall] call to String
+# 2170| Type = [VoidType] void
+# 2170| ValueCategory = prvalue
+# 2171| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2171| Type = [VoidType] void
+# 2171| ValueCategory = prvalue
+# 2171| getQualifier(): [VariableAccess] x717
+# 2171| Type = [Struct] String
+# 2171| ValueCategory = lvalue
+# 2171| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2171| Conversion = [BoolConversion] conversion to bool
+# 2171| Type = [BoolType] bool
+# 2171| Value = [CStyleCast] 0
+# 2171| ValueCategory = prvalue
+# 2172| getStmt(718): [DoStmt] do (...) ...
+# 2174| getCondition(): [Literal] 0
+# 2174| Type = [IntType] int
+# 2174| Value = [Literal] 0
+# 2174| ValueCategory = prvalue
+# 2172| getStmt(): [BlockStmt] { ... }
+# 2173| getStmt(0): [DeclStmt] declaration
+# 2173| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x718
+# 2173| Type = [Struct] String
+# 2173| getVariable().getInitializer(): [Initializer] initializer for x718
+# 2173| getExpr(): [ConstructorCall] call to String
+# 2173| Type = [VoidType] void
+# 2173| ValueCategory = prvalue
+# 2174| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2174| Type = [VoidType] void
+# 2174| ValueCategory = prvalue
+# 2174| getQualifier(): [VariableAccess] x718
+# 2174| Type = [Struct] String
+# 2174| ValueCategory = lvalue
+# 2174| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2174| Conversion = [BoolConversion] conversion to bool
+# 2174| Type = [BoolType] bool
+# 2174| Value = [CStyleCast] 0
+# 2174| ValueCategory = prvalue
+# 2175| getStmt(719): [DoStmt] do (...) ...
+# 2177| getCondition(): [Literal] 0
+# 2177| Type = [IntType] int
+# 2177| Value = [Literal] 0
+# 2177| ValueCategory = prvalue
+# 2175| getStmt(): [BlockStmt] { ... }
+# 2176| getStmt(0): [DeclStmt] declaration
+# 2176| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x719
+# 2176| Type = [Struct] String
+# 2176| getVariable().getInitializer(): [Initializer] initializer for x719
+# 2176| getExpr(): [ConstructorCall] call to String
+# 2176| Type = [VoidType] void
+# 2176| ValueCategory = prvalue
+# 2177| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2177| Type = [VoidType] void
+# 2177| ValueCategory = prvalue
+# 2177| getQualifier(): [VariableAccess] x719
+# 2177| Type = [Struct] String
+# 2177| ValueCategory = lvalue
+# 2177| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2177| Conversion = [BoolConversion] conversion to bool
+# 2177| Type = [BoolType] bool
+# 2177| Value = [CStyleCast] 0
+# 2177| ValueCategory = prvalue
+# 2178| getStmt(720): [DoStmt] do (...) ...
+# 2180| getCondition(): [Literal] 0
+# 2180| Type = [IntType] int
+# 2180| Value = [Literal] 0
+# 2180| ValueCategory = prvalue
+# 2178| getStmt(): [BlockStmt] { ... }
+# 2179| getStmt(0): [DeclStmt] declaration
+# 2179| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x720
+# 2179| Type = [Struct] String
+# 2179| getVariable().getInitializer(): [Initializer] initializer for x720
+# 2179| getExpr(): [ConstructorCall] call to String
+# 2179| Type = [VoidType] void
+# 2179| ValueCategory = prvalue
+# 2180| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2180| Type = [VoidType] void
+# 2180| ValueCategory = prvalue
+# 2180| getQualifier(): [VariableAccess] x720
+# 2180| Type = [Struct] String
+# 2180| ValueCategory = lvalue
+# 2180| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2180| Conversion = [BoolConversion] conversion to bool
+# 2180| Type = [BoolType] bool
+# 2180| Value = [CStyleCast] 0
+# 2180| ValueCategory = prvalue
+# 2181| getStmt(721): [DoStmt] do (...) ...
+# 2183| getCondition(): [Literal] 0
+# 2183| Type = [IntType] int
+# 2183| Value = [Literal] 0
+# 2183| ValueCategory = prvalue
+# 2181| getStmt(): [BlockStmt] { ... }
+# 2182| getStmt(0): [DeclStmt] declaration
+# 2182| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x721
+# 2182| Type = [Struct] String
+# 2182| getVariable().getInitializer(): [Initializer] initializer for x721
+# 2182| getExpr(): [ConstructorCall] call to String
+# 2182| Type = [VoidType] void
+# 2182| ValueCategory = prvalue
+# 2183| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2183| Type = [VoidType] void
+# 2183| ValueCategory = prvalue
+# 2183| getQualifier(): [VariableAccess] x721
+# 2183| Type = [Struct] String
+# 2183| ValueCategory = lvalue
+# 2183| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2183| Conversion = [BoolConversion] conversion to bool
+# 2183| Type = [BoolType] bool
+# 2183| Value = [CStyleCast] 0
+# 2183| ValueCategory = prvalue
+# 2184| getStmt(722): [DoStmt] do (...) ...
+# 2186| getCondition(): [Literal] 0
+# 2186| Type = [IntType] int
+# 2186| Value = [Literal] 0
+# 2186| ValueCategory = prvalue
+# 2184| getStmt(): [BlockStmt] { ... }
+# 2185| getStmt(0): [DeclStmt] declaration
+# 2185| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x722
+# 2185| Type = [Struct] String
+# 2185| getVariable().getInitializer(): [Initializer] initializer for x722
+# 2185| getExpr(): [ConstructorCall] call to String
+# 2185| Type = [VoidType] void
+# 2185| ValueCategory = prvalue
+# 2186| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2186| Type = [VoidType] void
+# 2186| ValueCategory = prvalue
+# 2186| getQualifier(): [VariableAccess] x722
+# 2186| Type = [Struct] String
+# 2186| ValueCategory = lvalue
+# 2186| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2186| Conversion = [BoolConversion] conversion to bool
+# 2186| Type = [BoolType] bool
+# 2186| Value = [CStyleCast] 0
+# 2186| ValueCategory = prvalue
+# 2187| getStmt(723): [DoStmt] do (...) ...
+# 2189| getCondition(): [Literal] 0
+# 2189| Type = [IntType] int
+# 2189| Value = [Literal] 0
+# 2189| ValueCategory = prvalue
+# 2187| getStmt(): [BlockStmt] { ... }
+# 2188| getStmt(0): [DeclStmt] declaration
+# 2188| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x723
+# 2188| Type = [Struct] String
+# 2188| getVariable().getInitializer(): [Initializer] initializer for x723
+# 2188| getExpr(): [ConstructorCall] call to String
+# 2188| Type = [VoidType] void
+# 2188| ValueCategory = prvalue
+# 2189| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2189| Type = [VoidType] void
+# 2189| ValueCategory = prvalue
+# 2189| getQualifier(): [VariableAccess] x723
+# 2189| Type = [Struct] String
+# 2189| ValueCategory = lvalue
+# 2189| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2189| Conversion = [BoolConversion] conversion to bool
+# 2189| Type = [BoolType] bool
+# 2189| Value = [CStyleCast] 0
+# 2189| ValueCategory = prvalue
+# 2190| getStmt(724): [DoStmt] do (...) ...
+# 2192| getCondition(): [Literal] 0
+# 2192| Type = [IntType] int
+# 2192| Value = [Literal] 0
+# 2192| ValueCategory = prvalue
+# 2190| getStmt(): [BlockStmt] { ... }
+# 2191| getStmt(0): [DeclStmt] declaration
+# 2191| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x724
+# 2191| Type = [Struct] String
+# 2191| getVariable().getInitializer(): [Initializer] initializer for x724
+# 2191| getExpr(): [ConstructorCall] call to String
+# 2191| Type = [VoidType] void
+# 2191| ValueCategory = prvalue
+# 2192| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2192| Type = [VoidType] void
+# 2192| ValueCategory = prvalue
+# 2192| getQualifier(): [VariableAccess] x724
+# 2192| Type = [Struct] String
+# 2192| ValueCategory = lvalue
+# 2192| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2192| Conversion = [BoolConversion] conversion to bool
+# 2192| Type = [BoolType] bool
+# 2192| Value = [CStyleCast] 0
+# 2192| ValueCategory = prvalue
+# 2193| getStmt(725): [DoStmt] do (...) ...
+# 2195| getCondition(): [Literal] 0
+# 2195| Type = [IntType] int
+# 2195| Value = [Literal] 0
+# 2195| ValueCategory = prvalue
+# 2193| getStmt(): [BlockStmt] { ... }
+# 2194| getStmt(0): [DeclStmt] declaration
+# 2194| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x725
+# 2194| Type = [Struct] String
+# 2194| getVariable().getInitializer(): [Initializer] initializer for x725
+# 2194| getExpr(): [ConstructorCall] call to String
+# 2194| Type = [VoidType] void
+# 2194| ValueCategory = prvalue
+# 2195| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2195| Type = [VoidType] void
+# 2195| ValueCategory = prvalue
+# 2195| getQualifier(): [VariableAccess] x725
+# 2195| Type = [Struct] String
+# 2195| ValueCategory = lvalue
+# 2195| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2195| Conversion = [BoolConversion] conversion to bool
+# 2195| Type = [BoolType] bool
+# 2195| Value = [CStyleCast] 0
+# 2195| ValueCategory = prvalue
+# 2196| getStmt(726): [DoStmt] do (...) ...
+# 2198| getCondition(): [Literal] 0
+# 2198| Type = [IntType] int
+# 2198| Value = [Literal] 0
+# 2198| ValueCategory = prvalue
+# 2196| getStmt(): [BlockStmt] { ... }
+# 2197| getStmt(0): [DeclStmt] declaration
+# 2197| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x726
+# 2197| Type = [Struct] String
+# 2197| getVariable().getInitializer(): [Initializer] initializer for x726
+# 2197| getExpr(): [ConstructorCall] call to String
+# 2197| Type = [VoidType] void
+# 2197| ValueCategory = prvalue
+# 2198| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2198| Type = [VoidType] void
+# 2198| ValueCategory = prvalue
+# 2198| getQualifier(): [VariableAccess] x726
+# 2198| Type = [Struct] String
+# 2198| ValueCategory = lvalue
+# 2198| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2198| Conversion = [BoolConversion] conversion to bool
+# 2198| Type = [BoolType] bool
+# 2198| Value = [CStyleCast] 0
+# 2198| ValueCategory = prvalue
+# 2199| getStmt(727): [DoStmt] do (...) ...
+# 2201| getCondition(): [Literal] 0
+# 2201| Type = [IntType] int
+# 2201| Value = [Literal] 0
+# 2201| ValueCategory = prvalue
+# 2199| getStmt(): [BlockStmt] { ... }
+# 2200| getStmt(0): [DeclStmt] declaration
+# 2200| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x727
+# 2200| Type = [Struct] String
+# 2200| getVariable().getInitializer(): [Initializer] initializer for x727
+# 2200| getExpr(): [ConstructorCall] call to String
+# 2200| Type = [VoidType] void
+# 2200| ValueCategory = prvalue
+# 2201| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2201| Type = [VoidType] void
+# 2201| ValueCategory = prvalue
+# 2201| getQualifier(): [VariableAccess] x727
+# 2201| Type = [Struct] String
+# 2201| ValueCategory = lvalue
+# 2201| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2201| Conversion = [BoolConversion] conversion to bool
+# 2201| Type = [BoolType] bool
+# 2201| Value = [CStyleCast] 0
+# 2201| ValueCategory = prvalue
+# 2202| getStmt(728): [DoStmt] do (...) ...
+# 2204| getCondition(): [Literal] 0
+# 2204| Type = [IntType] int
+# 2204| Value = [Literal] 0
+# 2204| ValueCategory = prvalue
+# 2202| getStmt(): [BlockStmt] { ... }
+# 2203| getStmt(0): [DeclStmt] declaration
+# 2203| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x728
+# 2203| Type = [Struct] String
+# 2203| getVariable().getInitializer(): [Initializer] initializer for x728
+# 2203| getExpr(): [ConstructorCall] call to String
+# 2203| Type = [VoidType] void
+# 2203| ValueCategory = prvalue
+# 2204| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2204| Type = [VoidType] void
+# 2204| ValueCategory = prvalue
+# 2204| getQualifier(): [VariableAccess] x728
+# 2204| Type = [Struct] String
+# 2204| ValueCategory = lvalue
+# 2204| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2204| Conversion = [BoolConversion] conversion to bool
+# 2204| Type = [BoolType] bool
+# 2204| Value = [CStyleCast] 0
+# 2204| ValueCategory = prvalue
+# 2205| getStmt(729): [DoStmt] do (...) ...
+# 2207| getCondition(): [Literal] 0
+# 2207| Type = [IntType] int
+# 2207| Value = [Literal] 0
+# 2207| ValueCategory = prvalue
+# 2205| getStmt(): [BlockStmt] { ... }
+# 2206| getStmt(0): [DeclStmt] declaration
+# 2206| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x729
+# 2206| Type = [Struct] String
+# 2206| getVariable().getInitializer(): [Initializer] initializer for x729
+# 2206| getExpr(): [ConstructorCall] call to String
+# 2206| Type = [VoidType] void
+# 2206| ValueCategory = prvalue
+# 2207| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2207| Type = [VoidType] void
+# 2207| ValueCategory = prvalue
+# 2207| getQualifier(): [VariableAccess] x729
+# 2207| Type = [Struct] String
+# 2207| ValueCategory = lvalue
+# 2207| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2207| Conversion = [BoolConversion] conversion to bool
+# 2207| Type = [BoolType] bool
+# 2207| Value = [CStyleCast] 0
+# 2207| ValueCategory = prvalue
+# 2208| getStmt(730): [DoStmt] do (...) ...
+# 2210| getCondition(): [Literal] 0
+# 2210| Type = [IntType] int
+# 2210| Value = [Literal] 0
+# 2210| ValueCategory = prvalue
+# 2208| getStmt(): [BlockStmt] { ... }
+# 2209| getStmt(0): [DeclStmt] declaration
+# 2209| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x730
+# 2209| Type = [Struct] String
+# 2209| getVariable().getInitializer(): [Initializer] initializer for x730
+# 2209| getExpr(): [ConstructorCall] call to String
+# 2209| Type = [VoidType] void
+# 2209| ValueCategory = prvalue
+# 2210| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2210| Type = [VoidType] void
+# 2210| ValueCategory = prvalue
+# 2210| getQualifier(): [VariableAccess] x730
+# 2210| Type = [Struct] String
+# 2210| ValueCategory = lvalue
+# 2210| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2210| Conversion = [BoolConversion] conversion to bool
+# 2210| Type = [BoolType] bool
+# 2210| Value = [CStyleCast] 0
+# 2210| ValueCategory = prvalue
+# 2211| getStmt(731): [DoStmt] do (...) ...
+# 2213| getCondition(): [Literal] 0
+# 2213| Type = [IntType] int
+# 2213| Value = [Literal] 0
+# 2213| ValueCategory = prvalue
+# 2211| getStmt(): [BlockStmt] { ... }
+# 2212| getStmt(0): [DeclStmt] declaration
+# 2212| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x731
+# 2212| Type = [Struct] String
+# 2212| getVariable().getInitializer(): [Initializer] initializer for x731
+# 2212| getExpr(): [ConstructorCall] call to String
+# 2212| Type = [VoidType] void
+# 2212| ValueCategory = prvalue
+# 2213| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2213| Type = [VoidType] void
+# 2213| ValueCategory = prvalue
+# 2213| getQualifier(): [VariableAccess] x731
+# 2213| Type = [Struct] String
+# 2213| ValueCategory = lvalue
+# 2213| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2213| Conversion = [BoolConversion] conversion to bool
+# 2213| Type = [BoolType] bool
+# 2213| Value = [CStyleCast] 0
+# 2213| ValueCategory = prvalue
+# 2214| getStmt(732): [DoStmt] do (...) ...
+# 2216| getCondition(): [Literal] 0
+# 2216| Type = [IntType] int
+# 2216| Value = [Literal] 0
+# 2216| ValueCategory = prvalue
+# 2214| getStmt(): [BlockStmt] { ... }
+# 2215| getStmt(0): [DeclStmt] declaration
+# 2215| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x732
+# 2215| Type = [Struct] String
+# 2215| getVariable().getInitializer(): [Initializer] initializer for x732
+# 2215| getExpr(): [ConstructorCall] call to String
+# 2215| Type = [VoidType] void
+# 2215| ValueCategory = prvalue
+# 2216| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2216| Type = [VoidType] void
+# 2216| ValueCategory = prvalue
+# 2216| getQualifier(): [VariableAccess] x732
+# 2216| Type = [Struct] String
+# 2216| ValueCategory = lvalue
+# 2216| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2216| Conversion = [BoolConversion] conversion to bool
+# 2216| Type = [BoolType] bool
+# 2216| Value = [CStyleCast] 0
+# 2216| ValueCategory = prvalue
+# 2217| getStmt(733): [DoStmt] do (...) ...
+# 2219| getCondition(): [Literal] 0
+# 2219| Type = [IntType] int
+# 2219| Value = [Literal] 0
+# 2219| ValueCategory = prvalue
+# 2217| getStmt(): [BlockStmt] { ... }
+# 2218| getStmt(0): [DeclStmt] declaration
+# 2218| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x733
+# 2218| Type = [Struct] String
+# 2218| getVariable().getInitializer(): [Initializer] initializer for x733
+# 2218| getExpr(): [ConstructorCall] call to String
+# 2218| Type = [VoidType] void
+# 2218| ValueCategory = prvalue
+# 2219| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2219| Type = [VoidType] void
+# 2219| ValueCategory = prvalue
+# 2219| getQualifier(): [VariableAccess] x733
+# 2219| Type = [Struct] String
+# 2219| ValueCategory = lvalue
+# 2219| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2219| Conversion = [BoolConversion] conversion to bool
+# 2219| Type = [BoolType] bool
+# 2219| Value = [CStyleCast] 0
+# 2219| ValueCategory = prvalue
+# 2220| getStmt(734): [DoStmt] do (...) ...
+# 2222| getCondition(): [Literal] 0
+# 2222| Type = [IntType] int
+# 2222| Value = [Literal] 0
+# 2222| ValueCategory = prvalue
+# 2220| getStmt(): [BlockStmt] { ... }
+# 2221| getStmt(0): [DeclStmt] declaration
+# 2221| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x734
+# 2221| Type = [Struct] String
+# 2221| getVariable().getInitializer(): [Initializer] initializer for x734
+# 2221| getExpr(): [ConstructorCall] call to String
+# 2221| Type = [VoidType] void
+# 2221| ValueCategory = prvalue
+# 2222| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2222| Type = [VoidType] void
+# 2222| ValueCategory = prvalue
+# 2222| getQualifier(): [VariableAccess] x734
+# 2222| Type = [Struct] String
+# 2222| ValueCategory = lvalue
+# 2222| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2222| Conversion = [BoolConversion] conversion to bool
+# 2222| Type = [BoolType] bool
+# 2222| Value = [CStyleCast] 0
+# 2222| ValueCategory = prvalue
+# 2223| getStmt(735): [DoStmt] do (...) ...
+# 2225| getCondition(): [Literal] 0
+# 2225| Type = [IntType] int
+# 2225| Value = [Literal] 0
+# 2225| ValueCategory = prvalue
+# 2223| getStmt(): [BlockStmt] { ... }
+# 2224| getStmt(0): [DeclStmt] declaration
+# 2224| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x735
+# 2224| Type = [Struct] String
+# 2224| getVariable().getInitializer(): [Initializer] initializer for x735
+# 2224| getExpr(): [ConstructorCall] call to String
+# 2224| Type = [VoidType] void
+# 2224| ValueCategory = prvalue
+# 2225| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2225| Type = [VoidType] void
+# 2225| ValueCategory = prvalue
+# 2225| getQualifier(): [VariableAccess] x735
+# 2225| Type = [Struct] String
+# 2225| ValueCategory = lvalue
+# 2225| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2225| Conversion = [BoolConversion] conversion to bool
+# 2225| Type = [BoolType] bool
+# 2225| Value = [CStyleCast] 0
+# 2225| ValueCategory = prvalue
+# 2226| getStmt(736): [DoStmt] do (...) ...
+# 2228| getCondition(): [Literal] 0
+# 2228| Type = [IntType] int
+# 2228| Value = [Literal] 0
+# 2228| ValueCategory = prvalue
+# 2226| getStmt(): [BlockStmt] { ... }
+# 2227| getStmt(0): [DeclStmt] declaration
+# 2227| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x736
+# 2227| Type = [Struct] String
+# 2227| getVariable().getInitializer(): [Initializer] initializer for x736
+# 2227| getExpr(): [ConstructorCall] call to String
+# 2227| Type = [VoidType] void
+# 2227| ValueCategory = prvalue
+# 2228| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2228| Type = [VoidType] void
+# 2228| ValueCategory = prvalue
+# 2228| getQualifier(): [VariableAccess] x736
+# 2228| Type = [Struct] String
+# 2228| ValueCategory = lvalue
+# 2228| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2228| Conversion = [BoolConversion] conversion to bool
+# 2228| Type = [BoolType] bool
+# 2228| Value = [CStyleCast] 0
+# 2228| ValueCategory = prvalue
+# 2229| getStmt(737): [DoStmt] do (...) ...
+# 2231| getCondition(): [Literal] 0
+# 2231| Type = [IntType] int
+# 2231| Value = [Literal] 0
+# 2231| ValueCategory = prvalue
+# 2229| getStmt(): [BlockStmt] { ... }
+# 2230| getStmt(0): [DeclStmt] declaration
+# 2230| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x737
+# 2230| Type = [Struct] String
+# 2230| getVariable().getInitializer(): [Initializer] initializer for x737
+# 2230| getExpr(): [ConstructorCall] call to String
+# 2230| Type = [VoidType] void
+# 2230| ValueCategory = prvalue
+# 2231| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2231| Type = [VoidType] void
+# 2231| ValueCategory = prvalue
+# 2231| getQualifier(): [VariableAccess] x737
+# 2231| Type = [Struct] String
+# 2231| ValueCategory = lvalue
+# 2231| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2231| Conversion = [BoolConversion] conversion to bool
+# 2231| Type = [BoolType] bool
+# 2231| Value = [CStyleCast] 0
+# 2231| ValueCategory = prvalue
+# 2232| getStmt(738): [DoStmt] do (...) ...
+# 2234| getCondition(): [Literal] 0
+# 2234| Type = [IntType] int
+# 2234| Value = [Literal] 0
+# 2234| ValueCategory = prvalue
+# 2232| getStmt(): [BlockStmt] { ... }
+# 2233| getStmt(0): [DeclStmt] declaration
+# 2233| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x738
+# 2233| Type = [Struct] String
+# 2233| getVariable().getInitializer(): [Initializer] initializer for x738
+# 2233| getExpr(): [ConstructorCall] call to String
+# 2233| Type = [VoidType] void
+# 2233| ValueCategory = prvalue
+# 2234| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2234| Type = [VoidType] void
+# 2234| ValueCategory = prvalue
+# 2234| getQualifier(): [VariableAccess] x738
+# 2234| Type = [Struct] String
+# 2234| ValueCategory = lvalue
+# 2234| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2234| Conversion = [BoolConversion] conversion to bool
+# 2234| Type = [BoolType] bool
+# 2234| Value = [CStyleCast] 0
+# 2234| ValueCategory = prvalue
+# 2235| getStmt(739): [DoStmt] do (...) ...
+# 2237| getCondition(): [Literal] 0
+# 2237| Type = [IntType] int
+# 2237| Value = [Literal] 0
+# 2237| ValueCategory = prvalue
+# 2235| getStmt(): [BlockStmt] { ... }
+# 2236| getStmt(0): [DeclStmt] declaration
+# 2236| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x739
+# 2236| Type = [Struct] String
+# 2236| getVariable().getInitializer(): [Initializer] initializer for x739
+# 2236| getExpr(): [ConstructorCall] call to String
+# 2236| Type = [VoidType] void
+# 2236| ValueCategory = prvalue
+# 2237| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2237| Type = [VoidType] void
+# 2237| ValueCategory = prvalue
+# 2237| getQualifier(): [VariableAccess] x739
+# 2237| Type = [Struct] String
+# 2237| ValueCategory = lvalue
+# 2237| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2237| Conversion = [BoolConversion] conversion to bool
+# 2237| Type = [BoolType] bool
+# 2237| Value = [CStyleCast] 0
+# 2237| ValueCategory = prvalue
+# 2238| getStmt(740): [DoStmt] do (...) ...
+# 2240| getCondition(): [Literal] 0
+# 2240| Type = [IntType] int
+# 2240| Value = [Literal] 0
+# 2240| ValueCategory = prvalue
+# 2238| getStmt(): [BlockStmt] { ... }
+# 2239| getStmt(0): [DeclStmt] declaration
+# 2239| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x740
+# 2239| Type = [Struct] String
+# 2239| getVariable().getInitializer(): [Initializer] initializer for x740
+# 2239| getExpr(): [ConstructorCall] call to String
+# 2239| Type = [VoidType] void
+# 2239| ValueCategory = prvalue
+# 2240| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2240| Type = [VoidType] void
+# 2240| ValueCategory = prvalue
+# 2240| getQualifier(): [VariableAccess] x740
+# 2240| Type = [Struct] String
+# 2240| ValueCategory = lvalue
+# 2240| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2240| Conversion = [BoolConversion] conversion to bool
+# 2240| Type = [BoolType] bool
+# 2240| Value = [CStyleCast] 0
+# 2240| ValueCategory = prvalue
+# 2241| getStmt(741): [DoStmt] do (...) ...
+# 2243| getCondition(): [Literal] 0
+# 2243| Type = [IntType] int
+# 2243| Value = [Literal] 0
+# 2243| ValueCategory = prvalue
+# 2241| getStmt(): [BlockStmt] { ... }
+# 2242| getStmt(0): [DeclStmt] declaration
+# 2242| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x741
+# 2242| Type = [Struct] String
+# 2242| getVariable().getInitializer(): [Initializer] initializer for x741
+# 2242| getExpr(): [ConstructorCall] call to String
+# 2242| Type = [VoidType] void
+# 2242| ValueCategory = prvalue
+# 2243| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2243| Type = [VoidType] void
+# 2243| ValueCategory = prvalue
+# 2243| getQualifier(): [VariableAccess] x741
+# 2243| Type = [Struct] String
+# 2243| ValueCategory = lvalue
+# 2243| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2243| Conversion = [BoolConversion] conversion to bool
+# 2243| Type = [BoolType] bool
+# 2243| Value = [CStyleCast] 0
+# 2243| ValueCategory = prvalue
+# 2244| getStmt(742): [DoStmt] do (...) ...
+# 2246| getCondition(): [Literal] 0
+# 2246| Type = [IntType] int
+# 2246| Value = [Literal] 0
+# 2246| ValueCategory = prvalue
+# 2244| getStmt(): [BlockStmt] { ... }
+# 2245| getStmt(0): [DeclStmt] declaration
+# 2245| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x742
+# 2245| Type = [Struct] String
+# 2245| getVariable().getInitializer(): [Initializer] initializer for x742
+# 2245| getExpr(): [ConstructorCall] call to String
+# 2245| Type = [VoidType] void
+# 2245| ValueCategory = prvalue
+# 2246| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2246| Type = [VoidType] void
+# 2246| ValueCategory = prvalue
+# 2246| getQualifier(): [VariableAccess] x742
+# 2246| Type = [Struct] String
+# 2246| ValueCategory = lvalue
+# 2246| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2246| Conversion = [BoolConversion] conversion to bool
+# 2246| Type = [BoolType] bool
+# 2246| Value = [CStyleCast] 0
+# 2246| ValueCategory = prvalue
+# 2247| getStmt(743): [DoStmt] do (...) ...
+# 2249| getCondition(): [Literal] 0
+# 2249| Type = [IntType] int
+# 2249| Value = [Literal] 0
+# 2249| ValueCategory = prvalue
+# 2247| getStmt(): [BlockStmt] { ... }
+# 2248| getStmt(0): [DeclStmt] declaration
+# 2248| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x743
+# 2248| Type = [Struct] String
+# 2248| getVariable().getInitializer(): [Initializer] initializer for x743
+# 2248| getExpr(): [ConstructorCall] call to String
+# 2248| Type = [VoidType] void
+# 2248| ValueCategory = prvalue
+# 2249| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2249| Type = [VoidType] void
+# 2249| ValueCategory = prvalue
+# 2249| getQualifier(): [VariableAccess] x743
+# 2249| Type = [Struct] String
+# 2249| ValueCategory = lvalue
+# 2249| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2249| Conversion = [BoolConversion] conversion to bool
+# 2249| Type = [BoolType] bool
+# 2249| Value = [CStyleCast] 0
+# 2249| ValueCategory = prvalue
+# 2250| getStmt(744): [DoStmt] do (...) ...
+# 2252| getCondition(): [Literal] 0
+# 2252| Type = [IntType] int
+# 2252| Value = [Literal] 0
+# 2252| ValueCategory = prvalue
+# 2250| getStmt(): [BlockStmt] { ... }
+# 2251| getStmt(0): [DeclStmt] declaration
+# 2251| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x744
+# 2251| Type = [Struct] String
+# 2251| getVariable().getInitializer(): [Initializer] initializer for x744
+# 2251| getExpr(): [ConstructorCall] call to String
+# 2251| Type = [VoidType] void
+# 2251| ValueCategory = prvalue
+# 2252| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2252| Type = [VoidType] void
+# 2252| ValueCategory = prvalue
+# 2252| getQualifier(): [VariableAccess] x744
+# 2252| Type = [Struct] String
+# 2252| ValueCategory = lvalue
+# 2252| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2252| Conversion = [BoolConversion] conversion to bool
+# 2252| Type = [BoolType] bool
+# 2252| Value = [CStyleCast] 0
+# 2252| ValueCategory = prvalue
+# 2253| getStmt(745): [DoStmt] do (...) ...
+# 2255| getCondition(): [Literal] 0
+# 2255| Type = [IntType] int
+# 2255| Value = [Literal] 0
+# 2255| ValueCategory = prvalue
+# 2253| getStmt(): [BlockStmt] { ... }
+# 2254| getStmt(0): [DeclStmt] declaration
+# 2254| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x745
+# 2254| Type = [Struct] String
+# 2254| getVariable().getInitializer(): [Initializer] initializer for x745
+# 2254| getExpr(): [ConstructorCall] call to String
+# 2254| Type = [VoidType] void
+# 2254| ValueCategory = prvalue
+# 2255| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2255| Type = [VoidType] void
+# 2255| ValueCategory = prvalue
+# 2255| getQualifier(): [VariableAccess] x745
+# 2255| Type = [Struct] String
+# 2255| ValueCategory = lvalue
+# 2255| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2255| Conversion = [BoolConversion] conversion to bool
+# 2255| Type = [BoolType] bool
+# 2255| Value = [CStyleCast] 0
+# 2255| ValueCategory = prvalue
+# 2256| getStmt(746): [DoStmt] do (...) ...
+# 2258| getCondition(): [Literal] 0
+# 2258| Type = [IntType] int
+# 2258| Value = [Literal] 0
+# 2258| ValueCategory = prvalue
+# 2256| getStmt(): [BlockStmt] { ... }
+# 2257| getStmt(0): [DeclStmt] declaration
+# 2257| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x746
+# 2257| Type = [Struct] String
+# 2257| getVariable().getInitializer(): [Initializer] initializer for x746
+# 2257| getExpr(): [ConstructorCall] call to String
+# 2257| Type = [VoidType] void
+# 2257| ValueCategory = prvalue
+# 2258| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2258| Type = [VoidType] void
+# 2258| ValueCategory = prvalue
+# 2258| getQualifier(): [VariableAccess] x746
+# 2258| Type = [Struct] String
+# 2258| ValueCategory = lvalue
+# 2258| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2258| Conversion = [BoolConversion] conversion to bool
+# 2258| Type = [BoolType] bool
+# 2258| Value = [CStyleCast] 0
+# 2258| ValueCategory = prvalue
+# 2259| getStmt(747): [DoStmt] do (...) ...
+# 2261| getCondition(): [Literal] 0
+# 2261| Type = [IntType] int
+# 2261| Value = [Literal] 0
+# 2261| ValueCategory = prvalue
+# 2259| getStmt(): [BlockStmt] { ... }
+# 2260| getStmt(0): [DeclStmt] declaration
+# 2260| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x747
+# 2260| Type = [Struct] String
+# 2260| getVariable().getInitializer(): [Initializer] initializer for x747
+# 2260| getExpr(): [ConstructorCall] call to String
+# 2260| Type = [VoidType] void
+# 2260| ValueCategory = prvalue
+# 2261| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2261| Type = [VoidType] void
+# 2261| ValueCategory = prvalue
+# 2261| getQualifier(): [VariableAccess] x747
+# 2261| Type = [Struct] String
+# 2261| ValueCategory = lvalue
+# 2261| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2261| Conversion = [BoolConversion] conversion to bool
+# 2261| Type = [BoolType] bool
+# 2261| Value = [CStyleCast] 0
+# 2261| ValueCategory = prvalue
+# 2262| getStmt(748): [DoStmt] do (...) ...
+# 2264| getCondition(): [Literal] 0
+# 2264| Type = [IntType] int
+# 2264| Value = [Literal] 0
+# 2264| ValueCategory = prvalue
+# 2262| getStmt(): [BlockStmt] { ... }
+# 2263| getStmt(0): [DeclStmt] declaration
+# 2263| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x748
+# 2263| Type = [Struct] String
+# 2263| getVariable().getInitializer(): [Initializer] initializer for x748
+# 2263| getExpr(): [ConstructorCall] call to String
+# 2263| Type = [VoidType] void
+# 2263| ValueCategory = prvalue
+# 2264| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2264| Type = [VoidType] void
+# 2264| ValueCategory = prvalue
+# 2264| getQualifier(): [VariableAccess] x748
+# 2264| Type = [Struct] String
+# 2264| ValueCategory = lvalue
+# 2264| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2264| Conversion = [BoolConversion] conversion to bool
+# 2264| Type = [BoolType] bool
+# 2264| Value = [CStyleCast] 0
+# 2264| ValueCategory = prvalue
+# 2265| getStmt(749): [DoStmt] do (...) ...
+# 2267| getCondition(): [Literal] 0
+# 2267| Type = [IntType] int
+# 2267| Value = [Literal] 0
+# 2267| ValueCategory = prvalue
+# 2265| getStmt(): [BlockStmt] { ... }
+# 2266| getStmt(0): [DeclStmt] declaration
+# 2266| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x749
+# 2266| Type = [Struct] String
+# 2266| getVariable().getInitializer(): [Initializer] initializer for x749
+# 2266| getExpr(): [ConstructorCall] call to String
+# 2266| Type = [VoidType] void
+# 2266| ValueCategory = prvalue
+# 2267| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2267| Type = [VoidType] void
+# 2267| ValueCategory = prvalue
+# 2267| getQualifier(): [VariableAccess] x749
+# 2267| Type = [Struct] String
+# 2267| ValueCategory = lvalue
+# 2267| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2267| Conversion = [BoolConversion] conversion to bool
+# 2267| Type = [BoolType] bool
+# 2267| Value = [CStyleCast] 0
+# 2267| ValueCategory = prvalue
+# 2268| getStmt(750): [DoStmt] do (...) ...
+# 2270| getCondition(): [Literal] 0
+# 2270| Type = [IntType] int
+# 2270| Value = [Literal] 0
+# 2270| ValueCategory = prvalue
+# 2268| getStmt(): [BlockStmt] { ... }
+# 2269| getStmt(0): [DeclStmt] declaration
+# 2269| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x750
+# 2269| Type = [Struct] String
+# 2269| getVariable().getInitializer(): [Initializer] initializer for x750
+# 2269| getExpr(): [ConstructorCall] call to String
+# 2269| Type = [VoidType] void
+# 2269| ValueCategory = prvalue
+# 2270| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2270| Type = [VoidType] void
+# 2270| ValueCategory = prvalue
+# 2270| getQualifier(): [VariableAccess] x750
+# 2270| Type = [Struct] String
+# 2270| ValueCategory = lvalue
+# 2270| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2270| Conversion = [BoolConversion] conversion to bool
+# 2270| Type = [BoolType] bool
+# 2270| Value = [CStyleCast] 0
+# 2270| ValueCategory = prvalue
+# 2271| getStmt(751): [DoStmt] do (...) ...
+# 2273| getCondition(): [Literal] 0
+# 2273| Type = [IntType] int
+# 2273| Value = [Literal] 0
+# 2273| ValueCategory = prvalue
+# 2271| getStmt(): [BlockStmt] { ... }
+# 2272| getStmt(0): [DeclStmt] declaration
+# 2272| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x751
+# 2272| Type = [Struct] String
+# 2272| getVariable().getInitializer(): [Initializer] initializer for x751
+# 2272| getExpr(): [ConstructorCall] call to String
+# 2272| Type = [VoidType] void
+# 2272| ValueCategory = prvalue
+# 2273| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2273| Type = [VoidType] void
+# 2273| ValueCategory = prvalue
+# 2273| getQualifier(): [VariableAccess] x751
+# 2273| Type = [Struct] String
+# 2273| ValueCategory = lvalue
+# 2273| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2273| Conversion = [BoolConversion] conversion to bool
+# 2273| Type = [BoolType] bool
+# 2273| Value = [CStyleCast] 0
+# 2273| ValueCategory = prvalue
+# 2274| getStmt(752): [DoStmt] do (...) ...
+# 2276| getCondition(): [Literal] 0
+# 2276| Type = [IntType] int
+# 2276| Value = [Literal] 0
+# 2276| ValueCategory = prvalue
+# 2274| getStmt(): [BlockStmt] { ... }
+# 2275| getStmt(0): [DeclStmt] declaration
+# 2275| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x752
+# 2275| Type = [Struct] String
+# 2275| getVariable().getInitializer(): [Initializer] initializer for x752
+# 2275| getExpr(): [ConstructorCall] call to String
+# 2275| Type = [VoidType] void
+# 2275| ValueCategory = prvalue
+# 2276| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2276| Type = [VoidType] void
+# 2276| ValueCategory = prvalue
+# 2276| getQualifier(): [VariableAccess] x752
+# 2276| Type = [Struct] String
+# 2276| ValueCategory = lvalue
+# 2276| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2276| Conversion = [BoolConversion] conversion to bool
+# 2276| Type = [BoolType] bool
+# 2276| Value = [CStyleCast] 0
+# 2276| ValueCategory = prvalue
+# 2277| getStmt(753): [DoStmt] do (...) ...
+# 2279| getCondition(): [Literal] 0
+# 2279| Type = [IntType] int
+# 2279| Value = [Literal] 0
+# 2279| ValueCategory = prvalue
+# 2277| getStmt(): [BlockStmt] { ... }
+# 2278| getStmt(0): [DeclStmt] declaration
+# 2278| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x753
+# 2278| Type = [Struct] String
+# 2278| getVariable().getInitializer(): [Initializer] initializer for x753
+# 2278| getExpr(): [ConstructorCall] call to String
+# 2278| Type = [VoidType] void
+# 2278| ValueCategory = prvalue
+# 2279| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2279| Type = [VoidType] void
+# 2279| ValueCategory = prvalue
+# 2279| getQualifier(): [VariableAccess] x753
+# 2279| Type = [Struct] String
+# 2279| ValueCategory = lvalue
+# 2279| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2279| Conversion = [BoolConversion] conversion to bool
+# 2279| Type = [BoolType] bool
+# 2279| Value = [CStyleCast] 0
+# 2279| ValueCategory = prvalue
+# 2280| getStmt(754): [DoStmt] do (...) ...
+# 2282| getCondition(): [Literal] 0
+# 2282| Type = [IntType] int
+# 2282| Value = [Literal] 0
+# 2282| ValueCategory = prvalue
+# 2280| getStmt(): [BlockStmt] { ... }
+# 2281| getStmt(0): [DeclStmt] declaration
+# 2281| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x754
+# 2281| Type = [Struct] String
+# 2281| getVariable().getInitializer(): [Initializer] initializer for x754
+# 2281| getExpr(): [ConstructorCall] call to String
+# 2281| Type = [VoidType] void
+# 2281| ValueCategory = prvalue
+# 2282| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2282| Type = [VoidType] void
+# 2282| ValueCategory = prvalue
+# 2282| getQualifier(): [VariableAccess] x754
+# 2282| Type = [Struct] String
+# 2282| ValueCategory = lvalue
+# 2282| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2282| Conversion = [BoolConversion] conversion to bool
+# 2282| Type = [BoolType] bool
+# 2282| Value = [CStyleCast] 0
+# 2282| ValueCategory = prvalue
+# 2283| getStmt(755): [DoStmt] do (...) ...
+# 2285| getCondition(): [Literal] 0
+# 2285| Type = [IntType] int
+# 2285| Value = [Literal] 0
+# 2285| ValueCategory = prvalue
+# 2283| getStmt(): [BlockStmt] { ... }
+# 2284| getStmt(0): [DeclStmt] declaration
+# 2284| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x755
+# 2284| Type = [Struct] String
+# 2284| getVariable().getInitializer(): [Initializer] initializer for x755
+# 2284| getExpr(): [ConstructorCall] call to String
+# 2284| Type = [VoidType] void
+# 2284| ValueCategory = prvalue
+# 2285| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2285| Type = [VoidType] void
+# 2285| ValueCategory = prvalue
+# 2285| getQualifier(): [VariableAccess] x755
+# 2285| Type = [Struct] String
+# 2285| ValueCategory = lvalue
+# 2285| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2285| Conversion = [BoolConversion] conversion to bool
+# 2285| Type = [BoolType] bool
+# 2285| Value = [CStyleCast] 0
+# 2285| ValueCategory = prvalue
+# 2286| getStmt(756): [DoStmt] do (...) ...
+# 2288| getCondition(): [Literal] 0
+# 2288| Type = [IntType] int
+# 2288| Value = [Literal] 0
+# 2288| ValueCategory = prvalue
+# 2286| getStmt(): [BlockStmt] { ... }
+# 2287| getStmt(0): [DeclStmt] declaration
+# 2287| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x756
+# 2287| Type = [Struct] String
+# 2287| getVariable().getInitializer(): [Initializer] initializer for x756
+# 2287| getExpr(): [ConstructorCall] call to String
+# 2287| Type = [VoidType] void
+# 2287| ValueCategory = prvalue
+# 2288| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2288| Type = [VoidType] void
+# 2288| ValueCategory = prvalue
+# 2288| getQualifier(): [VariableAccess] x756
+# 2288| Type = [Struct] String
+# 2288| ValueCategory = lvalue
+# 2288| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2288| Conversion = [BoolConversion] conversion to bool
+# 2288| Type = [BoolType] bool
+# 2288| Value = [CStyleCast] 0
+# 2288| ValueCategory = prvalue
+# 2289| getStmt(757): [DoStmt] do (...) ...
+# 2291| getCondition(): [Literal] 0
+# 2291| Type = [IntType] int
+# 2291| Value = [Literal] 0
+# 2291| ValueCategory = prvalue
+# 2289| getStmt(): [BlockStmt] { ... }
+# 2290| getStmt(0): [DeclStmt] declaration
+# 2290| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x757
+# 2290| Type = [Struct] String
+# 2290| getVariable().getInitializer(): [Initializer] initializer for x757
+# 2290| getExpr(): [ConstructorCall] call to String
+# 2290| Type = [VoidType] void
+# 2290| ValueCategory = prvalue
+# 2291| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2291| Type = [VoidType] void
+# 2291| ValueCategory = prvalue
+# 2291| getQualifier(): [VariableAccess] x757
+# 2291| Type = [Struct] String
+# 2291| ValueCategory = lvalue
+# 2291| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2291| Conversion = [BoolConversion] conversion to bool
+# 2291| Type = [BoolType] bool
+# 2291| Value = [CStyleCast] 0
+# 2291| ValueCategory = prvalue
+# 2292| getStmt(758): [DoStmt] do (...) ...
+# 2294| getCondition(): [Literal] 0
+# 2294| Type = [IntType] int
+# 2294| Value = [Literal] 0
+# 2294| ValueCategory = prvalue
+# 2292| getStmt(): [BlockStmt] { ... }
+# 2293| getStmt(0): [DeclStmt] declaration
+# 2293| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x758
+# 2293| Type = [Struct] String
+# 2293| getVariable().getInitializer(): [Initializer] initializer for x758
+# 2293| getExpr(): [ConstructorCall] call to String
+# 2293| Type = [VoidType] void
+# 2293| ValueCategory = prvalue
+# 2294| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2294| Type = [VoidType] void
+# 2294| ValueCategory = prvalue
+# 2294| getQualifier(): [VariableAccess] x758
+# 2294| Type = [Struct] String
+# 2294| ValueCategory = lvalue
+# 2294| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2294| Conversion = [BoolConversion] conversion to bool
+# 2294| Type = [BoolType] bool
+# 2294| Value = [CStyleCast] 0
+# 2294| ValueCategory = prvalue
+# 2295| getStmt(759): [DoStmt] do (...) ...
+# 2297| getCondition(): [Literal] 0
+# 2297| Type = [IntType] int
+# 2297| Value = [Literal] 0
+# 2297| ValueCategory = prvalue
+# 2295| getStmt(): [BlockStmt] { ... }
+# 2296| getStmt(0): [DeclStmt] declaration
+# 2296| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x759
+# 2296| Type = [Struct] String
+# 2296| getVariable().getInitializer(): [Initializer] initializer for x759
+# 2296| getExpr(): [ConstructorCall] call to String
+# 2296| Type = [VoidType] void
+# 2296| ValueCategory = prvalue
+# 2297| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2297| Type = [VoidType] void
+# 2297| ValueCategory = prvalue
+# 2297| getQualifier(): [VariableAccess] x759
+# 2297| Type = [Struct] String
+# 2297| ValueCategory = lvalue
+# 2297| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2297| Conversion = [BoolConversion] conversion to bool
+# 2297| Type = [BoolType] bool
+# 2297| Value = [CStyleCast] 0
+# 2297| ValueCategory = prvalue
+# 2298| getStmt(760): [DoStmt] do (...) ...
+# 2300| getCondition(): [Literal] 0
+# 2300| Type = [IntType] int
+# 2300| Value = [Literal] 0
+# 2300| ValueCategory = prvalue
+# 2298| getStmt(): [BlockStmt] { ... }
+# 2299| getStmt(0): [DeclStmt] declaration
+# 2299| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x760
+# 2299| Type = [Struct] String
+# 2299| getVariable().getInitializer(): [Initializer] initializer for x760
+# 2299| getExpr(): [ConstructorCall] call to String
+# 2299| Type = [VoidType] void
+# 2299| ValueCategory = prvalue
+# 2300| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2300| Type = [VoidType] void
+# 2300| ValueCategory = prvalue
+# 2300| getQualifier(): [VariableAccess] x760
+# 2300| Type = [Struct] String
+# 2300| ValueCategory = lvalue
+# 2300| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2300| Conversion = [BoolConversion] conversion to bool
+# 2300| Type = [BoolType] bool
+# 2300| Value = [CStyleCast] 0
+# 2300| ValueCategory = prvalue
+# 2301| getStmt(761): [DoStmt] do (...) ...
+# 2303| getCondition(): [Literal] 0
+# 2303| Type = [IntType] int
+# 2303| Value = [Literal] 0
+# 2303| ValueCategory = prvalue
+# 2301| getStmt(): [BlockStmt] { ... }
+# 2302| getStmt(0): [DeclStmt] declaration
+# 2302| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x761
+# 2302| Type = [Struct] String
+# 2302| getVariable().getInitializer(): [Initializer] initializer for x761
+# 2302| getExpr(): [ConstructorCall] call to String
+# 2302| Type = [VoidType] void
+# 2302| ValueCategory = prvalue
+# 2303| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2303| Type = [VoidType] void
+# 2303| ValueCategory = prvalue
+# 2303| getQualifier(): [VariableAccess] x761
+# 2303| Type = [Struct] String
+# 2303| ValueCategory = lvalue
+# 2303| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2303| Conversion = [BoolConversion] conversion to bool
+# 2303| Type = [BoolType] bool
+# 2303| Value = [CStyleCast] 0
+# 2303| ValueCategory = prvalue
+# 2304| getStmt(762): [DoStmt] do (...) ...
+# 2306| getCondition(): [Literal] 0
+# 2306| Type = [IntType] int
+# 2306| Value = [Literal] 0
+# 2306| ValueCategory = prvalue
+# 2304| getStmt(): [BlockStmt] { ... }
+# 2305| getStmt(0): [DeclStmt] declaration
+# 2305| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x762
+# 2305| Type = [Struct] String
+# 2305| getVariable().getInitializer(): [Initializer] initializer for x762
+# 2305| getExpr(): [ConstructorCall] call to String
+# 2305| Type = [VoidType] void
+# 2305| ValueCategory = prvalue
+# 2306| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2306| Type = [VoidType] void
+# 2306| ValueCategory = prvalue
+# 2306| getQualifier(): [VariableAccess] x762
+# 2306| Type = [Struct] String
+# 2306| ValueCategory = lvalue
+# 2306| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2306| Conversion = [BoolConversion] conversion to bool
+# 2306| Type = [BoolType] bool
+# 2306| Value = [CStyleCast] 0
+# 2306| ValueCategory = prvalue
+# 2307| getStmt(763): [DoStmt] do (...) ...
+# 2309| getCondition(): [Literal] 0
+# 2309| Type = [IntType] int
+# 2309| Value = [Literal] 0
+# 2309| ValueCategory = prvalue
+# 2307| getStmt(): [BlockStmt] { ... }
+# 2308| getStmt(0): [DeclStmt] declaration
+# 2308| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x763
+# 2308| Type = [Struct] String
+# 2308| getVariable().getInitializer(): [Initializer] initializer for x763
+# 2308| getExpr(): [ConstructorCall] call to String
+# 2308| Type = [VoidType] void
+# 2308| ValueCategory = prvalue
+# 2309| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2309| Type = [VoidType] void
+# 2309| ValueCategory = prvalue
+# 2309| getQualifier(): [VariableAccess] x763
+# 2309| Type = [Struct] String
+# 2309| ValueCategory = lvalue
+# 2309| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2309| Conversion = [BoolConversion] conversion to bool
+# 2309| Type = [BoolType] bool
+# 2309| Value = [CStyleCast] 0
+# 2309| ValueCategory = prvalue
+# 2310| getStmt(764): [DoStmt] do (...) ...
+# 2312| getCondition(): [Literal] 0
+# 2312| Type = [IntType] int
+# 2312| Value = [Literal] 0
+# 2312| ValueCategory = prvalue
+# 2310| getStmt(): [BlockStmt] { ... }
+# 2311| getStmt(0): [DeclStmt] declaration
+# 2311| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x764
+# 2311| Type = [Struct] String
+# 2311| getVariable().getInitializer(): [Initializer] initializer for x764
+# 2311| getExpr(): [ConstructorCall] call to String
+# 2311| Type = [VoidType] void
+# 2311| ValueCategory = prvalue
+# 2312| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2312| Type = [VoidType] void
+# 2312| ValueCategory = prvalue
+# 2312| getQualifier(): [VariableAccess] x764
+# 2312| Type = [Struct] String
+# 2312| ValueCategory = lvalue
+# 2312| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2312| Conversion = [BoolConversion] conversion to bool
+# 2312| Type = [BoolType] bool
+# 2312| Value = [CStyleCast] 0
+# 2312| ValueCategory = prvalue
+# 2313| getStmt(765): [DoStmt] do (...) ...
+# 2315| getCondition(): [Literal] 0
+# 2315| Type = [IntType] int
+# 2315| Value = [Literal] 0
+# 2315| ValueCategory = prvalue
+# 2313| getStmt(): [BlockStmt] { ... }
+# 2314| getStmt(0): [DeclStmt] declaration
+# 2314| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x765
+# 2314| Type = [Struct] String
+# 2314| getVariable().getInitializer(): [Initializer] initializer for x765
+# 2314| getExpr(): [ConstructorCall] call to String
+# 2314| Type = [VoidType] void
+# 2314| ValueCategory = prvalue
+# 2315| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2315| Type = [VoidType] void
+# 2315| ValueCategory = prvalue
+# 2315| getQualifier(): [VariableAccess] x765
+# 2315| Type = [Struct] String
+# 2315| ValueCategory = lvalue
+# 2315| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2315| Conversion = [BoolConversion] conversion to bool
+# 2315| Type = [BoolType] bool
+# 2315| Value = [CStyleCast] 0
+# 2315| ValueCategory = prvalue
+# 2316| getStmt(766): [DoStmt] do (...) ...
+# 2318| getCondition(): [Literal] 0
+# 2318| Type = [IntType] int
+# 2318| Value = [Literal] 0
+# 2318| ValueCategory = prvalue
+# 2316| getStmt(): [BlockStmt] { ... }
+# 2317| getStmt(0): [DeclStmt] declaration
+# 2317| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x766
+# 2317| Type = [Struct] String
+# 2317| getVariable().getInitializer(): [Initializer] initializer for x766
+# 2317| getExpr(): [ConstructorCall] call to String
+# 2317| Type = [VoidType] void
+# 2317| ValueCategory = prvalue
+# 2318| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2318| Type = [VoidType] void
+# 2318| ValueCategory = prvalue
+# 2318| getQualifier(): [VariableAccess] x766
+# 2318| Type = [Struct] String
+# 2318| ValueCategory = lvalue
+# 2318| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2318| Conversion = [BoolConversion] conversion to bool
+# 2318| Type = [BoolType] bool
+# 2318| Value = [CStyleCast] 0
+# 2318| ValueCategory = prvalue
+# 2319| getStmt(767): [DoStmt] do (...) ...
+# 2321| getCondition(): [Literal] 0
+# 2321| Type = [IntType] int
+# 2321| Value = [Literal] 0
+# 2321| ValueCategory = prvalue
+# 2319| getStmt(): [BlockStmt] { ... }
+# 2320| getStmt(0): [DeclStmt] declaration
+# 2320| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x767
+# 2320| Type = [Struct] String
+# 2320| getVariable().getInitializer(): [Initializer] initializer for x767
+# 2320| getExpr(): [ConstructorCall] call to String
+# 2320| Type = [VoidType] void
+# 2320| ValueCategory = prvalue
+# 2321| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2321| Type = [VoidType] void
+# 2321| ValueCategory = prvalue
+# 2321| getQualifier(): [VariableAccess] x767
+# 2321| Type = [Struct] String
+# 2321| ValueCategory = lvalue
+# 2321| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2321| Conversion = [BoolConversion] conversion to bool
+# 2321| Type = [BoolType] bool
+# 2321| Value = [CStyleCast] 0
+# 2321| ValueCategory = prvalue
+# 2322| getStmt(768): [DoStmt] do (...) ...
+# 2324| getCondition(): [Literal] 0
+# 2324| Type = [IntType] int
+# 2324| Value = [Literal] 0
+# 2324| ValueCategory = prvalue
+# 2322| getStmt(): [BlockStmt] { ... }
+# 2323| getStmt(0): [DeclStmt] declaration
+# 2323| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x768
+# 2323| Type = [Struct] String
+# 2323| getVariable().getInitializer(): [Initializer] initializer for x768
+# 2323| getExpr(): [ConstructorCall] call to String
+# 2323| Type = [VoidType] void
+# 2323| ValueCategory = prvalue
+# 2324| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2324| Type = [VoidType] void
+# 2324| ValueCategory = prvalue
+# 2324| getQualifier(): [VariableAccess] x768
+# 2324| Type = [Struct] String
+# 2324| ValueCategory = lvalue
+# 2324| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2324| Conversion = [BoolConversion] conversion to bool
+# 2324| Type = [BoolType] bool
+# 2324| Value = [CStyleCast] 0
+# 2324| ValueCategory = prvalue
+# 2325| getStmt(769): [DoStmt] do (...) ...
+# 2327| getCondition(): [Literal] 0
+# 2327| Type = [IntType] int
+# 2327| Value = [Literal] 0
+# 2327| ValueCategory = prvalue
+# 2325| getStmt(): [BlockStmt] { ... }
+# 2326| getStmt(0): [DeclStmt] declaration
+# 2326| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x769
+# 2326| Type = [Struct] String
+# 2326| getVariable().getInitializer(): [Initializer] initializer for x769
+# 2326| getExpr(): [ConstructorCall] call to String
+# 2326| Type = [VoidType] void
+# 2326| ValueCategory = prvalue
+# 2327| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2327| Type = [VoidType] void
+# 2327| ValueCategory = prvalue
+# 2327| getQualifier(): [VariableAccess] x769
+# 2327| Type = [Struct] String
+# 2327| ValueCategory = lvalue
+# 2327| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2327| Conversion = [BoolConversion] conversion to bool
+# 2327| Type = [BoolType] bool
+# 2327| Value = [CStyleCast] 0
+# 2327| ValueCategory = prvalue
+# 2328| getStmt(770): [DoStmt] do (...) ...
+# 2330| getCondition(): [Literal] 0
+# 2330| Type = [IntType] int
+# 2330| Value = [Literal] 0
+# 2330| ValueCategory = prvalue
+# 2328| getStmt(): [BlockStmt] { ... }
+# 2329| getStmt(0): [DeclStmt] declaration
+# 2329| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x770
+# 2329| Type = [Struct] String
+# 2329| getVariable().getInitializer(): [Initializer] initializer for x770
+# 2329| getExpr(): [ConstructorCall] call to String
+# 2329| Type = [VoidType] void
+# 2329| ValueCategory = prvalue
+# 2330| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2330| Type = [VoidType] void
+# 2330| ValueCategory = prvalue
+# 2330| getQualifier(): [VariableAccess] x770
+# 2330| Type = [Struct] String
+# 2330| ValueCategory = lvalue
+# 2330| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2330| Conversion = [BoolConversion] conversion to bool
+# 2330| Type = [BoolType] bool
+# 2330| Value = [CStyleCast] 0
+# 2330| ValueCategory = prvalue
+# 2331| getStmt(771): [DoStmt] do (...) ...
+# 2333| getCondition(): [Literal] 0
+# 2333| Type = [IntType] int
+# 2333| Value = [Literal] 0
+# 2333| ValueCategory = prvalue
+# 2331| getStmt(): [BlockStmt] { ... }
+# 2332| getStmt(0): [DeclStmt] declaration
+# 2332| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x771
+# 2332| Type = [Struct] String
+# 2332| getVariable().getInitializer(): [Initializer] initializer for x771
+# 2332| getExpr(): [ConstructorCall] call to String
+# 2332| Type = [VoidType] void
+# 2332| ValueCategory = prvalue
+# 2333| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2333| Type = [VoidType] void
+# 2333| ValueCategory = prvalue
+# 2333| getQualifier(): [VariableAccess] x771
+# 2333| Type = [Struct] String
+# 2333| ValueCategory = lvalue
+# 2333| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2333| Conversion = [BoolConversion] conversion to bool
+# 2333| Type = [BoolType] bool
+# 2333| Value = [CStyleCast] 0
+# 2333| ValueCategory = prvalue
+# 2334| getStmt(772): [DoStmt] do (...) ...
+# 2336| getCondition(): [Literal] 0
+# 2336| Type = [IntType] int
+# 2336| Value = [Literal] 0
+# 2336| ValueCategory = prvalue
+# 2334| getStmt(): [BlockStmt] { ... }
+# 2335| getStmt(0): [DeclStmt] declaration
+# 2335| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x772
+# 2335| Type = [Struct] String
+# 2335| getVariable().getInitializer(): [Initializer] initializer for x772
+# 2335| getExpr(): [ConstructorCall] call to String
+# 2335| Type = [VoidType] void
+# 2335| ValueCategory = prvalue
+# 2336| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2336| Type = [VoidType] void
+# 2336| ValueCategory = prvalue
+# 2336| getQualifier(): [VariableAccess] x772
+# 2336| Type = [Struct] String
+# 2336| ValueCategory = lvalue
+# 2336| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2336| Conversion = [BoolConversion] conversion to bool
+# 2336| Type = [BoolType] bool
+# 2336| Value = [CStyleCast] 0
+# 2336| ValueCategory = prvalue
+# 2337| getStmt(773): [DoStmt] do (...) ...
+# 2339| getCondition(): [Literal] 0
+# 2339| Type = [IntType] int
+# 2339| Value = [Literal] 0
+# 2339| ValueCategory = prvalue
+# 2337| getStmt(): [BlockStmt] { ... }
+# 2338| getStmt(0): [DeclStmt] declaration
+# 2338| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x773
+# 2338| Type = [Struct] String
+# 2338| getVariable().getInitializer(): [Initializer] initializer for x773
+# 2338| getExpr(): [ConstructorCall] call to String
+# 2338| Type = [VoidType] void
+# 2338| ValueCategory = prvalue
+# 2339| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2339| Type = [VoidType] void
+# 2339| ValueCategory = prvalue
+# 2339| getQualifier(): [VariableAccess] x773
+# 2339| Type = [Struct] String
+# 2339| ValueCategory = lvalue
+# 2339| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2339| Conversion = [BoolConversion] conversion to bool
+# 2339| Type = [BoolType] bool
+# 2339| Value = [CStyleCast] 0
+# 2339| ValueCategory = prvalue
+# 2340| getStmt(774): [DoStmt] do (...) ...
+# 2342| getCondition(): [Literal] 0
+# 2342| Type = [IntType] int
+# 2342| Value = [Literal] 0
+# 2342| ValueCategory = prvalue
+# 2340| getStmt(): [BlockStmt] { ... }
+# 2341| getStmt(0): [DeclStmt] declaration
+# 2341| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x774
+# 2341| Type = [Struct] String
+# 2341| getVariable().getInitializer(): [Initializer] initializer for x774
+# 2341| getExpr(): [ConstructorCall] call to String
+# 2341| Type = [VoidType] void
+# 2341| ValueCategory = prvalue
+# 2342| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2342| Type = [VoidType] void
+# 2342| ValueCategory = prvalue
+# 2342| getQualifier(): [VariableAccess] x774
+# 2342| Type = [Struct] String
+# 2342| ValueCategory = lvalue
+# 2342| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2342| Conversion = [BoolConversion] conversion to bool
+# 2342| Type = [BoolType] bool
+# 2342| Value = [CStyleCast] 0
+# 2342| ValueCategory = prvalue
+# 2343| getStmt(775): [DoStmt] do (...) ...
+# 2345| getCondition(): [Literal] 0
+# 2345| Type = [IntType] int
+# 2345| Value = [Literal] 0
+# 2345| ValueCategory = prvalue
+# 2343| getStmt(): [BlockStmt] { ... }
+# 2344| getStmt(0): [DeclStmt] declaration
+# 2344| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x775
+# 2344| Type = [Struct] String
+# 2344| getVariable().getInitializer(): [Initializer] initializer for x775
+# 2344| getExpr(): [ConstructorCall] call to String
+# 2344| Type = [VoidType] void
+# 2344| ValueCategory = prvalue
+# 2345| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2345| Type = [VoidType] void
+# 2345| ValueCategory = prvalue
+# 2345| getQualifier(): [VariableAccess] x775
+# 2345| Type = [Struct] String
+# 2345| ValueCategory = lvalue
+# 2345| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2345| Conversion = [BoolConversion] conversion to bool
+# 2345| Type = [BoolType] bool
+# 2345| Value = [CStyleCast] 0
+# 2345| ValueCategory = prvalue
+# 2346| getStmt(776): [DoStmt] do (...) ...
+# 2348| getCondition(): [Literal] 0
+# 2348| Type = [IntType] int
+# 2348| Value = [Literal] 0
+# 2348| ValueCategory = prvalue
+# 2346| getStmt(): [BlockStmt] { ... }
+# 2347| getStmt(0): [DeclStmt] declaration
+# 2347| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x776
+# 2347| Type = [Struct] String
+# 2347| getVariable().getInitializer(): [Initializer] initializer for x776
+# 2347| getExpr(): [ConstructorCall] call to String
+# 2347| Type = [VoidType] void
+# 2347| ValueCategory = prvalue
+# 2348| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2348| Type = [VoidType] void
+# 2348| ValueCategory = prvalue
+# 2348| getQualifier(): [VariableAccess] x776
+# 2348| Type = [Struct] String
+# 2348| ValueCategory = lvalue
+# 2348| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2348| Conversion = [BoolConversion] conversion to bool
+# 2348| Type = [BoolType] bool
+# 2348| Value = [CStyleCast] 0
+# 2348| ValueCategory = prvalue
+# 2349| getStmt(777): [DoStmt] do (...) ...
+# 2351| getCondition(): [Literal] 0
+# 2351| Type = [IntType] int
+# 2351| Value = [Literal] 0
+# 2351| ValueCategory = prvalue
+# 2349| getStmt(): [BlockStmt] { ... }
+# 2350| getStmt(0): [DeclStmt] declaration
+# 2350| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x777
+# 2350| Type = [Struct] String
+# 2350| getVariable().getInitializer(): [Initializer] initializer for x777
+# 2350| getExpr(): [ConstructorCall] call to String
+# 2350| Type = [VoidType] void
+# 2350| ValueCategory = prvalue
+# 2351| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2351| Type = [VoidType] void
+# 2351| ValueCategory = prvalue
+# 2351| getQualifier(): [VariableAccess] x777
+# 2351| Type = [Struct] String
+# 2351| ValueCategory = lvalue
+# 2351| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2351| Conversion = [BoolConversion] conversion to bool
+# 2351| Type = [BoolType] bool
+# 2351| Value = [CStyleCast] 0
+# 2351| ValueCategory = prvalue
+# 2352| getStmt(778): [DoStmt] do (...) ...
+# 2354| getCondition(): [Literal] 0
+# 2354| Type = [IntType] int
+# 2354| Value = [Literal] 0
+# 2354| ValueCategory = prvalue
+# 2352| getStmt(): [BlockStmt] { ... }
+# 2353| getStmt(0): [DeclStmt] declaration
+# 2353| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x778
+# 2353| Type = [Struct] String
+# 2353| getVariable().getInitializer(): [Initializer] initializer for x778
+# 2353| getExpr(): [ConstructorCall] call to String
+# 2353| Type = [VoidType] void
+# 2353| ValueCategory = prvalue
+# 2354| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2354| Type = [VoidType] void
+# 2354| ValueCategory = prvalue
+# 2354| getQualifier(): [VariableAccess] x778
+# 2354| Type = [Struct] String
+# 2354| ValueCategory = lvalue
+# 2354| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2354| Conversion = [BoolConversion] conversion to bool
+# 2354| Type = [BoolType] bool
+# 2354| Value = [CStyleCast] 0
+# 2354| ValueCategory = prvalue
+# 2355| getStmt(779): [DoStmt] do (...) ...
+# 2357| getCondition(): [Literal] 0
+# 2357| Type = [IntType] int
+# 2357| Value = [Literal] 0
+# 2357| ValueCategory = prvalue
+# 2355| getStmt(): [BlockStmt] { ... }
+# 2356| getStmt(0): [DeclStmt] declaration
+# 2356| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x779
+# 2356| Type = [Struct] String
+# 2356| getVariable().getInitializer(): [Initializer] initializer for x779
+# 2356| getExpr(): [ConstructorCall] call to String
+# 2356| Type = [VoidType] void
+# 2356| ValueCategory = prvalue
+# 2357| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2357| Type = [VoidType] void
+# 2357| ValueCategory = prvalue
+# 2357| getQualifier(): [VariableAccess] x779
+# 2357| Type = [Struct] String
+# 2357| ValueCategory = lvalue
+# 2357| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2357| Conversion = [BoolConversion] conversion to bool
+# 2357| Type = [BoolType] bool
+# 2357| Value = [CStyleCast] 0
+# 2357| ValueCategory = prvalue
+# 2358| getStmt(780): [DoStmt] do (...) ...
+# 2360| getCondition(): [Literal] 0
+# 2360| Type = [IntType] int
+# 2360| Value = [Literal] 0
+# 2360| ValueCategory = prvalue
+# 2358| getStmt(): [BlockStmt] { ... }
+# 2359| getStmt(0): [DeclStmt] declaration
+# 2359| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x780
+# 2359| Type = [Struct] String
+# 2359| getVariable().getInitializer(): [Initializer] initializer for x780
+# 2359| getExpr(): [ConstructorCall] call to String
+# 2359| Type = [VoidType] void
+# 2359| ValueCategory = prvalue
+# 2360| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2360| Type = [VoidType] void
+# 2360| ValueCategory = prvalue
+# 2360| getQualifier(): [VariableAccess] x780
+# 2360| Type = [Struct] String
+# 2360| ValueCategory = lvalue
+# 2360| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2360| Conversion = [BoolConversion] conversion to bool
+# 2360| Type = [BoolType] bool
+# 2360| Value = [CStyleCast] 0
+# 2360| ValueCategory = prvalue
+# 2361| getStmt(781): [DoStmt] do (...) ...
+# 2363| getCondition(): [Literal] 0
+# 2363| Type = [IntType] int
+# 2363| Value = [Literal] 0
+# 2363| ValueCategory = prvalue
+# 2361| getStmt(): [BlockStmt] { ... }
+# 2362| getStmt(0): [DeclStmt] declaration
+# 2362| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x781
+# 2362| Type = [Struct] String
+# 2362| getVariable().getInitializer(): [Initializer] initializer for x781
+# 2362| getExpr(): [ConstructorCall] call to String
+# 2362| Type = [VoidType] void
+# 2362| ValueCategory = prvalue
+# 2363| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2363| Type = [VoidType] void
+# 2363| ValueCategory = prvalue
+# 2363| getQualifier(): [VariableAccess] x781
+# 2363| Type = [Struct] String
+# 2363| ValueCategory = lvalue
+# 2363| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2363| Conversion = [BoolConversion] conversion to bool
+# 2363| Type = [BoolType] bool
+# 2363| Value = [CStyleCast] 0
+# 2363| ValueCategory = prvalue
+# 2364| getStmt(782): [DoStmt] do (...) ...
+# 2366| getCondition(): [Literal] 0
+# 2366| Type = [IntType] int
+# 2366| Value = [Literal] 0
+# 2366| ValueCategory = prvalue
+# 2364| getStmt(): [BlockStmt] { ... }
+# 2365| getStmt(0): [DeclStmt] declaration
+# 2365| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x782
+# 2365| Type = [Struct] String
+# 2365| getVariable().getInitializer(): [Initializer] initializer for x782
+# 2365| getExpr(): [ConstructorCall] call to String
+# 2365| Type = [VoidType] void
+# 2365| ValueCategory = prvalue
+# 2366| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2366| Type = [VoidType] void
+# 2366| ValueCategory = prvalue
+# 2366| getQualifier(): [VariableAccess] x782
+# 2366| Type = [Struct] String
+# 2366| ValueCategory = lvalue
+# 2366| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2366| Conversion = [BoolConversion] conversion to bool
+# 2366| Type = [BoolType] bool
+# 2366| Value = [CStyleCast] 0
+# 2366| ValueCategory = prvalue
+# 2367| getStmt(783): [DoStmt] do (...) ...
+# 2369| getCondition(): [Literal] 0
+# 2369| Type = [IntType] int
+# 2369| Value = [Literal] 0
+# 2369| ValueCategory = prvalue
+# 2367| getStmt(): [BlockStmt] { ... }
+# 2368| getStmt(0): [DeclStmt] declaration
+# 2368| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x783
+# 2368| Type = [Struct] String
+# 2368| getVariable().getInitializer(): [Initializer] initializer for x783
+# 2368| getExpr(): [ConstructorCall] call to String
+# 2368| Type = [VoidType] void
+# 2368| ValueCategory = prvalue
+# 2369| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2369| Type = [VoidType] void
+# 2369| ValueCategory = prvalue
+# 2369| getQualifier(): [VariableAccess] x783
+# 2369| Type = [Struct] String
+# 2369| ValueCategory = lvalue
+# 2369| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2369| Conversion = [BoolConversion] conversion to bool
+# 2369| Type = [BoolType] bool
+# 2369| Value = [CStyleCast] 0
+# 2369| ValueCategory = prvalue
+# 2370| getStmt(784): [DoStmt] do (...) ...
+# 2372| getCondition(): [Literal] 0
+# 2372| Type = [IntType] int
+# 2372| Value = [Literal] 0
+# 2372| ValueCategory = prvalue
+# 2370| getStmt(): [BlockStmt] { ... }
+# 2371| getStmt(0): [DeclStmt] declaration
+# 2371| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x784
+# 2371| Type = [Struct] String
+# 2371| getVariable().getInitializer(): [Initializer] initializer for x784
+# 2371| getExpr(): [ConstructorCall] call to String
+# 2371| Type = [VoidType] void
+# 2371| ValueCategory = prvalue
+# 2372| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2372| Type = [VoidType] void
+# 2372| ValueCategory = prvalue
+# 2372| getQualifier(): [VariableAccess] x784
+# 2372| Type = [Struct] String
+# 2372| ValueCategory = lvalue
+# 2372| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2372| Conversion = [BoolConversion] conversion to bool
+# 2372| Type = [BoolType] bool
+# 2372| Value = [CStyleCast] 0
+# 2372| ValueCategory = prvalue
+# 2373| getStmt(785): [DoStmt] do (...) ...
+# 2375| getCondition(): [Literal] 0
+# 2375| Type = [IntType] int
+# 2375| Value = [Literal] 0
+# 2375| ValueCategory = prvalue
+# 2373| getStmt(): [BlockStmt] { ... }
+# 2374| getStmt(0): [DeclStmt] declaration
+# 2374| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x785
+# 2374| Type = [Struct] String
+# 2374| getVariable().getInitializer(): [Initializer] initializer for x785
+# 2374| getExpr(): [ConstructorCall] call to String
+# 2374| Type = [VoidType] void
+# 2374| ValueCategory = prvalue
+# 2375| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2375| Type = [VoidType] void
+# 2375| ValueCategory = prvalue
+# 2375| getQualifier(): [VariableAccess] x785
+# 2375| Type = [Struct] String
+# 2375| ValueCategory = lvalue
+# 2375| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2375| Conversion = [BoolConversion] conversion to bool
+# 2375| Type = [BoolType] bool
+# 2375| Value = [CStyleCast] 0
+# 2375| ValueCategory = prvalue
+# 2376| getStmt(786): [DoStmt] do (...) ...
+# 2378| getCondition(): [Literal] 0
+# 2378| Type = [IntType] int
+# 2378| Value = [Literal] 0
+# 2378| ValueCategory = prvalue
+# 2376| getStmt(): [BlockStmt] { ... }
+# 2377| getStmt(0): [DeclStmt] declaration
+# 2377| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x786
+# 2377| Type = [Struct] String
+# 2377| getVariable().getInitializer(): [Initializer] initializer for x786
+# 2377| getExpr(): [ConstructorCall] call to String
+# 2377| Type = [VoidType] void
+# 2377| ValueCategory = prvalue
+# 2378| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2378| Type = [VoidType] void
+# 2378| ValueCategory = prvalue
+# 2378| getQualifier(): [VariableAccess] x786
+# 2378| Type = [Struct] String
+# 2378| ValueCategory = lvalue
+# 2378| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2378| Conversion = [BoolConversion] conversion to bool
+# 2378| Type = [BoolType] bool
+# 2378| Value = [CStyleCast] 0
+# 2378| ValueCategory = prvalue
+# 2379| getStmt(787): [DoStmt] do (...) ...
+# 2381| getCondition(): [Literal] 0
+# 2381| Type = [IntType] int
+# 2381| Value = [Literal] 0
+# 2381| ValueCategory = prvalue
+# 2379| getStmt(): [BlockStmt] { ... }
+# 2380| getStmt(0): [DeclStmt] declaration
+# 2380| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x787
+# 2380| Type = [Struct] String
+# 2380| getVariable().getInitializer(): [Initializer] initializer for x787
+# 2380| getExpr(): [ConstructorCall] call to String
+# 2380| Type = [VoidType] void
+# 2380| ValueCategory = prvalue
+# 2381| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2381| Type = [VoidType] void
+# 2381| ValueCategory = prvalue
+# 2381| getQualifier(): [VariableAccess] x787
+# 2381| Type = [Struct] String
+# 2381| ValueCategory = lvalue
+# 2381| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2381| Conversion = [BoolConversion] conversion to bool
+# 2381| Type = [BoolType] bool
+# 2381| Value = [CStyleCast] 0
+# 2381| ValueCategory = prvalue
+# 2382| getStmt(788): [DoStmt] do (...) ...
+# 2384| getCondition(): [Literal] 0
+# 2384| Type = [IntType] int
+# 2384| Value = [Literal] 0
+# 2384| ValueCategory = prvalue
+# 2382| getStmt(): [BlockStmt] { ... }
+# 2383| getStmt(0): [DeclStmt] declaration
+# 2383| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x788
+# 2383| Type = [Struct] String
+# 2383| getVariable().getInitializer(): [Initializer] initializer for x788
+# 2383| getExpr(): [ConstructorCall] call to String
+# 2383| Type = [VoidType] void
+# 2383| ValueCategory = prvalue
+# 2384| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2384| Type = [VoidType] void
+# 2384| ValueCategory = prvalue
+# 2384| getQualifier(): [VariableAccess] x788
+# 2384| Type = [Struct] String
+# 2384| ValueCategory = lvalue
+# 2384| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2384| Conversion = [BoolConversion] conversion to bool
+# 2384| Type = [BoolType] bool
+# 2384| Value = [CStyleCast] 0
+# 2384| ValueCategory = prvalue
+# 2385| getStmt(789): [DoStmt] do (...) ...
+# 2387| getCondition(): [Literal] 0
+# 2387| Type = [IntType] int
+# 2387| Value = [Literal] 0
+# 2387| ValueCategory = prvalue
+# 2385| getStmt(): [BlockStmt] { ... }
+# 2386| getStmt(0): [DeclStmt] declaration
+# 2386| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x789
+# 2386| Type = [Struct] String
+# 2386| getVariable().getInitializer(): [Initializer] initializer for x789
+# 2386| getExpr(): [ConstructorCall] call to String
+# 2386| Type = [VoidType] void
+# 2386| ValueCategory = prvalue
+# 2387| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2387| Type = [VoidType] void
+# 2387| ValueCategory = prvalue
+# 2387| getQualifier(): [VariableAccess] x789
+# 2387| Type = [Struct] String
+# 2387| ValueCategory = lvalue
+# 2387| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2387| Conversion = [BoolConversion] conversion to bool
+# 2387| Type = [BoolType] bool
+# 2387| Value = [CStyleCast] 0
+# 2387| ValueCategory = prvalue
+# 2388| getStmt(790): [DoStmt] do (...) ...
+# 2390| getCondition(): [Literal] 0
+# 2390| Type = [IntType] int
+# 2390| Value = [Literal] 0
+# 2390| ValueCategory = prvalue
+# 2388| getStmt(): [BlockStmt] { ... }
+# 2389| getStmt(0): [DeclStmt] declaration
+# 2389| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x790
+# 2389| Type = [Struct] String
+# 2389| getVariable().getInitializer(): [Initializer] initializer for x790
+# 2389| getExpr(): [ConstructorCall] call to String
+# 2389| Type = [VoidType] void
+# 2389| ValueCategory = prvalue
+# 2390| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2390| Type = [VoidType] void
+# 2390| ValueCategory = prvalue
+# 2390| getQualifier(): [VariableAccess] x790
+# 2390| Type = [Struct] String
+# 2390| ValueCategory = lvalue
+# 2390| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2390| Conversion = [BoolConversion] conversion to bool
+# 2390| Type = [BoolType] bool
+# 2390| Value = [CStyleCast] 0
+# 2390| ValueCategory = prvalue
+# 2391| getStmt(791): [DoStmt] do (...) ...
+# 2393| getCondition(): [Literal] 0
+# 2393| Type = [IntType] int
+# 2393| Value = [Literal] 0
+# 2393| ValueCategory = prvalue
+# 2391| getStmt(): [BlockStmt] { ... }
+# 2392| getStmt(0): [DeclStmt] declaration
+# 2392| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x791
+# 2392| Type = [Struct] String
+# 2392| getVariable().getInitializer(): [Initializer] initializer for x791
+# 2392| getExpr(): [ConstructorCall] call to String
+# 2392| Type = [VoidType] void
+# 2392| ValueCategory = prvalue
+# 2393| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2393| Type = [VoidType] void
+# 2393| ValueCategory = prvalue
+# 2393| getQualifier(): [VariableAccess] x791
+# 2393| Type = [Struct] String
+# 2393| ValueCategory = lvalue
+# 2393| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2393| Conversion = [BoolConversion] conversion to bool
+# 2393| Type = [BoolType] bool
+# 2393| Value = [CStyleCast] 0
+# 2393| ValueCategory = prvalue
+# 2394| getStmt(792): [DoStmt] do (...) ...
+# 2396| getCondition(): [Literal] 0
+# 2396| Type = [IntType] int
+# 2396| Value = [Literal] 0
+# 2396| ValueCategory = prvalue
+# 2394| getStmt(): [BlockStmt] { ... }
+# 2395| getStmt(0): [DeclStmt] declaration
+# 2395| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x792
+# 2395| Type = [Struct] String
+# 2395| getVariable().getInitializer(): [Initializer] initializer for x792
+# 2395| getExpr(): [ConstructorCall] call to String
+# 2395| Type = [VoidType] void
+# 2395| ValueCategory = prvalue
+# 2396| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2396| Type = [VoidType] void
+# 2396| ValueCategory = prvalue
+# 2396| getQualifier(): [VariableAccess] x792
+# 2396| Type = [Struct] String
+# 2396| ValueCategory = lvalue
+# 2396| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2396| Conversion = [BoolConversion] conversion to bool
+# 2396| Type = [BoolType] bool
+# 2396| Value = [CStyleCast] 0
+# 2396| ValueCategory = prvalue
+# 2397| getStmt(793): [DoStmt] do (...) ...
+# 2399| getCondition(): [Literal] 0
+# 2399| Type = [IntType] int
+# 2399| Value = [Literal] 0
+# 2399| ValueCategory = prvalue
+# 2397| getStmt(): [BlockStmt] { ... }
+# 2398| getStmt(0): [DeclStmt] declaration
+# 2398| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x793
+# 2398| Type = [Struct] String
+# 2398| getVariable().getInitializer(): [Initializer] initializer for x793
+# 2398| getExpr(): [ConstructorCall] call to String
+# 2398| Type = [VoidType] void
+# 2398| ValueCategory = prvalue
+# 2399| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2399| Type = [VoidType] void
+# 2399| ValueCategory = prvalue
+# 2399| getQualifier(): [VariableAccess] x793
+# 2399| Type = [Struct] String
+# 2399| ValueCategory = lvalue
+# 2399| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2399| Conversion = [BoolConversion] conversion to bool
+# 2399| Type = [BoolType] bool
+# 2399| Value = [CStyleCast] 0
+# 2399| ValueCategory = prvalue
+# 2400| getStmt(794): [DoStmt] do (...) ...
+# 2402| getCondition(): [Literal] 0
+# 2402| Type = [IntType] int
+# 2402| Value = [Literal] 0
+# 2402| ValueCategory = prvalue
+# 2400| getStmt(): [BlockStmt] { ... }
+# 2401| getStmt(0): [DeclStmt] declaration
+# 2401| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x794
+# 2401| Type = [Struct] String
+# 2401| getVariable().getInitializer(): [Initializer] initializer for x794
+# 2401| getExpr(): [ConstructorCall] call to String
+# 2401| Type = [VoidType] void
+# 2401| ValueCategory = prvalue
+# 2402| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2402| Type = [VoidType] void
+# 2402| ValueCategory = prvalue
+# 2402| getQualifier(): [VariableAccess] x794
+# 2402| Type = [Struct] String
+# 2402| ValueCategory = lvalue
+# 2402| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2402| Conversion = [BoolConversion] conversion to bool
+# 2402| Type = [BoolType] bool
+# 2402| Value = [CStyleCast] 0
+# 2402| ValueCategory = prvalue
+# 2403| getStmt(795): [DoStmt] do (...) ...
+# 2405| getCondition(): [Literal] 0
+# 2405| Type = [IntType] int
+# 2405| Value = [Literal] 0
+# 2405| ValueCategory = prvalue
+# 2403| getStmt(): [BlockStmt] { ... }
+# 2404| getStmt(0): [DeclStmt] declaration
+# 2404| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x795
+# 2404| Type = [Struct] String
+# 2404| getVariable().getInitializer(): [Initializer] initializer for x795
+# 2404| getExpr(): [ConstructorCall] call to String
+# 2404| Type = [VoidType] void
+# 2404| ValueCategory = prvalue
+# 2405| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2405| Type = [VoidType] void
+# 2405| ValueCategory = prvalue
+# 2405| getQualifier(): [VariableAccess] x795
+# 2405| Type = [Struct] String
+# 2405| ValueCategory = lvalue
+# 2405| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2405| Conversion = [BoolConversion] conversion to bool
+# 2405| Type = [BoolType] bool
+# 2405| Value = [CStyleCast] 0
+# 2405| ValueCategory = prvalue
+# 2406| getStmt(796): [DoStmt] do (...) ...
+# 2408| getCondition(): [Literal] 0
+# 2408| Type = [IntType] int
+# 2408| Value = [Literal] 0
+# 2408| ValueCategory = prvalue
+# 2406| getStmt(): [BlockStmt] { ... }
+# 2407| getStmt(0): [DeclStmt] declaration
+# 2407| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x796
+# 2407| Type = [Struct] String
+# 2407| getVariable().getInitializer(): [Initializer] initializer for x796
+# 2407| getExpr(): [ConstructorCall] call to String
+# 2407| Type = [VoidType] void
+# 2407| ValueCategory = prvalue
+# 2408| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2408| Type = [VoidType] void
+# 2408| ValueCategory = prvalue
+# 2408| getQualifier(): [VariableAccess] x796
+# 2408| Type = [Struct] String
+# 2408| ValueCategory = lvalue
+# 2408| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2408| Conversion = [BoolConversion] conversion to bool
+# 2408| Type = [BoolType] bool
+# 2408| Value = [CStyleCast] 0
+# 2408| ValueCategory = prvalue
+# 2409| getStmt(797): [DoStmt] do (...) ...
+# 2411| getCondition(): [Literal] 0
+# 2411| Type = [IntType] int
+# 2411| Value = [Literal] 0
+# 2411| ValueCategory = prvalue
+# 2409| getStmt(): [BlockStmt] { ... }
+# 2410| getStmt(0): [DeclStmt] declaration
+# 2410| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x797
+# 2410| Type = [Struct] String
+# 2410| getVariable().getInitializer(): [Initializer] initializer for x797
+# 2410| getExpr(): [ConstructorCall] call to String
+# 2410| Type = [VoidType] void
+# 2410| ValueCategory = prvalue
+# 2411| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2411| Type = [VoidType] void
+# 2411| ValueCategory = prvalue
+# 2411| getQualifier(): [VariableAccess] x797
+# 2411| Type = [Struct] String
+# 2411| ValueCategory = lvalue
+# 2411| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2411| Conversion = [BoolConversion] conversion to bool
+# 2411| Type = [BoolType] bool
+# 2411| Value = [CStyleCast] 0
+# 2411| ValueCategory = prvalue
+# 2412| getStmt(798): [DoStmt] do (...) ...
+# 2414| getCondition(): [Literal] 0
+# 2414| Type = [IntType] int
+# 2414| Value = [Literal] 0
+# 2414| ValueCategory = prvalue
+# 2412| getStmt(): [BlockStmt] { ... }
+# 2413| getStmt(0): [DeclStmt] declaration
+# 2413| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x798
+# 2413| Type = [Struct] String
+# 2413| getVariable().getInitializer(): [Initializer] initializer for x798
+# 2413| getExpr(): [ConstructorCall] call to String
+# 2413| Type = [VoidType] void
+# 2413| ValueCategory = prvalue
+# 2414| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2414| Type = [VoidType] void
+# 2414| ValueCategory = prvalue
+# 2414| getQualifier(): [VariableAccess] x798
+# 2414| Type = [Struct] String
+# 2414| ValueCategory = lvalue
+# 2414| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2414| Conversion = [BoolConversion] conversion to bool
+# 2414| Type = [BoolType] bool
+# 2414| Value = [CStyleCast] 0
+# 2414| ValueCategory = prvalue
+# 2415| getStmt(799): [DoStmt] do (...) ...
+# 2417| getCondition(): [Literal] 0
+# 2417| Type = [IntType] int
+# 2417| Value = [Literal] 0
+# 2417| ValueCategory = prvalue
+# 2415| getStmt(): [BlockStmt] { ... }
+# 2416| getStmt(0): [DeclStmt] declaration
+# 2416| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x799
+# 2416| Type = [Struct] String
+# 2416| getVariable().getInitializer(): [Initializer] initializer for x799
+# 2416| getExpr(): [ConstructorCall] call to String
+# 2416| Type = [VoidType] void
+# 2416| ValueCategory = prvalue
+# 2417| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2417| Type = [VoidType] void
+# 2417| ValueCategory = prvalue
+# 2417| getQualifier(): [VariableAccess] x799
+# 2417| Type = [Struct] String
+# 2417| ValueCategory = lvalue
+# 2417| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2417| Conversion = [BoolConversion] conversion to bool
+# 2417| Type = [BoolType] bool
+# 2417| Value = [CStyleCast] 0
+# 2417| ValueCategory = prvalue
+# 2418| getStmt(800): [DoStmt] do (...) ...
+# 2420| getCondition(): [Literal] 0
+# 2420| Type = [IntType] int
+# 2420| Value = [Literal] 0
+# 2420| ValueCategory = prvalue
+# 2418| getStmt(): [BlockStmt] { ... }
+# 2419| getStmt(0): [DeclStmt] declaration
+# 2419| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x800
+# 2419| Type = [Struct] String
+# 2419| getVariable().getInitializer(): [Initializer] initializer for x800
+# 2419| getExpr(): [ConstructorCall] call to String
+# 2419| Type = [VoidType] void
+# 2419| ValueCategory = prvalue
+# 2420| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2420| Type = [VoidType] void
+# 2420| ValueCategory = prvalue
+# 2420| getQualifier(): [VariableAccess] x800
+# 2420| Type = [Struct] String
+# 2420| ValueCategory = lvalue
+# 2420| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2420| Conversion = [BoolConversion] conversion to bool
+# 2420| Type = [BoolType] bool
+# 2420| Value = [CStyleCast] 0
+# 2420| ValueCategory = prvalue
+# 2421| getStmt(801): [DoStmt] do (...) ...
+# 2423| getCondition(): [Literal] 0
+# 2423| Type = [IntType] int
+# 2423| Value = [Literal] 0
+# 2423| ValueCategory = prvalue
+# 2421| getStmt(): [BlockStmt] { ... }
+# 2422| getStmt(0): [DeclStmt] declaration
+# 2422| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x801
+# 2422| Type = [Struct] String
+# 2422| getVariable().getInitializer(): [Initializer] initializer for x801
+# 2422| getExpr(): [ConstructorCall] call to String
+# 2422| Type = [VoidType] void
+# 2422| ValueCategory = prvalue
+# 2423| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2423| Type = [VoidType] void
+# 2423| ValueCategory = prvalue
+# 2423| getQualifier(): [VariableAccess] x801
+# 2423| Type = [Struct] String
+# 2423| ValueCategory = lvalue
+# 2423| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2423| Conversion = [BoolConversion] conversion to bool
+# 2423| Type = [BoolType] bool
+# 2423| Value = [CStyleCast] 0
+# 2423| ValueCategory = prvalue
+# 2424| getStmt(802): [DoStmt] do (...) ...
+# 2426| getCondition(): [Literal] 0
+# 2426| Type = [IntType] int
+# 2426| Value = [Literal] 0
+# 2426| ValueCategory = prvalue
+# 2424| getStmt(): [BlockStmt] { ... }
+# 2425| getStmt(0): [DeclStmt] declaration
+# 2425| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x802
+# 2425| Type = [Struct] String
+# 2425| getVariable().getInitializer(): [Initializer] initializer for x802
+# 2425| getExpr(): [ConstructorCall] call to String
+# 2425| Type = [VoidType] void
+# 2425| ValueCategory = prvalue
+# 2426| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2426| Type = [VoidType] void
+# 2426| ValueCategory = prvalue
+# 2426| getQualifier(): [VariableAccess] x802
+# 2426| Type = [Struct] String
+# 2426| ValueCategory = lvalue
+# 2426| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2426| Conversion = [BoolConversion] conversion to bool
+# 2426| Type = [BoolType] bool
+# 2426| Value = [CStyleCast] 0
+# 2426| ValueCategory = prvalue
+# 2427| getStmt(803): [DoStmt] do (...) ...
+# 2429| getCondition(): [Literal] 0
+# 2429| Type = [IntType] int
+# 2429| Value = [Literal] 0
+# 2429| ValueCategory = prvalue
+# 2427| getStmt(): [BlockStmt] { ... }
+# 2428| getStmt(0): [DeclStmt] declaration
+# 2428| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x803
+# 2428| Type = [Struct] String
+# 2428| getVariable().getInitializer(): [Initializer] initializer for x803
+# 2428| getExpr(): [ConstructorCall] call to String
+# 2428| Type = [VoidType] void
+# 2428| ValueCategory = prvalue
+# 2429| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2429| Type = [VoidType] void
+# 2429| ValueCategory = prvalue
+# 2429| getQualifier(): [VariableAccess] x803
+# 2429| Type = [Struct] String
+# 2429| ValueCategory = lvalue
+# 2429| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2429| Conversion = [BoolConversion] conversion to bool
+# 2429| Type = [BoolType] bool
+# 2429| Value = [CStyleCast] 0
+# 2429| ValueCategory = prvalue
+# 2430| getStmt(804): [DoStmt] do (...) ...
+# 2432| getCondition(): [Literal] 0
+# 2432| Type = [IntType] int
+# 2432| Value = [Literal] 0
+# 2432| ValueCategory = prvalue
+# 2430| getStmt(): [BlockStmt] { ... }
+# 2431| getStmt(0): [DeclStmt] declaration
+# 2431| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x804
+# 2431| Type = [Struct] String
+# 2431| getVariable().getInitializer(): [Initializer] initializer for x804
+# 2431| getExpr(): [ConstructorCall] call to String
+# 2431| Type = [VoidType] void
+# 2431| ValueCategory = prvalue
+# 2432| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2432| Type = [VoidType] void
+# 2432| ValueCategory = prvalue
+# 2432| getQualifier(): [VariableAccess] x804
+# 2432| Type = [Struct] String
+# 2432| ValueCategory = lvalue
+# 2432| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2432| Conversion = [BoolConversion] conversion to bool
+# 2432| Type = [BoolType] bool
+# 2432| Value = [CStyleCast] 0
+# 2432| ValueCategory = prvalue
+# 2433| getStmt(805): [DoStmt] do (...) ...
+# 2435| getCondition(): [Literal] 0
+# 2435| Type = [IntType] int
+# 2435| Value = [Literal] 0
+# 2435| ValueCategory = prvalue
+# 2433| getStmt(): [BlockStmt] { ... }
+# 2434| getStmt(0): [DeclStmt] declaration
+# 2434| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x805
+# 2434| Type = [Struct] String
+# 2434| getVariable().getInitializer(): [Initializer] initializer for x805
+# 2434| getExpr(): [ConstructorCall] call to String
+# 2434| Type = [VoidType] void
+# 2434| ValueCategory = prvalue
+# 2435| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2435| Type = [VoidType] void
+# 2435| ValueCategory = prvalue
+# 2435| getQualifier(): [VariableAccess] x805
+# 2435| Type = [Struct] String
+# 2435| ValueCategory = lvalue
+# 2435| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2435| Conversion = [BoolConversion] conversion to bool
+# 2435| Type = [BoolType] bool
+# 2435| Value = [CStyleCast] 0
+# 2435| ValueCategory = prvalue
+# 2436| getStmt(806): [DoStmt] do (...) ...
+# 2438| getCondition(): [Literal] 0
+# 2438| Type = [IntType] int
+# 2438| Value = [Literal] 0
+# 2438| ValueCategory = prvalue
+# 2436| getStmt(): [BlockStmt] { ... }
+# 2437| getStmt(0): [DeclStmt] declaration
+# 2437| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x806
+# 2437| Type = [Struct] String
+# 2437| getVariable().getInitializer(): [Initializer] initializer for x806
+# 2437| getExpr(): [ConstructorCall] call to String
+# 2437| Type = [VoidType] void
+# 2437| ValueCategory = prvalue
+# 2438| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2438| Type = [VoidType] void
+# 2438| ValueCategory = prvalue
+# 2438| getQualifier(): [VariableAccess] x806
+# 2438| Type = [Struct] String
+# 2438| ValueCategory = lvalue
+# 2438| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2438| Conversion = [BoolConversion] conversion to bool
+# 2438| Type = [BoolType] bool
+# 2438| Value = [CStyleCast] 0
+# 2438| ValueCategory = prvalue
+# 2439| getStmt(807): [DoStmt] do (...) ...
+# 2441| getCondition(): [Literal] 0
+# 2441| Type = [IntType] int
+# 2441| Value = [Literal] 0
+# 2441| ValueCategory = prvalue
+# 2439| getStmt(): [BlockStmt] { ... }
+# 2440| getStmt(0): [DeclStmt] declaration
+# 2440| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x807
+# 2440| Type = [Struct] String
+# 2440| getVariable().getInitializer(): [Initializer] initializer for x807
+# 2440| getExpr(): [ConstructorCall] call to String
+# 2440| Type = [VoidType] void
+# 2440| ValueCategory = prvalue
+# 2441| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2441| Type = [VoidType] void
+# 2441| ValueCategory = prvalue
+# 2441| getQualifier(): [VariableAccess] x807
+# 2441| Type = [Struct] String
+# 2441| ValueCategory = lvalue
+# 2441| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2441| Conversion = [BoolConversion] conversion to bool
+# 2441| Type = [BoolType] bool
+# 2441| Value = [CStyleCast] 0
+# 2441| ValueCategory = prvalue
+# 2442| getStmt(808): [DoStmt] do (...) ...
+# 2444| getCondition(): [Literal] 0
+# 2444| Type = [IntType] int
+# 2444| Value = [Literal] 0
+# 2444| ValueCategory = prvalue
+# 2442| getStmt(): [BlockStmt] { ... }
+# 2443| getStmt(0): [DeclStmt] declaration
+# 2443| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x808
+# 2443| Type = [Struct] String
+# 2443| getVariable().getInitializer(): [Initializer] initializer for x808
+# 2443| getExpr(): [ConstructorCall] call to String
+# 2443| Type = [VoidType] void
+# 2443| ValueCategory = prvalue
+# 2444| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2444| Type = [VoidType] void
+# 2444| ValueCategory = prvalue
+# 2444| getQualifier(): [VariableAccess] x808
+# 2444| Type = [Struct] String
+# 2444| ValueCategory = lvalue
+# 2444| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2444| Conversion = [BoolConversion] conversion to bool
+# 2444| Type = [BoolType] bool
+# 2444| Value = [CStyleCast] 0
+# 2444| ValueCategory = prvalue
+# 2445| getStmt(809): [DoStmt] do (...) ...
+# 2447| getCondition(): [Literal] 0
+# 2447| Type = [IntType] int
+# 2447| Value = [Literal] 0
+# 2447| ValueCategory = prvalue
+# 2445| getStmt(): [BlockStmt] { ... }
+# 2446| getStmt(0): [DeclStmt] declaration
+# 2446| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x809
+# 2446| Type = [Struct] String
+# 2446| getVariable().getInitializer(): [Initializer] initializer for x809
+# 2446| getExpr(): [ConstructorCall] call to String
+# 2446| Type = [VoidType] void
+# 2446| ValueCategory = prvalue
+# 2447| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2447| Type = [VoidType] void
+# 2447| ValueCategory = prvalue
+# 2447| getQualifier(): [VariableAccess] x809
+# 2447| Type = [Struct] String
+# 2447| ValueCategory = lvalue
+# 2447| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2447| Conversion = [BoolConversion] conversion to bool
+# 2447| Type = [BoolType] bool
+# 2447| Value = [CStyleCast] 0
+# 2447| ValueCategory = prvalue
+# 2448| getStmt(810): [DoStmt] do (...) ...
+# 2450| getCondition(): [Literal] 0
+# 2450| Type = [IntType] int
+# 2450| Value = [Literal] 0
+# 2450| ValueCategory = prvalue
+# 2448| getStmt(): [BlockStmt] { ... }
+# 2449| getStmt(0): [DeclStmt] declaration
+# 2449| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x810
+# 2449| Type = [Struct] String
+# 2449| getVariable().getInitializer(): [Initializer] initializer for x810
+# 2449| getExpr(): [ConstructorCall] call to String
+# 2449| Type = [VoidType] void
+# 2449| ValueCategory = prvalue
+# 2450| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2450| Type = [VoidType] void
+# 2450| ValueCategory = prvalue
+# 2450| getQualifier(): [VariableAccess] x810
+# 2450| Type = [Struct] String
+# 2450| ValueCategory = lvalue
+# 2450| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2450| Conversion = [BoolConversion] conversion to bool
+# 2450| Type = [BoolType] bool
+# 2450| Value = [CStyleCast] 0
+# 2450| ValueCategory = prvalue
+# 2451| getStmt(811): [DoStmt] do (...) ...
+# 2453| getCondition(): [Literal] 0
+# 2453| Type = [IntType] int
+# 2453| Value = [Literal] 0
+# 2453| ValueCategory = prvalue
+# 2451| getStmt(): [BlockStmt] { ... }
+# 2452| getStmt(0): [DeclStmt] declaration
+# 2452| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x811
+# 2452| Type = [Struct] String
+# 2452| getVariable().getInitializer(): [Initializer] initializer for x811
+# 2452| getExpr(): [ConstructorCall] call to String
+# 2452| Type = [VoidType] void
+# 2452| ValueCategory = prvalue
+# 2453| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2453| Type = [VoidType] void
+# 2453| ValueCategory = prvalue
+# 2453| getQualifier(): [VariableAccess] x811
+# 2453| Type = [Struct] String
+# 2453| ValueCategory = lvalue
+# 2453| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2453| Conversion = [BoolConversion] conversion to bool
+# 2453| Type = [BoolType] bool
+# 2453| Value = [CStyleCast] 0
+# 2453| ValueCategory = prvalue
+# 2454| getStmt(812): [DoStmt] do (...) ...
+# 2456| getCondition(): [Literal] 0
+# 2456| Type = [IntType] int
+# 2456| Value = [Literal] 0
+# 2456| ValueCategory = prvalue
+# 2454| getStmt(): [BlockStmt] { ... }
+# 2455| getStmt(0): [DeclStmt] declaration
+# 2455| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x812
+# 2455| Type = [Struct] String
+# 2455| getVariable().getInitializer(): [Initializer] initializer for x812
+# 2455| getExpr(): [ConstructorCall] call to String
+# 2455| Type = [VoidType] void
+# 2455| ValueCategory = prvalue
+# 2456| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2456| Type = [VoidType] void
+# 2456| ValueCategory = prvalue
+# 2456| getQualifier(): [VariableAccess] x812
+# 2456| Type = [Struct] String
+# 2456| ValueCategory = lvalue
+# 2456| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2456| Conversion = [BoolConversion] conversion to bool
+# 2456| Type = [BoolType] bool
+# 2456| Value = [CStyleCast] 0
+# 2456| ValueCategory = prvalue
+# 2457| getStmt(813): [DoStmt] do (...) ...
+# 2459| getCondition(): [Literal] 0
+# 2459| Type = [IntType] int
+# 2459| Value = [Literal] 0
+# 2459| ValueCategory = prvalue
+# 2457| getStmt(): [BlockStmt] { ... }
+# 2458| getStmt(0): [DeclStmt] declaration
+# 2458| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x813
+# 2458| Type = [Struct] String
+# 2458| getVariable().getInitializer(): [Initializer] initializer for x813
+# 2458| getExpr(): [ConstructorCall] call to String
+# 2458| Type = [VoidType] void
+# 2458| ValueCategory = prvalue
+# 2459| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2459| Type = [VoidType] void
+# 2459| ValueCategory = prvalue
+# 2459| getQualifier(): [VariableAccess] x813
+# 2459| Type = [Struct] String
+# 2459| ValueCategory = lvalue
+# 2459| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2459| Conversion = [BoolConversion] conversion to bool
+# 2459| Type = [BoolType] bool
+# 2459| Value = [CStyleCast] 0
+# 2459| ValueCategory = prvalue
+# 2460| getStmt(814): [DoStmt] do (...) ...
+# 2462| getCondition(): [Literal] 0
+# 2462| Type = [IntType] int
+# 2462| Value = [Literal] 0
+# 2462| ValueCategory = prvalue
+# 2460| getStmt(): [BlockStmt] { ... }
+# 2461| getStmt(0): [DeclStmt] declaration
+# 2461| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x814
+# 2461| Type = [Struct] String
+# 2461| getVariable().getInitializer(): [Initializer] initializer for x814
+# 2461| getExpr(): [ConstructorCall] call to String
+# 2461| Type = [VoidType] void
+# 2461| ValueCategory = prvalue
+# 2462| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2462| Type = [VoidType] void
+# 2462| ValueCategory = prvalue
+# 2462| getQualifier(): [VariableAccess] x814
+# 2462| Type = [Struct] String
+# 2462| ValueCategory = lvalue
+# 2462| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2462| Conversion = [BoolConversion] conversion to bool
+# 2462| Type = [BoolType] bool
+# 2462| Value = [CStyleCast] 0
+# 2462| ValueCategory = prvalue
+# 2463| getStmt(815): [DoStmt] do (...) ...
+# 2465| getCondition(): [Literal] 0
+# 2465| Type = [IntType] int
+# 2465| Value = [Literal] 0
+# 2465| ValueCategory = prvalue
+# 2463| getStmt(): [BlockStmt] { ... }
+# 2464| getStmt(0): [DeclStmt] declaration
+# 2464| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x815
+# 2464| Type = [Struct] String
+# 2464| getVariable().getInitializer(): [Initializer] initializer for x815
+# 2464| getExpr(): [ConstructorCall] call to String
+# 2464| Type = [VoidType] void
+# 2464| ValueCategory = prvalue
+# 2465| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2465| Type = [VoidType] void
+# 2465| ValueCategory = prvalue
+# 2465| getQualifier(): [VariableAccess] x815
+# 2465| Type = [Struct] String
+# 2465| ValueCategory = lvalue
+# 2465| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2465| Conversion = [BoolConversion] conversion to bool
+# 2465| Type = [BoolType] bool
+# 2465| Value = [CStyleCast] 0
+# 2465| ValueCategory = prvalue
+# 2466| getStmt(816): [DoStmt] do (...) ...
+# 2468| getCondition(): [Literal] 0
+# 2468| Type = [IntType] int
+# 2468| Value = [Literal] 0
+# 2468| ValueCategory = prvalue
+# 2466| getStmt(): [BlockStmt] { ... }
+# 2467| getStmt(0): [DeclStmt] declaration
+# 2467| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x816
+# 2467| Type = [Struct] String
+# 2467| getVariable().getInitializer(): [Initializer] initializer for x816
+# 2467| getExpr(): [ConstructorCall] call to String
+# 2467| Type = [VoidType] void
+# 2467| ValueCategory = prvalue
+# 2468| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2468| Type = [VoidType] void
+# 2468| ValueCategory = prvalue
+# 2468| getQualifier(): [VariableAccess] x816
+# 2468| Type = [Struct] String
+# 2468| ValueCategory = lvalue
+# 2468| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2468| Conversion = [BoolConversion] conversion to bool
+# 2468| Type = [BoolType] bool
+# 2468| Value = [CStyleCast] 0
+# 2468| ValueCategory = prvalue
+# 2469| getStmt(817): [DoStmt] do (...) ...
+# 2471| getCondition(): [Literal] 0
+# 2471| Type = [IntType] int
+# 2471| Value = [Literal] 0
+# 2471| ValueCategory = prvalue
+# 2469| getStmt(): [BlockStmt] { ... }
+# 2470| getStmt(0): [DeclStmt] declaration
+# 2470| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x817
+# 2470| Type = [Struct] String
+# 2470| getVariable().getInitializer(): [Initializer] initializer for x817
+# 2470| getExpr(): [ConstructorCall] call to String
+# 2470| Type = [VoidType] void
+# 2470| ValueCategory = prvalue
+# 2471| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2471| Type = [VoidType] void
+# 2471| ValueCategory = prvalue
+# 2471| getQualifier(): [VariableAccess] x817
+# 2471| Type = [Struct] String
+# 2471| ValueCategory = lvalue
+# 2471| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2471| Conversion = [BoolConversion] conversion to bool
+# 2471| Type = [BoolType] bool
+# 2471| Value = [CStyleCast] 0
+# 2471| ValueCategory = prvalue
+# 2472| getStmt(818): [DoStmt] do (...) ...
+# 2474| getCondition(): [Literal] 0
+# 2474| Type = [IntType] int
+# 2474| Value = [Literal] 0
+# 2474| ValueCategory = prvalue
+# 2472| getStmt(): [BlockStmt] { ... }
+# 2473| getStmt(0): [DeclStmt] declaration
+# 2473| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x818
+# 2473| Type = [Struct] String
+# 2473| getVariable().getInitializer(): [Initializer] initializer for x818
+# 2473| getExpr(): [ConstructorCall] call to String
+# 2473| Type = [VoidType] void
+# 2473| ValueCategory = prvalue
+# 2474| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2474| Type = [VoidType] void
+# 2474| ValueCategory = prvalue
+# 2474| getQualifier(): [VariableAccess] x818
+# 2474| Type = [Struct] String
+# 2474| ValueCategory = lvalue
+# 2474| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2474| Conversion = [BoolConversion] conversion to bool
+# 2474| Type = [BoolType] bool
+# 2474| Value = [CStyleCast] 0
+# 2474| ValueCategory = prvalue
+# 2475| getStmt(819): [DoStmt] do (...) ...
+# 2477| getCondition(): [Literal] 0
+# 2477| Type = [IntType] int
+# 2477| Value = [Literal] 0
+# 2477| ValueCategory = prvalue
+# 2475| getStmt(): [BlockStmt] { ... }
+# 2476| getStmt(0): [DeclStmt] declaration
+# 2476| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x819
+# 2476| Type = [Struct] String
+# 2476| getVariable().getInitializer(): [Initializer] initializer for x819
+# 2476| getExpr(): [ConstructorCall] call to String
+# 2476| Type = [VoidType] void
+# 2476| ValueCategory = prvalue
+# 2477| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2477| Type = [VoidType] void
+# 2477| ValueCategory = prvalue
+# 2477| getQualifier(): [VariableAccess] x819
+# 2477| Type = [Struct] String
+# 2477| ValueCategory = lvalue
+# 2477| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2477| Conversion = [BoolConversion] conversion to bool
+# 2477| Type = [BoolType] bool
+# 2477| Value = [CStyleCast] 0
+# 2477| ValueCategory = prvalue
+# 2478| getStmt(820): [DoStmt] do (...) ...
+# 2480| getCondition(): [Literal] 0
+# 2480| Type = [IntType] int
+# 2480| Value = [Literal] 0
+# 2480| ValueCategory = prvalue
+# 2478| getStmt(): [BlockStmt] { ... }
+# 2479| getStmt(0): [DeclStmt] declaration
+# 2479| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x820
+# 2479| Type = [Struct] String
+# 2479| getVariable().getInitializer(): [Initializer] initializer for x820
+# 2479| getExpr(): [ConstructorCall] call to String
+# 2479| Type = [VoidType] void
+# 2479| ValueCategory = prvalue
+# 2480| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2480| Type = [VoidType] void
+# 2480| ValueCategory = prvalue
+# 2480| getQualifier(): [VariableAccess] x820
+# 2480| Type = [Struct] String
+# 2480| ValueCategory = lvalue
+# 2480| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2480| Conversion = [BoolConversion] conversion to bool
+# 2480| Type = [BoolType] bool
+# 2480| Value = [CStyleCast] 0
+# 2480| ValueCategory = prvalue
+# 2481| getStmt(821): [DoStmt] do (...) ...
+# 2483| getCondition(): [Literal] 0
+# 2483| Type = [IntType] int
+# 2483| Value = [Literal] 0
+# 2483| ValueCategory = prvalue
+# 2481| getStmt(): [BlockStmt] { ... }
+# 2482| getStmt(0): [DeclStmt] declaration
+# 2482| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x821
+# 2482| Type = [Struct] String
+# 2482| getVariable().getInitializer(): [Initializer] initializer for x821
+# 2482| getExpr(): [ConstructorCall] call to String
+# 2482| Type = [VoidType] void
+# 2482| ValueCategory = prvalue
+# 2483| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2483| Type = [VoidType] void
+# 2483| ValueCategory = prvalue
+# 2483| getQualifier(): [VariableAccess] x821
+# 2483| Type = [Struct] String
+# 2483| ValueCategory = lvalue
+# 2483| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2483| Conversion = [BoolConversion] conversion to bool
+# 2483| Type = [BoolType] bool
+# 2483| Value = [CStyleCast] 0
+# 2483| ValueCategory = prvalue
+# 2484| getStmt(822): [DoStmt] do (...) ...
+# 2486| getCondition(): [Literal] 0
+# 2486| Type = [IntType] int
+# 2486| Value = [Literal] 0
+# 2486| ValueCategory = prvalue
+# 2484| getStmt(): [BlockStmt] { ... }
+# 2485| getStmt(0): [DeclStmt] declaration
+# 2485| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x822
+# 2485| Type = [Struct] String
+# 2485| getVariable().getInitializer(): [Initializer] initializer for x822
+# 2485| getExpr(): [ConstructorCall] call to String
+# 2485| Type = [VoidType] void
+# 2485| ValueCategory = prvalue
+# 2486| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2486| Type = [VoidType] void
+# 2486| ValueCategory = prvalue
+# 2486| getQualifier(): [VariableAccess] x822
+# 2486| Type = [Struct] String
+# 2486| ValueCategory = lvalue
+# 2486| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2486| Conversion = [BoolConversion] conversion to bool
+# 2486| Type = [BoolType] bool
+# 2486| Value = [CStyleCast] 0
+# 2486| ValueCategory = prvalue
+# 2487| getStmt(823): [DoStmt] do (...) ...
+# 2489| getCondition(): [Literal] 0
+# 2489| Type = [IntType] int
+# 2489| Value = [Literal] 0
+# 2489| ValueCategory = prvalue
+# 2487| getStmt(): [BlockStmt] { ... }
+# 2488| getStmt(0): [DeclStmt] declaration
+# 2488| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x823
+# 2488| Type = [Struct] String
+# 2488| getVariable().getInitializer(): [Initializer] initializer for x823
+# 2488| getExpr(): [ConstructorCall] call to String
+# 2488| Type = [VoidType] void
+# 2488| ValueCategory = prvalue
+# 2489| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2489| Type = [VoidType] void
+# 2489| ValueCategory = prvalue
+# 2489| getQualifier(): [VariableAccess] x823
+# 2489| Type = [Struct] String
+# 2489| ValueCategory = lvalue
+# 2489| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2489| Conversion = [BoolConversion] conversion to bool
+# 2489| Type = [BoolType] bool
+# 2489| Value = [CStyleCast] 0
+# 2489| ValueCategory = prvalue
+# 2490| getStmt(824): [DoStmt] do (...) ...
+# 2492| getCondition(): [Literal] 0
+# 2492| Type = [IntType] int
+# 2492| Value = [Literal] 0
+# 2492| ValueCategory = prvalue
+# 2490| getStmt(): [BlockStmt] { ... }
+# 2491| getStmt(0): [DeclStmt] declaration
+# 2491| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x824
+# 2491| Type = [Struct] String
+# 2491| getVariable().getInitializer(): [Initializer] initializer for x824
+# 2491| getExpr(): [ConstructorCall] call to String
+# 2491| Type = [VoidType] void
+# 2491| ValueCategory = prvalue
+# 2492| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2492| Type = [VoidType] void
+# 2492| ValueCategory = prvalue
+# 2492| getQualifier(): [VariableAccess] x824
+# 2492| Type = [Struct] String
+# 2492| ValueCategory = lvalue
+# 2492| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2492| Conversion = [BoolConversion] conversion to bool
+# 2492| Type = [BoolType] bool
+# 2492| Value = [CStyleCast] 0
+# 2492| ValueCategory = prvalue
+# 2493| getStmt(825): [DoStmt] do (...) ...
+# 2495| getCondition(): [Literal] 0
+# 2495| Type = [IntType] int
+# 2495| Value = [Literal] 0
+# 2495| ValueCategory = prvalue
+# 2493| getStmt(): [BlockStmt] { ... }
+# 2494| getStmt(0): [DeclStmt] declaration
+# 2494| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x825
+# 2494| Type = [Struct] String
+# 2494| getVariable().getInitializer(): [Initializer] initializer for x825
+# 2494| getExpr(): [ConstructorCall] call to String
+# 2494| Type = [VoidType] void
+# 2494| ValueCategory = prvalue
+# 2495| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2495| Type = [VoidType] void
+# 2495| ValueCategory = prvalue
+# 2495| getQualifier(): [VariableAccess] x825
+# 2495| Type = [Struct] String
+# 2495| ValueCategory = lvalue
+# 2495| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2495| Conversion = [BoolConversion] conversion to bool
+# 2495| Type = [BoolType] bool
+# 2495| Value = [CStyleCast] 0
+# 2495| ValueCategory = prvalue
+# 2496| getStmt(826): [DoStmt] do (...) ...
+# 2498| getCondition(): [Literal] 0
+# 2498| Type = [IntType] int
+# 2498| Value = [Literal] 0
+# 2498| ValueCategory = prvalue
+# 2496| getStmt(): [BlockStmt] { ... }
+# 2497| getStmt(0): [DeclStmt] declaration
+# 2497| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x826
+# 2497| Type = [Struct] String
+# 2497| getVariable().getInitializer(): [Initializer] initializer for x826
+# 2497| getExpr(): [ConstructorCall] call to String
+# 2497| Type = [VoidType] void
+# 2497| ValueCategory = prvalue
+# 2498| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2498| Type = [VoidType] void
+# 2498| ValueCategory = prvalue
+# 2498| getQualifier(): [VariableAccess] x826
+# 2498| Type = [Struct] String
+# 2498| ValueCategory = lvalue
+# 2498| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2498| Conversion = [BoolConversion] conversion to bool
+# 2498| Type = [BoolType] bool
+# 2498| Value = [CStyleCast] 0
+# 2498| ValueCategory = prvalue
+# 2499| getStmt(827): [DoStmt] do (...) ...
+# 2501| getCondition(): [Literal] 0
+# 2501| Type = [IntType] int
+# 2501| Value = [Literal] 0
+# 2501| ValueCategory = prvalue
+# 2499| getStmt(): [BlockStmt] { ... }
+# 2500| getStmt(0): [DeclStmt] declaration
+# 2500| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x827
+# 2500| Type = [Struct] String
+# 2500| getVariable().getInitializer(): [Initializer] initializer for x827
+# 2500| getExpr(): [ConstructorCall] call to String
+# 2500| Type = [VoidType] void
+# 2500| ValueCategory = prvalue
+# 2501| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2501| Type = [VoidType] void
+# 2501| ValueCategory = prvalue
+# 2501| getQualifier(): [VariableAccess] x827
+# 2501| Type = [Struct] String
+# 2501| ValueCategory = lvalue
+# 2501| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2501| Conversion = [BoolConversion] conversion to bool
+# 2501| Type = [BoolType] bool
+# 2501| Value = [CStyleCast] 0
+# 2501| ValueCategory = prvalue
+# 2502| getStmt(828): [DoStmt] do (...) ...
+# 2504| getCondition(): [Literal] 0
+# 2504| Type = [IntType] int
+# 2504| Value = [Literal] 0
+# 2504| ValueCategory = prvalue
+# 2502| getStmt(): [BlockStmt] { ... }
+# 2503| getStmt(0): [DeclStmt] declaration
+# 2503| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x828
+# 2503| Type = [Struct] String
+# 2503| getVariable().getInitializer(): [Initializer] initializer for x828
+# 2503| getExpr(): [ConstructorCall] call to String
+# 2503| Type = [VoidType] void
+# 2503| ValueCategory = prvalue
+# 2504| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2504| Type = [VoidType] void
+# 2504| ValueCategory = prvalue
+# 2504| getQualifier(): [VariableAccess] x828
+# 2504| Type = [Struct] String
+# 2504| ValueCategory = lvalue
+# 2504| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2504| Conversion = [BoolConversion] conversion to bool
+# 2504| Type = [BoolType] bool
+# 2504| Value = [CStyleCast] 0
+# 2504| ValueCategory = prvalue
+# 2505| getStmt(829): [DoStmt] do (...) ...
+# 2507| getCondition(): [Literal] 0
+# 2507| Type = [IntType] int
+# 2507| Value = [Literal] 0
+# 2507| ValueCategory = prvalue
+# 2505| getStmt(): [BlockStmt] { ... }
+# 2506| getStmt(0): [DeclStmt] declaration
+# 2506| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x829
+# 2506| Type = [Struct] String
+# 2506| getVariable().getInitializer(): [Initializer] initializer for x829
+# 2506| getExpr(): [ConstructorCall] call to String
+# 2506| Type = [VoidType] void
+# 2506| ValueCategory = prvalue
+# 2507| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2507| Type = [VoidType] void
+# 2507| ValueCategory = prvalue
+# 2507| getQualifier(): [VariableAccess] x829
+# 2507| Type = [Struct] String
+# 2507| ValueCategory = lvalue
+# 2507| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2507| Conversion = [BoolConversion] conversion to bool
+# 2507| Type = [BoolType] bool
+# 2507| Value = [CStyleCast] 0
+# 2507| ValueCategory = prvalue
+# 2508| getStmt(830): [DoStmt] do (...) ...
+# 2510| getCondition(): [Literal] 0
+# 2510| Type = [IntType] int
+# 2510| Value = [Literal] 0
+# 2510| ValueCategory = prvalue
+# 2508| getStmt(): [BlockStmt] { ... }
+# 2509| getStmt(0): [DeclStmt] declaration
+# 2509| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x830
+# 2509| Type = [Struct] String
+# 2509| getVariable().getInitializer(): [Initializer] initializer for x830
+# 2509| getExpr(): [ConstructorCall] call to String
+# 2509| Type = [VoidType] void
+# 2509| ValueCategory = prvalue
+# 2510| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2510| Type = [VoidType] void
+# 2510| ValueCategory = prvalue
+# 2510| getQualifier(): [VariableAccess] x830
+# 2510| Type = [Struct] String
+# 2510| ValueCategory = lvalue
+# 2510| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2510| Conversion = [BoolConversion] conversion to bool
+# 2510| Type = [BoolType] bool
+# 2510| Value = [CStyleCast] 0
+# 2510| ValueCategory = prvalue
+# 2511| getStmt(831): [DoStmt] do (...) ...
+# 2513| getCondition(): [Literal] 0
+# 2513| Type = [IntType] int
+# 2513| Value = [Literal] 0
+# 2513| ValueCategory = prvalue
+# 2511| getStmt(): [BlockStmt] { ... }
+# 2512| getStmt(0): [DeclStmt] declaration
+# 2512| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x831
+# 2512| Type = [Struct] String
+# 2512| getVariable().getInitializer(): [Initializer] initializer for x831
+# 2512| getExpr(): [ConstructorCall] call to String
+# 2512| Type = [VoidType] void
+# 2512| ValueCategory = prvalue
+# 2513| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2513| Type = [VoidType] void
+# 2513| ValueCategory = prvalue
+# 2513| getQualifier(): [VariableAccess] x831
+# 2513| Type = [Struct] String
+# 2513| ValueCategory = lvalue
+# 2513| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2513| Conversion = [BoolConversion] conversion to bool
+# 2513| Type = [BoolType] bool
+# 2513| Value = [CStyleCast] 0
+# 2513| ValueCategory = prvalue
+# 2514| getStmt(832): [DoStmt] do (...) ...
+# 2516| getCondition(): [Literal] 0
+# 2516| Type = [IntType] int
+# 2516| Value = [Literal] 0
+# 2516| ValueCategory = prvalue
+# 2514| getStmt(): [BlockStmt] { ... }
+# 2515| getStmt(0): [DeclStmt] declaration
+# 2515| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x832
+# 2515| Type = [Struct] String
+# 2515| getVariable().getInitializer(): [Initializer] initializer for x832
+# 2515| getExpr(): [ConstructorCall] call to String
+# 2515| Type = [VoidType] void
+# 2515| ValueCategory = prvalue
+# 2516| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2516| Type = [VoidType] void
+# 2516| ValueCategory = prvalue
+# 2516| getQualifier(): [VariableAccess] x832
+# 2516| Type = [Struct] String
+# 2516| ValueCategory = lvalue
+# 2516| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2516| Conversion = [BoolConversion] conversion to bool
+# 2516| Type = [BoolType] bool
+# 2516| Value = [CStyleCast] 0
+# 2516| ValueCategory = prvalue
+# 2517| getStmt(833): [DoStmt] do (...) ...
+# 2519| getCondition(): [Literal] 0
+# 2519| Type = [IntType] int
+# 2519| Value = [Literal] 0
+# 2519| ValueCategory = prvalue
+# 2517| getStmt(): [BlockStmt] { ... }
+# 2518| getStmt(0): [DeclStmt] declaration
+# 2518| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x833
+# 2518| Type = [Struct] String
+# 2518| getVariable().getInitializer(): [Initializer] initializer for x833
+# 2518| getExpr(): [ConstructorCall] call to String
+# 2518| Type = [VoidType] void
+# 2518| ValueCategory = prvalue
+# 2519| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2519| Type = [VoidType] void
+# 2519| ValueCategory = prvalue
+# 2519| getQualifier(): [VariableAccess] x833
+# 2519| Type = [Struct] String
+# 2519| ValueCategory = lvalue
+# 2519| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2519| Conversion = [BoolConversion] conversion to bool
+# 2519| Type = [BoolType] bool
+# 2519| Value = [CStyleCast] 0
+# 2519| ValueCategory = prvalue
+# 2520| getStmt(834): [DoStmt] do (...) ...
+# 2522| getCondition(): [Literal] 0
+# 2522| Type = [IntType] int
+# 2522| Value = [Literal] 0
+# 2522| ValueCategory = prvalue
+# 2520| getStmt(): [BlockStmt] { ... }
+# 2521| getStmt(0): [DeclStmt] declaration
+# 2521| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x834
+# 2521| Type = [Struct] String
+# 2521| getVariable().getInitializer(): [Initializer] initializer for x834
+# 2521| getExpr(): [ConstructorCall] call to String
+# 2521| Type = [VoidType] void
+# 2521| ValueCategory = prvalue
+# 2522| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2522| Type = [VoidType] void
+# 2522| ValueCategory = prvalue
+# 2522| getQualifier(): [VariableAccess] x834
+# 2522| Type = [Struct] String
+# 2522| ValueCategory = lvalue
+# 2522| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2522| Conversion = [BoolConversion] conversion to bool
+# 2522| Type = [BoolType] bool
+# 2522| Value = [CStyleCast] 0
+# 2522| ValueCategory = prvalue
+# 2523| getStmt(835): [DoStmt] do (...) ...
+# 2525| getCondition(): [Literal] 0
+# 2525| Type = [IntType] int
+# 2525| Value = [Literal] 0
+# 2525| ValueCategory = prvalue
+# 2523| getStmt(): [BlockStmt] { ... }
+# 2524| getStmt(0): [DeclStmt] declaration
+# 2524| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x835
+# 2524| Type = [Struct] String
+# 2524| getVariable().getInitializer(): [Initializer] initializer for x835
+# 2524| getExpr(): [ConstructorCall] call to String
+# 2524| Type = [VoidType] void
+# 2524| ValueCategory = prvalue
+# 2525| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2525| Type = [VoidType] void
+# 2525| ValueCategory = prvalue
+# 2525| getQualifier(): [VariableAccess] x835
+# 2525| Type = [Struct] String
+# 2525| ValueCategory = lvalue
+# 2525| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2525| Conversion = [BoolConversion] conversion to bool
+# 2525| Type = [BoolType] bool
+# 2525| Value = [CStyleCast] 0
+# 2525| ValueCategory = prvalue
+# 2526| getStmt(836): [DoStmt] do (...) ...
+# 2528| getCondition(): [Literal] 0
+# 2528| Type = [IntType] int
+# 2528| Value = [Literal] 0
+# 2528| ValueCategory = prvalue
+# 2526| getStmt(): [BlockStmt] { ... }
+# 2527| getStmt(0): [DeclStmt] declaration
+# 2527| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x836
+# 2527| Type = [Struct] String
+# 2527| getVariable().getInitializer(): [Initializer] initializer for x836
+# 2527| getExpr(): [ConstructorCall] call to String
+# 2527| Type = [VoidType] void
+# 2527| ValueCategory = prvalue
+# 2528| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2528| Type = [VoidType] void
+# 2528| ValueCategory = prvalue
+# 2528| getQualifier(): [VariableAccess] x836
+# 2528| Type = [Struct] String
+# 2528| ValueCategory = lvalue
+# 2528| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2528| Conversion = [BoolConversion] conversion to bool
+# 2528| Type = [BoolType] bool
+# 2528| Value = [CStyleCast] 0
+# 2528| ValueCategory = prvalue
+# 2529| getStmt(837): [DoStmt] do (...) ...
+# 2531| getCondition(): [Literal] 0
+# 2531| Type = [IntType] int
+# 2531| Value = [Literal] 0
+# 2531| ValueCategory = prvalue
+# 2529| getStmt(): [BlockStmt] { ... }
+# 2530| getStmt(0): [DeclStmt] declaration
+# 2530| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x837
+# 2530| Type = [Struct] String
+# 2530| getVariable().getInitializer(): [Initializer] initializer for x837
+# 2530| getExpr(): [ConstructorCall] call to String
+# 2530| Type = [VoidType] void
+# 2530| ValueCategory = prvalue
+# 2531| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2531| Type = [VoidType] void
+# 2531| ValueCategory = prvalue
+# 2531| getQualifier(): [VariableAccess] x837
+# 2531| Type = [Struct] String
+# 2531| ValueCategory = lvalue
+# 2531| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2531| Conversion = [BoolConversion] conversion to bool
+# 2531| Type = [BoolType] bool
+# 2531| Value = [CStyleCast] 0
+# 2531| ValueCategory = prvalue
+# 2532| getStmt(838): [DoStmt] do (...) ...
+# 2534| getCondition(): [Literal] 0
+# 2534| Type = [IntType] int
+# 2534| Value = [Literal] 0
+# 2534| ValueCategory = prvalue
+# 2532| getStmt(): [BlockStmt] { ... }
+# 2533| getStmt(0): [DeclStmt] declaration
+# 2533| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x838
+# 2533| Type = [Struct] String
+# 2533| getVariable().getInitializer(): [Initializer] initializer for x838
+# 2533| getExpr(): [ConstructorCall] call to String
+# 2533| Type = [VoidType] void
+# 2533| ValueCategory = prvalue
+# 2534| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2534| Type = [VoidType] void
+# 2534| ValueCategory = prvalue
+# 2534| getQualifier(): [VariableAccess] x838
+# 2534| Type = [Struct] String
+# 2534| ValueCategory = lvalue
+# 2534| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2534| Conversion = [BoolConversion] conversion to bool
+# 2534| Type = [BoolType] bool
+# 2534| Value = [CStyleCast] 0
+# 2534| ValueCategory = prvalue
+# 2535| getStmt(839): [DoStmt] do (...) ...
+# 2537| getCondition(): [Literal] 0
+# 2537| Type = [IntType] int
+# 2537| Value = [Literal] 0
+# 2537| ValueCategory = prvalue
+# 2535| getStmt(): [BlockStmt] { ... }
+# 2536| getStmt(0): [DeclStmt] declaration
+# 2536| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x839
+# 2536| Type = [Struct] String
+# 2536| getVariable().getInitializer(): [Initializer] initializer for x839
+# 2536| getExpr(): [ConstructorCall] call to String
+# 2536| Type = [VoidType] void
+# 2536| ValueCategory = prvalue
+# 2537| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2537| Type = [VoidType] void
+# 2537| ValueCategory = prvalue
+# 2537| getQualifier(): [VariableAccess] x839
+# 2537| Type = [Struct] String
+# 2537| ValueCategory = lvalue
+# 2537| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2537| Conversion = [BoolConversion] conversion to bool
+# 2537| Type = [BoolType] bool
+# 2537| Value = [CStyleCast] 0
+# 2537| ValueCategory = prvalue
+# 2538| getStmt(840): [DoStmt] do (...) ...
+# 2540| getCondition(): [Literal] 0
+# 2540| Type = [IntType] int
+# 2540| Value = [Literal] 0
+# 2540| ValueCategory = prvalue
+# 2538| getStmt(): [BlockStmt] { ... }
+# 2539| getStmt(0): [DeclStmt] declaration
+# 2539| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x840
+# 2539| Type = [Struct] String
+# 2539| getVariable().getInitializer(): [Initializer] initializer for x840
+# 2539| getExpr(): [ConstructorCall] call to String
+# 2539| Type = [VoidType] void
+# 2539| ValueCategory = prvalue
+# 2540| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2540| Type = [VoidType] void
+# 2540| ValueCategory = prvalue
+# 2540| getQualifier(): [VariableAccess] x840
+# 2540| Type = [Struct] String
+# 2540| ValueCategory = lvalue
+# 2540| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2540| Conversion = [BoolConversion] conversion to bool
+# 2540| Type = [BoolType] bool
+# 2540| Value = [CStyleCast] 0
+# 2540| ValueCategory = prvalue
+# 2541| getStmt(841): [DoStmt] do (...) ...
+# 2543| getCondition(): [Literal] 0
+# 2543| Type = [IntType] int
+# 2543| Value = [Literal] 0
+# 2543| ValueCategory = prvalue
+# 2541| getStmt(): [BlockStmt] { ... }
+# 2542| getStmt(0): [DeclStmt] declaration
+# 2542| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x841
+# 2542| Type = [Struct] String
+# 2542| getVariable().getInitializer(): [Initializer] initializer for x841
+# 2542| getExpr(): [ConstructorCall] call to String
+# 2542| Type = [VoidType] void
+# 2542| ValueCategory = prvalue
+# 2543| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2543| Type = [VoidType] void
+# 2543| ValueCategory = prvalue
+# 2543| getQualifier(): [VariableAccess] x841
+# 2543| Type = [Struct] String
+# 2543| ValueCategory = lvalue
+# 2543| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2543| Conversion = [BoolConversion] conversion to bool
+# 2543| Type = [BoolType] bool
+# 2543| Value = [CStyleCast] 0
+# 2543| ValueCategory = prvalue
+# 2544| getStmt(842): [DoStmt] do (...) ...
+# 2546| getCondition(): [Literal] 0
+# 2546| Type = [IntType] int
+# 2546| Value = [Literal] 0
+# 2546| ValueCategory = prvalue
+# 2544| getStmt(): [BlockStmt] { ... }
+# 2545| getStmt(0): [DeclStmt] declaration
+# 2545| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x842
+# 2545| Type = [Struct] String
+# 2545| getVariable().getInitializer(): [Initializer] initializer for x842
+# 2545| getExpr(): [ConstructorCall] call to String
+# 2545| Type = [VoidType] void
+# 2545| ValueCategory = prvalue
+# 2546| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2546| Type = [VoidType] void
+# 2546| ValueCategory = prvalue
+# 2546| getQualifier(): [VariableAccess] x842
+# 2546| Type = [Struct] String
+# 2546| ValueCategory = lvalue
+# 2546| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2546| Conversion = [BoolConversion] conversion to bool
+# 2546| Type = [BoolType] bool
+# 2546| Value = [CStyleCast] 0
+# 2546| ValueCategory = prvalue
+# 2547| getStmt(843): [DoStmt] do (...) ...
+# 2549| getCondition(): [Literal] 0
+# 2549| Type = [IntType] int
+# 2549| Value = [Literal] 0
+# 2549| ValueCategory = prvalue
+# 2547| getStmt(): [BlockStmt] { ... }
+# 2548| getStmt(0): [DeclStmt] declaration
+# 2548| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x843
+# 2548| Type = [Struct] String
+# 2548| getVariable().getInitializer(): [Initializer] initializer for x843
+# 2548| getExpr(): [ConstructorCall] call to String
+# 2548| Type = [VoidType] void
+# 2548| ValueCategory = prvalue
+# 2549| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2549| Type = [VoidType] void
+# 2549| ValueCategory = prvalue
+# 2549| getQualifier(): [VariableAccess] x843
+# 2549| Type = [Struct] String
+# 2549| ValueCategory = lvalue
+# 2549| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2549| Conversion = [BoolConversion] conversion to bool
+# 2549| Type = [BoolType] bool
+# 2549| Value = [CStyleCast] 0
+# 2549| ValueCategory = prvalue
+# 2550| getStmt(844): [DoStmt] do (...) ...
+# 2552| getCondition(): [Literal] 0
+# 2552| Type = [IntType] int
+# 2552| Value = [Literal] 0
+# 2552| ValueCategory = prvalue
+# 2550| getStmt(): [BlockStmt] { ... }
+# 2551| getStmt(0): [DeclStmt] declaration
+# 2551| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x844
+# 2551| Type = [Struct] String
+# 2551| getVariable().getInitializer(): [Initializer] initializer for x844
+# 2551| getExpr(): [ConstructorCall] call to String
+# 2551| Type = [VoidType] void
+# 2551| ValueCategory = prvalue
+# 2552| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2552| Type = [VoidType] void
+# 2552| ValueCategory = prvalue
+# 2552| getQualifier(): [VariableAccess] x844
+# 2552| Type = [Struct] String
+# 2552| ValueCategory = lvalue
+# 2552| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2552| Conversion = [BoolConversion] conversion to bool
+# 2552| Type = [BoolType] bool
+# 2552| Value = [CStyleCast] 0
+# 2552| ValueCategory = prvalue
+# 2553| getStmt(845): [DoStmt] do (...) ...
+# 2555| getCondition(): [Literal] 0
+# 2555| Type = [IntType] int
+# 2555| Value = [Literal] 0
+# 2555| ValueCategory = prvalue
+# 2553| getStmt(): [BlockStmt] { ... }
+# 2554| getStmt(0): [DeclStmt] declaration
+# 2554| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x845
+# 2554| Type = [Struct] String
+# 2554| getVariable().getInitializer(): [Initializer] initializer for x845
+# 2554| getExpr(): [ConstructorCall] call to String
+# 2554| Type = [VoidType] void
+# 2554| ValueCategory = prvalue
+# 2555| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2555| Type = [VoidType] void
+# 2555| ValueCategory = prvalue
+# 2555| getQualifier(): [VariableAccess] x845
+# 2555| Type = [Struct] String
+# 2555| ValueCategory = lvalue
+# 2555| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2555| Conversion = [BoolConversion] conversion to bool
+# 2555| Type = [BoolType] bool
+# 2555| Value = [CStyleCast] 0
+# 2555| ValueCategory = prvalue
+# 2556| getStmt(846): [DoStmt] do (...) ...
+# 2558| getCondition(): [Literal] 0
+# 2558| Type = [IntType] int
+# 2558| Value = [Literal] 0
+# 2558| ValueCategory = prvalue
+# 2556| getStmt(): [BlockStmt] { ... }
+# 2557| getStmt(0): [DeclStmt] declaration
+# 2557| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x846
+# 2557| Type = [Struct] String
+# 2557| getVariable().getInitializer(): [Initializer] initializer for x846
+# 2557| getExpr(): [ConstructorCall] call to String
+# 2557| Type = [VoidType] void
+# 2557| ValueCategory = prvalue
+# 2558| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2558| Type = [VoidType] void
+# 2558| ValueCategory = prvalue
+# 2558| getQualifier(): [VariableAccess] x846
+# 2558| Type = [Struct] String
+# 2558| ValueCategory = lvalue
+# 2558| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2558| Conversion = [BoolConversion] conversion to bool
+# 2558| Type = [BoolType] bool
+# 2558| Value = [CStyleCast] 0
+# 2558| ValueCategory = prvalue
+# 2559| getStmt(847): [DoStmt] do (...) ...
+# 2561| getCondition(): [Literal] 0
+# 2561| Type = [IntType] int
+# 2561| Value = [Literal] 0
+# 2561| ValueCategory = prvalue
+# 2559| getStmt(): [BlockStmt] { ... }
+# 2560| getStmt(0): [DeclStmt] declaration
+# 2560| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x847
+# 2560| Type = [Struct] String
+# 2560| getVariable().getInitializer(): [Initializer] initializer for x847
+# 2560| getExpr(): [ConstructorCall] call to String
+# 2560| Type = [VoidType] void
+# 2560| ValueCategory = prvalue
+# 2561| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2561| Type = [VoidType] void
+# 2561| ValueCategory = prvalue
+# 2561| getQualifier(): [VariableAccess] x847
+# 2561| Type = [Struct] String
+# 2561| ValueCategory = lvalue
+# 2561| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2561| Conversion = [BoolConversion] conversion to bool
+# 2561| Type = [BoolType] bool
+# 2561| Value = [CStyleCast] 0
+# 2561| ValueCategory = prvalue
+# 2562| getStmt(848): [DoStmt] do (...) ...
+# 2564| getCondition(): [Literal] 0
+# 2564| Type = [IntType] int
+# 2564| Value = [Literal] 0
+# 2564| ValueCategory = prvalue
+# 2562| getStmt(): [BlockStmt] { ... }
+# 2563| getStmt(0): [DeclStmt] declaration
+# 2563| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x848
+# 2563| Type = [Struct] String
+# 2563| getVariable().getInitializer(): [Initializer] initializer for x848
+# 2563| getExpr(): [ConstructorCall] call to String
+# 2563| Type = [VoidType] void
+# 2563| ValueCategory = prvalue
+# 2564| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2564| Type = [VoidType] void
+# 2564| ValueCategory = prvalue
+# 2564| getQualifier(): [VariableAccess] x848
+# 2564| Type = [Struct] String
+# 2564| ValueCategory = lvalue
+# 2564| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2564| Conversion = [BoolConversion] conversion to bool
+# 2564| Type = [BoolType] bool
+# 2564| Value = [CStyleCast] 0
+# 2564| ValueCategory = prvalue
+# 2565| getStmt(849): [DoStmt] do (...) ...
+# 2567| getCondition(): [Literal] 0
+# 2567| Type = [IntType] int
+# 2567| Value = [Literal] 0
+# 2567| ValueCategory = prvalue
+# 2565| getStmt(): [BlockStmt] { ... }
+# 2566| getStmt(0): [DeclStmt] declaration
+# 2566| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x849
+# 2566| Type = [Struct] String
+# 2566| getVariable().getInitializer(): [Initializer] initializer for x849
+# 2566| getExpr(): [ConstructorCall] call to String
+# 2566| Type = [VoidType] void
+# 2566| ValueCategory = prvalue
+# 2567| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2567| Type = [VoidType] void
+# 2567| ValueCategory = prvalue
+# 2567| getQualifier(): [VariableAccess] x849
+# 2567| Type = [Struct] String
+# 2567| ValueCategory = lvalue
+# 2567| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2567| Conversion = [BoolConversion] conversion to bool
+# 2567| Type = [BoolType] bool
+# 2567| Value = [CStyleCast] 0
+# 2567| ValueCategory = prvalue
+# 2568| getStmt(850): [DoStmt] do (...) ...
+# 2570| getCondition(): [Literal] 0
+# 2570| Type = [IntType] int
+# 2570| Value = [Literal] 0
+# 2570| ValueCategory = prvalue
+# 2568| getStmt(): [BlockStmt] { ... }
+# 2569| getStmt(0): [DeclStmt] declaration
+# 2569| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x850
+# 2569| Type = [Struct] String
+# 2569| getVariable().getInitializer(): [Initializer] initializer for x850
+# 2569| getExpr(): [ConstructorCall] call to String
+# 2569| Type = [VoidType] void
+# 2569| ValueCategory = prvalue
+# 2570| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2570| Type = [VoidType] void
+# 2570| ValueCategory = prvalue
+# 2570| getQualifier(): [VariableAccess] x850
+# 2570| Type = [Struct] String
+# 2570| ValueCategory = lvalue
+# 2570| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2570| Conversion = [BoolConversion] conversion to bool
+# 2570| Type = [BoolType] bool
+# 2570| Value = [CStyleCast] 0
+# 2570| ValueCategory = prvalue
+# 2571| getStmt(851): [DoStmt] do (...) ...
+# 2573| getCondition(): [Literal] 0
+# 2573| Type = [IntType] int
+# 2573| Value = [Literal] 0
+# 2573| ValueCategory = prvalue
+# 2571| getStmt(): [BlockStmt] { ... }
+# 2572| getStmt(0): [DeclStmt] declaration
+# 2572| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x851
+# 2572| Type = [Struct] String
+# 2572| getVariable().getInitializer(): [Initializer] initializer for x851
+# 2572| getExpr(): [ConstructorCall] call to String
+# 2572| Type = [VoidType] void
+# 2572| ValueCategory = prvalue
+# 2573| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2573| Type = [VoidType] void
+# 2573| ValueCategory = prvalue
+# 2573| getQualifier(): [VariableAccess] x851
+# 2573| Type = [Struct] String
+# 2573| ValueCategory = lvalue
+# 2573| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2573| Conversion = [BoolConversion] conversion to bool
+# 2573| Type = [BoolType] bool
+# 2573| Value = [CStyleCast] 0
+# 2573| ValueCategory = prvalue
+# 2574| getStmt(852): [DoStmt] do (...) ...
+# 2576| getCondition(): [Literal] 0
+# 2576| Type = [IntType] int
+# 2576| Value = [Literal] 0
+# 2576| ValueCategory = prvalue
+# 2574| getStmt(): [BlockStmt] { ... }
+# 2575| getStmt(0): [DeclStmt] declaration
+# 2575| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x852
+# 2575| Type = [Struct] String
+# 2575| getVariable().getInitializer(): [Initializer] initializer for x852
+# 2575| getExpr(): [ConstructorCall] call to String
+# 2575| Type = [VoidType] void
+# 2575| ValueCategory = prvalue
+# 2576| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2576| Type = [VoidType] void
+# 2576| ValueCategory = prvalue
+# 2576| getQualifier(): [VariableAccess] x852
+# 2576| Type = [Struct] String
+# 2576| ValueCategory = lvalue
+# 2576| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2576| Conversion = [BoolConversion] conversion to bool
+# 2576| Type = [BoolType] bool
+# 2576| Value = [CStyleCast] 0
+# 2576| ValueCategory = prvalue
+# 2577| getStmt(853): [DoStmt] do (...) ...
+# 2579| getCondition(): [Literal] 0
+# 2579| Type = [IntType] int
+# 2579| Value = [Literal] 0
+# 2579| ValueCategory = prvalue
+# 2577| getStmt(): [BlockStmt] { ... }
+# 2578| getStmt(0): [DeclStmt] declaration
+# 2578| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x853
+# 2578| Type = [Struct] String
+# 2578| getVariable().getInitializer(): [Initializer] initializer for x853
+# 2578| getExpr(): [ConstructorCall] call to String
+# 2578| Type = [VoidType] void
+# 2578| ValueCategory = prvalue
+# 2579| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2579| Type = [VoidType] void
+# 2579| ValueCategory = prvalue
+# 2579| getQualifier(): [VariableAccess] x853
+# 2579| Type = [Struct] String
+# 2579| ValueCategory = lvalue
+# 2579| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2579| Conversion = [BoolConversion] conversion to bool
+# 2579| Type = [BoolType] bool
+# 2579| Value = [CStyleCast] 0
+# 2579| ValueCategory = prvalue
+# 2580| getStmt(854): [DoStmt] do (...) ...
+# 2582| getCondition(): [Literal] 0
+# 2582| Type = [IntType] int
+# 2582| Value = [Literal] 0
+# 2582| ValueCategory = prvalue
+# 2580| getStmt(): [BlockStmt] { ... }
+# 2581| getStmt(0): [DeclStmt] declaration
+# 2581| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x854
+# 2581| Type = [Struct] String
+# 2581| getVariable().getInitializer(): [Initializer] initializer for x854
+# 2581| getExpr(): [ConstructorCall] call to String
+# 2581| Type = [VoidType] void
+# 2581| ValueCategory = prvalue
+# 2582| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2582| Type = [VoidType] void
+# 2582| ValueCategory = prvalue
+# 2582| getQualifier(): [VariableAccess] x854
+# 2582| Type = [Struct] String
+# 2582| ValueCategory = lvalue
+# 2582| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2582| Conversion = [BoolConversion] conversion to bool
+# 2582| Type = [BoolType] bool
+# 2582| Value = [CStyleCast] 0
+# 2582| ValueCategory = prvalue
+# 2583| getStmt(855): [DoStmt] do (...) ...
+# 2585| getCondition(): [Literal] 0
+# 2585| Type = [IntType] int
+# 2585| Value = [Literal] 0
+# 2585| ValueCategory = prvalue
+# 2583| getStmt(): [BlockStmt] { ... }
+# 2584| getStmt(0): [DeclStmt] declaration
+# 2584| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x855
+# 2584| Type = [Struct] String
+# 2584| getVariable().getInitializer(): [Initializer] initializer for x855
+# 2584| getExpr(): [ConstructorCall] call to String
+# 2584| Type = [VoidType] void
+# 2584| ValueCategory = prvalue
+# 2585| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2585| Type = [VoidType] void
+# 2585| ValueCategory = prvalue
+# 2585| getQualifier(): [VariableAccess] x855
+# 2585| Type = [Struct] String
+# 2585| ValueCategory = lvalue
+# 2585| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2585| Conversion = [BoolConversion] conversion to bool
+# 2585| Type = [BoolType] bool
+# 2585| Value = [CStyleCast] 0
+# 2585| ValueCategory = prvalue
+# 2586| getStmt(856): [DoStmt] do (...) ...
+# 2588| getCondition(): [Literal] 0
+# 2588| Type = [IntType] int
+# 2588| Value = [Literal] 0
+# 2588| ValueCategory = prvalue
+# 2586| getStmt(): [BlockStmt] { ... }
+# 2587| getStmt(0): [DeclStmt] declaration
+# 2587| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x856
+# 2587| Type = [Struct] String
+# 2587| getVariable().getInitializer(): [Initializer] initializer for x856
+# 2587| getExpr(): [ConstructorCall] call to String
+# 2587| Type = [VoidType] void
+# 2587| ValueCategory = prvalue
+# 2588| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2588| Type = [VoidType] void
+# 2588| ValueCategory = prvalue
+# 2588| getQualifier(): [VariableAccess] x856
+# 2588| Type = [Struct] String
+# 2588| ValueCategory = lvalue
+# 2588| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2588| Conversion = [BoolConversion] conversion to bool
+# 2588| Type = [BoolType] bool
+# 2588| Value = [CStyleCast] 0
+# 2588| ValueCategory = prvalue
+# 2589| getStmt(857): [DoStmt] do (...) ...
+# 2591| getCondition(): [Literal] 0
+# 2591| Type = [IntType] int
+# 2591| Value = [Literal] 0
+# 2591| ValueCategory = prvalue
+# 2589| getStmt(): [BlockStmt] { ... }
+# 2590| getStmt(0): [DeclStmt] declaration
+# 2590| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x857
+# 2590| Type = [Struct] String
+# 2590| getVariable().getInitializer(): [Initializer] initializer for x857
+# 2590| getExpr(): [ConstructorCall] call to String
+# 2590| Type = [VoidType] void
+# 2590| ValueCategory = prvalue
+# 2591| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2591| Type = [VoidType] void
+# 2591| ValueCategory = prvalue
+# 2591| getQualifier(): [VariableAccess] x857
+# 2591| Type = [Struct] String
+# 2591| ValueCategory = lvalue
+# 2591| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2591| Conversion = [BoolConversion] conversion to bool
+# 2591| Type = [BoolType] bool
+# 2591| Value = [CStyleCast] 0
+# 2591| ValueCategory = prvalue
+# 2592| getStmt(858): [DoStmt] do (...) ...
+# 2594| getCondition(): [Literal] 0
+# 2594| Type = [IntType] int
+# 2594| Value = [Literal] 0
+# 2594| ValueCategory = prvalue
+# 2592| getStmt(): [BlockStmt] { ... }
+# 2593| getStmt(0): [DeclStmt] declaration
+# 2593| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x858
+# 2593| Type = [Struct] String
+# 2593| getVariable().getInitializer(): [Initializer] initializer for x858
+# 2593| getExpr(): [ConstructorCall] call to String
+# 2593| Type = [VoidType] void
+# 2593| ValueCategory = prvalue
+# 2594| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2594| Type = [VoidType] void
+# 2594| ValueCategory = prvalue
+# 2594| getQualifier(): [VariableAccess] x858
+# 2594| Type = [Struct] String
+# 2594| ValueCategory = lvalue
+# 2594| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2594| Conversion = [BoolConversion] conversion to bool
+# 2594| Type = [BoolType] bool
+# 2594| Value = [CStyleCast] 0
+# 2594| ValueCategory = prvalue
+# 2595| getStmt(859): [DoStmt] do (...) ...
+# 2597| getCondition(): [Literal] 0
+# 2597| Type = [IntType] int
+# 2597| Value = [Literal] 0
+# 2597| ValueCategory = prvalue
+# 2595| getStmt(): [BlockStmt] { ... }
+# 2596| getStmt(0): [DeclStmt] declaration
+# 2596| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x859
+# 2596| Type = [Struct] String
+# 2596| getVariable().getInitializer(): [Initializer] initializer for x859
+# 2596| getExpr(): [ConstructorCall] call to String
+# 2596| Type = [VoidType] void
+# 2596| ValueCategory = prvalue
+# 2597| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2597| Type = [VoidType] void
+# 2597| ValueCategory = prvalue
+# 2597| getQualifier(): [VariableAccess] x859
+# 2597| Type = [Struct] String
+# 2597| ValueCategory = lvalue
+# 2597| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2597| Conversion = [BoolConversion] conversion to bool
+# 2597| Type = [BoolType] bool
+# 2597| Value = [CStyleCast] 0
+# 2597| ValueCategory = prvalue
+# 2598| getStmt(860): [DoStmt] do (...) ...
+# 2600| getCondition(): [Literal] 0
+# 2600| Type = [IntType] int
+# 2600| Value = [Literal] 0
+# 2600| ValueCategory = prvalue
+# 2598| getStmt(): [BlockStmt] { ... }
+# 2599| getStmt(0): [DeclStmt] declaration
+# 2599| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x860
+# 2599| Type = [Struct] String
+# 2599| getVariable().getInitializer(): [Initializer] initializer for x860
+# 2599| getExpr(): [ConstructorCall] call to String
+# 2599| Type = [VoidType] void
+# 2599| ValueCategory = prvalue
+# 2600| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2600| Type = [VoidType] void
+# 2600| ValueCategory = prvalue
+# 2600| getQualifier(): [VariableAccess] x860
+# 2600| Type = [Struct] String
+# 2600| ValueCategory = lvalue
+# 2600| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2600| Conversion = [BoolConversion] conversion to bool
+# 2600| Type = [BoolType] bool
+# 2600| Value = [CStyleCast] 0
+# 2600| ValueCategory = prvalue
+# 2601| getStmt(861): [DoStmt] do (...) ...
+# 2603| getCondition(): [Literal] 0
+# 2603| Type = [IntType] int
+# 2603| Value = [Literal] 0
+# 2603| ValueCategory = prvalue
+# 2601| getStmt(): [BlockStmt] { ... }
+# 2602| getStmt(0): [DeclStmt] declaration
+# 2602| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x861
+# 2602| Type = [Struct] String
+# 2602| getVariable().getInitializer(): [Initializer] initializer for x861
+# 2602| getExpr(): [ConstructorCall] call to String
+# 2602| Type = [VoidType] void
+# 2602| ValueCategory = prvalue
+# 2603| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2603| Type = [VoidType] void
+# 2603| ValueCategory = prvalue
+# 2603| getQualifier(): [VariableAccess] x861
+# 2603| Type = [Struct] String
+# 2603| ValueCategory = lvalue
+# 2603| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2603| Conversion = [BoolConversion] conversion to bool
+# 2603| Type = [BoolType] bool
+# 2603| Value = [CStyleCast] 0
+# 2603| ValueCategory = prvalue
+# 2604| getStmt(862): [DoStmt] do (...) ...
+# 2606| getCondition(): [Literal] 0
+# 2606| Type = [IntType] int
+# 2606| Value = [Literal] 0
+# 2606| ValueCategory = prvalue
+# 2604| getStmt(): [BlockStmt] { ... }
+# 2605| getStmt(0): [DeclStmt] declaration
+# 2605| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x862
+# 2605| Type = [Struct] String
+# 2605| getVariable().getInitializer(): [Initializer] initializer for x862
+# 2605| getExpr(): [ConstructorCall] call to String
+# 2605| Type = [VoidType] void
+# 2605| ValueCategory = prvalue
+# 2606| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2606| Type = [VoidType] void
+# 2606| ValueCategory = prvalue
+# 2606| getQualifier(): [VariableAccess] x862
+# 2606| Type = [Struct] String
+# 2606| ValueCategory = lvalue
+# 2606| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2606| Conversion = [BoolConversion] conversion to bool
+# 2606| Type = [BoolType] bool
+# 2606| Value = [CStyleCast] 0
+# 2606| ValueCategory = prvalue
+# 2607| getStmt(863): [DoStmt] do (...) ...
+# 2609| getCondition(): [Literal] 0
+# 2609| Type = [IntType] int
+# 2609| Value = [Literal] 0
+# 2609| ValueCategory = prvalue
+# 2607| getStmt(): [BlockStmt] { ... }
+# 2608| getStmt(0): [DeclStmt] declaration
+# 2608| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x863
+# 2608| Type = [Struct] String
+# 2608| getVariable().getInitializer(): [Initializer] initializer for x863
+# 2608| getExpr(): [ConstructorCall] call to String
+# 2608| Type = [VoidType] void
+# 2608| ValueCategory = prvalue
+# 2609| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2609| Type = [VoidType] void
+# 2609| ValueCategory = prvalue
+# 2609| getQualifier(): [VariableAccess] x863
+# 2609| Type = [Struct] String
+# 2609| ValueCategory = lvalue
+# 2609| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2609| Conversion = [BoolConversion] conversion to bool
+# 2609| Type = [BoolType] bool
+# 2609| Value = [CStyleCast] 0
+# 2609| ValueCategory = prvalue
+# 2610| getStmt(864): [DoStmt] do (...) ...
+# 2612| getCondition(): [Literal] 0
+# 2612| Type = [IntType] int
+# 2612| Value = [Literal] 0
+# 2612| ValueCategory = prvalue
+# 2610| getStmt(): [BlockStmt] { ... }
+# 2611| getStmt(0): [DeclStmt] declaration
+# 2611| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x864
+# 2611| Type = [Struct] String
+# 2611| getVariable().getInitializer(): [Initializer] initializer for x864
+# 2611| getExpr(): [ConstructorCall] call to String
+# 2611| Type = [VoidType] void
+# 2611| ValueCategory = prvalue
+# 2612| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2612| Type = [VoidType] void
+# 2612| ValueCategory = prvalue
+# 2612| getQualifier(): [VariableAccess] x864
+# 2612| Type = [Struct] String
+# 2612| ValueCategory = lvalue
+# 2612| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2612| Conversion = [BoolConversion] conversion to bool
+# 2612| Type = [BoolType] bool
+# 2612| Value = [CStyleCast] 0
+# 2612| ValueCategory = prvalue
+# 2613| getStmt(865): [DoStmt] do (...) ...
+# 2615| getCondition(): [Literal] 0
+# 2615| Type = [IntType] int
+# 2615| Value = [Literal] 0
+# 2615| ValueCategory = prvalue
+# 2613| getStmt(): [BlockStmt] { ... }
+# 2614| getStmt(0): [DeclStmt] declaration
+# 2614| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x865
+# 2614| Type = [Struct] String
+# 2614| getVariable().getInitializer(): [Initializer] initializer for x865
+# 2614| getExpr(): [ConstructorCall] call to String
+# 2614| Type = [VoidType] void
+# 2614| ValueCategory = prvalue
+# 2615| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2615| Type = [VoidType] void
+# 2615| ValueCategory = prvalue
+# 2615| getQualifier(): [VariableAccess] x865
+# 2615| Type = [Struct] String
+# 2615| ValueCategory = lvalue
+# 2615| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2615| Conversion = [BoolConversion] conversion to bool
+# 2615| Type = [BoolType] bool
+# 2615| Value = [CStyleCast] 0
+# 2615| ValueCategory = prvalue
+# 2616| getStmt(866): [DoStmt] do (...) ...
+# 2618| getCondition(): [Literal] 0
+# 2618| Type = [IntType] int
+# 2618| Value = [Literal] 0
+# 2618| ValueCategory = prvalue
+# 2616| getStmt(): [BlockStmt] { ... }
+# 2617| getStmt(0): [DeclStmt] declaration
+# 2617| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x866
+# 2617| Type = [Struct] String
+# 2617| getVariable().getInitializer(): [Initializer] initializer for x866
+# 2617| getExpr(): [ConstructorCall] call to String
+# 2617| Type = [VoidType] void
+# 2617| ValueCategory = prvalue
+# 2618| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2618| Type = [VoidType] void
+# 2618| ValueCategory = prvalue
+# 2618| getQualifier(): [VariableAccess] x866
+# 2618| Type = [Struct] String
+# 2618| ValueCategory = lvalue
+# 2618| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2618| Conversion = [BoolConversion] conversion to bool
+# 2618| Type = [BoolType] bool
+# 2618| Value = [CStyleCast] 0
+# 2618| ValueCategory = prvalue
+# 2619| getStmt(867): [DoStmt] do (...) ...
+# 2621| getCondition(): [Literal] 0
+# 2621| Type = [IntType] int
+# 2621| Value = [Literal] 0
+# 2621| ValueCategory = prvalue
+# 2619| getStmt(): [BlockStmt] { ... }
+# 2620| getStmt(0): [DeclStmt] declaration
+# 2620| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x867
+# 2620| Type = [Struct] String
+# 2620| getVariable().getInitializer(): [Initializer] initializer for x867
+# 2620| getExpr(): [ConstructorCall] call to String
+# 2620| Type = [VoidType] void
+# 2620| ValueCategory = prvalue
+# 2621| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2621| Type = [VoidType] void
+# 2621| ValueCategory = prvalue
+# 2621| getQualifier(): [VariableAccess] x867
+# 2621| Type = [Struct] String
+# 2621| ValueCategory = lvalue
+# 2621| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2621| Conversion = [BoolConversion] conversion to bool
+# 2621| Type = [BoolType] bool
+# 2621| Value = [CStyleCast] 0
+# 2621| ValueCategory = prvalue
+# 2622| getStmt(868): [DoStmt] do (...) ...
+# 2624| getCondition(): [Literal] 0
+# 2624| Type = [IntType] int
+# 2624| Value = [Literal] 0
+# 2624| ValueCategory = prvalue
+# 2622| getStmt(): [BlockStmt] { ... }
+# 2623| getStmt(0): [DeclStmt] declaration
+# 2623| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x868
+# 2623| Type = [Struct] String
+# 2623| getVariable().getInitializer(): [Initializer] initializer for x868
+# 2623| getExpr(): [ConstructorCall] call to String
+# 2623| Type = [VoidType] void
+# 2623| ValueCategory = prvalue
+# 2624| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2624| Type = [VoidType] void
+# 2624| ValueCategory = prvalue
+# 2624| getQualifier(): [VariableAccess] x868
+# 2624| Type = [Struct] String
+# 2624| ValueCategory = lvalue
+# 2624| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2624| Conversion = [BoolConversion] conversion to bool
+# 2624| Type = [BoolType] bool
+# 2624| Value = [CStyleCast] 0
+# 2624| ValueCategory = prvalue
+# 2625| getStmt(869): [DoStmt] do (...) ...
+# 2627| getCondition(): [Literal] 0
+# 2627| Type = [IntType] int
+# 2627| Value = [Literal] 0
+# 2627| ValueCategory = prvalue
+# 2625| getStmt(): [BlockStmt] { ... }
+# 2626| getStmt(0): [DeclStmt] declaration
+# 2626| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x869
+# 2626| Type = [Struct] String
+# 2626| getVariable().getInitializer(): [Initializer] initializer for x869
+# 2626| getExpr(): [ConstructorCall] call to String
+# 2626| Type = [VoidType] void
+# 2626| ValueCategory = prvalue
+# 2627| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2627| Type = [VoidType] void
+# 2627| ValueCategory = prvalue
+# 2627| getQualifier(): [VariableAccess] x869
+# 2627| Type = [Struct] String
+# 2627| ValueCategory = lvalue
+# 2627| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2627| Conversion = [BoolConversion] conversion to bool
+# 2627| Type = [BoolType] bool
+# 2627| Value = [CStyleCast] 0
+# 2627| ValueCategory = prvalue
+# 2628| getStmt(870): [DoStmt] do (...) ...
+# 2630| getCondition(): [Literal] 0
+# 2630| Type = [IntType] int
+# 2630| Value = [Literal] 0
+# 2630| ValueCategory = prvalue
+# 2628| getStmt(): [BlockStmt] { ... }
+# 2629| getStmt(0): [DeclStmt] declaration
+# 2629| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x870
+# 2629| Type = [Struct] String
+# 2629| getVariable().getInitializer(): [Initializer] initializer for x870
+# 2629| getExpr(): [ConstructorCall] call to String
+# 2629| Type = [VoidType] void
+# 2629| ValueCategory = prvalue
+# 2630| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2630| Type = [VoidType] void
+# 2630| ValueCategory = prvalue
+# 2630| getQualifier(): [VariableAccess] x870
+# 2630| Type = [Struct] String
+# 2630| ValueCategory = lvalue
+# 2630| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2630| Conversion = [BoolConversion] conversion to bool
+# 2630| Type = [BoolType] bool
+# 2630| Value = [CStyleCast] 0
+# 2630| ValueCategory = prvalue
+# 2631| getStmt(871): [DoStmt] do (...) ...
+# 2633| getCondition(): [Literal] 0
+# 2633| Type = [IntType] int
+# 2633| Value = [Literal] 0
+# 2633| ValueCategory = prvalue
+# 2631| getStmt(): [BlockStmt] { ... }
+# 2632| getStmt(0): [DeclStmt] declaration
+# 2632| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x871
+# 2632| Type = [Struct] String
+# 2632| getVariable().getInitializer(): [Initializer] initializer for x871
+# 2632| getExpr(): [ConstructorCall] call to String
+# 2632| Type = [VoidType] void
+# 2632| ValueCategory = prvalue
+# 2633| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2633| Type = [VoidType] void
+# 2633| ValueCategory = prvalue
+# 2633| getQualifier(): [VariableAccess] x871
+# 2633| Type = [Struct] String
+# 2633| ValueCategory = lvalue
+# 2633| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2633| Conversion = [BoolConversion] conversion to bool
+# 2633| Type = [BoolType] bool
+# 2633| Value = [CStyleCast] 0
+# 2633| ValueCategory = prvalue
+# 2634| getStmt(872): [DoStmt] do (...) ...
+# 2636| getCondition(): [Literal] 0
+# 2636| Type = [IntType] int
+# 2636| Value = [Literal] 0
+# 2636| ValueCategory = prvalue
+# 2634| getStmt(): [BlockStmt] { ... }
+# 2635| getStmt(0): [DeclStmt] declaration
+# 2635| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x872
+# 2635| Type = [Struct] String
+# 2635| getVariable().getInitializer(): [Initializer] initializer for x872
+# 2635| getExpr(): [ConstructorCall] call to String
+# 2635| Type = [VoidType] void
+# 2635| ValueCategory = prvalue
+# 2636| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2636| Type = [VoidType] void
+# 2636| ValueCategory = prvalue
+# 2636| getQualifier(): [VariableAccess] x872
+# 2636| Type = [Struct] String
+# 2636| ValueCategory = lvalue
+# 2636| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2636| Conversion = [BoolConversion] conversion to bool
+# 2636| Type = [BoolType] bool
+# 2636| Value = [CStyleCast] 0
+# 2636| ValueCategory = prvalue
+# 2637| getStmt(873): [DoStmt] do (...) ...
+# 2639| getCondition(): [Literal] 0
+# 2639| Type = [IntType] int
+# 2639| Value = [Literal] 0
+# 2639| ValueCategory = prvalue
+# 2637| getStmt(): [BlockStmt] { ... }
+# 2638| getStmt(0): [DeclStmt] declaration
+# 2638| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x873
+# 2638| Type = [Struct] String
+# 2638| getVariable().getInitializer(): [Initializer] initializer for x873
+# 2638| getExpr(): [ConstructorCall] call to String
+# 2638| Type = [VoidType] void
+# 2638| ValueCategory = prvalue
+# 2639| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2639| Type = [VoidType] void
+# 2639| ValueCategory = prvalue
+# 2639| getQualifier(): [VariableAccess] x873
+# 2639| Type = [Struct] String
+# 2639| ValueCategory = lvalue
+# 2639| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2639| Conversion = [BoolConversion] conversion to bool
+# 2639| Type = [BoolType] bool
+# 2639| Value = [CStyleCast] 0
+# 2639| ValueCategory = prvalue
+# 2640| getStmt(874): [DoStmt] do (...) ...
+# 2642| getCondition(): [Literal] 0
+# 2642| Type = [IntType] int
+# 2642| Value = [Literal] 0
+# 2642| ValueCategory = prvalue
+# 2640| getStmt(): [BlockStmt] { ... }
+# 2641| getStmt(0): [DeclStmt] declaration
+# 2641| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x874
+# 2641| Type = [Struct] String
+# 2641| getVariable().getInitializer(): [Initializer] initializer for x874
+# 2641| getExpr(): [ConstructorCall] call to String
+# 2641| Type = [VoidType] void
+# 2641| ValueCategory = prvalue
+# 2642| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2642| Type = [VoidType] void
+# 2642| ValueCategory = prvalue
+# 2642| getQualifier(): [VariableAccess] x874
+# 2642| Type = [Struct] String
+# 2642| ValueCategory = lvalue
+# 2642| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2642| Conversion = [BoolConversion] conversion to bool
+# 2642| Type = [BoolType] bool
+# 2642| Value = [CStyleCast] 0
+# 2642| ValueCategory = prvalue
+# 2643| getStmt(875): [DoStmt] do (...) ...
+# 2645| getCondition(): [Literal] 0
+# 2645| Type = [IntType] int
+# 2645| Value = [Literal] 0
+# 2645| ValueCategory = prvalue
+# 2643| getStmt(): [BlockStmt] { ... }
+# 2644| getStmt(0): [DeclStmt] declaration
+# 2644| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x875
+# 2644| Type = [Struct] String
+# 2644| getVariable().getInitializer(): [Initializer] initializer for x875
+# 2644| getExpr(): [ConstructorCall] call to String
+# 2644| Type = [VoidType] void
+# 2644| ValueCategory = prvalue
+# 2645| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2645| Type = [VoidType] void
+# 2645| ValueCategory = prvalue
+# 2645| getQualifier(): [VariableAccess] x875
+# 2645| Type = [Struct] String
+# 2645| ValueCategory = lvalue
+# 2645| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2645| Conversion = [BoolConversion] conversion to bool
+# 2645| Type = [BoolType] bool
+# 2645| Value = [CStyleCast] 0
+# 2645| ValueCategory = prvalue
+# 2646| getStmt(876): [DoStmt] do (...) ...
+# 2648| getCondition(): [Literal] 0
+# 2648| Type = [IntType] int
+# 2648| Value = [Literal] 0
+# 2648| ValueCategory = prvalue
+# 2646| getStmt(): [BlockStmt] { ... }
+# 2647| getStmt(0): [DeclStmt] declaration
+# 2647| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x876
+# 2647| Type = [Struct] String
+# 2647| getVariable().getInitializer(): [Initializer] initializer for x876
+# 2647| getExpr(): [ConstructorCall] call to String
+# 2647| Type = [VoidType] void
+# 2647| ValueCategory = prvalue
+# 2648| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2648| Type = [VoidType] void
+# 2648| ValueCategory = prvalue
+# 2648| getQualifier(): [VariableAccess] x876
+# 2648| Type = [Struct] String
+# 2648| ValueCategory = lvalue
+# 2648| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2648| Conversion = [BoolConversion] conversion to bool
+# 2648| Type = [BoolType] bool
+# 2648| Value = [CStyleCast] 0
+# 2648| ValueCategory = prvalue
+# 2649| getStmt(877): [DoStmt] do (...) ...
+# 2651| getCondition(): [Literal] 0
+# 2651| Type = [IntType] int
+# 2651| Value = [Literal] 0
+# 2651| ValueCategory = prvalue
+# 2649| getStmt(): [BlockStmt] { ... }
+# 2650| getStmt(0): [DeclStmt] declaration
+# 2650| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x877
+# 2650| Type = [Struct] String
+# 2650| getVariable().getInitializer(): [Initializer] initializer for x877
+# 2650| getExpr(): [ConstructorCall] call to String
+# 2650| Type = [VoidType] void
+# 2650| ValueCategory = prvalue
+# 2651| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2651| Type = [VoidType] void
+# 2651| ValueCategory = prvalue
+# 2651| getQualifier(): [VariableAccess] x877
+# 2651| Type = [Struct] String
+# 2651| ValueCategory = lvalue
+# 2651| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2651| Conversion = [BoolConversion] conversion to bool
+# 2651| Type = [BoolType] bool
+# 2651| Value = [CStyleCast] 0
+# 2651| ValueCategory = prvalue
+# 2652| getStmt(878): [DoStmt] do (...) ...
+# 2654| getCondition(): [Literal] 0
+# 2654| Type = [IntType] int
+# 2654| Value = [Literal] 0
+# 2654| ValueCategory = prvalue
+# 2652| getStmt(): [BlockStmt] { ... }
+# 2653| getStmt(0): [DeclStmt] declaration
+# 2653| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x878
+# 2653| Type = [Struct] String
+# 2653| getVariable().getInitializer(): [Initializer] initializer for x878
+# 2653| getExpr(): [ConstructorCall] call to String
+# 2653| Type = [VoidType] void
+# 2653| ValueCategory = prvalue
+# 2654| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2654| Type = [VoidType] void
+# 2654| ValueCategory = prvalue
+# 2654| getQualifier(): [VariableAccess] x878
+# 2654| Type = [Struct] String
+# 2654| ValueCategory = lvalue
+# 2654| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2654| Conversion = [BoolConversion] conversion to bool
+# 2654| Type = [BoolType] bool
+# 2654| Value = [CStyleCast] 0
+# 2654| ValueCategory = prvalue
+# 2655| getStmt(879): [DoStmt] do (...) ...
+# 2657| getCondition(): [Literal] 0
+# 2657| Type = [IntType] int
+# 2657| Value = [Literal] 0
+# 2657| ValueCategory = prvalue
+# 2655| getStmt(): [BlockStmt] { ... }
+# 2656| getStmt(0): [DeclStmt] declaration
+# 2656| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x879
+# 2656| Type = [Struct] String
+# 2656| getVariable().getInitializer(): [Initializer] initializer for x879
+# 2656| getExpr(): [ConstructorCall] call to String
+# 2656| Type = [VoidType] void
+# 2656| ValueCategory = prvalue
+# 2657| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2657| Type = [VoidType] void
+# 2657| ValueCategory = prvalue
+# 2657| getQualifier(): [VariableAccess] x879
+# 2657| Type = [Struct] String
+# 2657| ValueCategory = lvalue
+# 2657| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2657| Conversion = [BoolConversion] conversion to bool
+# 2657| Type = [BoolType] bool
+# 2657| Value = [CStyleCast] 0
+# 2657| ValueCategory = prvalue
+# 2658| getStmt(880): [DoStmt] do (...) ...
+# 2660| getCondition(): [Literal] 0
+# 2660| Type = [IntType] int
+# 2660| Value = [Literal] 0
+# 2660| ValueCategory = prvalue
+# 2658| getStmt(): [BlockStmt] { ... }
+# 2659| getStmt(0): [DeclStmt] declaration
+# 2659| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x880
+# 2659| Type = [Struct] String
+# 2659| getVariable().getInitializer(): [Initializer] initializer for x880
+# 2659| getExpr(): [ConstructorCall] call to String
+# 2659| Type = [VoidType] void
+# 2659| ValueCategory = prvalue
+# 2660| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2660| Type = [VoidType] void
+# 2660| ValueCategory = prvalue
+# 2660| getQualifier(): [VariableAccess] x880
+# 2660| Type = [Struct] String
+# 2660| ValueCategory = lvalue
+# 2660| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2660| Conversion = [BoolConversion] conversion to bool
+# 2660| Type = [BoolType] bool
+# 2660| Value = [CStyleCast] 0
+# 2660| ValueCategory = prvalue
+# 2661| getStmt(881): [DoStmt] do (...) ...
+# 2663| getCondition(): [Literal] 0
+# 2663| Type = [IntType] int
+# 2663| Value = [Literal] 0
+# 2663| ValueCategory = prvalue
+# 2661| getStmt(): [BlockStmt] { ... }
+# 2662| getStmt(0): [DeclStmt] declaration
+# 2662| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x881
+# 2662| Type = [Struct] String
+# 2662| getVariable().getInitializer(): [Initializer] initializer for x881
+# 2662| getExpr(): [ConstructorCall] call to String
+# 2662| Type = [VoidType] void
+# 2662| ValueCategory = prvalue
+# 2663| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2663| Type = [VoidType] void
+# 2663| ValueCategory = prvalue
+# 2663| getQualifier(): [VariableAccess] x881
+# 2663| Type = [Struct] String
+# 2663| ValueCategory = lvalue
+# 2663| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2663| Conversion = [BoolConversion] conversion to bool
+# 2663| Type = [BoolType] bool
+# 2663| Value = [CStyleCast] 0
+# 2663| ValueCategory = prvalue
+# 2664| getStmt(882): [DoStmt] do (...) ...
+# 2666| getCondition(): [Literal] 0
+# 2666| Type = [IntType] int
+# 2666| Value = [Literal] 0
+# 2666| ValueCategory = prvalue
+# 2664| getStmt(): [BlockStmt] { ... }
+# 2665| getStmt(0): [DeclStmt] declaration
+# 2665| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x882
+# 2665| Type = [Struct] String
+# 2665| getVariable().getInitializer(): [Initializer] initializer for x882
+# 2665| getExpr(): [ConstructorCall] call to String
+# 2665| Type = [VoidType] void
+# 2665| ValueCategory = prvalue
+# 2666| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2666| Type = [VoidType] void
+# 2666| ValueCategory = prvalue
+# 2666| getQualifier(): [VariableAccess] x882
+# 2666| Type = [Struct] String
+# 2666| ValueCategory = lvalue
+# 2666| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2666| Conversion = [BoolConversion] conversion to bool
+# 2666| Type = [BoolType] bool
+# 2666| Value = [CStyleCast] 0
+# 2666| ValueCategory = prvalue
+# 2667| getStmt(883): [DoStmt] do (...) ...
+# 2669| getCondition(): [Literal] 0
+# 2669| Type = [IntType] int
+# 2669| Value = [Literal] 0
+# 2669| ValueCategory = prvalue
+# 2667| getStmt(): [BlockStmt] { ... }
+# 2668| getStmt(0): [DeclStmt] declaration
+# 2668| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x883
+# 2668| Type = [Struct] String
+# 2668| getVariable().getInitializer(): [Initializer] initializer for x883
+# 2668| getExpr(): [ConstructorCall] call to String
+# 2668| Type = [VoidType] void
+# 2668| ValueCategory = prvalue
+# 2669| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2669| Type = [VoidType] void
+# 2669| ValueCategory = prvalue
+# 2669| getQualifier(): [VariableAccess] x883
+# 2669| Type = [Struct] String
+# 2669| ValueCategory = lvalue
+# 2669| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2669| Conversion = [BoolConversion] conversion to bool
+# 2669| Type = [BoolType] bool
+# 2669| Value = [CStyleCast] 0
+# 2669| ValueCategory = prvalue
+# 2670| getStmt(884): [DoStmt] do (...) ...
+# 2672| getCondition(): [Literal] 0
+# 2672| Type = [IntType] int
+# 2672| Value = [Literal] 0
+# 2672| ValueCategory = prvalue
+# 2670| getStmt(): [BlockStmt] { ... }
+# 2671| getStmt(0): [DeclStmt] declaration
+# 2671| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x884
+# 2671| Type = [Struct] String
+# 2671| getVariable().getInitializer(): [Initializer] initializer for x884
+# 2671| getExpr(): [ConstructorCall] call to String
+# 2671| Type = [VoidType] void
+# 2671| ValueCategory = prvalue
+# 2672| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2672| Type = [VoidType] void
+# 2672| ValueCategory = prvalue
+# 2672| getQualifier(): [VariableAccess] x884
+# 2672| Type = [Struct] String
+# 2672| ValueCategory = lvalue
+# 2672| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2672| Conversion = [BoolConversion] conversion to bool
+# 2672| Type = [BoolType] bool
+# 2672| Value = [CStyleCast] 0
+# 2672| ValueCategory = prvalue
+# 2673| getStmt(885): [DoStmt] do (...) ...
+# 2675| getCondition(): [Literal] 0
+# 2675| Type = [IntType] int
+# 2675| Value = [Literal] 0
+# 2675| ValueCategory = prvalue
+# 2673| getStmt(): [BlockStmt] { ... }
+# 2674| getStmt(0): [DeclStmt] declaration
+# 2674| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x885
+# 2674| Type = [Struct] String
+# 2674| getVariable().getInitializer(): [Initializer] initializer for x885
+# 2674| getExpr(): [ConstructorCall] call to String
+# 2674| Type = [VoidType] void
+# 2674| ValueCategory = prvalue
+# 2675| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2675| Type = [VoidType] void
+# 2675| ValueCategory = prvalue
+# 2675| getQualifier(): [VariableAccess] x885
+# 2675| Type = [Struct] String
+# 2675| ValueCategory = lvalue
+# 2675| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2675| Conversion = [BoolConversion] conversion to bool
+# 2675| Type = [BoolType] bool
+# 2675| Value = [CStyleCast] 0
+# 2675| ValueCategory = prvalue
+# 2676| getStmt(886): [DoStmt] do (...) ...
+# 2678| getCondition(): [Literal] 0
+# 2678| Type = [IntType] int
+# 2678| Value = [Literal] 0
+# 2678| ValueCategory = prvalue
+# 2676| getStmt(): [BlockStmt] { ... }
+# 2677| getStmt(0): [DeclStmt] declaration
+# 2677| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x886
+# 2677| Type = [Struct] String
+# 2677| getVariable().getInitializer(): [Initializer] initializer for x886
+# 2677| getExpr(): [ConstructorCall] call to String
+# 2677| Type = [VoidType] void
+# 2677| ValueCategory = prvalue
+# 2678| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2678| Type = [VoidType] void
+# 2678| ValueCategory = prvalue
+# 2678| getQualifier(): [VariableAccess] x886
+# 2678| Type = [Struct] String
+# 2678| ValueCategory = lvalue
+# 2678| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2678| Conversion = [BoolConversion] conversion to bool
+# 2678| Type = [BoolType] bool
+# 2678| Value = [CStyleCast] 0
+# 2678| ValueCategory = prvalue
+# 2679| getStmt(887): [DoStmt] do (...) ...
+# 2681| getCondition(): [Literal] 0
+# 2681| Type = [IntType] int
+# 2681| Value = [Literal] 0
+# 2681| ValueCategory = prvalue
+# 2679| getStmt(): [BlockStmt] { ... }
+# 2680| getStmt(0): [DeclStmt] declaration
+# 2680| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x887
+# 2680| Type = [Struct] String
+# 2680| getVariable().getInitializer(): [Initializer] initializer for x887
+# 2680| getExpr(): [ConstructorCall] call to String
+# 2680| Type = [VoidType] void
+# 2680| ValueCategory = prvalue
+# 2681| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2681| Type = [VoidType] void
+# 2681| ValueCategory = prvalue
+# 2681| getQualifier(): [VariableAccess] x887
+# 2681| Type = [Struct] String
+# 2681| ValueCategory = lvalue
+# 2681| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2681| Conversion = [BoolConversion] conversion to bool
+# 2681| Type = [BoolType] bool
+# 2681| Value = [CStyleCast] 0
+# 2681| ValueCategory = prvalue
+# 2682| getStmt(888): [DoStmt] do (...) ...
+# 2684| getCondition(): [Literal] 0
+# 2684| Type = [IntType] int
+# 2684| Value = [Literal] 0
+# 2684| ValueCategory = prvalue
+# 2682| getStmt(): [BlockStmt] { ... }
+# 2683| getStmt(0): [DeclStmt] declaration
+# 2683| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x888
+# 2683| Type = [Struct] String
+# 2683| getVariable().getInitializer(): [Initializer] initializer for x888
+# 2683| getExpr(): [ConstructorCall] call to String
+# 2683| Type = [VoidType] void
+# 2683| ValueCategory = prvalue
+# 2684| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2684| Type = [VoidType] void
+# 2684| ValueCategory = prvalue
+# 2684| getQualifier(): [VariableAccess] x888
+# 2684| Type = [Struct] String
+# 2684| ValueCategory = lvalue
+# 2684| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2684| Conversion = [BoolConversion] conversion to bool
+# 2684| Type = [BoolType] bool
+# 2684| Value = [CStyleCast] 0
+# 2684| ValueCategory = prvalue
+# 2685| getStmt(889): [DoStmt] do (...) ...
+# 2687| getCondition(): [Literal] 0
+# 2687| Type = [IntType] int
+# 2687| Value = [Literal] 0
+# 2687| ValueCategory = prvalue
+# 2685| getStmt(): [BlockStmt] { ... }
+# 2686| getStmt(0): [DeclStmt] declaration
+# 2686| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x889
+# 2686| Type = [Struct] String
+# 2686| getVariable().getInitializer(): [Initializer] initializer for x889
+# 2686| getExpr(): [ConstructorCall] call to String
+# 2686| Type = [VoidType] void
+# 2686| ValueCategory = prvalue
+# 2687| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2687| Type = [VoidType] void
+# 2687| ValueCategory = prvalue
+# 2687| getQualifier(): [VariableAccess] x889
+# 2687| Type = [Struct] String
+# 2687| ValueCategory = lvalue
+# 2687| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2687| Conversion = [BoolConversion] conversion to bool
+# 2687| Type = [BoolType] bool
+# 2687| Value = [CStyleCast] 0
+# 2687| ValueCategory = prvalue
+# 2688| getStmt(890): [DoStmt] do (...) ...
+# 2690| getCondition(): [Literal] 0
+# 2690| Type = [IntType] int
+# 2690| Value = [Literal] 0
+# 2690| ValueCategory = prvalue
+# 2688| getStmt(): [BlockStmt] { ... }
+# 2689| getStmt(0): [DeclStmt] declaration
+# 2689| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x890
+# 2689| Type = [Struct] String
+# 2689| getVariable().getInitializer(): [Initializer] initializer for x890
+# 2689| getExpr(): [ConstructorCall] call to String
+# 2689| Type = [VoidType] void
+# 2689| ValueCategory = prvalue
+# 2690| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2690| Type = [VoidType] void
+# 2690| ValueCategory = prvalue
+# 2690| getQualifier(): [VariableAccess] x890
+# 2690| Type = [Struct] String
+# 2690| ValueCategory = lvalue
+# 2690| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2690| Conversion = [BoolConversion] conversion to bool
+# 2690| Type = [BoolType] bool
+# 2690| Value = [CStyleCast] 0
+# 2690| ValueCategory = prvalue
+# 2691| getStmt(891): [DoStmt] do (...) ...
+# 2693| getCondition(): [Literal] 0
+# 2693| Type = [IntType] int
+# 2693| Value = [Literal] 0
+# 2693| ValueCategory = prvalue
+# 2691| getStmt(): [BlockStmt] { ... }
+# 2692| getStmt(0): [DeclStmt] declaration
+# 2692| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x891
+# 2692| Type = [Struct] String
+# 2692| getVariable().getInitializer(): [Initializer] initializer for x891
+# 2692| getExpr(): [ConstructorCall] call to String
+# 2692| Type = [VoidType] void
+# 2692| ValueCategory = prvalue
+# 2693| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2693| Type = [VoidType] void
+# 2693| ValueCategory = prvalue
+# 2693| getQualifier(): [VariableAccess] x891
+# 2693| Type = [Struct] String
+# 2693| ValueCategory = lvalue
+# 2693| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2693| Conversion = [BoolConversion] conversion to bool
+# 2693| Type = [BoolType] bool
+# 2693| Value = [CStyleCast] 0
+# 2693| ValueCategory = prvalue
+# 2694| getStmt(892): [DoStmt] do (...) ...
+# 2696| getCondition(): [Literal] 0
+# 2696| Type = [IntType] int
+# 2696| Value = [Literal] 0
+# 2696| ValueCategory = prvalue
+# 2694| getStmt(): [BlockStmt] { ... }
+# 2695| getStmt(0): [DeclStmt] declaration
+# 2695| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x892
+# 2695| Type = [Struct] String
+# 2695| getVariable().getInitializer(): [Initializer] initializer for x892
+# 2695| getExpr(): [ConstructorCall] call to String
+# 2695| Type = [VoidType] void
+# 2695| ValueCategory = prvalue
+# 2696| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2696| Type = [VoidType] void
+# 2696| ValueCategory = prvalue
+# 2696| getQualifier(): [VariableAccess] x892
+# 2696| Type = [Struct] String
+# 2696| ValueCategory = lvalue
+# 2696| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2696| Conversion = [BoolConversion] conversion to bool
+# 2696| Type = [BoolType] bool
+# 2696| Value = [CStyleCast] 0
+# 2696| ValueCategory = prvalue
+# 2697| getStmt(893): [DoStmt] do (...) ...
+# 2699| getCondition(): [Literal] 0
+# 2699| Type = [IntType] int
+# 2699| Value = [Literal] 0
+# 2699| ValueCategory = prvalue
+# 2697| getStmt(): [BlockStmt] { ... }
+# 2698| getStmt(0): [DeclStmt] declaration
+# 2698| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x893
+# 2698| Type = [Struct] String
+# 2698| getVariable().getInitializer(): [Initializer] initializer for x893
+# 2698| getExpr(): [ConstructorCall] call to String
+# 2698| Type = [VoidType] void
+# 2698| ValueCategory = prvalue
+# 2699| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2699| Type = [VoidType] void
+# 2699| ValueCategory = prvalue
+# 2699| getQualifier(): [VariableAccess] x893
+# 2699| Type = [Struct] String
+# 2699| ValueCategory = lvalue
+# 2699| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2699| Conversion = [BoolConversion] conversion to bool
+# 2699| Type = [BoolType] bool
+# 2699| Value = [CStyleCast] 0
+# 2699| ValueCategory = prvalue
+# 2700| getStmt(894): [DoStmt] do (...) ...
+# 2702| getCondition(): [Literal] 0
+# 2702| Type = [IntType] int
+# 2702| Value = [Literal] 0
+# 2702| ValueCategory = prvalue
+# 2700| getStmt(): [BlockStmt] { ... }
+# 2701| getStmt(0): [DeclStmt] declaration
+# 2701| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x894
+# 2701| Type = [Struct] String
+# 2701| getVariable().getInitializer(): [Initializer] initializer for x894
+# 2701| getExpr(): [ConstructorCall] call to String
+# 2701| Type = [VoidType] void
+# 2701| ValueCategory = prvalue
+# 2702| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2702| Type = [VoidType] void
+# 2702| ValueCategory = prvalue
+# 2702| getQualifier(): [VariableAccess] x894
+# 2702| Type = [Struct] String
+# 2702| ValueCategory = lvalue
+# 2702| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2702| Conversion = [BoolConversion] conversion to bool
+# 2702| Type = [BoolType] bool
+# 2702| Value = [CStyleCast] 0
+# 2702| ValueCategory = prvalue
+# 2703| getStmt(895): [DoStmt] do (...) ...
+# 2705| getCondition(): [Literal] 0
+# 2705| Type = [IntType] int
+# 2705| Value = [Literal] 0
+# 2705| ValueCategory = prvalue
+# 2703| getStmt(): [BlockStmt] { ... }
+# 2704| getStmt(0): [DeclStmt] declaration
+# 2704| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x895
+# 2704| Type = [Struct] String
+# 2704| getVariable().getInitializer(): [Initializer] initializer for x895
+# 2704| getExpr(): [ConstructorCall] call to String
+# 2704| Type = [VoidType] void
+# 2704| ValueCategory = prvalue
+# 2705| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2705| Type = [VoidType] void
+# 2705| ValueCategory = prvalue
+# 2705| getQualifier(): [VariableAccess] x895
+# 2705| Type = [Struct] String
+# 2705| ValueCategory = lvalue
+# 2705| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2705| Conversion = [BoolConversion] conversion to bool
+# 2705| Type = [BoolType] bool
+# 2705| Value = [CStyleCast] 0
+# 2705| ValueCategory = prvalue
+# 2706| getStmt(896): [DoStmt] do (...) ...
+# 2708| getCondition(): [Literal] 0
+# 2708| Type = [IntType] int
+# 2708| Value = [Literal] 0
+# 2708| ValueCategory = prvalue
+# 2706| getStmt(): [BlockStmt] { ... }
+# 2707| getStmt(0): [DeclStmt] declaration
+# 2707| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x896
+# 2707| Type = [Struct] String
+# 2707| getVariable().getInitializer(): [Initializer] initializer for x896
+# 2707| getExpr(): [ConstructorCall] call to String
+# 2707| Type = [VoidType] void
+# 2707| ValueCategory = prvalue
+# 2708| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2708| Type = [VoidType] void
+# 2708| ValueCategory = prvalue
+# 2708| getQualifier(): [VariableAccess] x896
+# 2708| Type = [Struct] String
+# 2708| ValueCategory = lvalue
+# 2708| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2708| Conversion = [BoolConversion] conversion to bool
+# 2708| Type = [BoolType] bool
+# 2708| Value = [CStyleCast] 0
+# 2708| ValueCategory = prvalue
+# 2709| getStmt(897): [DoStmt] do (...) ...
+# 2711| getCondition(): [Literal] 0
+# 2711| Type = [IntType] int
+# 2711| Value = [Literal] 0
+# 2711| ValueCategory = prvalue
+# 2709| getStmt(): [BlockStmt] { ... }
+# 2710| getStmt(0): [DeclStmt] declaration
+# 2710| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x897
+# 2710| Type = [Struct] String
+# 2710| getVariable().getInitializer(): [Initializer] initializer for x897
+# 2710| getExpr(): [ConstructorCall] call to String
+# 2710| Type = [VoidType] void
+# 2710| ValueCategory = prvalue
+# 2711| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2711| Type = [VoidType] void
+# 2711| ValueCategory = prvalue
+# 2711| getQualifier(): [VariableAccess] x897
+# 2711| Type = [Struct] String
+# 2711| ValueCategory = lvalue
+# 2711| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2711| Conversion = [BoolConversion] conversion to bool
+# 2711| Type = [BoolType] bool
+# 2711| Value = [CStyleCast] 0
+# 2711| ValueCategory = prvalue
+# 2712| getStmt(898): [DoStmt] do (...) ...
+# 2714| getCondition(): [Literal] 0
+# 2714| Type = [IntType] int
+# 2714| Value = [Literal] 0
+# 2714| ValueCategory = prvalue
+# 2712| getStmt(): [BlockStmt] { ... }
+# 2713| getStmt(0): [DeclStmt] declaration
+# 2713| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x898
+# 2713| Type = [Struct] String
+# 2713| getVariable().getInitializer(): [Initializer] initializer for x898
+# 2713| getExpr(): [ConstructorCall] call to String
+# 2713| Type = [VoidType] void
+# 2713| ValueCategory = prvalue
+# 2714| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2714| Type = [VoidType] void
+# 2714| ValueCategory = prvalue
+# 2714| getQualifier(): [VariableAccess] x898
+# 2714| Type = [Struct] String
+# 2714| ValueCategory = lvalue
+# 2714| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2714| Conversion = [BoolConversion] conversion to bool
+# 2714| Type = [BoolType] bool
+# 2714| Value = [CStyleCast] 0
+# 2714| ValueCategory = prvalue
+# 2715| getStmt(899): [DoStmt] do (...) ...
+# 2717| getCondition(): [Literal] 0
+# 2717| Type = [IntType] int
+# 2717| Value = [Literal] 0
+# 2717| ValueCategory = prvalue
+# 2715| getStmt(): [BlockStmt] { ... }
+# 2716| getStmt(0): [DeclStmt] declaration
+# 2716| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x899
+# 2716| Type = [Struct] String
+# 2716| getVariable().getInitializer(): [Initializer] initializer for x899
+# 2716| getExpr(): [ConstructorCall] call to String
+# 2716| Type = [VoidType] void
+# 2716| ValueCategory = prvalue
+# 2717| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2717| Type = [VoidType] void
+# 2717| ValueCategory = prvalue
+# 2717| getQualifier(): [VariableAccess] x899
+# 2717| Type = [Struct] String
+# 2717| ValueCategory = lvalue
+# 2717| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2717| Conversion = [BoolConversion] conversion to bool
+# 2717| Type = [BoolType] bool
+# 2717| Value = [CStyleCast] 0
+# 2717| ValueCategory = prvalue
+# 2718| getStmt(900): [DoStmt] do (...) ...
+# 2720| getCondition(): [Literal] 0
+# 2720| Type = [IntType] int
+# 2720| Value = [Literal] 0
+# 2720| ValueCategory = prvalue
+# 2718| getStmt(): [BlockStmt] { ... }
+# 2719| getStmt(0): [DeclStmt] declaration
+# 2719| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x900
+# 2719| Type = [Struct] String
+# 2719| getVariable().getInitializer(): [Initializer] initializer for x900
+# 2719| getExpr(): [ConstructorCall] call to String
+# 2719| Type = [VoidType] void
+# 2719| ValueCategory = prvalue
+# 2720| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2720| Type = [VoidType] void
+# 2720| ValueCategory = prvalue
+# 2720| getQualifier(): [VariableAccess] x900
+# 2720| Type = [Struct] String
+# 2720| ValueCategory = lvalue
+# 2720| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2720| Conversion = [BoolConversion] conversion to bool
+# 2720| Type = [BoolType] bool
+# 2720| Value = [CStyleCast] 0
+# 2720| ValueCategory = prvalue
+# 2721| getStmt(901): [DoStmt] do (...) ...
+# 2723| getCondition(): [Literal] 0
+# 2723| Type = [IntType] int
+# 2723| Value = [Literal] 0
+# 2723| ValueCategory = prvalue
+# 2721| getStmt(): [BlockStmt] { ... }
+# 2722| getStmt(0): [DeclStmt] declaration
+# 2722| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x901
+# 2722| Type = [Struct] String
+# 2722| getVariable().getInitializer(): [Initializer] initializer for x901
+# 2722| getExpr(): [ConstructorCall] call to String
+# 2722| Type = [VoidType] void
+# 2722| ValueCategory = prvalue
+# 2723| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2723| Type = [VoidType] void
+# 2723| ValueCategory = prvalue
+# 2723| getQualifier(): [VariableAccess] x901
+# 2723| Type = [Struct] String
+# 2723| ValueCategory = lvalue
+# 2723| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2723| Conversion = [BoolConversion] conversion to bool
+# 2723| Type = [BoolType] bool
+# 2723| Value = [CStyleCast] 0
+# 2723| ValueCategory = prvalue
+# 2724| getStmt(902): [DoStmt] do (...) ...
+# 2726| getCondition(): [Literal] 0
+# 2726| Type = [IntType] int
+# 2726| Value = [Literal] 0
+# 2726| ValueCategory = prvalue
+# 2724| getStmt(): [BlockStmt] { ... }
+# 2725| getStmt(0): [DeclStmt] declaration
+# 2725| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x902
+# 2725| Type = [Struct] String
+# 2725| getVariable().getInitializer(): [Initializer] initializer for x902
+# 2725| getExpr(): [ConstructorCall] call to String
+# 2725| Type = [VoidType] void
+# 2725| ValueCategory = prvalue
+# 2726| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2726| Type = [VoidType] void
+# 2726| ValueCategory = prvalue
+# 2726| getQualifier(): [VariableAccess] x902
+# 2726| Type = [Struct] String
+# 2726| ValueCategory = lvalue
+# 2726| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2726| Conversion = [BoolConversion] conversion to bool
+# 2726| Type = [BoolType] bool
+# 2726| Value = [CStyleCast] 0
+# 2726| ValueCategory = prvalue
+# 2727| getStmt(903): [DoStmt] do (...) ...
+# 2729| getCondition(): [Literal] 0
+# 2729| Type = [IntType] int
+# 2729| Value = [Literal] 0
+# 2729| ValueCategory = prvalue
+# 2727| getStmt(): [BlockStmt] { ... }
+# 2728| getStmt(0): [DeclStmt] declaration
+# 2728| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x903
+# 2728| Type = [Struct] String
+# 2728| getVariable().getInitializer(): [Initializer] initializer for x903
+# 2728| getExpr(): [ConstructorCall] call to String
+# 2728| Type = [VoidType] void
+# 2728| ValueCategory = prvalue
+# 2729| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2729| Type = [VoidType] void
+# 2729| ValueCategory = prvalue
+# 2729| getQualifier(): [VariableAccess] x903
+# 2729| Type = [Struct] String
+# 2729| ValueCategory = lvalue
+# 2729| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2729| Conversion = [BoolConversion] conversion to bool
+# 2729| Type = [BoolType] bool
+# 2729| Value = [CStyleCast] 0
+# 2729| ValueCategory = prvalue
+# 2730| getStmt(904): [DoStmt] do (...) ...
+# 2732| getCondition(): [Literal] 0
+# 2732| Type = [IntType] int
+# 2732| Value = [Literal] 0
+# 2732| ValueCategory = prvalue
+# 2730| getStmt(): [BlockStmt] { ... }
+# 2731| getStmt(0): [DeclStmt] declaration
+# 2731| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x904
+# 2731| Type = [Struct] String
+# 2731| getVariable().getInitializer(): [Initializer] initializer for x904
+# 2731| getExpr(): [ConstructorCall] call to String
+# 2731| Type = [VoidType] void
+# 2731| ValueCategory = prvalue
+# 2732| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2732| Type = [VoidType] void
+# 2732| ValueCategory = prvalue
+# 2732| getQualifier(): [VariableAccess] x904
+# 2732| Type = [Struct] String
+# 2732| ValueCategory = lvalue
+# 2732| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2732| Conversion = [BoolConversion] conversion to bool
+# 2732| Type = [BoolType] bool
+# 2732| Value = [CStyleCast] 0
+# 2732| ValueCategory = prvalue
+# 2733| getStmt(905): [DoStmt] do (...) ...
+# 2735| getCondition(): [Literal] 0
+# 2735| Type = [IntType] int
+# 2735| Value = [Literal] 0
+# 2735| ValueCategory = prvalue
+# 2733| getStmt(): [BlockStmt] { ... }
+# 2734| getStmt(0): [DeclStmt] declaration
+# 2734| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x905
+# 2734| Type = [Struct] String
+# 2734| getVariable().getInitializer(): [Initializer] initializer for x905
+# 2734| getExpr(): [ConstructorCall] call to String
+# 2734| Type = [VoidType] void
+# 2734| ValueCategory = prvalue
+# 2735| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2735| Type = [VoidType] void
+# 2735| ValueCategory = prvalue
+# 2735| getQualifier(): [VariableAccess] x905
+# 2735| Type = [Struct] String
+# 2735| ValueCategory = lvalue
+# 2735| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2735| Conversion = [BoolConversion] conversion to bool
+# 2735| Type = [BoolType] bool
+# 2735| Value = [CStyleCast] 0
+# 2735| ValueCategory = prvalue
+# 2736| getStmt(906): [DoStmt] do (...) ...
+# 2738| getCondition(): [Literal] 0
+# 2738| Type = [IntType] int
+# 2738| Value = [Literal] 0
+# 2738| ValueCategory = prvalue
+# 2736| getStmt(): [BlockStmt] { ... }
+# 2737| getStmt(0): [DeclStmt] declaration
+# 2737| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x906
+# 2737| Type = [Struct] String
+# 2737| getVariable().getInitializer(): [Initializer] initializer for x906
+# 2737| getExpr(): [ConstructorCall] call to String
+# 2737| Type = [VoidType] void
+# 2737| ValueCategory = prvalue
+# 2738| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2738| Type = [VoidType] void
+# 2738| ValueCategory = prvalue
+# 2738| getQualifier(): [VariableAccess] x906
+# 2738| Type = [Struct] String
+# 2738| ValueCategory = lvalue
+# 2738| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2738| Conversion = [BoolConversion] conversion to bool
+# 2738| Type = [BoolType] bool
+# 2738| Value = [CStyleCast] 0
+# 2738| ValueCategory = prvalue
+# 2739| getStmt(907): [DoStmt] do (...) ...
+# 2741| getCondition(): [Literal] 0
+# 2741| Type = [IntType] int
+# 2741| Value = [Literal] 0
+# 2741| ValueCategory = prvalue
+# 2739| getStmt(): [BlockStmt] { ... }
+# 2740| getStmt(0): [DeclStmt] declaration
+# 2740| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x907
+# 2740| Type = [Struct] String
+# 2740| getVariable().getInitializer(): [Initializer] initializer for x907
+# 2740| getExpr(): [ConstructorCall] call to String
+# 2740| Type = [VoidType] void
+# 2740| ValueCategory = prvalue
+# 2741| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2741| Type = [VoidType] void
+# 2741| ValueCategory = prvalue
+# 2741| getQualifier(): [VariableAccess] x907
+# 2741| Type = [Struct] String
+# 2741| ValueCategory = lvalue
+# 2741| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2741| Conversion = [BoolConversion] conversion to bool
+# 2741| Type = [BoolType] bool
+# 2741| Value = [CStyleCast] 0
+# 2741| ValueCategory = prvalue
+# 2742| getStmt(908): [DoStmt] do (...) ...
+# 2744| getCondition(): [Literal] 0
+# 2744| Type = [IntType] int
+# 2744| Value = [Literal] 0
+# 2744| ValueCategory = prvalue
+# 2742| getStmt(): [BlockStmt] { ... }
+# 2743| getStmt(0): [DeclStmt] declaration
+# 2743| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x908
+# 2743| Type = [Struct] String
+# 2743| getVariable().getInitializer(): [Initializer] initializer for x908
+# 2743| getExpr(): [ConstructorCall] call to String
+# 2743| Type = [VoidType] void
+# 2743| ValueCategory = prvalue
+# 2744| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2744| Type = [VoidType] void
+# 2744| ValueCategory = prvalue
+# 2744| getQualifier(): [VariableAccess] x908
+# 2744| Type = [Struct] String
+# 2744| ValueCategory = lvalue
+# 2744| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2744| Conversion = [BoolConversion] conversion to bool
+# 2744| Type = [BoolType] bool
+# 2744| Value = [CStyleCast] 0
+# 2744| ValueCategory = prvalue
+# 2745| getStmt(909): [DoStmt] do (...) ...
+# 2747| getCondition(): [Literal] 0
+# 2747| Type = [IntType] int
+# 2747| Value = [Literal] 0
+# 2747| ValueCategory = prvalue
+# 2745| getStmt(): [BlockStmt] { ... }
+# 2746| getStmt(0): [DeclStmt] declaration
+# 2746| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x909
+# 2746| Type = [Struct] String
+# 2746| getVariable().getInitializer(): [Initializer] initializer for x909
+# 2746| getExpr(): [ConstructorCall] call to String
+# 2746| Type = [VoidType] void
+# 2746| ValueCategory = prvalue
+# 2747| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2747| Type = [VoidType] void
+# 2747| ValueCategory = prvalue
+# 2747| getQualifier(): [VariableAccess] x909
+# 2747| Type = [Struct] String
+# 2747| ValueCategory = lvalue
+# 2747| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2747| Conversion = [BoolConversion] conversion to bool
+# 2747| Type = [BoolType] bool
+# 2747| Value = [CStyleCast] 0
+# 2747| ValueCategory = prvalue
+# 2748| getStmt(910): [DoStmt] do (...) ...
+# 2750| getCondition(): [Literal] 0
+# 2750| Type = [IntType] int
+# 2750| Value = [Literal] 0
+# 2750| ValueCategory = prvalue
+# 2748| getStmt(): [BlockStmt] { ... }
+# 2749| getStmt(0): [DeclStmt] declaration
+# 2749| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x910
+# 2749| Type = [Struct] String
+# 2749| getVariable().getInitializer(): [Initializer] initializer for x910
+# 2749| getExpr(): [ConstructorCall] call to String
+# 2749| Type = [VoidType] void
+# 2749| ValueCategory = prvalue
+# 2750| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2750| Type = [VoidType] void
+# 2750| ValueCategory = prvalue
+# 2750| getQualifier(): [VariableAccess] x910
+# 2750| Type = [Struct] String
+# 2750| ValueCategory = lvalue
+# 2750| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2750| Conversion = [BoolConversion] conversion to bool
+# 2750| Type = [BoolType] bool
+# 2750| Value = [CStyleCast] 0
+# 2750| ValueCategory = prvalue
+# 2751| getStmt(911): [DoStmt] do (...) ...
+# 2753| getCondition(): [Literal] 0
+# 2753| Type = [IntType] int
+# 2753| Value = [Literal] 0
+# 2753| ValueCategory = prvalue
+# 2751| getStmt(): [BlockStmt] { ... }
+# 2752| getStmt(0): [DeclStmt] declaration
+# 2752| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x911
+# 2752| Type = [Struct] String
+# 2752| getVariable().getInitializer(): [Initializer] initializer for x911
+# 2752| getExpr(): [ConstructorCall] call to String
+# 2752| Type = [VoidType] void
+# 2752| ValueCategory = prvalue
+# 2753| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2753| Type = [VoidType] void
+# 2753| ValueCategory = prvalue
+# 2753| getQualifier(): [VariableAccess] x911
+# 2753| Type = [Struct] String
+# 2753| ValueCategory = lvalue
+# 2753| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2753| Conversion = [BoolConversion] conversion to bool
+# 2753| Type = [BoolType] bool
+# 2753| Value = [CStyleCast] 0
+# 2753| ValueCategory = prvalue
+# 2754| getStmt(912): [DoStmt] do (...) ...
+# 2756| getCondition(): [Literal] 0
+# 2756| Type = [IntType] int
+# 2756| Value = [Literal] 0
+# 2756| ValueCategory = prvalue
+# 2754| getStmt(): [BlockStmt] { ... }
+# 2755| getStmt(0): [DeclStmt] declaration
+# 2755| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x912
+# 2755| Type = [Struct] String
+# 2755| getVariable().getInitializer(): [Initializer] initializer for x912
+# 2755| getExpr(): [ConstructorCall] call to String
+# 2755| Type = [VoidType] void
+# 2755| ValueCategory = prvalue
+# 2756| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2756| Type = [VoidType] void
+# 2756| ValueCategory = prvalue
+# 2756| getQualifier(): [VariableAccess] x912
+# 2756| Type = [Struct] String
+# 2756| ValueCategory = lvalue
+# 2756| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2756| Conversion = [BoolConversion] conversion to bool
+# 2756| Type = [BoolType] bool
+# 2756| Value = [CStyleCast] 0
+# 2756| ValueCategory = prvalue
+# 2757| getStmt(913): [DoStmt] do (...) ...
+# 2759| getCondition(): [Literal] 0
+# 2759| Type = [IntType] int
+# 2759| Value = [Literal] 0
+# 2759| ValueCategory = prvalue
+# 2757| getStmt(): [BlockStmt] { ... }
+# 2758| getStmt(0): [DeclStmt] declaration
+# 2758| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x913
+# 2758| Type = [Struct] String
+# 2758| getVariable().getInitializer(): [Initializer] initializer for x913
+# 2758| getExpr(): [ConstructorCall] call to String
+# 2758| Type = [VoidType] void
+# 2758| ValueCategory = prvalue
+# 2759| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2759| Type = [VoidType] void
+# 2759| ValueCategory = prvalue
+# 2759| getQualifier(): [VariableAccess] x913
+# 2759| Type = [Struct] String
+# 2759| ValueCategory = lvalue
+# 2759| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2759| Conversion = [BoolConversion] conversion to bool
+# 2759| Type = [BoolType] bool
+# 2759| Value = [CStyleCast] 0
+# 2759| ValueCategory = prvalue
+# 2760| getStmt(914): [DoStmt] do (...) ...
+# 2762| getCondition(): [Literal] 0
+# 2762| Type = [IntType] int
+# 2762| Value = [Literal] 0
+# 2762| ValueCategory = prvalue
+# 2760| getStmt(): [BlockStmt] { ... }
+# 2761| getStmt(0): [DeclStmt] declaration
+# 2761| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x914
+# 2761| Type = [Struct] String
+# 2761| getVariable().getInitializer(): [Initializer] initializer for x914
+# 2761| getExpr(): [ConstructorCall] call to String
+# 2761| Type = [VoidType] void
+# 2761| ValueCategory = prvalue
+# 2762| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2762| Type = [VoidType] void
+# 2762| ValueCategory = prvalue
+# 2762| getQualifier(): [VariableAccess] x914
+# 2762| Type = [Struct] String
+# 2762| ValueCategory = lvalue
+# 2762| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2762| Conversion = [BoolConversion] conversion to bool
+# 2762| Type = [BoolType] bool
+# 2762| Value = [CStyleCast] 0
+# 2762| ValueCategory = prvalue
+# 2763| getStmt(915): [DoStmt] do (...) ...
+# 2765| getCondition(): [Literal] 0
+# 2765| Type = [IntType] int
+# 2765| Value = [Literal] 0
+# 2765| ValueCategory = prvalue
+# 2763| getStmt(): [BlockStmt] { ... }
+# 2764| getStmt(0): [DeclStmt] declaration
+# 2764| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x915
+# 2764| Type = [Struct] String
+# 2764| getVariable().getInitializer(): [Initializer] initializer for x915
+# 2764| getExpr(): [ConstructorCall] call to String
+# 2764| Type = [VoidType] void
+# 2764| ValueCategory = prvalue
+# 2765| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2765| Type = [VoidType] void
+# 2765| ValueCategory = prvalue
+# 2765| getQualifier(): [VariableAccess] x915
+# 2765| Type = [Struct] String
+# 2765| ValueCategory = lvalue
+# 2765| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2765| Conversion = [BoolConversion] conversion to bool
+# 2765| Type = [BoolType] bool
+# 2765| Value = [CStyleCast] 0
+# 2765| ValueCategory = prvalue
+# 2766| getStmt(916): [DoStmt] do (...) ...
+# 2768| getCondition(): [Literal] 0
+# 2768| Type = [IntType] int
+# 2768| Value = [Literal] 0
+# 2768| ValueCategory = prvalue
+# 2766| getStmt(): [BlockStmt] { ... }
+# 2767| getStmt(0): [DeclStmt] declaration
+# 2767| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x916
+# 2767| Type = [Struct] String
+# 2767| getVariable().getInitializer(): [Initializer] initializer for x916
+# 2767| getExpr(): [ConstructorCall] call to String
+# 2767| Type = [VoidType] void
+# 2767| ValueCategory = prvalue
+# 2768| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2768| Type = [VoidType] void
+# 2768| ValueCategory = prvalue
+# 2768| getQualifier(): [VariableAccess] x916
+# 2768| Type = [Struct] String
+# 2768| ValueCategory = lvalue
+# 2768| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2768| Conversion = [BoolConversion] conversion to bool
+# 2768| Type = [BoolType] bool
+# 2768| Value = [CStyleCast] 0
+# 2768| ValueCategory = prvalue
+# 2769| getStmt(917): [DoStmt] do (...) ...
+# 2771| getCondition(): [Literal] 0
+# 2771| Type = [IntType] int
+# 2771| Value = [Literal] 0
+# 2771| ValueCategory = prvalue
+# 2769| getStmt(): [BlockStmt] { ... }
+# 2770| getStmt(0): [DeclStmt] declaration
+# 2770| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x917
+# 2770| Type = [Struct] String
+# 2770| getVariable().getInitializer(): [Initializer] initializer for x917
+# 2770| getExpr(): [ConstructorCall] call to String
+# 2770| Type = [VoidType] void
+# 2770| ValueCategory = prvalue
+# 2771| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2771| Type = [VoidType] void
+# 2771| ValueCategory = prvalue
+# 2771| getQualifier(): [VariableAccess] x917
+# 2771| Type = [Struct] String
+# 2771| ValueCategory = lvalue
+# 2771| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2771| Conversion = [BoolConversion] conversion to bool
+# 2771| Type = [BoolType] bool
+# 2771| Value = [CStyleCast] 0
+# 2771| ValueCategory = prvalue
+# 2772| getStmt(918): [DoStmt] do (...) ...
+# 2774| getCondition(): [Literal] 0
+# 2774| Type = [IntType] int
+# 2774| Value = [Literal] 0
+# 2774| ValueCategory = prvalue
+# 2772| getStmt(): [BlockStmt] { ... }
+# 2773| getStmt(0): [DeclStmt] declaration
+# 2773| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x918
+# 2773| Type = [Struct] String
+# 2773| getVariable().getInitializer(): [Initializer] initializer for x918
+# 2773| getExpr(): [ConstructorCall] call to String
+# 2773| Type = [VoidType] void
+# 2773| ValueCategory = prvalue
+# 2774| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2774| Type = [VoidType] void
+# 2774| ValueCategory = prvalue
+# 2774| getQualifier(): [VariableAccess] x918
+# 2774| Type = [Struct] String
+# 2774| ValueCategory = lvalue
+# 2774| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2774| Conversion = [BoolConversion] conversion to bool
+# 2774| Type = [BoolType] bool
+# 2774| Value = [CStyleCast] 0
+# 2774| ValueCategory = prvalue
+# 2775| getStmt(919): [DoStmt] do (...) ...
+# 2777| getCondition(): [Literal] 0
+# 2777| Type = [IntType] int
+# 2777| Value = [Literal] 0
+# 2777| ValueCategory = prvalue
+# 2775| getStmt(): [BlockStmt] { ... }
+# 2776| getStmt(0): [DeclStmt] declaration
+# 2776| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x919
+# 2776| Type = [Struct] String
+# 2776| getVariable().getInitializer(): [Initializer] initializer for x919
+# 2776| getExpr(): [ConstructorCall] call to String
+# 2776| Type = [VoidType] void
+# 2776| ValueCategory = prvalue
+# 2777| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2777| Type = [VoidType] void
+# 2777| ValueCategory = prvalue
+# 2777| getQualifier(): [VariableAccess] x919
+# 2777| Type = [Struct] String
+# 2777| ValueCategory = lvalue
+# 2777| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2777| Conversion = [BoolConversion] conversion to bool
+# 2777| Type = [BoolType] bool
+# 2777| Value = [CStyleCast] 0
+# 2777| ValueCategory = prvalue
+# 2778| getStmt(920): [DoStmt] do (...) ...
+# 2780| getCondition(): [Literal] 0
+# 2780| Type = [IntType] int
+# 2780| Value = [Literal] 0
+# 2780| ValueCategory = prvalue
+# 2778| getStmt(): [BlockStmt] { ... }
+# 2779| getStmt(0): [DeclStmt] declaration
+# 2779| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x920
+# 2779| Type = [Struct] String
+# 2779| getVariable().getInitializer(): [Initializer] initializer for x920
+# 2779| getExpr(): [ConstructorCall] call to String
+# 2779| Type = [VoidType] void
+# 2779| ValueCategory = prvalue
+# 2780| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2780| Type = [VoidType] void
+# 2780| ValueCategory = prvalue
+# 2780| getQualifier(): [VariableAccess] x920
+# 2780| Type = [Struct] String
+# 2780| ValueCategory = lvalue
+# 2780| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2780| Conversion = [BoolConversion] conversion to bool
+# 2780| Type = [BoolType] bool
+# 2780| Value = [CStyleCast] 0
+# 2780| ValueCategory = prvalue
+# 2781| getStmt(921): [DoStmt] do (...) ...
+# 2783| getCondition(): [Literal] 0
+# 2783| Type = [IntType] int
+# 2783| Value = [Literal] 0
+# 2783| ValueCategory = prvalue
+# 2781| getStmt(): [BlockStmt] { ... }
+# 2782| getStmt(0): [DeclStmt] declaration
+# 2782| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x921
+# 2782| Type = [Struct] String
+# 2782| getVariable().getInitializer(): [Initializer] initializer for x921
+# 2782| getExpr(): [ConstructorCall] call to String
+# 2782| Type = [VoidType] void
+# 2782| ValueCategory = prvalue
+# 2783| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2783| Type = [VoidType] void
+# 2783| ValueCategory = prvalue
+# 2783| getQualifier(): [VariableAccess] x921
+# 2783| Type = [Struct] String
+# 2783| ValueCategory = lvalue
+# 2783| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2783| Conversion = [BoolConversion] conversion to bool
+# 2783| Type = [BoolType] bool
+# 2783| Value = [CStyleCast] 0
+# 2783| ValueCategory = prvalue
+# 2784| getStmt(922): [DoStmt] do (...) ...
+# 2786| getCondition(): [Literal] 0
+# 2786| Type = [IntType] int
+# 2786| Value = [Literal] 0
+# 2786| ValueCategory = prvalue
+# 2784| getStmt(): [BlockStmt] { ... }
+# 2785| getStmt(0): [DeclStmt] declaration
+# 2785| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x922
+# 2785| Type = [Struct] String
+# 2785| getVariable().getInitializer(): [Initializer] initializer for x922
+# 2785| getExpr(): [ConstructorCall] call to String
+# 2785| Type = [VoidType] void
+# 2785| ValueCategory = prvalue
+# 2786| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2786| Type = [VoidType] void
+# 2786| ValueCategory = prvalue
+# 2786| getQualifier(): [VariableAccess] x922
+# 2786| Type = [Struct] String
+# 2786| ValueCategory = lvalue
+# 2786| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2786| Conversion = [BoolConversion] conversion to bool
+# 2786| Type = [BoolType] bool
+# 2786| Value = [CStyleCast] 0
+# 2786| ValueCategory = prvalue
+# 2787| getStmt(923): [DoStmt] do (...) ...
+# 2789| getCondition(): [Literal] 0
+# 2789| Type = [IntType] int
+# 2789| Value = [Literal] 0
+# 2789| ValueCategory = prvalue
+# 2787| getStmt(): [BlockStmt] { ... }
+# 2788| getStmt(0): [DeclStmt] declaration
+# 2788| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x923
+# 2788| Type = [Struct] String
+# 2788| getVariable().getInitializer(): [Initializer] initializer for x923
+# 2788| getExpr(): [ConstructorCall] call to String
+# 2788| Type = [VoidType] void
+# 2788| ValueCategory = prvalue
+# 2789| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2789| Type = [VoidType] void
+# 2789| ValueCategory = prvalue
+# 2789| getQualifier(): [VariableAccess] x923
+# 2789| Type = [Struct] String
+# 2789| ValueCategory = lvalue
+# 2789| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2789| Conversion = [BoolConversion] conversion to bool
+# 2789| Type = [BoolType] bool
+# 2789| Value = [CStyleCast] 0
+# 2789| ValueCategory = prvalue
+# 2790| getStmt(924): [DoStmt] do (...) ...
+# 2792| getCondition(): [Literal] 0
+# 2792| Type = [IntType] int
+# 2792| Value = [Literal] 0
+# 2792| ValueCategory = prvalue
+# 2790| getStmt(): [BlockStmt] { ... }
+# 2791| getStmt(0): [DeclStmt] declaration
+# 2791| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x924
+# 2791| Type = [Struct] String
+# 2791| getVariable().getInitializer(): [Initializer] initializer for x924
+# 2791| getExpr(): [ConstructorCall] call to String
+# 2791| Type = [VoidType] void
+# 2791| ValueCategory = prvalue
+# 2792| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2792| Type = [VoidType] void
+# 2792| ValueCategory = prvalue
+# 2792| getQualifier(): [VariableAccess] x924
+# 2792| Type = [Struct] String
+# 2792| ValueCategory = lvalue
+# 2792| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2792| Conversion = [BoolConversion] conversion to bool
+# 2792| Type = [BoolType] bool
+# 2792| Value = [CStyleCast] 0
+# 2792| ValueCategory = prvalue
+# 2793| getStmt(925): [DoStmt] do (...) ...
+# 2795| getCondition(): [Literal] 0
+# 2795| Type = [IntType] int
+# 2795| Value = [Literal] 0
+# 2795| ValueCategory = prvalue
+# 2793| getStmt(): [BlockStmt] { ... }
+# 2794| getStmt(0): [DeclStmt] declaration
+# 2794| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x925
+# 2794| Type = [Struct] String
+# 2794| getVariable().getInitializer(): [Initializer] initializer for x925
+# 2794| getExpr(): [ConstructorCall] call to String
+# 2794| Type = [VoidType] void
+# 2794| ValueCategory = prvalue
+# 2795| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2795| Type = [VoidType] void
+# 2795| ValueCategory = prvalue
+# 2795| getQualifier(): [VariableAccess] x925
+# 2795| Type = [Struct] String
+# 2795| ValueCategory = lvalue
+# 2795| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2795| Conversion = [BoolConversion] conversion to bool
+# 2795| Type = [BoolType] bool
+# 2795| Value = [CStyleCast] 0
+# 2795| ValueCategory = prvalue
+# 2796| getStmt(926): [DoStmt] do (...) ...
+# 2798| getCondition(): [Literal] 0
+# 2798| Type = [IntType] int
+# 2798| Value = [Literal] 0
+# 2798| ValueCategory = prvalue
+# 2796| getStmt(): [BlockStmt] { ... }
+# 2797| getStmt(0): [DeclStmt] declaration
+# 2797| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x926
+# 2797| Type = [Struct] String
+# 2797| getVariable().getInitializer(): [Initializer] initializer for x926
+# 2797| getExpr(): [ConstructorCall] call to String
+# 2797| Type = [VoidType] void
+# 2797| ValueCategory = prvalue
+# 2798| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2798| Type = [VoidType] void
+# 2798| ValueCategory = prvalue
+# 2798| getQualifier(): [VariableAccess] x926
+# 2798| Type = [Struct] String
+# 2798| ValueCategory = lvalue
+# 2798| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2798| Conversion = [BoolConversion] conversion to bool
+# 2798| Type = [BoolType] bool
+# 2798| Value = [CStyleCast] 0
+# 2798| ValueCategory = prvalue
+# 2799| getStmt(927): [DoStmt] do (...) ...
+# 2801| getCondition(): [Literal] 0
+# 2801| Type = [IntType] int
+# 2801| Value = [Literal] 0
+# 2801| ValueCategory = prvalue
+# 2799| getStmt(): [BlockStmt] { ... }
+# 2800| getStmt(0): [DeclStmt] declaration
+# 2800| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x927
+# 2800| Type = [Struct] String
+# 2800| getVariable().getInitializer(): [Initializer] initializer for x927
+# 2800| getExpr(): [ConstructorCall] call to String
+# 2800| Type = [VoidType] void
+# 2800| ValueCategory = prvalue
+# 2801| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2801| Type = [VoidType] void
+# 2801| ValueCategory = prvalue
+# 2801| getQualifier(): [VariableAccess] x927
+# 2801| Type = [Struct] String
+# 2801| ValueCategory = lvalue
+# 2801| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2801| Conversion = [BoolConversion] conversion to bool
+# 2801| Type = [BoolType] bool
+# 2801| Value = [CStyleCast] 0
+# 2801| ValueCategory = prvalue
+# 2802| getStmt(928): [DoStmt] do (...) ...
+# 2804| getCondition(): [Literal] 0
+# 2804| Type = [IntType] int
+# 2804| Value = [Literal] 0
+# 2804| ValueCategory = prvalue
+# 2802| getStmt(): [BlockStmt] { ... }
+# 2803| getStmt(0): [DeclStmt] declaration
+# 2803| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x928
+# 2803| Type = [Struct] String
+# 2803| getVariable().getInitializer(): [Initializer] initializer for x928
+# 2803| getExpr(): [ConstructorCall] call to String
+# 2803| Type = [VoidType] void
+# 2803| ValueCategory = prvalue
+# 2804| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2804| Type = [VoidType] void
+# 2804| ValueCategory = prvalue
+# 2804| getQualifier(): [VariableAccess] x928
+# 2804| Type = [Struct] String
+# 2804| ValueCategory = lvalue
+# 2804| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2804| Conversion = [BoolConversion] conversion to bool
+# 2804| Type = [BoolType] bool
+# 2804| Value = [CStyleCast] 0
+# 2804| ValueCategory = prvalue
+# 2805| getStmt(929): [DoStmt] do (...) ...
+# 2807| getCondition(): [Literal] 0
+# 2807| Type = [IntType] int
+# 2807| Value = [Literal] 0
+# 2807| ValueCategory = prvalue
+# 2805| getStmt(): [BlockStmt] { ... }
+# 2806| getStmt(0): [DeclStmt] declaration
+# 2806| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x929
+# 2806| Type = [Struct] String
+# 2806| getVariable().getInitializer(): [Initializer] initializer for x929
+# 2806| getExpr(): [ConstructorCall] call to String
+# 2806| Type = [VoidType] void
+# 2806| ValueCategory = prvalue
+# 2807| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2807| Type = [VoidType] void
+# 2807| ValueCategory = prvalue
+# 2807| getQualifier(): [VariableAccess] x929
+# 2807| Type = [Struct] String
+# 2807| ValueCategory = lvalue
+# 2807| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2807| Conversion = [BoolConversion] conversion to bool
+# 2807| Type = [BoolType] bool
+# 2807| Value = [CStyleCast] 0
+# 2807| ValueCategory = prvalue
+# 2808| getStmt(930): [DoStmt] do (...) ...
+# 2810| getCondition(): [Literal] 0
+# 2810| Type = [IntType] int
+# 2810| Value = [Literal] 0
+# 2810| ValueCategory = prvalue
+# 2808| getStmt(): [BlockStmt] { ... }
+# 2809| getStmt(0): [DeclStmt] declaration
+# 2809| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x930
+# 2809| Type = [Struct] String
+# 2809| getVariable().getInitializer(): [Initializer] initializer for x930
+# 2809| getExpr(): [ConstructorCall] call to String
+# 2809| Type = [VoidType] void
+# 2809| ValueCategory = prvalue
+# 2810| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2810| Type = [VoidType] void
+# 2810| ValueCategory = prvalue
+# 2810| getQualifier(): [VariableAccess] x930
+# 2810| Type = [Struct] String
+# 2810| ValueCategory = lvalue
+# 2810| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2810| Conversion = [BoolConversion] conversion to bool
+# 2810| Type = [BoolType] bool
+# 2810| Value = [CStyleCast] 0
+# 2810| ValueCategory = prvalue
+# 2811| getStmt(931): [DoStmt] do (...) ...
+# 2813| getCondition(): [Literal] 0
+# 2813| Type = [IntType] int
+# 2813| Value = [Literal] 0
+# 2813| ValueCategory = prvalue
+# 2811| getStmt(): [BlockStmt] { ... }
+# 2812| getStmt(0): [DeclStmt] declaration
+# 2812| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x931
+# 2812| Type = [Struct] String
+# 2812| getVariable().getInitializer(): [Initializer] initializer for x931
+# 2812| getExpr(): [ConstructorCall] call to String
+# 2812| Type = [VoidType] void
+# 2812| ValueCategory = prvalue
+# 2813| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2813| Type = [VoidType] void
+# 2813| ValueCategory = prvalue
+# 2813| getQualifier(): [VariableAccess] x931
+# 2813| Type = [Struct] String
+# 2813| ValueCategory = lvalue
+# 2813| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2813| Conversion = [BoolConversion] conversion to bool
+# 2813| Type = [BoolType] bool
+# 2813| Value = [CStyleCast] 0
+# 2813| ValueCategory = prvalue
+# 2814| getStmt(932): [DoStmt] do (...) ...
+# 2816| getCondition(): [Literal] 0
+# 2816| Type = [IntType] int
+# 2816| Value = [Literal] 0
+# 2816| ValueCategory = prvalue
+# 2814| getStmt(): [BlockStmt] { ... }
+# 2815| getStmt(0): [DeclStmt] declaration
+# 2815| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x932
+# 2815| Type = [Struct] String
+# 2815| getVariable().getInitializer(): [Initializer] initializer for x932
+# 2815| getExpr(): [ConstructorCall] call to String
+# 2815| Type = [VoidType] void
+# 2815| ValueCategory = prvalue
+# 2816| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2816| Type = [VoidType] void
+# 2816| ValueCategory = prvalue
+# 2816| getQualifier(): [VariableAccess] x932
+# 2816| Type = [Struct] String
+# 2816| ValueCategory = lvalue
+# 2816| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2816| Conversion = [BoolConversion] conversion to bool
+# 2816| Type = [BoolType] bool
+# 2816| Value = [CStyleCast] 0
+# 2816| ValueCategory = prvalue
+# 2817| getStmt(933): [DoStmt] do (...) ...
+# 2819| getCondition(): [Literal] 0
+# 2819| Type = [IntType] int
+# 2819| Value = [Literal] 0
+# 2819| ValueCategory = prvalue
+# 2817| getStmt(): [BlockStmt] { ... }
+# 2818| getStmt(0): [DeclStmt] declaration
+# 2818| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x933
+# 2818| Type = [Struct] String
+# 2818| getVariable().getInitializer(): [Initializer] initializer for x933
+# 2818| getExpr(): [ConstructorCall] call to String
+# 2818| Type = [VoidType] void
+# 2818| ValueCategory = prvalue
+# 2819| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2819| Type = [VoidType] void
+# 2819| ValueCategory = prvalue
+# 2819| getQualifier(): [VariableAccess] x933
+# 2819| Type = [Struct] String
+# 2819| ValueCategory = lvalue
+# 2819| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2819| Conversion = [BoolConversion] conversion to bool
+# 2819| Type = [BoolType] bool
+# 2819| Value = [CStyleCast] 0
+# 2819| ValueCategory = prvalue
+# 2820| getStmt(934): [DoStmt] do (...) ...
+# 2822| getCondition(): [Literal] 0
+# 2822| Type = [IntType] int
+# 2822| Value = [Literal] 0
+# 2822| ValueCategory = prvalue
+# 2820| getStmt(): [BlockStmt] { ... }
+# 2821| getStmt(0): [DeclStmt] declaration
+# 2821| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x934
+# 2821| Type = [Struct] String
+# 2821| getVariable().getInitializer(): [Initializer] initializer for x934
+# 2821| getExpr(): [ConstructorCall] call to String
+# 2821| Type = [VoidType] void
+# 2821| ValueCategory = prvalue
+# 2822| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2822| Type = [VoidType] void
+# 2822| ValueCategory = prvalue
+# 2822| getQualifier(): [VariableAccess] x934
+# 2822| Type = [Struct] String
+# 2822| ValueCategory = lvalue
+# 2822| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2822| Conversion = [BoolConversion] conversion to bool
+# 2822| Type = [BoolType] bool
+# 2822| Value = [CStyleCast] 0
+# 2822| ValueCategory = prvalue
+# 2823| getStmt(935): [DoStmt] do (...) ...
+# 2825| getCondition(): [Literal] 0
+# 2825| Type = [IntType] int
+# 2825| Value = [Literal] 0
+# 2825| ValueCategory = prvalue
+# 2823| getStmt(): [BlockStmt] { ... }
+# 2824| getStmt(0): [DeclStmt] declaration
+# 2824| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x935
+# 2824| Type = [Struct] String
+# 2824| getVariable().getInitializer(): [Initializer] initializer for x935
+# 2824| getExpr(): [ConstructorCall] call to String
+# 2824| Type = [VoidType] void
+# 2824| ValueCategory = prvalue
+# 2825| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2825| Type = [VoidType] void
+# 2825| ValueCategory = prvalue
+# 2825| getQualifier(): [VariableAccess] x935
+# 2825| Type = [Struct] String
+# 2825| ValueCategory = lvalue
+# 2825| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2825| Conversion = [BoolConversion] conversion to bool
+# 2825| Type = [BoolType] bool
+# 2825| Value = [CStyleCast] 0
+# 2825| ValueCategory = prvalue
+# 2826| getStmt(936): [DoStmt] do (...) ...
+# 2828| getCondition(): [Literal] 0
+# 2828| Type = [IntType] int
+# 2828| Value = [Literal] 0
+# 2828| ValueCategory = prvalue
+# 2826| getStmt(): [BlockStmt] { ... }
+# 2827| getStmt(0): [DeclStmt] declaration
+# 2827| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x936
+# 2827| Type = [Struct] String
+# 2827| getVariable().getInitializer(): [Initializer] initializer for x936
+# 2827| getExpr(): [ConstructorCall] call to String
+# 2827| Type = [VoidType] void
+# 2827| ValueCategory = prvalue
+# 2828| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2828| Type = [VoidType] void
+# 2828| ValueCategory = prvalue
+# 2828| getQualifier(): [VariableAccess] x936
+# 2828| Type = [Struct] String
+# 2828| ValueCategory = lvalue
+# 2828| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2828| Conversion = [BoolConversion] conversion to bool
+# 2828| Type = [BoolType] bool
+# 2828| Value = [CStyleCast] 0
+# 2828| ValueCategory = prvalue
+# 2829| getStmt(937): [DoStmt] do (...) ...
+# 2831| getCondition(): [Literal] 0
+# 2831| Type = [IntType] int
+# 2831| Value = [Literal] 0
+# 2831| ValueCategory = prvalue
+# 2829| getStmt(): [BlockStmt] { ... }
+# 2830| getStmt(0): [DeclStmt] declaration
+# 2830| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x937
+# 2830| Type = [Struct] String
+# 2830| getVariable().getInitializer(): [Initializer] initializer for x937
+# 2830| getExpr(): [ConstructorCall] call to String
+# 2830| Type = [VoidType] void
+# 2830| ValueCategory = prvalue
+# 2831| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2831| Type = [VoidType] void
+# 2831| ValueCategory = prvalue
+# 2831| getQualifier(): [VariableAccess] x937
+# 2831| Type = [Struct] String
+# 2831| ValueCategory = lvalue
+# 2831| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2831| Conversion = [BoolConversion] conversion to bool
+# 2831| Type = [BoolType] bool
+# 2831| Value = [CStyleCast] 0
+# 2831| ValueCategory = prvalue
+# 2832| getStmt(938): [DoStmt] do (...) ...
+# 2834| getCondition(): [Literal] 0
+# 2834| Type = [IntType] int
+# 2834| Value = [Literal] 0
+# 2834| ValueCategory = prvalue
+# 2832| getStmt(): [BlockStmt] { ... }
+# 2833| getStmt(0): [DeclStmt] declaration
+# 2833| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x938
+# 2833| Type = [Struct] String
+# 2833| getVariable().getInitializer(): [Initializer] initializer for x938
+# 2833| getExpr(): [ConstructorCall] call to String
+# 2833| Type = [VoidType] void
+# 2833| ValueCategory = prvalue
+# 2834| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2834| Type = [VoidType] void
+# 2834| ValueCategory = prvalue
+# 2834| getQualifier(): [VariableAccess] x938
+# 2834| Type = [Struct] String
+# 2834| ValueCategory = lvalue
+# 2834| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2834| Conversion = [BoolConversion] conversion to bool
+# 2834| Type = [BoolType] bool
+# 2834| Value = [CStyleCast] 0
+# 2834| ValueCategory = prvalue
+# 2835| getStmt(939): [DoStmt] do (...) ...
+# 2837| getCondition(): [Literal] 0
+# 2837| Type = [IntType] int
+# 2837| Value = [Literal] 0
+# 2837| ValueCategory = prvalue
+# 2835| getStmt(): [BlockStmt] { ... }
+# 2836| getStmt(0): [DeclStmt] declaration
+# 2836| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x939
+# 2836| Type = [Struct] String
+# 2836| getVariable().getInitializer(): [Initializer] initializer for x939
+# 2836| getExpr(): [ConstructorCall] call to String
+# 2836| Type = [VoidType] void
+# 2836| ValueCategory = prvalue
+# 2837| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2837| Type = [VoidType] void
+# 2837| ValueCategory = prvalue
+# 2837| getQualifier(): [VariableAccess] x939
+# 2837| Type = [Struct] String
+# 2837| ValueCategory = lvalue
+# 2837| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2837| Conversion = [BoolConversion] conversion to bool
+# 2837| Type = [BoolType] bool
+# 2837| Value = [CStyleCast] 0
+# 2837| ValueCategory = prvalue
+# 2838| getStmt(940): [DoStmt] do (...) ...
+# 2840| getCondition(): [Literal] 0
+# 2840| Type = [IntType] int
+# 2840| Value = [Literal] 0
+# 2840| ValueCategory = prvalue
+# 2838| getStmt(): [BlockStmt] { ... }
+# 2839| getStmt(0): [DeclStmt] declaration
+# 2839| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x940
+# 2839| Type = [Struct] String
+# 2839| getVariable().getInitializer(): [Initializer] initializer for x940
+# 2839| getExpr(): [ConstructorCall] call to String
+# 2839| Type = [VoidType] void
+# 2839| ValueCategory = prvalue
+# 2840| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2840| Type = [VoidType] void
+# 2840| ValueCategory = prvalue
+# 2840| getQualifier(): [VariableAccess] x940
+# 2840| Type = [Struct] String
+# 2840| ValueCategory = lvalue
+# 2840| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2840| Conversion = [BoolConversion] conversion to bool
+# 2840| Type = [BoolType] bool
+# 2840| Value = [CStyleCast] 0
+# 2840| ValueCategory = prvalue
+# 2841| getStmt(941): [DoStmt] do (...) ...
+# 2843| getCondition(): [Literal] 0
+# 2843| Type = [IntType] int
+# 2843| Value = [Literal] 0
+# 2843| ValueCategory = prvalue
+# 2841| getStmt(): [BlockStmt] { ... }
+# 2842| getStmt(0): [DeclStmt] declaration
+# 2842| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x941
+# 2842| Type = [Struct] String
+# 2842| getVariable().getInitializer(): [Initializer] initializer for x941
+# 2842| getExpr(): [ConstructorCall] call to String
+# 2842| Type = [VoidType] void
+# 2842| ValueCategory = prvalue
+# 2843| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2843| Type = [VoidType] void
+# 2843| ValueCategory = prvalue
+# 2843| getQualifier(): [VariableAccess] x941
+# 2843| Type = [Struct] String
+# 2843| ValueCategory = lvalue
+# 2843| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2843| Conversion = [BoolConversion] conversion to bool
+# 2843| Type = [BoolType] bool
+# 2843| Value = [CStyleCast] 0
+# 2843| ValueCategory = prvalue
+# 2844| getStmt(942): [DoStmt] do (...) ...
+# 2846| getCondition(): [Literal] 0
+# 2846| Type = [IntType] int
+# 2846| Value = [Literal] 0
+# 2846| ValueCategory = prvalue
+# 2844| getStmt(): [BlockStmt] { ... }
+# 2845| getStmt(0): [DeclStmt] declaration
+# 2845| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x942
+# 2845| Type = [Struct] String
+# 2845| getVariable().getInitializer(): [Initializer] initializer for x942
+# 2845| getExpr(): [ConstructorCall] call to String
+# 2845| Type = [VoidType] void
+# 2845| ValueCategory = prvalue
+# 2846| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2846| Type = [VoidType] void
+# 2846| ValueCategory = prvalue
+# 2846| getQualifier(): [VariableAccess] x942
+# 2846| Type = [Struct] String
+# 2846| ValueCategory = lvalue
+# 2846| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2846| Conversion = [BoolConversion] conversion to bool
+# 2846| Type = [BoolType] bool
+# 2846| Value = [CStyleCast] 0
+# 2846| ValueCategory = prvalue
+# 2847| getStmt(943): [DoStmt] do (...) ...
+# 2849| getCondition(): [Literal] 0
+# 2849| Type = [IntType] int
+# 2849| Value = [Literal] 0
+# 2849| ValueCategory = prvalue
+# 2847| getStmt(): [BlockStmt] { ... }
+# 2848| getStmt(0): [DeclStmt] declaration
+# 2848| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x943
+# 2848| Type = [Struct] String
+# 2848| getVariable().getInitializer(): [Initializer] initializer for x943
+# 2848| getExpr(): [ConstructorCall] call to String
+# 2848| Type = [VoidType] void
+# 2848| ValueCategory = prvalue
+# 2849| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2849| Type = [VoidType] void
+# 2849| ValueCategory = prvalue
+# 2849| getQualifier(): [VariableAccess] x943
+# 2849| Type = [Struct] String
+# 2849| ValueCategory = lvalue
+# 2849| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2849| Conversion = [BoolConversion] conversion to bool
+# 2849| Type = [BoolType] bool
+# 2849| Value = [CStyleCast] 0
+# 2849| ValueCategory = prvalue
+# 2850| getStmt(944): [DoStmt] do (...) ...
+# 2852| getCondition(): [Literal] 0
+# 2852| Type = [IntType] int
+# 2852| Value = [Literal] 0
+# 2852| ValueCategory = prvalue
+# 2850| getStmt(): [BlockStmt] { ... }
+# 2851| getStmt(0): [DeclStmt] declaration
+# 2851| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x944
+# 2851| Type = [Struct] String
+# 2851| getVariable().getInitializer(): [Initializer] initializer for x944
+# 2851| getExpr(): [ConstructorCall] call to String
+# 2851| Type = [VoidType] void
+# 2851| ValueCategory = prvalue
+# 2852| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2852| Type = [VoidType] void
+# 2852| ValueCategory = prvalue
+# 2852| getQualifier(): [VariableAccess] x944
+# 2852| Type = [Struct] String
+# 2852| ValueCategory = lvalue
+# 2852| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2852| Conversion = [BoolConversion] conversion to bool
+# 2852| Type = [BoolType] bool
+# 2852| Value = [CStyleCast] 0
+# 2852| ValueCategory = prvalue
+# 2853| getStmt(945): [DoStmt] do (...) ...
+# 2855| getCondition(): [Literal] 0
+# 2855| Type = [IntType] int
+# 2855| Value = [Literal] 0
+# 2855| ValueCategory = prvalue
+# 2853| getStmt(): [BlockStmt] { ... }
+# 2854| getStmt(0): [DeclStmt] declaration
+# 2854| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x945
+# 2854| Type = [Struct] String
+# 2854| getVariable().getInitializer(): [Initializer] initializer for x945
+# 2854| getExpr(): [ConstructorCall] call to String
+# 2854| Type = [VoidType] void
+# 2854| ValueCategory = prvalue
+# 2855| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2855| Type = [VoidType] void
+# 2855| ValueCategory = prvalue
+# 2855| getQualifier(): [VariableAccess] x945
+# 2855| Type = [Struct] String
+# 2855| ValueCategory = lvalue
+# 2855| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2855| Conversion = [BoolConversion] conversion to bool
+# 2855| Type = [BoolType] bool
+# 2855| Value = [CStyleCast] 0
+# 2855| ValueCategory = prvalue
+# 2856| getStmt(946): [DoStmt] do (...) ...
+# 2858| getCondition(): [Literal] 0
+# 2858| Type = [IntType] int
+# 2858| Value = [Literal] 0
+# 2858| ValueCategory = prvalue
+# 2856| getStmt(): [BlockStmt] { ... }
+# 2857| getStmt(0): [DeclStmt] declaration
+# 2857| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x946
+# 2857| Type = [Struct] String
+# 2857| getVariable().getInitializer(): [Initializer] initializer for x946
+# 2857| getExpr(): [ConstructorCall] call to String
+# 2857| Type = [VoidType] void
+# 2857| ValueCategory = prvalue
+# 2858| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2858| Type = [VoidType] void
+# 2858| ValueCategory = prvalue
+# 2858| getQualifier(): [VariableAccess] x946
+# 2858| Type = [Struct] String
+# 2858| ValueCategory = lvalue
+# 2858| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2858| Conversion = [BoolConversion] conversion to bool
+# 2858| Type = [BoolType] bool
+# 2858| Value = [CStyleCast] 0
+# 2858| ValueCategory = prvalue
+# 2859| getStmt(947): [DoStmt] do (...) ...
+# 2861| getCondition(): [Literal] 0
+# 2861| Type = [IntType] int
+# 2861| Value = [Literal] 0
+# 2861| ValueCategory = prvalue
+# 2859| getStmt(): [BlockStmt] { ... }
+# 2860| getStmt(0): [DeclStmt] declaration
+# 2860| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x947
+# 2860| Type = [Struct] String
+# 2860| getVariable().getInitializer(): [Initializer] initializer for x947
+# 2860| getExpr(): [ConstructorCall] call to String
+# 2860| Type = [VoidType] void
+# 2860| ValueCategory = prvalue
+# 2861| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2861| Type = [VoidType] void
+# 2861| ValueCategory = prvalue
+# 2861| getQualifier(): [VariableAccess] x947
+# 2861| Type = [Struct] String
+# 2861| ValueCategory = lvalue
+# 2861| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2861| Conversion = [BoolConversion] conversion to bool
+# 2861| Type = [BoolType] bool
+# 2861| Value = [CStyleCast] 0
+# 2861| ValueCategory = prvalue
+# 2862| getStmt(948): [DoStmt] do (...) ...
+# 2864| getCondition(): [Literal] 0
+# 2864| Type = [IntType] int
+# 2864| Value = [Literal] 0
+# 2864| ValueCategory = prvalue
+# 2862| getStmt(): [BlockStmt] { ... }
+# 2863| getStmt(0): [DeclStmt] declaration
+# 2863| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x948
+# 2863| Type = [Struct] String
+# 2863| getVariable().getInitializer(): [Initializer] initializer for x948
+# 2863| getExpr(): [ConstructorCall] call to String
+# 2863| Type = [VoidType] void
+# 2863| ValueCategory = prvalue
+# 2864| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2864| Type = [VoidType] void
+# 2864| ValueCategory = prvalue
+# 2864| getQualifier(): [VariableAccess] x948
+# 2864| Type = [Struct] String
+# 2864| ValueCategory = lvalue
+# 2864| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2864| Conversion = [BoolConversion] conversion to bool
+# 2864| Type = [BoolType] bool
+# 2864| Value = [CStyleCast] 0
+# 2864| ValueCategory = prvalue
+# 2865| getStmt(949): [DoStmt] do (...) ...
+# 2867| getCondition(): [Literal] 0
+# 2867| Type = [IntType] int
+# 2867| Value = [Literal] 0
+# 2867| ValueCategory = prvalue
+# 2865| getStmt(): [BlockStmt] { ... }
+# 2866| getStmt(0): [DeclStmt] declaration
+# 2866| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x949
+# 2866| Type = [Struct] String
+# 2866| getVariable().getInitializer(): [Initializer] initializer for x949
+# 2866| getExpr(): [ConstructorCall] call to String
+# 2866| Type = [VoidType] void
+# 2866| ValueCategory = prvalue
+# 2867| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2867| Type = [VoidType] void
+# 2867| ValueCategory = prvalue
+# 2867| getQualifier(): [VariableAccess] x949
+# 2867| Type = [Struct] String
+# 2867| ValueCategory = lvalue
+# 2867| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2867| Conversion = [BoolConversion] conversion to bool
+# 2867| Type = [BoolType] bool
+# 2867| Value = [CStyleCast] 0
+# 2867| ValueCategory = prvalue
+# 2868| getStmt(950): [DoStmt] do (...) ...
+# 2870| getCondition(): [Literal] 0
+# 2870| Type = [IntType] int
+# 2870| Value = [Literal] 0
+# 2870| ValueCategory = prvalue
+# 2868| getStmt(): [BlockStmt] { ... }
+# 2869| getStmt(0): [DeclStmt] declaration
+# 2869| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x950
+# 2869| Type = [Struct] String
+# 2869| getVariable().getInitializer(): [Initializer] initializer for x950
+# 2869| getExpr(): [ConstructorCall] call to String
+# 2869| Type = [VoidType] void
+# 2869| ValueCategory = prvalue
+# 2870| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2870| Type = [VoidType] void
+# 2870| ValueCategory = prvalue
+# 2870| getQualifier(): [VariableAccess] x950
+# 2870| Type = [Struct] String
+# 2870| ValueCategory = lvalue
+# 2870| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2870| Conversion = [BoolConversion] conversion to bool
+# 2870| Type = [BoolType] bool
+# 2870| Value = [CStyleCast] 0
+# 2870| ValueCategory = prvalue
+# 2871| getStmt(951): [DoStmt] do (...) ...
+# 2873| getCondition(): [Literal] 0
+# 2873| Type = [IntType] int
+# 2873| Value = [Literal] 0
+# 2873| ValueCategory = prvalue
+# 2871| getStmt(): [BlockStmt] { ... }
+# 2872| getStmt(0): [DeclStmt] declaration
+# 2872| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x951
+# 2872| Type = [Struct] String
+# 2872| getVariable().getInitializer(): [Initializer] initializer for x951
+# 2872| getExpr(): [ConstructorCall] call to String
+# 2872| Type = [VoidType] void
+# 2872| ValueCategory = prvalue
+# 2873| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2873| Type = [VoidType] void
+# 2873| ValueCategory = prvalue
+# 2873| getQualifier(): [VariableAccess] x951
+# 2873| Type = [Struct] String
+# 2873| ValueCategory = lvalue
+# 2873| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2873| Conversion = [BoolConversion] conversion to bool
+# 2873| Type = [BoolType] bool
+# 2873| Value = [CStyleCast] 0
+# 2873| ValueCategory = prvalue
+# 2874| getStmt(952): [DoStmt] do (...) ...
+# 2876| getCondition(): [Literal] 0
+# 2876| Type = [IntType] int
+# 2876| Value = [Literal] 0
+# 2876| ValueCategory = prvalue
+# 2874| getStmt(): [BlockStmt] { ... }
+# 2875| getStmt(0): [DeclStmt] declaration
+# 2875| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x952
+# 2875| Type = [Struct] String
+# 2875| getVariable().getInitializer(): [Initializer] initializer for x952
+# 2875| getExpr(): [ConstructorCall] call to String
+# 2875| Type = [VoidType] void
+# 2875| ValueCategory = prvalue
+# 2876| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2876| Type = [VoidType] void
+# 2876| ValueCategory = prvalue
+# 2876| getQualifier(): [VariableAccess] x952
+# 2876| Type = [Struct] String
+# 2876| ValueCategory = lvalue
+# 2876| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2876| Conversion = [BoolConversion] conversion to bool
+# 2876| Type = [BoolType] bool
+# 2876| Value = [CStyleCast] 0
+# 2876| ValueCategory = prvalue
+# 2877| getStmt(953): [DoStmt] do (...) ...
+# 2879| getCondition(): [Literal] 0
+# 2879| Type = [IntType] int
+# 2879| Value = [Literal] 0
+# 2879| ValueCategory = prvalue
+# 2877| getStmt(): [BlockStmt] { ... }
+# 2878| getStmt(0): [DeclStmt] declaration
+# 2878| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x953
+# 2878| Type = [Struct] String
+# 2878| getVariable().getInitializer(): [Initializer] initializer for x953
+# 2878| getExpr(): [ConstructorCall] call to String
+# 2878| Type = [VoidType] void
+# 2878| ValueCategory = prvalue
+# 2879| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2879| Type = [VoidType] void
+# 2879| ValueCategory = prvalue
+# 2879| getQualifier(): [VariableAccess] x953
+# 2879| Type = [Struct] String
+# 2879| ValueCategory = lvalue
+# 2879| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2879| Conversion = [BoolConversion] conversion to bool
+# 2879| Type = [BoolType] bool
+# 2879| Value = [CStyleCast] 0
+# 2879| ValueCategory = prvalue
+# 2880| getStmt(954): [DoStmt] do (...) ...
+# 2882| getCondition(): [Literal] 0
+# 2882| Type = [IntType] int
+# 2882| Value = [Literal] 0
+# 2882| ValueCategory = prvalue
+# 2880| getStmt(): [BlockStmt] { ... }
+# 2881| getStmt(0): [DeclStmt] declaration
+# 2881| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x954
+# 2881| Type = [Struct] String
+# 2881| getVariable().getInitializer(): [Initializer] initializer for x954
+# 2881| getExpr(): [ConstructorCall] call to String
+# 2881| Type = [VoidType] void
+# 2881| ValueCategory = prvalue
+# 2882| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2882| Type = [VoidType] void
+# 2882| ValueCategory = prvalue
+# 2882| getQualifier(): [VariableAccess] x954
+# 2882| Type = [Struct] String
+# 2882| ValueCategory = lvalue
+# 2882| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2882| Conversion = [BoolConversion] conversion to bool
+# 2882| Type = [BoolType] bool
+# 2882| Value = [CStyleCast] 0
+# 2882| ValueCategory = prvalue
+# 2883| getStmt(955): [DoStmt] do (...) ...
+# 2885| getCondition(): [Literal] 0
+# 2885| Type = [IntType] int
+# 2885| Value = [Literal] 0
+# 2885| ValueCategory = prvalue
+# 2883| getStmt(): [BlockStmt] { ... }
+# 2884| getStmt(0): [DeclStmt] declaration
+# 2884| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x955
+# 2884| Type = [Struct] String
+# 2884| getVariable().getInitializer(): [Initializer] initializer for x955
+# 2884| getExpr(): [ConstructorCall] call to String
+# 2884| Type = [VoidType] void
+# 2884| ValueCategory = prvalue
+# 2885| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2885| Type = [VoidType] void
+# 2885| ValueCategory = prvalue
+# 2885| getQualifier(): [VariableAccess] x955
+# 2885| Type = [Struct] String
+# 2885| ValueCategory = lvalue
+# 2885| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2885| Conversion = [BoolConversion] conversion to bool
+# 2885| Type = [BoolType] bool
+# 2885| Value = [CStyleCast] 0
+# 2885| ValueCategory = prvalue
+# 2886| getStmt(956): [DoStmt] do (...) ...
+# 2888| getCondition(): [Literal] 0
+# 2888| Type = [IntType] int
+# 2888| Value = [Literal] 0
+# 2888| ValueCategory = prvalue
+# 2886| getStmt(): [BlockStmt] { ... }
+# 2887| getStmt(0): [DeclStmt] declaration
+# 2887| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x956
+# 2887| Type = [Struct] String
+# 2887| getVariable().getInitializer(): [Initializer] initializer for x956
+# 2887| getExpr(): [ConstructorCall] call to String
+# 2887| Type = [VoidType] void
+# 2887| ValueCategory = prvalue
+# 2888| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2888| Type = [VoidType] void
+# 2888| ValueCategory = prvalue
+# 2888| getQualifier(): [VariableAccess] x956
+# 2888| Type = [Struct] String
+# 2888| ValueCategory = lvalue
+# 2888| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2888| Conversion = [BoolConversion] conversion to bool
+# 2888| Type = [BoolType] bool
+# 2888| Value = [CStyleCast] 0
+# 2888| ValueCategory = prvalue
+# 2889| getStmt(957): [DoStmt] do (...) ...
+# 2891| getCondition(): [Literal] 0
+# 2891| Type = [IntType] int
+# 2891| Value = [Literal] 0
+# 2891| ValueCategory = prvalue
+# 2889| getStmt(): [BlockStmt] { ... }
+# 2890| getStmt(0): [DeclStmt] declaration
+# 2890| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x957
+# 2890| Type = [Struct] String
+# 2890| getVariable().getInitializer(): [Initializer] initializer for x957
+# 2890| getExpr(): [ConstructorCall] call to String
+# 2890| Type = [VoidType] void
+# 2890| ValueCategory = prvalue
+# 2891| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2891| Type = [VoidType] void
+# 2891| ValueCategory = prvalue
+# 2891| getQualifier(): [VariableAccess] x957
+# 2891| Type = [Struct] String
+# 2891| ValueCategory = lvalue
+# 2891| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2891| Conversion = [BoolConversion] conversion to bool
+# 2891| Type = [BoolType] bool
+# 2891| Value = [CStyleCast] 0
+# 2891| ValueCategory = prvalue
+# 2892| getStmt(958): [DoStmt] do (...) ...
+# 2894| getCondition(): [Literal] 0
+# 2894| Type = [IntType] int
+# 2894| Value = [Literal] 0
+# 2894| ValueCategory = prvalue
+# 2892| getStmt(): [BlockStmt] { ... }
+# 2893| getStmt(0): [DeclStmt] declaration
+# 2893| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x958
+# 2893| Type = [Struct] String
+# 2893| getVariable().getInitializer(): [Initializer] initializer for x958
+# 2893| getExpr(): [ConstructorCall] call to String
+# 2893| Type = [VoidType] void
+# 2893| ValueCategory = prvalue
+# 2894| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2894| Type = [VoidType] void
+# 2894| ValueCategory = prvalue
+# 2894| getQualifier(): [VariableAccess] x958
+# 2894| Type = [Struct] String
+# 2894| ValueCategory = lvalue
+# 2894| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2894| Conversion = [BoolConversion] conversion to bool
+# 2894| Type = [BoolType] bool
+# 2894| Value = [CStyleCast] 0
+# 2894| ValueCategory = prvalue
+# 2895| getStmt(959): [DoStmt] do (...) ...
+# 2897| getCondition(): [Literal] 0
+# 2897| Type = [IntType] int
+# 2897| Value = [Literal] 0
+# 2897| ValueCategory = prvalue
+# 2895| getStmt(): [BlockStmt] { ... }
+# 2896| getStmt(0): [DeclStmt] declaration
+# 2896| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x959
+# 2896| Type = [Struct] String
+# 2896| getVariable().getInitializer(): [Initializer] initializer for x959
+# 2896| getExpr(): [ConstructorCall] call to String
+# 2896| Type = [VoidType] void
+# 2896| ValueCategory = prvalue
+# 2897| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2897| Type = [VoidType] void
+# 2897| ValueCategory = prvalue
+# 2897| getQualifier(): [VariableAccess] x959
+# 2897| Type = [Struct] String
+# 2897| ValueCategory = lvalue
+# 2897| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2897| Conversion = [BoolConversion] conversion to bool
+# 2897| Type = [BoolType] bool
+# 2897| Value = [CStyleCast] 0
+# 2897| ValueCategory = prvalue
+# 2898| getStmt(960): [DoStmt] do (...) ...
+# 2900| getCondition(): [Literal] 0
+# 2900| Type = [IntType] int
+# 2900| Value = [Literal] 0
+# 2900| ValueCategory = prvalue
+# 2898| getStmt(): [BlockStmt] { ... }
+# 2899| getStmt(0): [DeclStmt] declaration
+# 2899| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x960
+# 2899| Type = [Struct] String
+# 2899| getVariable().getInitializer(): [Initializer] initializer for x960
+# 2899| getExpr(): [ConstructorCall] call to String
+# 2899| Type = [VoidType] void
+# 2899| ValueCategory = prvalue
+# 2900| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2900| Type = [VoidType] void
+# 2900| ValueCategory = prvalue
+# 2900| getQualifier(): [VariableAccess] x960
+# 2900| Type = [Struct] String
+# 2900| ValueCategory = lvalue
+# 2900| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2900| Conversion = [BoolConversion] conversion to bool
+# 2900| Type = [BoolType] bool
+# 2900| Value = [CStyleCast] 0
+# 2900| ValueCategory = prvalue
+# 2901| getStmt(961): [DoStmt] do (...) ...
+# 2903| getCondition(): [Literal] 0
+# 2903| Type = [IntType] int
+# 2903| Value = [Literal] 0
+# 2903| ValueCategory = prvalue
+# 2901| getStmt(): [BlockStmt] { ... }
+# 2902| getStmt(0): [DeclStmt] declaration
+# 2902| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x961
+# 2902| Type = [Struct] String
+# 2902| getVariable().getInitializer(): [Initializer] initializer for x961
+# 2902| getExpr(): [ConstructorCall] call to String
+# 2902| Type = [VoidType] void
+# 2902| ValueCategory = prvalue
+# 2903| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2903| Type = [VoidType] void
+# 2903| ValueCategory = prvalue
+# 2903| getQualifier(): [VariableAccess] x961
+# 2903| Type = [Struct] String
+# 2903| ValueCategory = lvalue
+# 2903| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2903| Conversion = [BoolConversion] conversion to bool
+# 2903| Type = [BoolType] bool
+# 2903| Value = [CStyleCast] 0
+# 2903| ValueCategory = prvalue
+# 2904| getStmt(962): [DoStmt] do (...) ...
+# 2906| getCondition(): [Literal] 0
+# 2906| Type = [IntType] int
+# 2906| Value = [Literal] 0
+# 2906| ValueCategory = prvalue
+# 2904| getStmt(): [BlockStmt] { ... }
+# 2905| getStmt(0): [DeclStmt] declaration
+# 2905| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x962
+# 2905| Type = [Struct] String
+# 2905| getVariable().getInitializer(): [Initializer] initializer for x962
+# 2905| getExpr(): [ConstructorCall] call to String
+# 2905| Type = [VoidType] void
+# 2905| ValueCategory = prvalue
+# 2906| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2906| Type = [VoidType] void
+# 2906| ValueCategory = prvalue
+# 2906| getQualifier(): [VariableAccess] x962
+# 2906| Type = [Struct] String
+# 2906| ValueCategory = lvalue
+# 2906| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2906| Conversion = [BoolConversion] conversion to bool
+# 2906| Type = [BoolType] bool
+# 2906| Value = [CStyleCast] 0
+# 2906| ValueCategory = prvalue
+# 2907| getStmt(963): [DoStmt] do (...) ...
+# 2909| getCondition(): [Literal] 0
+# 2909| Type = [IntType] int
+# 2909| Value = [Literal] 0
+# 2909| ValueCategory = prvalue
+# 2907| getStmt(): [BlockStmt] { ... }
+# 2908| getStmt(0): [DeclStmt] declaration
+# 2908| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x963
+# 2908| Type = [Struct] String
+# 2908| getVariable().getInitializer(): [Initializer] initializer for x963
+# 2908| getExpr(): [ConstructorCall] call to String
+# 2908| Type = [VoidType] void
+# 2908| ValueCategory = prvalue
+# 2909| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2909| Type = [VoidType] void
+# 2909| ValueCategory = prvalue
+# 2909| getQualifier(): [VariableAccess] x963
+# 2909| Type = [Struct] String
+# 2909| ValueCategory = lvalue
+# 2909| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2909| Conversion = [BoolConversion] conversion to bool
+# 2909| Type = [BoolType] bool
+# 2909| Value = [CStyleCast] 0
+# 2909| ValueCategory = prvalue
+# 2910| getStmt(964): [DoStmt] do (...) ...
+# 2912| getCondition(): [Literal] 0
+# 2912| Type = [IntType] int
+# 2912| Value = [Literal] 0
+# 2912| ValueCategory = prvalue
+# 2910| getStmt(): [BlockStmt] { ... }
+# 2911| getStmt(0): [DeclStmt] declaration
+# 2911| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x964
+# 2911| Type = [Struct] String
+# 2911| getVariable().getInitializer(): [Initializer] initializer for x964
+# 2911| getExpr(): [ConstructorCall] call to String
+# 2911| Type = [VoidType] void
+# 2911| ValueCategory = prvalue
+# 2912| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2912| Type = [VoidType] void
+# 2912| ValueCategory = prvalue
+# 2912| getQualifier(): [VariableAccess] x964
+# 2912| Type = [Struct] String
+# 2912| ValueCategory = lvalue
+# 2912| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2912| Conversion = [BoolConversion] conversion to bool
+# 2912| Type = [BoolType] bool
+# 2912| Value = [CStyleCast] 0
+# 2912| ValueCategory = prvalue
+# 2913| getStmt(965): [DoStmt] do (...) ...
+# 2915| getCondition(): [Literal] 0
+# 2915| Type = [IntType] int
+# 2915| Value = [Literal] 0
+# 2915| ValueCategory = prvalue
+# 2913| getStmt(): [BlockStmt] { ... }
+# 2914| getStmt(0): [DeclStmt] declaration
+# 2914| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x965
+# 2914| Type = [Struct] String
+# 2914| getVariable().getInitializer(): [Initializer] initializer for x965
+# 2914| getExpr(): [ConstructorCall] call to String
+# 2914| Type = [VoidType] void
+# 2914| ValueCategory = prvalue
+# 2915| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2915| Type = [VoidType] void
+# 2915| ValueCategory = prvalue
+# 2915| getQualifier(): [VariableAccess] x965
+# 2915| Type = [Struct] String
+# 2915| ValueCategory = lvalue
+# 2915| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2915| Conversion = [BoolConversion] conversion to bool
+# 2915| Type = [BoolType] bool
+# 2915| Value = [CStyleCast] 0
+# 2915| ValueCategory = prvalue
+# 2916| getStmt(966): [DoStmt] do (...) ...
+# 2918| getCondition(): [Literal] 0
+# 2918| Type = [IntType] int
+# 2918| Value = [Literal] 0
+# 2918| ValueCategory = prvalue
+# 2916| getStmt(): [BlockStmt] { ... }
+# 2917| getStmt(0): [DeclStmt] declaration
+# 2917| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x966
+# 2917| Type = [Struct] String
+# 2917| getVariable().getInitializer(): [Initializer] initializer for x966
+# 2917| getExpr(): [ConstructorCall] call to String
+# 2917| Type = [VoidType] void
+# 2917| ValueCategory = prvalue
+# 2918| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2918| Type = [VoidType] void
+# 2918| ValueCategory = prvalue
+# 2918| getQualifier(): [VariableAccess] x966
+# 2918| Type = [Struct] String
+# 2918| ValueCategory = lvalue
+# 2918| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2918| Conversion = [BoolConversion] conversion to bool
+# 2918| Type = [BoolType] bool
+# 2918| Value = [CStyleCast] 0
+# 2918| ValueCategory = prvalue
+# 2919| getStmt(967): [DoStmt] do (...) ...
+# 2921| getCondition(): [Literal] 0
+# 2921| Type = [IntType] int
+# 2921| Value = [Literal] 0
+# 2921| ValueCategory = prvalue
+# 2919| getStmt(): [BlockStmt] { ... }
+# 2920| getStmt(0): [DeclStmt] declaration
+# 2920| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x967
+# 2920| Type = [Struct] String
+# 2920| getVariable().getInitializer(): [Initializer] initializer for x967
+# 2920| getExpr(): [ConstructorCall] call to String
+# 2920| Type = [VoidType] void
+# 2920| ValueCategory = prvalue
+# 2921| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2921| Type = [VoidType] void
+# 2921| ValueCategory = prvalue
+# 2921| getQualifier(): [VariableAccess] x967
+# 2921| Type = [Struct] String
+# 2921| ValueCategory = lvalue
+# 2921| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2921| Conversion = [BoolConversion] conversion to bool
+# 2921| Type = [BoolType] bool
+# 2921| Value = [CStyleCast] 0
+# 2921| ValueCategory = prvalue
+# 2922| getStmt(968): [DoStmt] do (...) ...
+# 2924| getCondition(): [Literal] 0
+# 2924| Type = [IntType] int
+# 2924| Value = [Literal] 0
+# 2924| ValueCategory = prvalue
+# 2922| getStmt(): [BlockStmt] { ... }
+# 2923| getStmt(0): [DeclStmt] declaration
+# 2923| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x968
+# 2923| Type = [Struct] String
+# 2923| getVariable().getInitializer(): [Initializer] initializer for x968
+# 2923| getExpr(): [ConstructorCall] call to String
+# 2923| Type = [VoidType] void
+# 2923| ValueCategory = prvalue
+# 2924| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2924| Type = [VoidType] void
+# 2924| ValueCategory = prvalue
+# 2924| getQualifier(): [VariableAccess] x968
+# 2924| Type = [Struct] String
+# 2924| ValueCategory = lvalue
+# 2924| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2924| Conversion = [BoolConversion] conversion to bool
+# 2924| Type = [BoolType] bool
+# 2924| Value = [CStyleCast] 0
+# 2924| ValueCategory = prvalue
+# 2925| getStmt(969): [DoStmt] do (...) ...
+# 2927| getCondition(): [Literal] 0
+# 2927| Type = [IntType] int
+# 2927| Value = [Literal] 0
+# 2927| ValueCategory = prvalue
+# 2925| getStmt(): [BlockStmt] { ... }
+# 2926| getStmt(0): [DeclStmt] declaration
+# 2926| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x969
+# 2926| Type = [Struct] String
+# 2926| getVariable().getInitializer(): [Initializer] initializer for x969
+# 2926| getExpr(): [ConstructorCall] call to String
+# 2926| Type = [VoidType] void
+# 2926| ValueCategory = prvalue
+# 2927| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2927| Type = [VoidType] void
+# 2927| ValueCategory = prvalue
+# 2927| getQualifier(): [VariableAccess] x969
+# 2927| Type = [Struct] String
+# 2927| ValueCategory = lvalue
+# 2927| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2927| Conversion = [BoolConversion] conversion to bool
+# 2927| Type = [BoolType] bool
+# 2927| Value = [CStyleCast] 0
+# 2927| ValueCategory = prvalue
+# 2928| getStmt(970): [DoStmt] do (...) ...
+# 2930| getCondition(): [Literal] 0
+# 2930| Type = [IntType] int
+# 2930| Value = [Literal] 0
+# 2930| ValueCategory = prvalue
+# 2928| getStmt(): [BlockStmt] { ... }
+# 2929| getStmt(0): [DeclStmt] declaration
+# 2929| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x970
+# 2929| Type = [Struct] String
+# 2929| getVariable().getInitializer(): [Initializer] initializer for x970
+# 2929| getExpr(): [ConstructorCall] call to String
+# 2929| Type = [VoidType] void
+# 2929| ValueCategory = prvalue
+# 2930| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2930| Type = [VoidType] void
+# 2930| ValueCategory = prvalue
+# 2930| getQualifier(): [VariableAccess] x970
+# 2930| Type = [Struct] String
+# 2930| ValueCategory = lvalue
+# 2930| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2930| Conversion = [BoolConversion] conversion to bool
+# 2930| Type = [BoolType] bool
+# 2930| Value = [CStyleCast] 0
+# 2930| ValueCategory = prvalue
+# 2931| getStmt(971): [DoStmt] do (...) ...
+# 2933| getCondition(): [Literal] 0
+# 2933| Type = [IntType] int
+# 2933| Value = [Literal] 0
+# 2933| ValueCategory = prvalue
+# 2931| getStmt(): [BlockStmt] { ... }
+# 2932| getStmt(0): [DeclStmt] declaration
+# 2932| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x971
+# 2932| Type = [Struct] String
+# 2932| getVariable().getInitializer(): [Initializer] initializer for x971
+# 2932| getExpr(): [ConstructorCall] call to String
+# 2932| Type = [VoidType] void
+# 2932| ValueCategory = prvalue
+# 2933| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2933| Type = [VoidType] void
+# 2933| ValueCategory = prvalue
+# 2933| getQualifier(): [VariableAccess] x971
+# 2933| Type = [Struct] String
+# 2933| ValueCategory = lvalue
+# 2933| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2933| Conversion = [BoolConversion] conversion to bool
+# 2933| Type = [BoolType] bool
+# 2933| Value = [CStyleCast] 0
+# 2933| ValueCategory = prvalue
+# 2934| getStmt(972): [DoStmt] do (...) ...
+# 2936| getCondition(): [Literal] 0
+# 2936| Type = [IntType] int
+# 2936| Value = [Literal] 0
+# 2936| ValueCategory = prvalue
+# 2934| getStmt(): [BlockStmt] { ... }
+# 2935| getStmt(0): [DeclStmt] declaration
+# 2935| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x972
+# 2935| Type = [Struct] String
+# 2935| getVariable().getInitializer(): [Initializer] initializer for x972
+# 2935| getExpr(): [ConstructorCall] call to String
+# 2935| Type = [VoidType] void
+# 2935| ValueCategory = prvalue
+# 2936| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2936| Type = [VoidType] void
+# 2936| ValueCategory = prvalue
+# 2936| getQualifier(): [VariableAccess] x972
+# 2936| Type = [Struct] String
+# 2936| ValueCategory = lvalue
+# 2936| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2936| Conversion = [BoolConversion] conversion to bool
+# 2936| Type = [BoolType] bool
+# 2936| Value = [CStyleCast] 0
+# 2936| ValueCategory = prvalue
+# 2937| getStmt(973): [DoStmt] do (...) ...
+# 2939| getCondition(): [Literal] 0
+# 2939| Type = [IntType] int
+# 2939| Value = [Literal] 0
+# 2939| ValueCategory = prvalue
+# 2937| getStmt(): [BlockStmt] { ... }
+# 2938| getStmt(0): [DeclStmt] declaration
+# 2938| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x973
+# 2938| Type = [Struct] String
+# 2938| getVariable().getInitializer(): [Initializer] initializer for x973
+# 2938| getExpr(): [ConstructorCall] call to String
+# 2938| Type = [VoidType] void
+# 2938| ValueCategory = prvalue
+# 2939| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2939| Type = [VoidType] void
+# 2939| ValueCategory = prvalue
+# 2939| getQualifier(): [VariableAccess] x973
+# 2939| Type = [Struct] String
+# 2939| ValueCategory = lvalue
+# 2939| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2939| Conversion = [BoolConversion] conversion to bool
+# 2939| Type = [BoolType] bool
+# 2939| Value = [CStyleCast] 0
+# 2939| ValueCategory = prvalue
+# 2940| getStmt(974): [DoStmt] do (...) ...
+# 2942| getCondition(): [Literal] 0
+# 2942| Type = [IntType] int
+# 2942| Value = [Literal] 0
+# 2942| ValueCategory = prvalue
+# 2940| getStmt(): [BlockStmt] { ... }
+# 2941| getStmt(0): [DeclStmt] declaration
+# 2941| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x974
+# 2941| Type = [Struct] String
+# 2941| getVariable().getInitializer(): [Initializer] initializer for x974
+# 2941| getExpr(): [ConstructorCall] call to String
+# 2941| Type = [VoidType] void
+# 2941| ValueCategory = prvalue
+# 2942| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2942| Type = [VoidType] void
+# 2942| ValueCategory = prvalue
+# 2942| getQualifier(): [VariableAccess] x974
+# 2942| Type = [Struct] String
+# 2942| ValueCategory = lvalue
+# 2942| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2942| Conversion = [BoolConversion] conversion to bool
+# 2942| Type = [BoolType] bool
+# 2942| Value = [CStyleCast] 0
+# 2942| ValueCategory = prvalue
+# 2943| getStmt(975): [DoStmt] do (...) ...
+# 2945| getCondition(): [Literal] 0
+# 2945| Type = [IntType] int
+# 2945| Value = [Literal] 0
+# 2945| ValueCategory = prvalue
+# 2943| getStmt(): [BlockStmt] { ... }
+# 2944| getStmt(0): [DeclStmt] declaration
+# 2944| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x975
+# 2944| Type = [Struct] String
+# 2944| getVariable().getInitializer(): [Initializer] initializer for x975
+# 2944| getExpr(): [ConstructorCall] call to String
+# 2944| Type = [VoidType] void
+# 2944| ValueCategory = prvalue
+# 2945| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2945| Type = [VoidType] void
+# 2945| ValueCategory = prvalue
+# 2945| getQualifier(): [VariableAccess] x975
+# 2945| Type = [Struct] String
+# 2945| ValueCategory = lvalue
+# 2945| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2945| Conversion = [BoolConversion] conversion to bool
+# 2945| Type = [BoolType] bool
+# 2945| Value = [CStyleCast] 0
+# 2945| ValueCategory = prvalue
+# 2946| getStmt(976): [DoStmt] do (...) ...
+# 2948| getCondition(): [Literal] 0
+# 2948| Type = [IntType] int
+# 2948| Value = [Literal] 0
+# 2948| ValueCategory = prvalue
+# 2946| getStmt(): [BlockStmt] { ... }
+# 2947| getStmt(0): [DeclStmt] declaration
+# 2947| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x976
+# 2947| Type = [Struct] String
+# 2947| getVariable().getInitializer(): [Initializer] initializer for x976
+# 2947| getExpr(): [ConstructorCall] call to String
+# 2947| Type = [VoidType] void
+# 2947| ValueCategory = prvalue
+# 2948| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2948| Type = [VoidType] void
+# 2948| ValueCategory = prvalue
+# 2948| getQualifier(): [VariableAccess] x976
+# 2948| Type = [Struct] String
+# 2948| ValueCategory = lvalue
+# 2948| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2948| Conversion = [BoolConversion] conversion to bool
+# 2948| Type = [BoolType] bool
+# 2948| Value = [CStyleCast] 0
+# 2948| ValueCategory = prvalue
+# 2949| getStmt(977): [DoStmt] do (...) ...
+# 2951| getCondition(): [Literal] 0
+# 2951| Type = [IntType] int
+# 2951| Value = [Literal] 0
+# 2951| ValueCategory = prvalue
+# 2949| getStmt(): [BlockStmt] { ... }
+# 2950| getStmt(0): [DeclStmt] declaration
+# 2950| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x977
+# 2950| Type = [Struct] String
+# 2950| getVariable().getInitializer(): [Initializer] initializer for x977
+# 2950| getExpr(): [ConstructorCall] call to String
+# 2950| Type = [VoidType] void
+# 2950| ValueCategory = prvalue
+# 2951| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2951| Type = [VoidType] void
+# 2951| ValueCategory = prvalue
+# 2951| getQualifier(): [VariableAccess] x977
+# 2951| Type = [Struct] String
+# 2951| ValueCategory = lvalue
+# 2951| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2951| Conversion = [BoolConversion] conversion to bool
+# 2951| Type = [BoolType] bool
+# 2951| Value = [CStyleCast] 0
+# 2951| ValueCategory = prvalue
+# 2952| getStmt(978): [DoStmt] do (...) ...
+# 2954| getCondition(): [Literal] 0
+# 2954| Type = [IntType] int
+# 2954| Value = [Literal] 0
+# 2954| ValueCategory = prvalue
+# 2952| getStmt(): [BlockStmt] { ... }
+# 2953| getStmt(0): [DeclStmt] declaration
+# 2953| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x978
+# 2953| Type = [Struct] String
+# 2953| getVariable().getInitializer(): [Initializer] initializer for x978
+# 2953| getExpr(): [ConstructorCall] call to String
+# 2953| Type = [VoidType] void
+# 2953| ValueCategory = prvalue
+# 2954| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2954| Type = [VoidType] void
+# 2954| ValueCategory = prvalue
+# 2954| getQualifier(): [VariableAccess] x978
+# 2954| Type = [Struct] String
+# 2954| ValueCategory = lvalue
+# 2954| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2954| Conversion = [BoolConversion] conversion to bool
+# 2954| Type = [BoolType] bool
+# 2954| Value = [CStyleCast] 0
+# 2954| ValueCategory = prvalue
+# 2955| getStmt(979): [DoStmt] do (...) ...
+# 2957| getCondition(): [Literal] 0
+# 2957| Type = [IntType] int
+# 2957| Value = [Literal] 0
+# 2957| ValueCategory = prvalue
+# 2955| getStmt(): [BlockStmt] { ... }
+# 2956| getStmt(0): [DeclStmt] declaration
+# 2956| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x979
+# 2956| Type = [Struct] String
+# 2956| getVariable().getInitializer(): [Initializer] initializer for x979
+# 2956| getExpr(): [ConstructorCall] call to String
+# 2956| Type = [VoidType] void
+# 2956| ValueCategory = prvalue
+# 2957| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2957| Type = [VoidType] void
+# 2957| ValueCategory = prvalue
+# 2957| getQualifier(): [VariableAccess] x979
+# 2957| Type = [Struct] String
+# 2957| ValueCategory = lvalue
+# 2957| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2957| Conversion = [BoolConversion] conversion to bool
+# 2957| Type = [BoolType] bool
+# 2957| Value = [CStyleCast] 0
+# 2957| ValueCategory = prvalue
+# 2958| getStmt(980): [DoStmt] do (...) ...
+# 2960| getCondition(): [Literal] 0
+# 2960| Type = [IntType] int
+# 2960| Value = [Literal] 0
+# 2960| ValueCategory = prvalue
+# 2958| getStmt(): [BlockStmt] { ... }
+# 2959| getStmt(0): [DeclStmt] declaration
+# 2959| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x980
+# 2959| Type = [Struct] String
+# 2959| getVariable().getInitializer(): [Initializer] initializer for x980
+# 2959| getExpr(): [ConstructorCall] call to String
+# 2959| Type = [VoidType] void
+# 2959| ValueCategory = prvalue
+# 2960| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2960| Type = [VoidType] void
+# 2960| ValueCategory = prvalue
+# 2960| getQualifier(): [VariableAccess] x980
+# 2960| Type = [Struct] String
+# 2960| ValueCategory = lvalue
+# 2960| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2960| Conversion = [BoolConversion] conversion to bool
+# 2960| Type = [BoolType] bool
+# 2960| Value = [CStyleCast] 0
+# 2960| ValueCategory = prvalue
+# 2961| getStmt(981): [DoStmt] do (...) ...
+# 2963| getCondition(): [Literal] 0
+# 2963| Type = [IntType] int
+# 2963| Value = [Literal] 0
+# 2963| ValueCategory = prvalue
+# 2961| getStmt(): [BlockStmt] { ... }
+# 2962| getStmt(0): [DeclStmt] declaration
+# 2962| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x981
+# 2962| Type = [Struct] String
+# 2962| getVariable().getInitializer(): [Initializer] initializer for x981
+# 2962| getExpr(): [ConstructorCall] call to String
+# 2962| Type = [VoidType] void
+# 2962| ValueCategory = prvalue
+# 2963| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2963| Type = [VoidType] void
+# 2963| ValueCategory = prvalue
+# 2963| getQualifier(): [VariableAccess] x981
+# 2963| Type = [Struct] String
+# 2963| ValueCategory = lvalue
+# 2963| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2963| Conversion = [BoolConversion] conversion to bool
+# 2963| Type = [BoolType] bool
+# 2963| Value = [CStyleCast] 0
+# 2963| ValueCategory = prvalue
+# 2964| getStmt(982): [DoStmt] do (...) ...
+# 2966| getCondition(): [Literal] 0
+# 2966| Type = [IntType] int
+# 2966| Value = [Literal] 0
+# 2966| ValueCategory = prvalue
+# 2964| getStmt(): [BlockStmt] { ... }
+# 2965| getStmt(0): [DeclStmt] declaration
+# 2965| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x982
+# 2965| Type = [Struct] String
+# 2965| getVariable().getInitializer(): [Initializer] initializer for x982
+# 2965| getExpr(): [ConstructorCall] call to String
+# 2965| Type = [VoidType] void
+# 2965| ValueCategory = prvalue
+# 2966| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2966| Type = [VoidType] void
+# 2966| ValueCategory = prvalue
+# 2966| getQualifier(): [VariableAccess] x982
+# 2966| Type = [Struct] String
+# 2966| ValueCategory = lvalue
+# 2966| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2966| Conversion = [BoolConversion] conversion to bool
+# 2966| Type = [BoolType] bool
+# 2966| Value = [CStyleCast] 0
+# 2966| ValueCategory = prvalue
+# 2967| getStmt(983): [DoStmt] do (...) ...
+# 2969| getCondition(): [Literal] 0
+# 2969| Type = [IntType] int
+# 2969| Value = [Literal] 0
+# 2969| ValueCategory = prvalue
+# 2967| getStmt(): [BlockStmt] { ... }
+# 2968| getStmt(0): [DeclStmt] declaration
+# 2968| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x983
+# 2968| Type = [Struct] String
+# 2968| getVariable().getInitializer(): [Initializer] initializer for x983
+# 2968| getExpr(): [ConstructorCall] call to String
+# 2968| Type = [VoidType] void
+# 2968| ValueCategory = prvalue
+# 2969| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2969| Type = [VoidType] void
+# 2969| ValueCategory = prvalue
+# 2969| getQualifier(): [VariableAccess] x983
+# 2969| Type = [Struct] String
+# 2969| ValueCategory = lvalue
+# 2969| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2969| Conversion = [BoolConversion] conversion to bool
+# 2969| Type = [BoolType] bool
+# 2969| Value = [CStyleCast] 0
+# 2969| ValueCategory = prvalue
+# 2970| getStmt(984): [DoStmt] do (...) ...
+# 2972| getCondition(): [Literal] 0
+# 2972| Type = [IntType] int
+# 2972| Value = [Literal] 0
+# 2972| ValueCategory = prvalue
+# 2970| getStmt(): [BlockStmt] { ... }
+# 2971| getStmt(0): [DeclStmt] declaration
+# 2971| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x984
+# 2971| Type = [Struct] String
+# 2971| getVariable().getInitializer(): [Initializer] initializer for x984
+# 2971| getExpr(): [ConstructorCall] call to String
+# 2971| Type = [VoidType] void
+# 2971| ValueCategory = prvalue
+# 2972| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2972| Type = [VoidType] void
+# 2972| ValueCategory = prvalue
+# 2972| getQualifier(): [VariableAccess] x984
+# 2972| Type = [Struct] String
+# 2972| ValueCategory = lvalue
+# 2972| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2972| Conversion = [BoolConversion] conversion to bool
+# 2972| Type = [BoolType] bool
+# 2972| Value = [CStyleCast] 0
+# 2972| ValueCategory = prvalue
+# 2973| getStmt(985): [DoStmt] do (...) ...
+# 2975| getCondition(): [Literal] 0
+# 2975| Type = [IntType] int
+# 2975| Value = [Literal] 0
+# 2975| ValueCategory = prvalue
+# 2973| getStmt(): [BlockStmt] { ... }
+# 2974| getStmt(0): [DeclStmt] declaration
+# 2974| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x985
+# 2974| Type = [Struct] String
+# 2974| getVariable().getInitializer(): [Initializer] initializer for x985
+# 2974| getExpr(): [ConstructorCall] call to String
+# 2974| Type = [VoidType] void
+# 2974| ValueCategory = prvalue
+# 2975| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2975| Type = [VoidType] void
+# 2975| ValueCategory = prvalue
+# 2975| getQualifier(): [VariableAccess] x985
+# 2975| Type = [Struct] String
+# 2975| ValueCategory = lvalue
+# 2975| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2975| Conversion = [BoolConversion] conversion to bool
+# 2975| Type = [BoolType] bool
+# 2975| Value = [CStyleCast] 0
+# 2975| ValueCategory = prvalue
+# 2976| getStmt(986): [DoStmt] do (...) ...
+# 2978| getCondition(): [Literal] 0
+# 2978| Type = [IntType] int
+# 2978| Value = [Literal] 0
+# 2978| ValueCategory = prvalue
+# 2976| getStmt(): [BlockStmt] { ... }
+# 2977| getStmt(0): [DeclStmt] declaration
+# 2977| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x986
+# 2977| Type = [Struct] String
+# 2977| getVariable().getInitializer(): [Initializer] initializer for x986
+# 2977| getExpr(): [ConstructorCall] call to String
+# 2977| Type = [VoidType] void
+# 2977| ValueCategory = prvalue
+# 2978| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2978| Type = [VoidType] void
+# 2978| ValueCategory = prvalue
+# 2978| getQualifier(): [VariableAccess] x986
+# 2978| Type = [Struct] String
+# 2978| ValueCategory = lvalue
+# 2978| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2978| Conversion = [BoolConversion] conversion to bool
+# 2978| Type = [BoolType] bool
+# 2978| Value = [CStyleCast] 0
+# 2978| ValueCategory = prvalue
+# 2979| getStmt(987): [DoStmt] do (...) ...
+# 2981| getCondition(): [Literal] 0
+# 2981| Type = [IntType] int
+# 2981| Value = [Literal] 0
+# 2981| ValueCategory = prvalue
+# 2979| getStmt(): [BlockStmt] { ... }
+# 2980| getStmt(0): [DeclStmt] declaration
+# 2980| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x987
+# 2980| Type = [Struct] String
+# 2980| getVariable().getInitializer(): [Initializer] initializer for x987
+# 2980| getExpr(): [ConstructorCall] call to String
+# 2980| Type = [VoidType] void
+# 2980| ValueCategory = prvalue
+# 2981| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2981| Type = [VoidType] void
+# 2981| ValueCategory = prvalue
+# 2981| getQualifier(): [VariableAccess] x987
+# 2981| Type = [Struct] String
+# 2981| ValueCategory = lvalue
+# 2981| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2981| Conversion = [BoolConversion] conversion to bool
+# 2981| Type = [BoolType] bool
+# 2981| Value = [CStyleCast] 0
+# 2981| ValueCategory = prvalue
+# 2982| getStmt(988): [DoStmt] do (...) ...
+# 2984| getCondition(): [Literal] 0
+# 2984| Type = [IntType] int
+# 2984| Value = [Literal] 0
+# 2984| ValueCategory = prvalue
+# 2982| getStmt(): [BlockStmt] { ... }
+# 2983| getStmt(0): [DeclStmt] declaration
+# 2983| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x988
+# 2983| Type = [Struct] String
+# 2983| getVariable().getInitializer(): [Initializer] initializer for x988
+# 2983| getExpr(): [ConstructorCall] call to String
+# 2983| Type = [VoidType] void
+# 2983| ValueCategory = prvalue
+# 2984| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2984| Type = [VoidType] void
+# 2984| ValueCategory = prvalue
+# 2984| getQualifier(): [VariableAccess] x988
+# 2984| Type = [Struct] String
+# 2984| ValueCategory = lvalue
+# 2984| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2984| Conversion = [BoolConversion] conversion to bool
+# 2984| Type = [BoolType] bool
+# 2984| Value = [CStyleCast] 0
+# 2984| ValueCategory = prvalue
+# 2985| getStmt(989): [DoStmt] do (...) ...
+# 2987| getCondition(): [Literal] 0
+# 2987| Type = [IntType] int
+# 2987| Value = [Literal] 0
+# 2987| ValueCategory = prvalue
+# 2985| getStmt(): [BlockStmt] { ... }
+# 2986| getStmt(0): [DeclStmt] declaration
+# 2986| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x989
+# 2986| Type = [Struct] String
+# 2986| getVariable().getInitializer(): [Initializer] initializer for x989
+# 2986| getExpr(): [ConstructorCall] call to String
+# 2986| Type = [VoidType] void
+# 2986| ValueCategory = prvalue
+# 2987| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2987| Type = [VoidType] void
+# 2987| ValueCategory = prvalue
+# 2987| getQualifier(): [VariableAccess] x989
+# 2987| Type = [Struct] String
+# 2987| ValueCategory = lvalue
+# 2987| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2987| Conversion = [BoolConversion] conversion to bool
+# 2987| Type = [BoolType] bool
+# 2987| Value = [CStyleCast] 0
+# 2987| ValueCategory = prvalue
+# 2988| getStmt(990): [DoStmt] do (...) ...
+# 2990| getCondition(): [Literal] 0
+# 2990| Type = [IntType] int
+# 2990| Value = [Literal] 0
+# 2990| ValueCategory = prvalue
+# 2988| getStmt(): [BlockStmt] { ... }
+# 2989| getStmt(0): [DeclStmt] declaration
+# 2989| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x990
+# 2989| Type = [Struct] String
+# 2989| getVariable().getInitializer(): [Initializer] initializer for x990
+# 2989| getExpr(): [ConstructorCall] call to String
+# 2989| Type = [VoidType] void
+# 2989| ValueCategory = prvalue
+# 2990| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2990| Type = [VoidType] void
+# 2990| ValueCategory = prvalue
+# 2990| getQualifier(): [VariableAccess] x990
+# 2990| Type = [Struct] String
+# 2990| ValueCategory = lvalue
+# 2990| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2990| Conversion = [BoolConversion] conversion to bool
+# 2990| Type = [BoolType] bool
+# 2990| Value = [CStyleCast] 0
+# 2990| ValueCategory = prvalue
+# 2991| getStmt(991): [DoStmt] do (...) ...
+# 2993| getCondition(): [Literal] 0
+# 2993| Type = [IntType] int
+# 2993| Value = [Literal] 0
+# 2993| ValueCategory = prvalue
+# 2991| getStmt(): [BlockStmt] { ... }
+# 2992| getStmt(0): [DeclStmt] declaration
+# 2992| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x991
+# 2992| Type = [Struct] String
+# 2992| getVariable().getInitializer(): [Initializer] initializer for x991
+# 2992| getExpr(): [ConstructorCall] call to String
+# 2992| Type = [VoidType] void
+# 2992| ValueCategory = prvalue
+# 2993| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2993| Type = [VoidType] void
+# 2993| ValueCategory = prvalue
+# 2993| getQualifier(): [VariableAccess] x991
+# 2993| Type = [Struct] String
+# 2993| ValueCategory = lvalue
+# 2993| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2993| Conversion = [BoolConversion] conversion to bool
+# 2993| Type = [BoolType] bool
+# 2993| Value = [CStyleCast] 0
+# 2993| ValueCategory = prvalue
+# 2994| getStmt(992): [DoStmt] do (...) ...
+# 2996| getCondition(): [Literal] 0
+# 2996| Type = [IntType] int
+# 2996| Value = [Literal] 0
+# 2996| ValueCategory = prvalue
+# 2994| getStmt(): [BlockStmt] { ... }
+# 2995| getStmt(0): [DeclStmt] declaration
+# 2995| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x992
+# 2995| Type = [Struct] String
+# 2995| getVariable().getInitializer(): [Initializer] initializer for x992
+# 2995| getExpr(): [ConstructorCall] call to String
+# 2995| Type = [VoidType] void
+# 2995| ValueCategory = prvalue
+# 2996| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2996| Type = [VoidType] void
+# 2996| ValueCategory = prvalue
+# 2996| getQualifier(): [VariableAccess] x992
+# 2996| Type = [Struct] String
+# 2996| ValueCategory = lvalue
+# 2996| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2996| Conversion = [BoolConversion] conversion to bool
+# 2996| Type = [BoolType] bool
+# 2996| Value = [CStyleCast] 0
+# 2996| ValueCategory = prvalue
+# 2997| getStmt(993): [DoStmt] do (...) ...
+# 2999| getCondition(): [Literal] 0
+# 2999| Type = [IntType] int
+# 2999| Value = [Literal] 0
+# 2999| ValueCategory = prvalue
+# 2997| getStmt(): [BlockStmt] { ... }
+# 2998| getStmt(0): [DeclStmt] declaration
+# 2998| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x993
+# 2998| Type = [Struct] String
+# 2998| getVariable().getInitializer(): [Initializer] initializer for x993
+# 2998| getExpr(): [ConstructorCall] call to String
+# 2998| Type = [VoidType] void
+# 2998| ValueCategory = prvalue
+# 2999| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 2999| Type = [VoidType] void
+# 2999| ValueCategory = prvalue
+# 2999| getQualifier(): [VariableAccess] x993
+# 2999| Type = [Struct] String
+# 2999| ValueCategory = lvalue
+# 2999| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 2999| Conversion = [BoolConversion] conversion to bool
+# 2999| Type = [BoolType] bool
+# 2999| Value = [CStyleCast] 0
+# 2999| ValueCategory = prvalue
+# 3000| getStmt(994): [DoStmt] do (...) ...
+# 3002| getCondition(): [Literal] 0
+# 3002| Type = [IntType] int
+# 3002| Value = [Literal] 0
+# 3002| ValueCategory = prvalue
+# 3000| getStmt(): [BlockStmt] { ... }
+# 3001| getStmt(0): [DeclStmt] declaration
+# 3001| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x994
+# 3001| Type = [Struct] String
+# 3001| getVariable().getInitializer(): [Initializer] initializer for x994
+# 3001| getExpr(): [ConstructorCall] call to String
+# 3001| Type = [VoidType] void
+# 3001| ValueCategory = prvalue
+# 3002| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3002| Type = [VoidType] void
+# 3002| ValueCategory = prvalue
+# 3002| getQualifier(): [VariableAccess] x994
+# 3002| Type = [Struct] String
+# 3002| ValueCategory = lvalue
+# 3002| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3002| Conversion = [BoolConversion] conversion to bool
+# 3002| Type = [BoolType] bool
+# 3002| Value = [CStyleCast] 0
+# 3002| ValueCategory = prvalue
+# 3003| getStmt(995): [DoStmt] do (...) ...
+# 3005| getCondition(): [Literal] 0
+# 3005| Type = [IntType] int
+# 3005| Value = [Literal] 0
+# 3005| ValueCategory = prvalue
+# 3003| getStmt(): [BlockStmt] { ... }
+# 3004| getStmt(0): [DeclStmt] declaration
+# 3004| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x995
+# 3004| Type = [Struct] String
+# 3004| getVariable().getInitializer(): [Initializer] initializer for x995
+# 3004| getExpr(): [ConstructorCall] call to String
+# 3004| Type = [VoidType] void
+# 3004| ValueCategory = prvalue
+# 3005| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3005| Type = [VoidType] void
+# 3005| ValueCategory = prvalue
+# 3005| getQualifier(): [VariableAccess] x995
+# 3005| Type = [Struct] String
+# 3005| ValueCategory = lvalue
+# 3005| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3005| Conversion = [BoolConversion] conversion to bool
+# 3005| Type = [BoolType] bool
+# 3005| Value = [CStyleCast] 0
+# 3005| ValueCategory = prvalue
+# 3006| getStmt(996): [DoStmt] do (...) ...
+# 3008| getCondition(): [Literal] 0
+# 3008| Type = [IntType] int
+# 3008| Value = [Literal] 0
+# 3008| ValueCategory = prvalue
+# 3006| getStmt(): [BlockStmt] { ... }
+# 3007| getStmt(0): [DeclStmt] declaration
+# 3007| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x996
+# 3007| Type = [Struct] String
+# 3007| getVariable().getInitializer(): [Initializer] initializer for x996
+# 3007| getExpr(): [ConstructorCall] call to String
+# 3007| Type = [VoidType] void
+# 3007| ValueCategory = prvalue
+# 3008| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3008| Type = [VoidType] void
+# 3008| ValueCategory = prvalue
+# 3008| getQualifier(): [VariableAccess] x996
+# 3008| Type = [Struct] String
+# 3008| ValueCategory = lvalue
+# 3008| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3008| Conversion = [BoolConversion] conversion to bool
+# 3008| Type = [BoolType] bool
+# 3008| Value = [CStyleCast] 0
+# 3008| ValueCategory = prvalue
+# 3009| getStmt(997): [DoStmt] do (...) ...
+# 3011| getCondition(): [Literal] 0
+# 3011| Type = [IntType] int
+# 3011| Value = [Literal] 0
+# 3011| ValueCategory = prvalue
+# 3009| getStmt(): [BlockStmt] { ... }
+# 3010| getStmt(0): [DeclStmt] declaration
+# 3010| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x997
+# 3010| Type = [Struct] String
+# 3010| getVariable().getInitializer(): [Initializer] initializer for x997
+# 3010| getExpr(): [ConstructorCall] call to String
+# 3010| Type = [VoidType] void
+# 3010| ValueCategory = prvalue
+# 3011| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3011| Type = [VoidType] void
+# 3011| ValueCategory = prvalue
+# 3011| getQualifier(): [VariableAccess] x997
+# 3011| Type = [Struct] String
+# 3011| ValueCategory = lvalue
+# 3011| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3011| Conversion = [BoolConversion] conversion to bool
+# 3011| Type = [BoolType] bool
+# 3011| Value = [CStyleCast] 0
+# 3011| ValueCategory = prvalue
+# 3012| getStmt(998): [DoStmt] do (...) ...
+# 3014| getCondition(): [Literal] 0
+# 3014| Type = [IntType] int
+# 3014| Value = [Literal] 0
+# 3014| ValueCategory = prvalue
+# 3012| getStmt(): [BlockStmt] { ... }
+# 3013| getStmt(0): [DeclStmt] declaration
+# 3013| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x998
+# 3013| Type = [Struct] String
+# 3013| getVariable().getInitializer(): [Initializer] initializer for x998
+# 3013| getExpr(): [ConstructorCall] call to String
+# 3013| Type = [VoidType] void
+# 3013| ValueCategory = prvalue
+# 3014| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3014| Type = [VoidType] void
+# 3014| ValueCategory = prvalue
+# 3014| getQualifier(): [VariableAccess] x998
+# 3014| Type = [Struct] String
+# 3014| ValueCategory = lvalue
+# 3014| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3014| Conversion = [BoolConversion] conversion to bool
+# 3014| Type = [BoolType] bool
+# 3014| Value = [CStyleCast] 0
+# 3014| ValueCategory = prvalue
+# 3015| getStmt(999): [DoStmt] do (...) ...
+# 3017| getCondition(): [Literal] 0
+# 3017| Type = [IntType] int
+# 3017| Value = [Literal] 0
+# 3017| ValueCategory = prvalue
+# 3015| getStmt(): [BlockStmt] { ... }
+# 3016| getStmt(0): [DeclStmt] declaration
+# 3016| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x999
+# 3016| Type = [Struct] String
+# 3016| getVariable().getInitializer(): [Initializer] initializer for x999
+# 3016| getExpr(): [ConstructorCall] call to String
+# 3016| Type = [VoidType] void
+# 3016| ValueCategory = prvalue
+# 3017| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3017| Type = [VoidType] void
+# 3017| ValueCategory = prvalue
+# 3017| getQualifier(): [VariableAccess] x999
+# 3017| Type = [Struct] String
+# 3017| ValueCategory = lvalue
+# 3017| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3017| Conversion = [BoolConversion] conversion to bool
+# 3017| Type = [BoolType] bool
+# 3017| Value = [CStyleCast] 0
+# 3017| ValueCategory = prvalue
+# 3018| getStmt(1000): [DoStmt] do (...) ...
+# 3020| getCondition(): [Literal] 0
+# 3020| Type = [IntType] int
+# 3020| Value = [Literal] 0
+# 3020| ValueCategory = prvalue
+# 3018| getStmt(): [BlockStmt] { ... }
+# 3019| getStmt(0): [DeclStmt] declaration
+# 3019| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1000
+# 3019| Type = [Struct] String
+# 3019| getVariable().getInitializer(): [Initializer] initializer for x1000
+# 3019| getExpr(): [ConstructorCall] call to String
+# 3019| Type = [VoidType] void
+# 3019| ValueCategory = prvalue
+# 3020| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3020| Type = [VoidType] void
+# 3020| ValueCategory = prvalue
+# 3020| getQualifier(): [VariableAccess] x1000
+# 3020| Type = [Struct] String
+# 3020| ValueCategory = lvalue
+# 3020| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3020| Conversion = [BoolConversion] conversion to bool
+# 3020| Type = [BoolType] bool
+# 3020| Value = [CStyleCast] 0
+# 3020| ValueCategory = prvalue
+# 3021| getStmt(1001): [DoStmt] do (...) ...
+# 3023| getCondition(): [Literal] 0
+# 3023| Type = [IntType] int
+# 3023| Value = [Literal] 0
+# 3023| ValueCategory = prvalue
+# 3021| getStmt(): [BlockStmt] { ... }
+# 3022| getStmt(0): [DeclStmt] declaration
+# 3022| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1001
+# 3022| Type = [Struct] String
+# 3022| getVariable().getInitializer(): [Initializer] initializer for x1001
+# 3022| getExpr(): [ConstructorCall] call to String
+# 3022| Type = [VoidType] void
+# 3022| ValueCategory = prvalue
+# 3023| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3023| Type = [VoidType] void
+# 3023| ValueCategory = prvalue
+# 3023| getQualifier(): [VariableAccess] x1001
+# 3023| Type = [Struct] String
+# 3023| ValueCategory = lvalue
+# 3023| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3023| Conversion = [BoolConversion] conversion to bool
+# 3023| Type = [BoolType] bool
+# 3023| Value = [CStyleCast] 0
+# 3023| ValueCategory = prvalue
+# 3024| getStmt(1002): [DoStmt] do (...) ...
+# 3026| getCondition(): [Literal] 0
+# 3026| Type = [IntType] int
+# 3026| Value = [Literal] 0
+# 3026| ValueCategory = prvalue
+# 3024| getStmt(): [BlockStmt] { ... }
+# 3025| getStmt(0): [DeclStmt] declaration
+# 3025| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1002
+# 3025| Type = [Struct] String
+# 3025| getVariable().getInitializer(): [Initializer] initializer for x1002
+# 3025| getExpr(): [ConstructorCall] call to String
+# 3025| Type = [VoidType] void
+# 3025| ValueCategory = prvalue
+# 3026| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3026| Type = [VoidType] void
+# 3026| ValueCategory = prvalue
+# 3026| getQualifier(): [VariableAccess] x1002
+# 3026| Type = [Struct] String
+# 3026| ValueCategory = lvalue
+# 3026| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3026| Conversion = [BoolConversion] conversion to bool
+# 3026| Type = [BoolType] bool
+# 3026| Value = [CStyleCast] 0
+# 3026| ValueCategory = prvalue
+# 3027| getStmt(1003): [DoStmt] do (...) ...
+# 3029| getCondition(): [Literal] 0
+# 3029| Type = [IntType] int
+# 3029| Value = [Literal] 0
+# 3029| ValueCategory = prvalue
+# 3027| getStmt(): [BlockStmt] { ... }
+# 3028| getStmt(0): [DeclStmt] declaration
+# 3028| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1003
+# 3028| Type = [Struct] String
+# 3028| getVariable().getInitializer(): [Initializer] initializer for x1003
+# 3028| getExpr(): [ConstructorCall] call to String
+# 3028| Type = [VoidType] void
+# 3028| ValueCategory = prvalue
+# 3029| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3029| Type = [VoidType] void
+# 3029| ValueCategory = prvalue
+# 3029| getQualifier(): [VariableAccess] x1003
+# 3029| Type = [Struct] String
+# 3029| ValueCategory = lvalue
+# 3029| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3029| Conversion = [BoolConversion] conversion to bool
+# 3029| Type = [BoolType] bool
+# 3029| Value = [CStyleCast] 0
+# 3029| ValueCategory = prvalue
+# 3030| getStmt(1004): [DoStmt] do (...) ...
+# 3032| getCondition(): [Literal] 0
+# 3032| Type = [IntType] int
+# 3032| Value = [Literal] 0
+# 3032| ValueCategory = prvalue
+# 3030| getStmt(): [BlockStmt] { ... }
+# 3031| getStmt(0): [DeclStmt] declaration
+# 3031| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1004
+# 3031| Type = [Struct] String
+# 3031| getVariable().getInitializer(): [Initializer] initializer for x1004
+# 3031| getExpr(): [ConstructorCall] call to String
+# 3031| Type = [VoidType] void
+# 3031| ValueCategory = prvalue
+# 3032| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3032| Type = [VoidType] void
+# 3032| ValueCategory = prvalue
+# 3032| getQualifier(): [VariableAccess] x1004
+# 3032| Type = [Struct] String
+# 3032| ValueCategory = lvalue
+# 3032| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3032| Conversion = [BoolConversion] conversion to bool
+# 3032| Type = [BoolType] bool
+# 3032| Value = [CStyleCast] 0
+# 3032| ValueCategory = prvalue
+# 3033| getStmt(1005): [DoStmt] do (...) ...
+# 3035| getCondition(): [Literal] 0
+# 3035| Type = [IntType] int
+# 3035| Value = [Literal] 0
+# 3035| ValueCategory = prvalue
+# 3033| getStmt(): [BlockStmt] { ... }
+# 3034| getStmt(0): [DeclStmt] declaration
+# 3034| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1005
+# 3034| Type = [Struct] String
+# 3034| getVariable().getInitializer(): [Initializer] initializer for x1005
+# 3034| getExpr(): [ConstructorCall] call to String
+# 3034| Type = [VoidType] void
+# 3034| ValueCategory = prvalue
+# 3035| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3035| Type = [VoidType] void
+# 3035| ValueCategory = prvalue
+# 3035| getQualifier(): [VariableAccess] x1005
+# 3035| Type = [Struct] String
+# 3035| ValueCategory = lvalue
+# 3035| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3035| Conversion = [BoolConversion] conversion to bool
+# 3035| Type = [BoolType] bool
+# 3035| Value = [CStyleCast] 0
+# 3035| ValueCategory = prvalue
+# 3036| getStmt(1006): [DoStmt] do (...) ...
+# 3038| getCondition(): [Literal] 0
+# 3038| Type = [IntType] int
+# 3038| Value = [Literal] 0
+# 3038| ValueCategory = prvalue
+# 3036| getStmt(): [BlockStmt] { ... }
+# 3037| getStmt(0): [DeclStmt] declaration
+# 3037| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1006
+# 3037| Type = [Struct] String
+# 3037| getVariable().getInitializer(): [Initializer] initializer for x1006
+# 3037| getExpr(): [ConstructorCall] call to String
+# 3037| Type = [VoidType] void
+# 3037| ValueCategory = prvalue
+# 3038| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3038| Type = [VoidType] void
+# 3038| ValueCategory = prvalue
+# 3038| getQualifier(): [VariableAccess] x1006
+# 3038| Type = [Struct] String
+# 3038| ValueCategory = lvalue
+# 3038| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3038| Conversion = [BoolConversion] conversion to bool
+# 3038| Type = [BoolType] bool
+# 3038| Value = [CStyleCast] 0
+# 3038| ValueCategory = prvalue
+# 3039| getStmt(1007): [DoStmt] do (...) ...
+# 3041| getCondition(): [Literal] 0
+# 3041| Type = [IntType] int
+# 3041| Value = [Literal] 0
+# 3041| ValueCategory = prvalue
+# 3039| getStmt(): [BlockStmt] { ... }
+# 3040| getStmt(0): [DeclStmt] declaration
+# 3040| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1007
+# 3040| Type = [Struct] String
+# 3040| getVariable().getInitializer(): [Initializer] initializer for x1007
+# 3040| getExpr(): [ConstructorCall] call to String
+# 3040| Type = [VoidType] void
+# 3040| ValueCategory = prvalue
+# 3041| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3041| Type = [VoidType] void
+# 3041| ValueCategory = prvalue
+# 3041| getQualifier(): [VariableAccess] x1007
+# 3041| Type = [Struct] String
+# 3041| ValueCategory = lvalue
+# 3041| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3041| Conversion = [BoolConversion] conversion to bool
+# 3041| Type = [BoolType] bool
+# 3041| Value = [CStyleCast] 0
+# 3041| ValueCategory = prvalue
+# 3042| getStmt(1008): [DoStmt] do (...) ...
+# 3044| getCondition(): [Literal] 0
+# 3044| Type = [IntType] int
+# 3044| Value = [Literal] 0
+# 3044| ValueCategory = prvalue
+# 3042| getStmt(): [BlockStmt] { ... }
+# 3043| getStmt(0): [DeclStmt] declaration
+# 3043| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1008
+# 3043| Type = [Struct] String
+# 3043| getVariable().getInitializer(): [Initializer] initializer for x1008
+# 3043| getExpr(): [ConstructorCall] call to String
+# 3043| Type = [VoidType] void
+# 3043| ValueCategory = prvalue
+# 3044| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3044| Type = [VoidType] void
+# 3044| ValueCategory = prvalue
+# 3044| getQualifier(): [VariableAccess] x1008
+# 3044| Type = [Struct] String
+# 3044| ValueCategory = lvalue
+# 3044| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3044| Conversion = [BoolConversion] conversion to bool
+# 3044| Type = [BoolType] bool
+# 3044| Value = [CStyleCast] 0
+# 3044| ValueCategory = prvalue
+# 3045| getStmt(1009): [DoStmt] do (...) ...
+# 3047| getCondition(): [Literal] 0
+# 3047| Type = [IntType] int
+# 3047| Value = [Literal] 0
+# 3047| ValueCategory = prvalue
+# 3045| getStmt(): [BlockStmt] { ... }
+# 3046| getStmt(0): [DeclStmt] declaration
+# 3046| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1009
+# 3046| Type = [Struct] String
+# 3046| getVariable().getInitializer(): [Initializer] initializer for x1009
+# 3046| getExpr(): [ConstructorCall] call to String
+# 3046| Type = [VoidType] void
+# 3046| ValueCategory = prvalue
+# 3047| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3047| Type = [VoidType] void
+# 3047| ValueCategory = prvalue
+# 3047| getQualifier(): [VariableAccess] x1009
+# 3047| Type = [Struct] String
+# 3047| ValueCategory = lvalue
+# 3047| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3047| Conversion = [BoolConversion] conversion to bool
+# 3047| Type = [BoolType] bool
+# 3047| Value = [CStyleCast] 0
+# 3047| ValueCategory = prvalue
+# 3048| getStmt(1010): [DoStmt] do (...) ...
+# 3050| getCondition(): [Literal] 0
+# 3050| Type = [IntType] int
+# 3050| Value = [Literal] 0
+# 3050| ValueCategory = prvalue
+# 3048| getStmt(): [BlockStmt] { ... }
+# 3049| getStmt(0): [DeclStmt] declaration
+# 3049| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1010
+# 3049| Type = [Struct] String
+# 3049| getVariable().getInitializer(): [Initializer] initializer for x1010
+# 3049| getExpr(): [ConstructorCall] call to String
+# 3049| Type = [VoidType] void
+# 3049| ValueCategory = prvalue
+# 3050| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3050| Type = [VoidType] void
+# 3050| ValueCategory = prvalue
+# 3050| getQualifier(): [VariableAccess] x1010
+# 3050| Type = [Struct] String
+# 3050| ValueCategory = lvalue
+# 3050| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3050| Conversion = [BoolConversion] conversion to bool
+# 3050| Type = [BoolType] bool
+# 3050| Value = [CStyleCast] 0
+# 3050| ValueCategory = prvalue
+# 3051| getStmt(1011): [DoStmt] do (...) ...
+# 3053| getCondition(): [Literal] 0
+# 3053| Type = [IntType] int
+# 3053| Value = [Literal] 0
+# 3053| ValueCategory = prvalue
+# 3051| getStmt(): [BlockStmt] { ... }
+# 3052| getStmt(0): [DeclStmt] declaration
+# 3052| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1011
+# 3052| Type = [Struct] String
+# 3052| getVariable().getInitializer(): [Initializer] initializer for x1011
+# 3052| getExpr(): [ConstructorCall] call to String
+# 3052| Type = [VoidType] void
+# 3052| ValueCategory = prvalue
+# 3053| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3053| Type = [VoidType] void
+# 3053| ValueCategory = prvalue
+# 3053| getQualifier(): [VariableAccess] x1011
+# 3053| Type = [Struct] String
+# 3053| ValueCategory = lvalue
+# 3053| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3053| Conversion = [BoolConversion] conversion to bool
+# 3053| Type = [BoolType] bool
+# 3053| Value = [CStyleCast] 0
+# 3053| ValueCategory = prvalue
+# 3054| getStmt(1012): [DoStmt] do (...) ...
+# 3056| getCondition(): [Literal] 0
+# 3056| Type = [IntType] int
+# 3056| Value = [Literal] 0
+# 3056| ValueCategory = prvalue
+# 3054| getStmt(): [BlockStmt] { ... }
+# 3055| getStmt(0): [DeclStmt] declaration
+# 3055| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1012
+# 3055| Type = [Struct] String
+# 3055| getVariable().getInitializer(): [Initializer] initializer for x1012
+# 3055| getExpr(): [ConstructorCall] call to String
+# 3055| Type = [VoidType] void
+# 3055| ValueCategory = prvalue
+# 3056| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3056| Type = [VoidType] void
+# 3056| ValueCategory = prvalue
+# 3056| getQualifier(): [VariableAccess] x1012
+# 3056| Type = [Struct] String
+# 3056| ValueCategory = lvalue
+# 3056| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3056| Conversion = [BoolConversion] conversion to bool
+# 3056| Type = [BoolType] bool
+# 3056| Value = [CStyleCast] 0
+# 3056| ValueCategory = prvalue
+# 3057| getStmt(1013): [DoStmt] do (...) ...
+# 3059| getCondition(): [Literal] 0
+# 3059| Type = [IntType] int
+# 3059| Value = [Literal] 0
+# 3059| ValueCategory = prvalue
+# 3057| getStmt(): [BlockStmt] { ... }
+# 3058| getStmt(0): [DeclStmt] declaration
+# 3058| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1013
+# 3058| Type = [Struct] String
+# 3058| getVariable().getInitializer(): [Initializer] initializer for x1013
+# 3058| getExpr(): [ConstructorCall] call to String
+# 3058| Type = [VoidType] void
+# 3058| ValueCategory = prvalue
+# 3059| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3059| Type = [VoidType] void
+# 3059| ValueCategory = prvalue
+# 3059| getQualifier(): [VariableAccess] x1013
+# 3059| Type = [Struct] String
+# 3059| ValueCategory = lvalue
+# 3059| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3059| Conversion = [BoolConversion] conversion to bool
+# 3059| Type = [BoolType] bool
+# 3059| Value = [CStyleCast] 0
+# 3059| ValueCategory = prvalue
+# 3060| getStmt(1014): [DoStmt] do (...) ...
+# 3062| getCondition(): [Literal] 0
+# 3062| Type = [IntType] int
+# 3062| Value = [Literal] 0
+# 3062| ValueCategory = prvalue
+# 3060| getStmt(): [BlockStmt] { ... }
+# 3061| getStmt(0): [DeclStmt] declaration
+# 3061| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1014
+# 3061| Type = [Struct] String
+# 3061| getVariable().getInitializer(): [Initializer] initializer for x1014
+# 3061| getExpr(): [ConstructorCall] call to String
+# 3061| Type = [VoidType] void
+# 3061| ValueCategory = prvalue
+# 3062| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3062| Type = [VoidType] void
+# 3062| ValueCategory = prvalue
+# 3062| getQualifier(): [VariableAccess] x1014
+# 3062| Type = [Struct] String
+# 3062| ValueCategory = lvalue
+# 3062| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3062| Conversion = [BoolConversion] conversion to bool
+# 3062| Type = [BoolType] bool
+# 3062| Value = [CStyleCast] 0
+# 3062| ValueCategory = prvalue
+# 3063| getStmt(1015): [DoStmt] do (...) ...
+# 3065| getCondition(): [Literal] 0
+# 3065| Type = [IntType] int
+# 3065| Value = [Literal] 0
+# 3065| ValueCategory = prvalue
+# 3063| getStmt(): [BlockStmt] { ... }
+# 3064| getStmt(0): [DeclStmt] declaration
+# 3064| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1015
+# 3064| Type = [Struct] String
+# 3064| getVariable().getInitializer(): [Initializer] initializer for x1015
+# 3064| getExpr(): [ConstructorCall] call to String
+# 3064| Type = [VoidType] void
+# 3064| ValueCategory = prvalue
+# 3065| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3065| Type = [VoidType] void
+# 3065| ValueCategory = prvalue
+# 3065| getQualifier(): [VariableAccess] x1015
+# 3065| Type = [Struct] String
+# 3065| ValueCategory = lvalue
+# 3065| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3065| Conversion = [BoolConversion] conversion to bool
+# 3065| Type = [BoolType] bool
+# 3065| Value = [CStyleCast] 0
+# 3065| ValueCategory = prvalue
+# 3066| getStmt(1016): [DoStmt] do (...) ...
+# 3068| getCondition(): [Literal] 0
+# 3068| Type = [IntType] int
+# 3068| Value = [Literal] 0
+# 3068| ValueCategory = prvalue
+# 3066| getStmt(): [BlockStmt] { ... }
+# 3067| getStmt(0): [DeclStmt] declaration
+# 3067| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1016
+# 3067| Type = [Struct] String
+# 3067| getVariable().getInitializer(): [Initializer] initializer for x1016
+# 3067| getExpr(): [ConstructorCall] call to String
+# 3067| Type = [VoidType] void
+# 3067| ValueCategory = prvalue
+# 3068| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3068| Type = [VoidType] void
+# 3068| ValueCategory = prvalue
+# 3068| getQualifier(): [VariableAccess] x1016
+# 3068| Type = [Struct] String
+# 3068| ValueCategory = lvalue
+# 3068| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3068| Conversion = [BoolConversion] conversion to bool
+# 3068| Type = [BoolType] bool
+# 3068| Value = [CStyleCast] 0
+# 3068| ValueCategory = prvalue
+# 3069| getStmt(1017): [DoStmt] do (...) ...
+# 3071| getCondition(): [Literal] 0
+# 3071| Type = [IntType] int
+# 3071| Value = [Literal] 0
+# 3071| ValueCategory = prvalue
+# 3069| getStmt(): [BlockStmt] { ... }
+# 3070| getStmt(0): [DeclStmt] declaration
+# 3070| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1017
+# 3070| Type = [Struct] String
+# 3070| getVariable().getInitializer(): [Initializer] initializer for x1017
+# 3070| getExpr(): [ConstructorCall] call to String
+# 3070| Type = [VoidType] void
+# 3070| ValueCategory = prvalue
+# 3071| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3071| Type = [VoidType] void
+# 3071| ValueCategory = prvalue
+# 3071| getQualifier(): [VariableAccess] x1017
+# 3071| Type = [Struct] String
+# 3071| ValueCategory = lvalue
+# 3071| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3071| Conversion = [BoolConversion] conversion to bool
+# 3071| Type = [BoolType] bool
+# 3071| Value = [CStyleCast] 0
+# 3071| ValueCategory = prvalue
+# 3072| getStmt(1018): [DoStmt] do (...) ...
+# 3074| getCondition(): [Literal] 0
+# 3074| Type = [IntType] int
+# 3074| Value = [Literal] 0
+# 3074| ValueCategory = prvalue
+# 3072| getStmt(): [BlockStmt] { ... }
+# 3073| getStmt(0): [DeclStmt] declaration
+# 3073| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1018
+# 3073| Type = [Struct] String
+# 3073| getVariable().getInitializer(): [Initializer] initializer for x1018
+# 3073| getExpr(): [ConstructorCall] call to String
+# 3073| Type = [VoidType] void
+# 3073| ValueCategory = prvalue
+# 3074| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3074| Type = [VoidType] void
+# 3074| ValueCategory = prvalue
+# 3074| getQualifier(): [VariableAccess] x1018
+# 3074| Type = [Struct] String
+# 3074| ValueCategory = lvalue
+# 3074| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3074| Conversion = [BoolConversion] conversion to bool
+# 3074| Type = [BoolType] bool
+# 3074| Value = [CStyleCast] 0
+# 3074| ValueCategory = prvalue
+# 3075| getStmt(1019): [DoStmt] do (...) ...
+# 3077| getCondition(): [Literal] 0
+# 3077| Type = [IntType] int
+# 3077| Value = [Literal] 0
+# 3077| ValueCategory = prvalue
+# 3075| getStmt(): [BlockStmt] { ... }
+# 3076| getStmt(0): [DeclStmt] declaration
+# 3076| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1019
+# 3076| Type = [Struct] String
+# 3076| getVariable().getInitializer(): [Initializer] initializer for x1019
+# 3076| getExpr(): [ConstructorCall] call to String
+# 3076| Type = [VoidType] void
+# 3076| ValueCategory = prvalue
+# 3077| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3077| Type = [VoidType] void
+# 3077| ValueCategory = prvalue
+# 3077| getQualifier(): [VariableAccess] x1019
+# 3077| Type = [Struct] String
+# 3077| ValueCategory = lvalue
+# 3077| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3077| Conversion = [BoolConversion] conversion to bool
+# 3077| Type = [BoolType] bool
+# 3077| Value = [CStyleCast] 0
+# 3077| ValueCategory = prvalue
+# 3078| getStmt(1020): [DoStmt] do (...) ...
+# 3080| getCondition(): [Literal] 0
+# 3080| Type = [IntType] int
+# 3080| Value = [Literal] 0
+# 3080| ValueCategory = prvalue
+# 3078| getStmt(): [BlockStmt] { ... }
+# 3079| getStmt(0): [DeclStmt] declaration
+# 3079| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1020
+# 3079| Type = [Struct] String
+# 3079| getVariable().getInitializer(): [Initializer] initializer for x1020
+# 3079| getExpr(): [ConstructorCall] call to String
+# 3079| Type = [VoidType] void
+# 3079| ValueCategory = prvalue
+# 3080| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3080| Type = [VoidType] void
+# 3080| ValueCategory = prvalue
+# 3080| getQualifier(): [VariableAccess] x1020
+# 3080| Type = [Struct] String
+# 3080| ValueCategory = lvalue
+# 3080| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3080| Conversion = [BoolConversion] conversion to bool
+# 3080| Type = [BoolType] bool
+# 3080| Value = [CStyleCast] 0
+# 3080| ValueCategory = prvalue
+# 3081| getStmt(1021): [DoStmt] do (...) ...
+# 3083| getCondition(): [Literal] 0
+# 3083| Type = [IntType] int
+# 3083| Value = [Literal] 0
+# 3083| ValueCategory = prvalue
+# 3081| getStmt(): [BlockStmt] { ... }
+# 3082| getStmt(0): [DeclStmt] declaration
+# 3082| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1021
+# 3082| Type = [Struct] String
+# 3082| getVariable().getInitializer(): [Initializer] initializer for x1021
+# 3082| getExpr(): [ConstructorCall] call to String
+# 3082| Type = [VoidType] void
+# 3082| ValueCategory = prvalue
+# 3083| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3083| Type = [VoidType] void
+# 3083| ValueCategory = prvalue
+# 3083| getQualifier(): [VariableAccess] x1021
+# 3083| Type = [Struct] String
+# 3083| ValueCategory = lvalue
+# 3083| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3083| Conversion = [BoolConversion] conversion to bool
+# 3083| Type = [BoolType] bool
+# 3083| Value = [CStyleCast] 0
+# 3083| ValueCategory = prvalue
+# 3084| getStmt(1022): [DoStmt] do (...) ...
+# 3086| getCondition(): [Literal] 0
+# 3086| Type = [IntType] int
+# 3086| Value = [Literal] 0
+# 3086| ValueCategory = prvalue
+# 3084| getStmt(): [BlockStmt] { ... }
+# 3085| getStmt(0): [DeclStmt] declaration
+# 3085| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1022
+# 3085| Type = [Struct] String
+# 3085| getVariable().getInitializer(): [Initializer] initializer for x1022
+# 3085| getExpr(): [ConstructorCall] call to String
+# 3085| Type = [VoidType] void
+# 3085| ValueCategory = prvalue
+# 3086| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3086| Type = [VoidType] void
+# 3086| ValueCategory = prvalue
+# 3086| getQualifier(): [VariableAccess] x1022
+# 3086| Type = [Struct] String
+# 3086| ValueCategory = lvalue
+# 3086| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3086| Conversion = [BoolConversion] conversion to bool
+# 3086| Type = [BoolType] bool
+# 3086| Value = [CStyleCast] 0
+# 3086| ValueCategory = prvalue
+# 3087| getStmt(1023): [DoStmt] do (...) ...
+# 3089| getCondition(): [Literal] 0
+# 3089| Type = [IntType] int
+# 3089| Value = [Literal] 0
+# 3089| ValueCategory = prvalue
+# 3087| getStmt(): [BlockStmt] { ... }
+# 3088| getStmt(0): [DeclStmt] declaration
+# 3088| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1023
+# 3088| Type = [Struct] String
+# 3088| getVariable().getInitializer(): [Initializer] initializer for x1023
+# 3088| getExpr(): [ConstructorCall] call to String
+# 3088| Type = [VoidType] void
+# 3088| ValueCategory = prvalue
+# 3089| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3089| Type = [VoidType] void
+# 3089| ValueCategory = prvalue
+# 3089| getQualifier(): [VariableAccess] x1023
+# 3089| Type = [Struct] String
+# 3089| ValueCategory = lvalue
+# 3089| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3089| Conversion = [BoolConversion] conversion to bool
+# 3089| Type = [BoolType] bool
+# 3089| Value = [CStyleCast] 0
+# 3089| ValueCategory = prvalue
+# 3090| getStmt(1024): [DoStmt] do (...) ...
+# 3092| getCondition(): [Literal] 0
+# 3092| Type = [IntType] int
+# 3092| Value = [Literal] 0
+# 3092| ValueCategory = prvalue
+# 3090| getStmt(): [BlockStmt] { ... }
+# 3091| getStmt(0): [DeclStmt] declaration
+# 3091| getDeclarationEntry(0): [VariableDeclarationEntry] definition of x1024
+# 3091| Type = [Struct] String
+# 3091| getVariable().getInitializer(): [Initializer] initializer for x1024
+# 3091| getExpr(): [ConstructorCall] call to String
+# 3091| Type = [VoidType] void
+# 3091| ValueCategory = prvalue
+# 3092| getImplicitDestructorCall(0): [DestructorCall] call to ~String
+# 3092| Type = [VoidType] void
+# 3092| ValueCategory = prvalue
+# 3092| getQualifier(): [VariableAccess] x1024
+# 3092| Type = [Struct] String
+# 3092| ValueCategory = lvalue
+# 3092| getCondition().getFullyConverted(): [CStyleCast] (bool)...
+# 3092| Conversion = [BoolConversion] conversion to bool
+# 3092| Type = [BoolType] bool
+# 3092| Value = [CStyleCast] 0
+# 3092| ValueCategory = prvalue
+# 3093| getStmt(1025): [ReturnStmt] return ...
perf-regression.cpp:
# 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&)
# 4| :
diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected
index ea445b599fa49..1dc8dbe70145f 100644
--- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected
+++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected
@@ -15538,230 +15538,219 @@ ir.cpp:
# 2215| m2215_8(ClassWithDestructor) = Chi : total:m2215_2, partial:m2215_7
# 2216| r2216_1(glval>) = VariableAddress[ys] :
# 2216| m2216_2(vector) = Uninitialized[ys] : &:r2216_1
-# 2216| m2216_3(unknown) = Chi : total:m2215_6, partial:m2216_2
-# 2216| r2216_4(glval) = FunctionAddress[vector] :
-# 2216| r2216_5(glval) = VariableAddress[#temp2216:45] :
-# 2216| r2216_6(glval) = VariableAddress[x] :
-# 2216| r2216_7(ClassWithDestructor) = Load[x] : &:r2216_6, m2215_8
-# 2216| m2216_8(ClassWithDestructor) = Store[#temp2216:45] : &:r2216_5, r2216_7
-# 2216| r2216_9(ClassWithDestructor) = Load[#temp2216:45] : &:r2216_5, m2216_8
-# 2216| v2216_10(void) = Call[vector] : func:r2216_4, this:r2216_1, 0:r2216_9
-# 2216| m2216_11(unknown) = ^CallSideEffect : ~m2216_3
-# 2216| m2216_12(unknown) = Chi : total:m2216_3, partial:m2216_11
-# 2216| m2216_13(vector) = ^IndirectMayWriteSideEffect[-1] : &:r2216_1
-# 2216| m2216_14(unknown) = Chi : total:m2216_12, partial:m2216_13
-# 2216| r2216_15(glval) = CopyValue : r2216_5
-# 2216| r2216_16(glval) = FunctionAddress[~ClassWithDestructor] :
-# 2216| v2216_17(void) = Call[~ClassWithDestructor] : func:r2216_16, this:r2216_15
-# 2216| m2216_18(unknown) = ^CallSideEffect : ~m2216_14
-# 2216| m2216_19(unknown) = Chi : total:m2216_14, partial:m2216_18
-# 2216| v2216_20(void) = ^IndirectReadSideEffect[-1] : &:r2216_15, m2216_8
-# 2216| m2216_21(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2216_15
-# 2216| m2216_22(ClassWithDestructor) = Chi : total:m2216_8, partial:m2216_21
-# 2216| r2216_23(glval &>) = VariableAddress[(__range)] :
-# 2216| r2216_24(glval>) = VariableAddress[ys] :
-# 2216| r2216_25(vector &) = CopyValue : r2216_24
-# 2216| m2216_26(vector &) = Store[(__range)] : &:r2216_23, r2216_25
-# 2216| r2216_27(glval>) = VariableAddress[(__begin)] :
-# 2216| r2216_28(glval &>) = VariableAddress[(__range)] :
-# 2216| r2216_29(vector &) = Load[(__range)] : &:r2216_28, m2216_26
-#-----| r0_1(glval>) = CopyValue : r2216_29
+# 2216| r2216_3(glval) = FunctionAddress[vector] :
+# 2216| r2216_4(glval) = VariableAddress[#temp2216:45] :
+# 2216| r2216_5(glval) = VariableAddress[x] :
+# 2216| r2216_6(ClassWithDestructor) = Load[x] : &:r2216_5, m2215_8
+# 2216| m2216_7(ClassWithDestructor) = Store[#temp2216:45] : &:r2216_4, r2216_6
+# 2216| r2216_8(ClassWithDestructor) = Load[#temp2216:45] : &:r2216_4, m2216_7
+# 2216| v2216_9(void) = Call[vector] : func:r2216_3, this:r2216_1, 0:r2216_8
+# 2216| m2216_10(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2216_1
+# 2216| r2216_11(glval) = CopyValue : r2216_4
+# 2216| r2216_12(glval) = FunctionAddress[~ClassWithDestructor] :
+# 2216| v2216_13(void) = Call[~ClassWithDestructor] : func:r2216_12, this:r2216_11
+# 2216| m2216_14(unknown) = ^CallSideEffect : ~m2215_6
+# 2216| m2216_15(unknown) = Chi : total:m2215_6, partial:m2216_14
+# 2216| v2216_16(void) = ^IndirectReadSideEffect[-1] : &:r2216_11, m2216_7
+# 2216| m2216_17(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2216_11
+# 2216| m2216_18(ClassWithDestructor) = Chi : total:m2216_7, partial:m2216_17
+# 2216| r2216_19(glval &>) = VariableAddress[(__range)] :
+# 2216| r2216_20(glval>) = VariableAddress[ys] :
+# 2216| r2216_21(vector &) = CopyValue : r2216_20
+# 2216| m2216_22(vector &) = Store[(__range)] : &:r2216_19, r2216_21
+# 2216| r2216_23(glval>) = VariableAddress[(__begin)] :
+# 2216| r2216_24(glval &>) = VariableAddress[(__range)] :
+# 2216| r2216_25(vector &) = Load[(__range)] : &:r2216_24, m2216_22
+#-----| r0_1(glval>) = CopyValue : r2216_25
#-----| r0_2(glval>) = Convert : r0_1
-# 2216| r2216_30(glval) = FunctionAddress[begin] :
-# 2216| r2216_31(iterator) = Call[begin] : func:r2216_30, this:r0_2
-#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, ~m2216_19
-# 2216| m2216_32(iterator) = Store[(__begin)] : &:r2216_27, r2216_31
-# 2216| r2216_33(glval>) = VariableAddress[(__end)] :
-# 2216| r2216_34(glval &>) = VariableAddress[(__range)] :
-# 2216| r2216_35(vector &) = Load[(__range)] : &:r2216_34, m2216_26
-#-----| r0_4(glval>) = CopyValue : r2216_35
+# 2216| r2216_26(glval) = FunctionAddress[begin] :
+# 2216| r2216_27(iterator) = Call[begin] : func:r2216_26, this:r0_2
+#-----| v0_3(void) = ^IndirectReadSideEffect[-1] : &:r0_2, m2216_10
+# 2216| m2216_28(iterator) = Store[(__begin)] : &:r2216_23, r2216_27
+# 2216| r2216_29(glval>) = VariableAddress[(__end)] :
+# 2216| r2216_30(glval &>) = VariableAddress[(__range)] :
+# 2216| r2216_31(vector &) = Load[(__range)] : &:r2216_30, m2216_22
+#-----| r0_4(glval>) = CopyValue : r2216_31
#-----| r0_5(glval>) = Convert : r0_4
-# 2216| r2216_36(glval) = FunctionAddress[end] :
-# 2216| r2216_37(iterator) = Call[end] : func:r2216_36, this:r0_5
-#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, ~m2216_19
-# 2216| m2216_38(iterator) = Store[(__end)] : &:r2216_33, r2216_37
-# 2216| m2216_39(unknown) = Chi : total:m2216_19, partial:m2216_38
+# 2216| r2216_32(glval) = FunctionAddress[end] :
+# 2216| r2216_33(iterator) = Call[end] : func:r2216_32, this:r0_5
+#-----| v0_6(void) = ^IndirectReadSideEffect[-1] : &:r0_5, m2216_10
+# 2216| m2216_34(iterator) = Store[(__end)] : &:r2216_29, r2216_33
+# 2216| m2216_35(unknown) = Chi : total:m2216_15, partial:m2216_34
#-----| Goto -> Block 8
# 2216| Block 8
-# 2216| m2216_40(iterator) = Phi : from 7:m2216_32, from 9:m2216_64
-# 2216| m2216_41(unknown) = Phi : from 7:~m2216_39, from 9:~m2216_69
-# 2216| r2216_42(glval>) = VariableAddress[(__begin)] :
-#-----| r0_7(glval>) = Convert : r2216_42
-# 2216| r2216_43(glval) = FunctionAddress[operator!=] :
+# 2216| m2216_36(iterator) = Phi : from 7:m2216_28, from 9:m2216_60
+# 2216| m2216_37(unknown) = Phi : from 7:~m2216_35, from 9:~m2216_65
+# 2216| r2216_38(glval>) = VariableAddress[(__begin)] :
+#-----| r0_7(glval>) = Convert : r2216_38
+# 2216| r2216_39(glval) = FunctionAddress[operator!=] :
#-----| r0_8(glval>) = VariableAddress[#temp0:0] :
#-----| m0_9(iterator) = Uninitialized[#temp0:0] : &:r0_8
-#-----| m0_10(unknown) = Chi : total:m2216_41, partial:m0_9
-# 2216| r2216_44(glval) = FunctionAddress[iterator] :
-# 2216| r2216_45(glval>) = VariableAddress[(__end)] :
-#-----| r0_11(glval>) = Convert : r2216_45
+#-----| m0_10(unknown) = Chi : total:m2216_37, partial:m0_9
+# 2216| r2216_40(glval) = FunctionAddress[iterator] :
+# 2216| r2216_41(glval>) = VariableAddress[(__end)] :
+#-----| r0_11(glval>) = Convert : r2216_41
#-----| r0_12(iterator &) = CopyValue : r0_11
-# 2216| v2216_46(void) = Call[iterator] : func:r2216_44, this:r0_8, 0:r0_12
-# 2216| m2216_47(unknown) = ^CallSideEffect : ~m0_10
-# 2216| m2216_48(unknown) = Chi : total:m0_10, partial:m2216_47
-#-----| v0_13(void) = ^BufferReadSideEffect[0] : &:r0_12, ~m2216_48
-# 2216| m2216_49(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_8
-# 2216| m2216_50(unknown) = Chi : total:m2216_48, partial:m2216_49
-#-----| r0_14(iterator) = Load[#temp0:0] : &:r0_8, ~m2216_50
-# 2216| r2216_51(bool) = Call[operator!=] : func:r2216_43, this:r0_7, 0:r0_14
-#-----| v0_15(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2216_40
-# 2216| v2216_52(void) = ConditionalBranch : r2216_51
+# 2216| v2216_42(void) = Call[iterator] : func:r2216_40, this:r0_8, 0:r0_12
+# 2216| m2216_43(unknown) = ^CallSideEffect : ~m0_10
+# 2216| m2216_44(unknown) = Chi : total:m0_10, partial:m2216_43
+#-----| v0_13(void) = ^BufferReadSideEffect[0] : &:r0_12, ~m2216_44
+# 2216| m2216_45(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_8
+# 2216| m2216_46(unknown) = Chi : total:m2216_44, partial:m2216_45
+#-----| r0_14(iterator) = Load[#temp0:0] : &:r0_8, ~m2216_46
+# 2216| r2216_47(bool) = Call[operator!=] : func:r2216_39, this:r0_7, 0:r0_14
+#-----| v0_15(void) = ^IndirectReadSideEffect[-1] : &:r0_7, m2216_36
+# 2216| v2216_48(void) = ConditionalBranch : r2216_47
#-----| False -> Block 10
#-----| True -> Block 9
# 2216| Block 9
-# 2216| r2216_53(glval) = VariableAddress[y] :
-# 2216| r2216_54(glval>) = VariableAddress[(__begin)] :
-#-----| r0_16(glval>) = Convert : r2216_54
-# 2216| r2216_55(glval) = FunctionAddress[operator*] :
-# 2216| r2216_56(ClassWithDestructor &) = Call[operator*] : func:r2216_55, this:r0_16
-#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, m2216_40
-# 2216| r2216_57(ClassWithDestructor) = Load[?] : &:r2216_56, ~m2216_50
-# 2216| m2216_58(ClassWithDestructor) = Store[y] : &:r2216_53, r2216_57
+# 2216| r2216_49(glval) = VariableAddress[y] :
+# 2216| r2216_50(glval>) = VariableAddress[(__begin)] :
+#-----| r0_16(glval>) = Convert : r2216_50
+# 2216| r2216_51(glval) = FunctionAddress[operator*] :
+# 2216| r2216_52(ClassWithDestructor &) = Call[operator*] : func:r2216_51, this:r0_16
+#-----| v0_17(void) = ^IndirectReadSideEffect[-1] : &:r0_16, m2216_36
+# 2216| r2216_53(ClassWithDestructor) = Load[?] : &:r2216_52, ~m2216_46
+# 2216| m2216_54(ClassWithDestructor) = Store[y] : &:r2216_49, r2216_53
# 2217| r2217_1(glval) = VariableAddress[y] :
# 2217| r2217_2(glval) = FunctionAddress[set_x] :
# 2217| r2217_3(char) = Constant[97] :
# 2217| v2217_4(void) = Call[set_x] : func:r2217_2, this:r2217_1, 0:r2217_3
-# 2217| m2217_5(unknown) = ^CallSideEffect : ~m2216_50
-# 2217| m2217_6(unknown) = Chi : total:m2216_50, partial:m2217_5
-# 2217| v2217_7(void) = ^IndirectReadSideEffect[-1] : &:r2217_1, m2216_58
+# 2217| m2217_5(unknown) = ^CallSideEffect : ~m2216_46
+# 2217| m2217_6(unknown) = Chi : total:m2216_46, partial:m2217_5
+# 2217| v2217_7(void) = ^IndirectReadSideEffect[-1] : &:r2217_1, m2216_54
# 2217| m2217_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2217_1
-# 2217| m2217_9(ClassWithDestructor) = Chi : total:m2216_58, partial:m2217_8
-# 2216| r2216_59(glval>) = VariableAddress[(__begin)] :
-# 2216| r2216_60(glval) = FunctionAddress[operator++] :
-# 2216| r2216_61(iterator &) = Call[operator++] : func:r2216_60, this:r2216_59
-# 2216| v2216_62(void) = ^IndirectReadSideEffect[-1] : &:r2216_59, m2216_40
-# 2216| m2216_63(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2216_59
-# 2216| m2216_64(iterator) = Chi : total:m2216_40, partial:m2216_63
-# 2216| r2216_65(glval) = VariableAddress[y] :
-# 2216| r2216_66(glval) = FunctionAddress[~ClassWithDestructor] :
-# 2216| v2216_67(void) = Call[~ClassWithDestructor] : func:r2216_66, this:r2216_65
-# 2216| m2216_68(unknown) = ^CallSideEffect : ~m2217_6
-# 2216| m2216_69(unknown) = Chi : total:m2217_6, partial:m2216_68
-# 2216| v2216_70(void) = ^IndirectReadSideEffect[-1] : &:r2216_65, m2217_9
-# 2216| m2216_71(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2216_65
-# 2216| m2216_72(ClassWithDestructor) = Chi : total:m2217_9, partial:m2216_71
-# 2216| r2216_73(glval>) = CopyValue : r2216_61
+# 2217| m2217_9(ClassWithDestructor) = Chi : total:m2216_54, partial:m2217_8
+# 2216| r2216_55(glval>) = VariableAddress[(__begin)] :
+# 2216| r2216_56(glval) = FunctionAddress[operator++] :
+# 2216| r2216_57(iterator &) = Call[operator++] : func:r2216_56, this:r2216_55
+# 2216| v2216_58(void) = ^IndirectReadSideEffect[-1] : &:r2216_55, m2216_36
+# 2216| m2216_59(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2216_55
+# 2216| m2216_60(iterator) = Chi : total:m2216_36, partial:m2216_59
+# 2216| r2216_61(glval) = VariableAddress[y] :
+# 2216| r2216_62(glval) = FunctionAddress[~ClassWithDestructor] :
+# 2216| v2216_63(void) = Call[~ClassWithDestructor] : func:r2216_62, this:r2216_61
+# 2216| m2216_64(unknown) = ^CallSideEffect : ~m2217_6
+# 2216| m2216_65(unknown) = Chi : total:m2217_6, partial:m2216_64
+# 2216| v2216_66(void) = ^IndirectReadSideEffect[-1] : &:r2216_61, m2217_9
+# 2216| m2216_67(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2216_61
+# 2216| m2216_68(ClassWithDestructor) = Chi : total:m2217_9, partial:m2216_67
+# 2216| r2216_69(glval>) = CopyValue : r2216_57
#-----| Goto (back edge) -> Block 8
# 2216| Block 10
-# 2216| r2216_74(glval>) = VariableAddress[ys] :
-# 2216| r2216_75(glval) = FunctionAddress[~vector] :
-# 2216| v2216_76(void) = Call[~vector] : func:r2216_75, this:r2216_74
-# 2216| m2216_77(unknown) = ^CallSideEffect : ~m2216_50
-# 2216| m2216_78(unknown) = Chi : total:m2216_50, partial:m2216_77
-# 2216| v2216_79(void) = ^IndirectReadSideEffect[-1] : &:r2216_74, ~m2216_78
-# 2216| m2216_80(vector) = ^IndirectMayWriteSideEffect[-1] : &:r2216_74
-# 2216| m2216_81(unknown) = Chi : total:m2216_78, partial:m2216_80
+# 2216| r2216_70(glval>) = VariableAddress[ys] :
+# 2216| r2216_71(glval) = FunctionAddress[~vector] :
+# 2216| v2216_72(void) = Call[~vector] : func:r2216_71, this:r2216_70
+# 2216| v2216_73(void) = ^IndirectReadSideEffect[-1] : &:r2216_70, m2216_10
+# 2216| m2216_74(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2216_70
# 2219| r2219_1(glval>) = VariableAddress[ys] :
# 2219| m2219_2(vector) = Uninitialized[ys] : &:r2219_1
-# 2219| m2219_3(unknown) = Chi : total:m2216_81, partial:m2219_2
-# 2219| r2219_4(glval) = FunctionAddress[vector] :
-# 2219| r2219_5(glval) = VariableAddress[#temp2219:45] :
-# 2219| r2219_6(glval) = VariableAddress[x] :
-# 2219| r2219_7(ClassWithDestructor) = Load[x] : &:r2219_6, m2215_8
-# 2219| m2219_8(ClassWithDestructor) = Store[#temp2219:45] : &:r2219_5, r2219_7
-# 2219| r2219_9(ClassWithDestructor) = Load[#temp2219:45] : &:r2219_5, m2219_8
-# 2219| v2219_10(void) = Call[vector] : func:r2219_4, this:r2219_1, 0:r2219_9
-# 2219| m2219_11(unknown) = ^CallSideEffect : ~m2219_3
-# 2219| m2219_12(unknown) = Chi : total:m2219_3, partial:m2219_11
-# 2219| m2219_13(vector) = ^IndirectMayWriteSideEffect[-1] : &:r2219_1
-# 2219| m2219_14(unknown) = Chi : total:m2219_12, partial:m2219_13
-# 2219| r2219_15(glval) = CopyValue : r2219_5
-# 2219| r2219_16(glval) = FunctionAddress[~ClassWithDestructor] :
-# 2219| v2219_17(void) = Call[~ClassWithDestructor] : func:r2219_16, this:r2219_15
-# 2219| m2219_18(unknown) = ^CallSideEffect : ~m2219_14
-# 2219| m2219_19(unknown) = Chi : total:m2219_14, partial:m2219_18
-# 2219| v2219_20(void) = ^IndirectReadSideEffect[-1] : &:r2219_15, m2219_8
-# 2219| m2219_21(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_15
-# 2219| m2219_22(ClassWithDestructor) = Chi : total:m2219_8, partial:m2219_21
-# 2219| r2219_23(glval &>) = VariableAddress[(__range)] :
-# 2219| r2219_24(glval>) = VariableAddress[ys] :
-# 2219| r2219_25(vector &) = CopyValue : r2219_24
-# 2219| m2219_26(vector &) = Store[(__range)] : &:r2219_23, r2219_25
-# 2219| r2219_27(glval>) = VariableAddress[(__begin)] :
-# 2219| r2219_28(glval &>) = VariableAddress[(__range)] :
-# 2219| r2219_29(vector &) = Load[(__range)] : &:r2219_28, m2219_26
-#-----| r0_18(glval>) = CopyValue : r2219_29
+# 2219| r2219_3(glval) = FunctionAddress[vector] :
+# 2219| r2219_4(glval) = VariableAddress[#temp2219:45] :
+# 2219| r2219_5(glval) = VariableAddress[x] :
+# 2219| r2219_6(ClassWithDestructor) = Load[x] : &:r2219_5, m2215_8
+# 2219| m2219_7(ClassWithDestructor) = Store[#temp2219:45] : &:r2219_4, r2219_6
+# 2219| r2219_8(ClassWithDestructor) = Load[#temp2219:45] : &:r2219_4, m2219_7
+# 2219| v2219_9(void) = Call[vector] : func:r2219_3, this:r2219_1, 0:r2219_8
+# 2219| m2219_10(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2219_1
+# 2219| r2219_11(glval) = CopyValue : r2219_4
+# 2219| r2219_12(glval) = FunctionAddress[~ClassWithDestructor] :
+# 2219| v2219_13(void) = Call[~ClassWithDestructor] : func:r2219_12, this:r2219_11
+# 2219| m2219_14(unknown) = ^CallSideEffect : ~m2216_46
+# 2219| m2219_15(unknown) = Chi : total:m2216_46, partial:m2219_14
+# 2219| v2219_16(void) = ^IndirectReadSideEffect[-1] : &:r2219_11, m2219_7
+# 2219| m2219_17(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_11
+# 2219| m2219_18(ClassWithDestructor) = Chi : total:m2219_7, partial:m2219_17
+# 2219| r2219_19(glval &>) = VariableAddress[(__range)] :
+# 2219| r2219_20(glval>) = VariableAddress[ys] :
+# 2219| r2219_21(vector &) = CopyValue : r2219_20
+# 2219| m2219_22(vector &) = Store[(__range)] : &:r2219_19, r2219_21
+# 2219| r2219_23(glval>) = VariableAddress[(__begin)] :
+# 2219| r2219_24(glval &>) = VariableAddress[(__range)] :
+# 2219| r2219_25(vector &) = Load[(__range)] : &:r2219_24, m2219_22
+#-----| r0_18(glval>) = CopyValue : r2219_25
#-----| r0_19(glval>) = Convert : r0_18
-# 2219| r2219_30(glval) = FunctionAddress[begin] :
-# 2219| r2219_31(iterator) = Call[begin] : func:r2219_30, this:r0_19
-#-----| v0_20(void) = ^IndirectReadSideEffect[-1] : &:r0_19, ~m2219_19
-# 2219| m2219_32(iterator) = Store[(__begin)] : &:r2219_27, r2219_31
-# 2219| r2219_33(glval>) = VariableAddress[(__end)] :
-# 2219| r2219_34(glval &>) = VariableAddress[(__range)] :
-# 2219| r2219_35(vector &) = Load[(__range)] : &:r2219_34, m2219_26
-#-----| r0_21(glval>) = CopyValue : r2219_35
+# 2219| r2219_26(glval) = FunctionAddress[begin] :
+# 2219| r2219_27(iterator) = Call[begin] : func:r2219_26, this:r0_19
+#-----| v0_20(void) = ^IndirectReadSideEffect[-1] : &:r0_19, m2219_10
+# 2219| m2219_28(iterator) = Store[(__begin)] : &:r2219_23, r2219_27
+# 2219| r2219_29(glval>) = VariableAddress[(__end)] :
+# 2219| r2219_30(glval &>) = VariableAddress[(__range)] :
+# 2219| r2219_31(vector &) = Load[(__range)] : &:r2219_30, m2219_22
+#-----| r0_21(glval>) = CopyValue : r2219_31
#-----| r0_22(glval>) = Convert : r0_21
-# 2219| r2219_36(glval) = FunctionAddress[end] :
-# 2219| r2219_37(iterator) = Call[end] : func:r2219_36, this:r0_22
-#-----| v0_23(void) = ^IndirectReadSideEffect[-1] : &:r0_22, ~m2219_19
-# 2219| m2219_38(iterator) = Store[(__end)] : &:r2219_33, r2219_37
-# 2219| m2219_39(unknown) = Chi : total:m2219_19, partial:m2219_38
+# 2219| r2219_32(glval) = FunctionAddress[end] :
+# 2219| r2219_33(iterator) = Call[end] : func:r2219_32, this:r0_22
+#-----| v0_23(void) = ^IndirectReadSideEffect[-1] : &:r0_22, m2219_10
+# 2219| m2219_34(iterator) = Store[(__end)] : &:r2219_29, r2219_33
+# 2219| m2219_35(unknown) = Chi : total:m2219_15, partial:m2219_34
#-----| Goto -> Block 11
# 2219| Block 11
-# 2219| m2219_40(iterator) = Phi : from 10:m2219_32, from 12:m2219_58
-# 2219| m2219_41(unknown) = Phi : from 10:~m2219_39, from 12:~m2219_63
-# 2219| r2219_42(glval>) = VariableAddress[(__begin)] :
-#-----| r0_24(glval>) = Convert : r2219_42
-# 2219| r2219_43(glval) = FunctionAddress[operator!=] :
+# 2219| m2219_36(iterator) = Phi : from 10:m2219_28, from 12:m2219_54
+# 2219| m2219_37(unknown) = Phi : from 10:~m2219_35, from 12:~m2219_59
+# 2219| r2219_38(glval>) = VariableAddress[(__begin)] :
+#-----| r0_24(glval>) = Convert : r2219_38
+# 2219| r2219_39(glval) = FunctionAddress[operator!=] :
#-----| r0_25(glval>) = VariableAddress[#temp0:0] :
#-----| m0_26(iterator) = Uninitialized[#temp0:0] : &:r0_25
-#-----| m0_27(unknown) = Chi : total:m2219_41, partial:m0_26
-# 2219| r2219_44(glval) = FunctionAddress[iterator] :
-# 2219| r2219_45(glval>) = VariableAddress[(__end)] :
-#-----| r0_28(glval>) = Convert : r2219_45
+#-----| m0_27(unknown) = Chi : total:m2219_37, partial:m0_26
+# 2219| r2219_40(glval) = FunctionAddress[iterator] :
+# 2219| r2219_41(glval>) = VariableAddress[(__end)] :
+#-----| r0_28(glval>) = Convert : r2219_41
#-----| r0_29(iterator &) = CopyValue : r0_28
-# 2219| v2219_46(void) = Call[iterator] : func:r2219_44, this:r0_25, 0:r0_29
-# 2219| m2219_47(unknown) = ^CallSideEffect : ~m0_27
-# 2219| m2219_48(unknown) = Chi : total:m0_27, partial:m2219_47
-#-----| v0_30(void) = ^BufferReadSideEffect[0] : &:r0_29, ~m2219_48
-# 2219| m2219_49(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_25
-# 2219| m2219_50(unknown) = Chi : total:m2219_48, partial:m2219_49
-#-----| r0_31(iterator) = Load[#temp0:0] : &:r0_25, ~m2219_50
-# 2219| r2219_51(bool) = Call[operator!=] : func:r2219_43, this:r0_24, 0:r0_31
-#-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_24, m2219_40
-# 2219| v2219_52(void) = ConditionalBranch : r2219_51
+# 2219| v2219_42(void) = Call[iterator] : func:r2219_40, this:r0_25, 0:r0_29
+# 2219| m2219_43(unknown) = ^CallSideEffect : ~m0_27
+# 2219| m2219_44(unknown) = Chi : total:m0_27, partial:m2219_43
+#-----| v0_30(void) = ^BufferReadSideEffect[0] : &:r0_29, ~m2219_44
+# 2219| m2219_45(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r0_25
+# 2219| m2219_46(unknown) = Chi : total:m2219_44, partial:m2219_45
+#-----| r0_31(iterator) = Load[#temp0:0] : &:r0_25, ~m2219_46
+# 2219| r2219_47(bool) = Call[operator!=] : func:r2219_39, this:r0_24, 0:r0_31
+#-----| v0_32(void) = ^IndirectReadSideEffect[-1] : &:r0_24, m2219_36
+# 2219| v2219_48(void) = ConditionalBranch : r2219_47
#-----| False -> Block 15
#-----| True -> Block 13
# 2219| Block 12
-# 2219| r2219_53(glval>) = VariableAddress[(__begin)] :
-# 2219| r2219_54(glval) = FunctionAddress[operator++] :
-# 2219| r2219_55(iterator &) = Call[operator++] : func:r2219_54, this:r2219_53
-# 2219| v2219_56(void) = ^IndirectReadSideEffect[-1] : &:r2219_53, m2219_40
-# 2219| m2219_57(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2219_53
-# 2219| m2219_58(iterator) = Chi : total:m2219_40, partial:m2219_57
-# 2219| r2219_59(glval) = VariableAddress[y] :
-# 2219| r2219_60(glval) = FunctionAddress[~ClassWithDestructor] :
-# 2219| v2219_61(void) = Call[~ClassWithDestructor] : func:r2219_60, this:r2219_59
-# 2219| m2219_62(unknown) = ^CallSideEffect : ~m2221_5
-# 2219| m2219_63(unknown) = Chi : total:m2221_5, partial:m2219_62
-# 2219| v2219_64(void) = ^IndirectReadSideEffect[-1] : &:r2219_59, m2221_8
-# 2219| m2219_65(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_59
-# 2219| m2219_66(ClassWithDestructor) = Chi : total:m2221_8, partial:m2219_65
-# 2219| r2219_67(glval>) = CopyValue : r2219_55
+# 2219| r2219_49(glval>) = VariableAddress[(__begin)] :
+# 2219| r2219_50(glval) = FunctionAddress[operator++] :
+# 2219| r2219_51(iterator &) = Call[operator++] : func:r2219_50, this:r2219_49
+# 2219| v2219_52(void) = ^IndirectReadSideEffect[-1] : &:r2219_49, m2219_36
+# 2219| m2219_53(iterator) = ^IndirectMayWriteSideEffect[-1] : &:r2219_49
+# 2219| m2219_54(iterator) = Chi : total:m2219_36, partial:m2219_53
+# 2219| r2219_55(glval) = VariableAddress[y] :
+# 2219| r2219_56(glval) = FunctionAddress[~ClassWithDestructor] :
+# 2219| v2219_57(void) = Call[~ClassWithDestructor] : func:r2219_56, this:r2219_55
+# 2219| m2219_58(unknown) = ^CallSideEffect : ~m2221_5
+# 2219| m2219_59(unknown) = Chi : total:m2221_5, partial:m2219_58
+# 2219| v2219_60(void) = ^IndirectReadSideEffect[-1] : &:r2219_55, m2221_8
+# 2219| m2219_61(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_55
+# 2219| m2219_62(ClassWithDestructor) = Chi : total:m2221_8, partial:m2219_61
+# 2219| r2219_63(glval>) = CopyValue : r2219_51
#-----| Goto (back edge) -> Block 11
# 2219| Block 13
-# 2219| r2219_68(glval) = VariableAddress[y] :
-# 2219| r2219_69(glval>) = VariableAddress[(__begin)] :
-#-----| r0_33(glval>) = Convert : r2219_69
-# 2219| r2219_70(glval) = FunctionAddress[operator*] :
-# 2219| r2219_71(ClassWithDestructor &) = Call[operator*] : func:r2219_70, this:r0_33
-#-----| v0_34(void) = ^IndirectReadSideEffect[-1] : &:r0_33, m2219_40
-# 2219| r2219_72(ClassWithDestructor) = Load[?] : &:r2219_71, ~m2219_50
-# 2219| m2219_73(ClassWithDestructor) = Store[y] : &:r2219_68, r2219_72
+# 2219| r2219_64(glval) = VariableAddress[y] :
+# 2219| r2219_65(glval>) = VariableAddress[(__begin)] :
+#-----| r0_33(glval>) = Convert : r2219_65
+# 2219| r2219_66(glval) = FunctionAddress[operator*] :
+# 2219| r2219_67(ClassWithDestructor &) = Call[operator*] : func:r2219_66, this:r0_33
+#-----| v0_34(void) = ^IndirectReadSideEffect[-1] : &:r0_33, m2219_36
+# 2219| r2219_68(ClassWithDestructor) = Load[?] : &:r2219_67, ~m2219_46
+# 2219| m2219_69(ClassWithDestructor) = Store[y] : &:r2219_64, r2219_68
# 2220| r2220_1(glval) = VariableAddress[y] :
# 2220| r2220_2(glval) = FunctionAddress[set_x] :
# 2220| r2220_3(char) = Constant[97] :
# 2220| v2220_4(void) = Call[set_x] : func:r2220_2, this:r2220_1, 0:r2220_3
-# 2220| m2220_5(unknown) = ^CallSideEffect : ~m2219_50
-# 2220| m2220_6(unknown) = Chi : total:m2219_50, partial:m2220_5
-# 2220| v2220_7(void) = ^IndirectReadSideEffect[-1] : &:r2220_1, m2219_73
+# 2220| m2220_5(unknown) = ^CallSideEffect : ~m2219_46
+# 2220| m2220_6(unknown) = Chi : total:m2219_46, partial:m2220_5
+# 2220| v2220_7(void) = ^IndirectReadSideEffect[-1] : &:r2220_1, m2219_69
# 2220| m2220_8(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2220_1
-# 2220| m2220_9(ClassWithDestructor) = Chi : total:m2219_73, partial:m2220_8
+# 2220| m2220_9(ClassWithDestructor) = Chi : total:m2219_69, partial:m2220_8
# 2221| r2221_1(glval) = VariableAddress[y] :
# 2221| r2221_2(glval) = FunctionAddress[get_x] :
# 2221| r2221_3(char) = Call[get_x] : func:r2221_2, this:r2221_1
@@ -15779,123 +15768,113 @@ ir.cpp:
# 2222| Block 14
# 2222| v2222_1(void) = NoOp :
-# 2219| r2219_74(glval) = VariableAddress[y] :
-# 2219| r2219_75(glval) = FunctionAddress[~ClassWithDestructor] :
-# 2219| v2219_76(void) = Call[~ClassWithDestructor] : func:r2219_75, this:r2219_74
-# 2219| m2219_77(unknown) = ^CallSideEffect : ~m2221_5
-# 2219| m2219_78(unknown) = Chi : total:m2221_5, partial:m2219_77
-# 2219| v2219_79(void) = ^IndirectReadSideEffect[-1] : &:r2219_74, m2221_8
-# 2219| m2219_80(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_74
-# 2219| m2219_81(ClassWithDestructor) = Chi : total:m2221_8, partial:m2219_80
-# 2219| r2219_82(glval>) = VariableAddress[ys] :
-# 2219| r2219_83(glval) = FunctionAddress[~vector] :
-# 2219| v2219_84(void) = Call[~vector] : func:r2219_83, this:r2219_82
-# 2219| m2219_85(unknown) = ^CallSideEffect : ~m2219_78
-# 2219| m2219_86(unknown) = Chi : total:m2219_78, partial:m2219_85
-# 2219| v2219_87(void) = ^IndirectReadSideEffect[-1] : &:r2219_82, ~m2219_86
-# 2219| m2219_88(vector) = ^IndirectMayWriteSideEffect[-1] : &:r2219_82
-# 2219| m2219_89(unknown) = Chi : total:m2219_86, partial:m2219_88
+# 2219| r2219_70(glval) = VariableAddress[y] :
+# 2219| r2219_71(glval) = FunctionAddress[~ClassWithDestructor] :
+# 2219| v2219_72(void) = Call[~ClassWithDestructor] : func:r2219_71, this:r2219_70
+# 2219| m2219_73(unknown) = ^CallSideEffect : ~m2221_5
+# 2219| m2219_74(unknown) = Chi : total:m2221_5, partial:m2219_73
+# 2219| v2219_75(void) = ^IndirectReadSideEffect[-1] : &:r2219_70, m2221_8
+# 2219| m2219_76(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2219_70
+# 2219| m2219_77(ClassWithDestructor) = Chi : total:m2221_8, partial:m2219_76
+# 2219| r2219_78(glval>) = VariableAddress[ys] :
+# 2219| r2219_79(glval) = FunctionAddress[~vector] :
+# 2219| v2219_80(void) = Call[~vector] : func:r2219_79, this:r2219_78
+# 2219| v2219_81(void) = ^IndirectReadSideEffect[-1] : &:r2219_78, m2219_10
+# 2219| m2219_82(vector) = ^IndirectMustWriteSideEffect[-1] : &:r2219_78
# 2234| r2234_1(glval) = VariableAddress[x] :
# 2234| r2234_2(glval) = FunctionAddress[~ClassWithDestructor] :
# 2234| v2234_3(void) = Call[~ClassWithDestructor] : func:r2234_2, this:r2234_1
-# 2234| m2234_4(unknown) = ^CallSideEffect : ~m2219_89
-# 2234| m2234_5(unknown) = Chi : total:m2219_89, partial:m2234_4
+# 2234| m2234_4(unknown) = ^CallSideEffect : ~m2219_74
+# 2234| m2234_5(unknown) = Chi : total:m2219_74, partial:m2234_4
# 2234| v2234_6(void) = ^IndirectReadSideEffect[-1] : &:r2234_1, m2215_8
# 2234| m2234_7(ClassWithDestructor) = ^IndirectMayWriteSideEffect[-1] : &:r2234_1
# 2234| m2234_8(ClassWithDestructor) = Chi : total:m2215_8, partial:m2234_7
#-----| Goto -> Block 1
# 2219| Block 15
-# 2219| r2219_90(glval>) = VariableAddress[ys] :
-# 2219| r2219_91(glval) = FunctionAddress[~vector] :
-# 2219| v2219_92(void) = Call[~vector] : func:r2219_91, this:r2219_90
-# 2219| m2219_93(unknown) = ^CallSideEffect : ~m2219_50
-# 2219| m2219_94(unknown) = Chi : total:m2219_50, partial:m2219_93
-# 2219| v2219_95(void) = ^IndirectReadSideEffect[-1] : &:r2219_90, ~m2219_94
-# 2219| m2219_96(vector) = ^IndirectMayWriteSideEffect[-1] : &:r2219_90
-# 2219| m2219_97(unknown) = Chi : total:m2219_94, partial:m2219_96
-# 2225| r2225_1(glval>) = VariableAddress[ys] :
-# 2225| m2225_2(vector) = Uninitialized[ys] : &:r2225_1
-# 2225| m2225_3(unknown) = Chi : total:m2219_97, partial:m2225_2
-# 2225| r2225_4(glval) = FunctionAddress[vector] :
-# 2225| r2225_5(int) = Constant[1] :
-# 2225| v2225_6(void) = Call[vector] : func:r2225_4, this:r2225_1, 0:r2225_5
-# 2225| m2225_7(unknown) = ^CallSideEffect : ~m2225_3
-# 2225| m2225_8(unknown) = Chi : total:m2225_3, partial:m2225_7
-# 2225| m2225_9(vector) = ^IndirectMayWriteSideEffect[-1] : &:r2225_1
-# 2225| m2225_10(unknown) = Chi : total:m2225_8, partial:m2225_9
-# 2225| r2225_11(glval &>) = VariableAddress[(__range)] :
-# 2225| r2225_12(glval>) = VariableAddress[ys] :
-# 2225| r2225_13(vector &) = CopyValue : r2225_12
-# 2225| m2225_14(vector &) = Store[(__range)] : &:r2225_11, r2225_13
-# 2225| r2225_15(glval>) = VariableAddress[(__begin)] :
-# 2225| r2225_16(glval &>) = VariableAddress[(__range)] :
-# 2225| r2225_17(vector &) = Load[(__range)] : &:r2225_16, m2225_14
-#-----| r0_35(glval>) = CopyValue : r2225_17
-#-----| r0_36(glval>) = Convert : r0_35
-# 2225| r2225_18(glval) = FunctionAddress[begin] :
-# 2225| r2225_19(iterator) = Call[begin] : func:r2225_18, this:r0_36
-#-----| v0_37(void) = ^IndirectReadSideEffect[-1] : &:r0_36, ~m2225_10
-# 2225| m2225_20(iterator) = Store[(__begin)] : &:r2225_15, r2225_19
-# 2225| r2225_21(glval>) = VariableAddress[(__end)] :
-# 2225| r2225_22(glval &>) = VariableAddress[(__range)] :
-# 2225| r2225_23(vector &) = Load[(__range)] : &:r2225_22, m2225_14
-#-----| r0_38(glval>) = CopyValue : r2225_23
-#-----| r0_39(glval>) = Convert : r0_38
-# 2225| r2225_24(glval) = FunctionAddress[end] :
-# 2225| r2225_25(iterator